Implements the Nexus: a dedicated conversational-only interface where Timmy
maintains a persistent session backed by his live memory store. Unlike the
main dashboard chat (which includes tool-approval flow), the Nexus is pure
dialogue with semantic memory context surfaced on every exchange.
Changes:
- src/dashboard/routes/nexus.py — GET/POST/DELETE routes; uses dedicated
`nexus` session_id so history is isolated from the main dashboard chat
- src/dashboard/templates/nexus.html — two-column layout: chat left,
memory sidebar + teaching panel right
- src/dashboard/templates/partials/nexus_message.html — chat partial with
OOB memory-hits swap
- src/dashboard/templates/partials/nexus_facts.html — teaching confirmation
+ facts list partial
- src/dashboard/app.py — import and register nexus_router
- src/dashboard/templates/base.html — NEXUS link in INTEL dropdown
- static/css/mission-control.css — Nexus layout, memory sidebar, teaching
panel styles (no inline CSS)
- tests/dashboard/test_nexus.py — 9 unit tests, all green
- docs/nexus-spec.md — full scope + acceptance criteria for #1208Fixes#1208
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>