Outcome
The Agents panel shows who started what, stays compact, and lets the user move between parent and child threads.
Acceptance criteria
- Prism spawns section. Keep "Direct spawns" for everything this thread started itself (harness subagents and
spawn_thread children). Add a "Prism spawns" section for threads Model Router (planned product name Prism) started on this thread's behalf, grouped by job (label: the job's request id, status and route). Router threads are recognized from their first message tag [model-router job <id> ...] or a small metadata field if one exists; pick the least invasive.
- Collapsed tree. A row whose thread has its own child threads shows a small chevron with a child count (for example
▸ 3), collapsed by default. Clicking it reveals the children indented under the row as compact one-line rows (status dot, title, model); clicking again hides them. Nothing expands on its own, so the panel never becomes congested. Rows stay clickable to open their thread.
- Header breadcrumb. A child thread's header shows
project / parent title / child title, with the parent title clickable, and a compact menu to switch between sibling child threads. The parent comes from parentThreadId if present, else the sub.<parent>.<suffix> id.
- Deferred, not in this Issue: opening harness-internal subagents read-only.
- Upstream edits minimal and listed in docs/fork.md; web tests for section assignment, tree toggle state and breadcrumb; fork CI green; verified live on an isolated instance with screenshots in the PR.
Objective contribution
Fork Objective: router jobs as T3 threads, visible and reachable from the thread that started them.
Outcome
The Agents panel shows who started what, stays compact, and lets the user move between parent and child threads.
Acceptance criteria
spawn_threadchildren). Add a "Prism spawns" section for threads Model Router (planned product name Prism) started on this thread's behalf, grouped by job (label: the job's request id, status and route). Router threads are recognized from their first message tag[model-router job <id> ...]or a small metadata field if one exists; pick the least invasive.▸ 3), collapsed by default. Clicking it reveals the children indented under the row as compact one-line rows (status dot, title, model); clicking again hides them. Nothing expands on its own, so the panel never becomes congested. Rows stay clickable to open their thread.project / parent title / child title, with the parent title clickable, and a compact menu to switch between sibling child threads. The parent comes fromparentThreadIdif present, else thesub.<parent>.<suffix>id.Objective contribution
Fork Objective: router jobs as T3 threads, visible and reachable from the thread that started them.