Repository navigation
Let an orchestrator thread hear from its workers, and pass their questions to the user #17212
Replies: 1 comment
|
For the coordinator's "needs you" surface, I would test two workers asking the same question text. Each notice should keep its worker ID, pending-request ID and request kind, so answering worker B clears B only. Replay the same event and check it adds no second pending item. Then stop or relaunch the coordinator before opening an old notice: a stale answer must not reach the new run. Keep sign-in and tool-approval requests in their own host-controlled flows. That gives a focused fixture for the existing polling/texting workaround without assuming a new launch relationship has maintainer approval. I have read your proposal; I have not reproduced T3's runtime behavior. Disclosure: I build JustCallMe, a hosted phone channel for a blocking agent question. Would you try one harmless worker decision from a phone in a disposable Claude Code/Codex session? For example, "Should dummy worker B use a nullable field?" I can help with own-phone verification and private scoped-key skill setup. 20 free minutes, no card. T3 pairing is unimplemented and untested; native approvals stay with the host, and an unanswered request leaves the decision pending. Keep phones, codes, keys and real task details private. |
Uh oh!
There was an error while loading. Please reload this page.
The problem
V2 already has the pieces to run one thread as a coordinator:
delegate_taskacross providers,t3_thread_launchwith its own worktree,t3_thread_send, and pending-request read/respond. The pattern I keep using is:What stops it working on its own is that the coordinator can't hear its workers. It finds out about anything by polling, and once its turn ends it doesn't poll. Today:
delegate_taskchild finishesdelegate_taskchild asks a question or needs approvalt3_thread_launchfinishes, blocks, or errorst3_thread_wait, which blocks the parentAs a workaround I run a sidecar that polls every worker thread every 20 seconds and texts me when one stops or needs input. That copies state T3 already owns, which is why I think this belongs in the product.
Proposal
Building on #13343, which already adds the delivery path (a server-owned notice to the parent with
queue_after_active, de-duplicated, cancelled on Stop):t3_thread_launch, record A as B's coordinator. B's completion, question, approval, and sign-in notices go to A, the same waydelegate_taskchildren's do. No new event types.notify: ["done", "input", "error", "stalled"]. The default stays what fix(server): tell parents when a delegated task is waiting for input #13343 ships.Out of scope
t3_thread_sendalready covers the explicit cases.Questions for maintainers
t3_thread_launchthreads acceptable, or should launched threads stay independent and this be limited todelegate_task?If the direction looks right, I'm happy to implement point 1 as a focused PR on top of #13343 once it lands.
All reactions