Symptom
In the sidebar, subagents of a remote (ssh-mirrored) session are labelled SUB, while local subagents show their agent type (general-purpose, reviewer, ...).
Root cause
The type comes from a sidecar agent-<id>.meta.json written by the CLI next to the subagent transcript, read by readSubagentMeta() (read-session-file.js:25-32, consumed at lines 256 and 572). It is never derived from the parent transcript.
The remote inventory only lists transcripts: LIST_COMMAND in remote-transport.js:26 is find ... -name '*.jsonl'. remote-mirror.js never mentions meta.json. The sidecar is therefore never mirrored, readSubagentMeta() returns null silently, and the renderer falls back to 'sub' (public/sidebar.js:293, uppercased by style.css:1864-1870).
Indexing itself is shared between local and mirrored roots (workers/scan-projects.js), so this is an inventory gap, not a rendering or indexing bug.
Fix
Extend the inventory and the mirror to include *.meta.json alongside *.jsonl. Check MAX_CYCLE_FILES / MAX_CYCLE_BYTES (#238) still make sense once sidecars count.
Acceptance
- A mirrored subagent whose
.meta.json exists on the host shows its type in the sidebar.
- A test on the inventory parser proves a
.meta.json entry is listed and mirrored; a mutation restoring the *.jsonl-only pattern makes it red.
- A subagent without a sidecar on the host still renders
SUB, not an error.
Part of the indicator alignment audit (see the domain-layer issue).
Symptom
In the sidebar, subagents of a remote (ssh-mirrored) session are labelled
SUB, while local subagents show their agent type (general-purpose,reviewer, ...).Root cause
The type comes from a sidecar
agent-<id>.meta.jsonwritten by the CLI next to the subagent transcript, read byreadSubagentMeta()(read-session-file.js:25-32, consumed at lines 256 and 572). It is never derived from the parent transcript.The remote inventory only lists transcripts:
LIST_COMMANDinremote-transport.js:26isfind ... -name '*.jsonl'.remote-mirror.jsnever mentionsmeta.json. The sidecar is therefore never mirrored,readSubagentMeta()returnsnullsilently, and the renderer falls back to'sub'(public/sidebar.js:293, uppercased bystyle.css:1864-1870).Indexing itself is shared between local and mirrored roots (
workers/scan-projects.js), so this is an inventory gap, not a rendering or indexing bug.Fix
Extend the inventory and the mirror to include
*.meta.jsonalongside*.jsonl. CheckMAX_CYCLE_FILES/MAX_CYCLE_BYTES(#238) still make sense once sidecars count.Acceptance
.meta.jsonexists on the host shows its type in the sidebar..meta.jsonentry is listed and mirrored; a mutation restoring the*.jsonl-only pattern makes it red.SUB, not an error.Part of the indicator alignment audit (see the domain-layer issue).