feat(frontend): crosstalk tab — in-L2 threads + cross-Enterprise consult inbox/outbox (#171)#188
Conversation
|
Review verdict: CHANGES-NEEDED. The crosstalk tab itself is genuine new work — no But the PR is contaminated by stale stacking. It was opened "stacks on top of #183 (Personas)" — so the diff re-adds To proceed: strip the Personas files, rebase onto current |
…ult inbox/outbox (#171) Adds the next L2 admin UI tab after Personas (#170). Three sub-tabs: 1. In-L2 threads — peer-to-peer agent communication inside this L2 (rendered from GET /crosstalk/threads). Subject, participants count + 5-min "live" indicator, status, opened-at. Click a row → drawer with full message timeline, admin-override close, and markdown export. 2. Consult inbox — peer-Enterprise consults addressed to this L2 (GET /consults/inbox). From-Enterprise + persona, topic, status, opened-at. Drawer shows envelope timeline + claimed_by. 3. Consult outbox — derived from /activity event_type=consult_open (no /consults/outbox endpoint yet, surfaced as backend gap). Best-effort; the inline note flags that receiver-side status is not preserved in the activity-log payload. Frontend-only. Reuses the cyan-eyebrow brand chrome from #181 and the row+drawer pattern from #183 — no new design primitives. Bundle delta: +4.56 KB gzipped (255.24 → 259.80) — under the 5 KB ceiling specified in the issue. Backend gaps (to be opened as follow-up issues): - GET /consults/outbox does not exist; the page reconstructs from activity log. - ThreadSummary lacks message_count + last_message_at; the list view defers to per-thread fetch for the authoritative count. - Per-thread routing health (AIGRP latency, signature success-rate) needs an aggregated read; placeholder copy in the drawer. Tests: 5 vitest cases covering empty-state, in-L2 listing, search filter, consult-inbox sub-tab, and outbox derivation. All 32 frontend tests pass; biome lint clean.
627aa09 to
011b7c2
Compare
Rebased + de-stacked — crosstalk-onlyThis branch was stacked on the old Personas PR #183, so its diff re-added stale duplicate Personas files that conflict with the Personas work already merged to Rebased onto current
(main's #229 versions win — Personas lives at Conflict resolution:
End state: diff is crosstalk-only (7 files, +1717). Frontend build ( Note: the |
See branch description and #171 for details. Stacks on top of #183 (Personas) — will rebase onto main after that lands. Bundle delta +4.56 KB gzipped (under 5 KB ceiling). Three sub-tabs: in-L2 threads, consult inbox, consult outbox (derived from activity log; outbox endpoint is a backend gap). All 32 frontend tests pass; biome clean.