[Feature]: Create top-level threads in another project (orchestrator thread tools are hard-scoped to the calling thread's project) #6945
joshoastler
started this conversation in
Ideas
Replies: 2 comments
|
Would be great, I often have work that needs to be delegated to multiple different projects. |
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.
Before submitting
Area
apps/server
Problem or use case
The orchestration V2 orchestrator toolkit in #2829 lets an agent create top-level threads (
t3_thread_start,create_threads), but every thread tool is hard-scoped to the calling thread's project.t3_thread_start"inherits this thread's project, checkout, provider, model, and runtime settings",t3_thread_liststates that "threads from other projects are never exposed", andOrchestratorMcpTargetonly carriesproviderInstanceId,driverKind,modeland model options — there is no project or checkout field.That means an agent cannot open a thread in a different project, even on the same machine. I work across roughly twenty repos that live side by side in one folder and share one backend. The work that most wants a new thread is almost always cross-repo: I'm in the dashboard repo, I discover the fix belongs in the intake repo, and I want to hand that off to a fresh thread already pointed at the right repo, then carry on with what I was doing. Today the agent has to stop and tell me to open that thread by hand, which is exactly the step the toolkit otherwise removes.
This is distinct from #6079, which asks for thread creation across machines. Same-machine, different-project is a smaller and more common case, and #6079's premise (that local top-level creation already works) is what makes this gap visible.
Proposed solution
Add an optional project selector to the thread-creating tools:
OrchestratorMcpCreateThreadRequestandOrchestratorMcpThreadStartInputgain an optionalprojectId, and optionally acheckoutIdor runtime target within that project.orchestrator_capabilitiesadvertises which projects are addressable, so the agent discovers valid ids instead of guessing them.t3_thread_listandt3_thread_readgain an optionalprojectIdfilter, defaulting to the caller's project so the current isolation guarantee remains the default rather than disappearing.Why this matters
Cross-repo handoff is the main reason to want a new top-level thread rather than a subagent: the work belongs to a different checkout, it needs different context, and it should outlive the current conversation. Restricting creation to the current project means the toolkit covers "more of the same work in parallel" but not "this belongs somewhere else" — and the second is where the manual step actually costs time.
Smallest useful scope
An optional
projectIdont3_thread_startonly, with the addressable project list exposed throughorchestrator_capabilities. Batchcreate_threads, checkout selection, and cross-project reads can all follow later.Alternatives considered
delegate_taskfor the other repo's work. Wrong shape: a subagent is nested under the parent thread, dies with it, and is not something I can return to later as its own conversation.Risks or tradeoffs
Examples or references
apps/server/src/mcp/toolkits/orchestrator/tools.tspackages/contracts/src/orchestratorMcp.ts—OrchestratorMcpTarget,OrchestratorMcpThreadStartInput,OrchestratorMcpCreateThreadRequestContribution
All reactions