You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -356,7 +369,7 @@ All frontend features need these backend endpoints:
356
369
| File Ingestion |`/api/cases/:caseId/files`| GET, POST, DELETE | HIGH | DONE |
357
370
| File Download |`/api/cases/:caseId/files/:fileId/download`| GET | HIGH | DONE |
358
371
| File SSE |`/sse/cases/:caseId/files`| SSE | HIGH | DONE |
359
-
| Chat |`/api/chat`| POST | HIGH |TODO|
372
+
| Chat |`/api/cases/:caseId/chat`| POST (SSE) | HIGH |DONE|
360
373
| Knowledge Graph |`/api/cases/:caseId/graph`| GET | HIGH | DONE |
361
374
| KG Entities |`/api/cases/:caseId/entities`| GET, POST, PATCH, DELETE | MEDIUM | DONE |
362
375
| KG Relationships |`/api/cases/:caseId/relationships`| GET, POST | MEDIUM | DONE |
@@ -604,6 +617,11 @@ All frontend features need these backend endpoints:
604
617
| Verdict source navigation wiring | Direct hook in panels vs Callback threading | Callback threading via sidebar descriptors | Detail panels render inside DetailSidebar without caseId access; callback threaded from page through VerdictView -> descriptor props |
605
618
| Timeline citation source | event.sourceIds vs event.metadata.citations | event.metadata.citations | sourceIds contains entity UUIDs (misnamed); metadata.citations has actual file refs (file_id, locator, excerpt) |
606
619
| Timeline citation UX | Modal with all citations vs Expandable list | Expandable list in card | Progressive disclosure; click count to expand, click individual citation to open SourceViewerModal |
620
+
| Chat SSE library | Native EventSource vs fetchEventSource |@microsoft/fetch-event-source| EventSource only supports GET; chat endpoint is POST with body; fetchEventSource supports POST + headers + AbortController |
621
+
| Chat auth token | api-client.ts wrapper vs getToken direct | getToken from auth-client.ts | fetchEventSource needs explicit headers; getToken provides raw JWT without api-client wrapper |
622
+
| Chat session persistence | Frontend session tracking vs Server-side ADK | Server-side ADK with session_id ref | ADK manages conversation history; frontend only stores session_id to reconnect |
623
+
| Citation regex mutation | Module-level global regex vs Local creation | Local new RegExp() inside useMemo | React Compiler immutability rule prevents lastIndex mutation on module-level regex |
624
+
| Chat disabled derivation | caseStatus only vs latest_workflow_id + status | latest_workflow_id !== null && status !== PROCESSING | Chat requires completed analysis; in-progress analysis data is incomplete |
607
625
608
626
---
609
627
@@ -623,7 +641,7 @@ None currently.
623
641
## Session Continuity
624
642
625
643
Last session: 2026-02-09
626
-
Stopped at: Phase 10 COMPLETE (3/3 plans, 9 commits, 9/9 verified). Source panel & entity resolution across all views.
0 commit comments