@@ -297,6 +297,49 @@ This is documented future work only. The next multi-repository implementation sh
297297repository-label routing contract above and should not create subtasks or coordinate deployments
298298automatically.
299299
300+ ## Future goal: secure agent conversation viewer
301+
302+ The current Symphony dashboard is an operational status surface. It shows active issues, session
303+ identifiers, turn counts, token use, retry state, and the latest summarized Codex activity, but it
304+ does not expose the complete visible agent conversation. The issue-detail API reserves a
305+ ` codex_session_logs ` collection, which is currently empty.
306+
307+ A future dashboard enhancement should provide a read-only, issue-scoped conversation view without
308+ exposing the live Codex app-server transport from EKS.
309+
310+ The target experience is:
311+
312+ ~~~ text
313+ operator opens a Jira issue from the Symphony dashboard
314+ -> issue page lists implementation and AI-review sessions in chronological order
315+ -> each session shows visible prompts, agent messages, commands, tool calls, and results
316+ -> Jira transitions, pull-request revisions, and validation evidence are correlated on a timeline
317+ -> retained transcripts remain available after the worker pod or workspace is replaced
318+ ~~~
319+
320+ Implementation guidelines:
321+
322+ - Capture normalized visible app-server events in ` AgentRunner ` rather than parsing an unstable
323+ on-disk transcript format.
324+ - Key records by Jira issue, Codex thread and turn, workflow role, repository, and immutable pull-
325+ request commit when available.
326+ - Persist transcripts outside pod-local ` emptyDir ` storage with explicit retention and deletion
327+ policies.
328+ - Extend ` /api/v1/<issue_identifier> ` and add a linked LiveView issue page for transcript browsing.
329+ - Stream updates to the page while a session is active, but keep the first version read-only.
330+ - Show user-visible prompts, agent messages, command and tool activity, concise command output, and
331+ validation results. Never expose hidden model reasoning.
332+ - Redact credentials and sensitive environment values before persistence, and cap or separately
333+ store large command output.
334+ - Protect transcript routes with the approved internal authentication and authorization mechanism;
335+ source code, diffs, commands, and Jira content must not become anonymously accessible.
336+ - Record access and retain enough correlation data for operational and compliance investigation.
337+ - Do not expose a pod's app-server WebSocket or stdio transport through the shared ingress. Any
338+ later steering or approval UI requires a separate threat model and explicit authorization.
339+
340+ This is documented future work only. The current dashboard and JSON API remain operational status
341+ surfaces and do not provide a second interactive Codex UI.
342+
300343## Candidate upstream contributions
301344
302345Contribute these as small, independent changes rather than proposing the complete ActiveViam
@@ -311,6 +354,7 @@ deployment policy upstream:
311354| Token-file reread and retry handling | Generic operational hardening with little policy coupling |
312355| Tracker-neutral issue type names | Follow-up refactor after Jira behaviour is accepted |
313356| Issue context for workspace hooks | Generic input for safe repository bootstrap without Jira-specific hook logic |
357+ | Read-only session transcript projection | Generic dashboard/API enhancement using visible app-server events |
314358| Container reference implementation | Offer separately; keep Bedrock, EKS, and ActiveViam defaults out |
315359| Dashboard instance/role label | Generic improvement for multiple Symphony instances |
316360
0 commit comments