feat: WebSocket bridge to Timmy + trim fat (2211→1181 lines)
Some checks failed
CI / validate (pull_request) Failing after 5s

Adds real-time WebSocket connection to Timmy's backend:
- Agent behaviors driven by live cognitive state
- Chat routed to real Timmy (not fake responses)
- Dual-brain panel updates from WS
- Graceful degradation when offline

Trimmed 1030 lines (47% reduction):
- Simplified glass floor (removed 6-band edge system)
- Compacted dual-brain panel (removed per-frame scan canvas)
- Removed simulateAgentThought() (WS replaces it)
- Removed fake chat responses
- Compacted all functions

Refs #8
This commit is contained in:
perplexity
2026-03-25 16:30:08 +00:00
parent 5bd43302d9
commit 95793222ce
2 changed files with 590 additions and 1626 deletions

View File

@@ -9,16 +9,29 @@ The Nexus is a Three.js environment — Timmy's sovereign home in 3D space. It s
```
index.html # Entry point: HUD, chat panel, loading screen, live-reload script
style.css # Design system: dark space theme, holographic panels
app.js # Three.js scene, shaders, controls, game loop (~all logic)
app.js # Three.js scene, shaders, controls, game loop, WS bridge (~all logic)
portals.json # Portal registry (data-driven)
vision.json # Vision point content (data-driven)
server.js # Optional: proxy server for CORS (commit heatmap API)
```
No build step. Served as static files. Import maps in `index.html` handle Three.js resolution.
## WebSocket Bridge (v2.0)
The Nexus connects to Timmy's backend via WebSocket for live cognitive state:
- **URL**: `?ws=ws://hermes:8765` query param, or default `ws://localhost:8765`
- **Inbound**: `agent_state`, `agent_move`, `chat_response`, `system_metrics`, `dual_brain`, `heartbeat`
- **Outbound**: `chat_message`, `presence`
- **Graceful degradation**: When WS is offline, agents idle locally, chat shows "OFFLINE"
## Conventions
- **ES modules only** — no CommonJS, no bundler
- **Single-file app** — logic lives in `app.js`; don't split without good reason
- **Color palette** — defined in `NEXUS.colors` at top of `app.js`
- **Line budget** — app.js should stay under 1500 lines
- **Conventional commits**: `feat:`, `fix:`, `refactor:`, `test:`, `chore:`
- **Branch naming**: `claude/issue-{N}` (e.g. `claude/issue-5`)
- **One PR at a time** — wait for merge-bot before opening the next
@@ -34,26 +47,6 @@ The `nexus-merge-bot.sh` validates PRs before auto-merge:
**Always run `node --check app.js` before committing.**
## Sequential Build Order — Nexus v1
Issues must be addressed one at a time. Only one PR open at a time.
| # | Issue | Status |
|---|-------|--------|
| 1 | #4 — Three.js scene foundation (lighting, camera, navigation) | ✅ done |
| 2 | #5 — Portal system — YAML-driven registry | pending |
| 3 | #6 — Batcave terminal — workshop integration in 3D | pending |
| 4 | #9 — Visitor presence — live count + Timmy greeting | pending |
| 5 | #8 — Agent idle behaviors in 3D world | pending |
| 6 | #10 — Kimi & Perplexity as visible workshop agents | pending |
| 7 | #11 — Tower Log — narrative event feed | pending |
| 8 | #12 — NIP-07 visitor identity in the workshop | pending |
| 9 | #13 — Timmy Nostr identity, zap-out, vouching | pending |
| 10 | #14 — PWA manifest + service worker | pending |
| 11 | #15 — Edge intelligence — browser model + silent Nostr signing | pending |
| 12 | #16 — Session power meter — 3D balance visualizer | pending |
| 13 | #18 — Unified memory graph & sovereignty loop visualization | pending |
## PR Rules
- Base every PR on latest `main`
@@ -67,6 +60,7 @@ Issues must be addressed one at a time. Only one PR open at a time.
```bash
npx serve . -l 3000
# open http://localhost:3000
# To connect to Timmy: http://localhost:3000?ws=ws://hermes:8765
```
## Gitea API