Description
From E2E testing + Hep investigation (2026-05-10): The /read endpoint (GET /v1/sessions/:id/read) only reads JSONL transcript files (tmux-era). In ACP mode, transcript data is stored differently and no JSONL file exists, so /read returns messages: [].
Meanwhile /transcript may partially work for ACP sessions through a different code path.
Root Cause
/read → readTranscript → getCachedEntries → reads session.jsonlPath
- In ACP mode,
session.jsonlPath is undefined → returns empty array
- ACP stores transcript data via its own
transcriptId in the ACP session service
- No bridge between ACP transcript data and the
/read endpoint
Impact
- Users on ACP mode (default) get empty responses from
/read
- Docs reference
/read as the primary way to read session output
- Inconsistency between
/read and /transcript behavior
Proposed Fix
- Detect ACP sessions and read from ACP transcript service instead of JSONL
- Normalize output format to match existing
/read response schema
- Consider unifying
/read and /transcript endpoints long-term
Acceptance Criteria
Environment
- Aegis: v0.6.6-preview.1 (develop)
- Node: v22
Description
From E2E testing + Hep investigation (2026-05-10): The
/readendpoint (GET /v1/sessions/:id/read) only reads JSONL transcript files (tmux-era). In ACP mode, transcript data is stored differently and no JSONL file exists, so/readreturnsmessages: [].Meanwhile
/transcriptmay partially work for ACP sessions through a different code path.Root Cause
/read→readTranscript→getCachedEntries→ readssession.jsonlPathsession.jsonlPathisundefined→ returns empty arraytranscriptIdin the ACP session service/readendpointImpact
/read/readas the primary way to read session output/readand/transcriptbehaviorProposed Fix
/readresponse schema/readand/transcriptendpoints long-termAcceptance Criteria
/readreturns messages for ACP sessionsEnvironment