Repository navigation
Replies: 2 comments
|
I built this for the legacy sidebar and opened it as #20953 so there's working code to look at. It hasn't been approved, so treat it as a proposal.
I've run it on my own install for a couple of days with real orchestrator sessions. I'd like to know whether this direction fits, especially the new field on the thread shell and folding subagents instead of hiding them (#15812, #20808). The v2 sidebar could use the same field later, but I left it alone. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment



Uh oh!
There was an error while loading. Please reload this page.
Area
apps/web (desktop via web), packages/contracts, apps/server
Problem
When a session hands work off to agents, the sidebar loses track of where that work came from.
create_threadsort3_thread_launchshow up as unrelated top-level rows. Nothing on the new thread records which session opened it. The only trace issenderThreadIdon its first message, so the sidebar can't connect it back to its session.delegate_taskchildren havelineage.parentThreadId, but the sidebar hides all subagent threads, so you can't reach a delegated task from the sidebar at all.With a few sessions fanning out work across a couple of projects, the inbox becomes a flat list where I can't tell which thread belongs to which session. #18045 describes the same pressure from the filtering side ("threads started by agents now outnumber the ones I start myself").
Proposal
An opt-in Thread grouping setting (Settings → General → Organization), off by default. When it's on:
create_threads/t3_thread_launch) nest when they're in the same section as their session. Otherwise they stay top-level in their own section.delegate_task,subagent+creationSource: "mcp") become visible, follow their session's section and nest under it. Provider-native subagents stay hidden, as they are today.To make (2) possible for launched threads, the server records the launching thread on the new thread: an optional
lineage.launchedByThreadId, set bycreate_threadsandt3_thread_launch. It's optional and additive.relationshipToParentstays"fork" | "subagent", so existing clients and the code that checks those values are unaffected.Implementation
I have a working implementation on my fork: jagadhis/t3code@main...jagadhis:t3code:feat/sidebar-session-groups
Sidebar.logic.tswith unit tests. The server change is covered by the existingcreate_threadsintegration test and thet3_thread_launchhandler test.threadListV2.tshides subagents the same way) and could follow separately.Questions for maintainers
launchedByThreadIdon lineage the right place to record the launching session, or would you prefer something else, such as deriving it from the first message'ssenderThreadId?senderThreadId, or only new ones?If the direction looks right, I'm happy to open a PR scoped however you prefer.
All reactions