feat(task): implement fire-and-forget TaskTool with background execution #6045
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Implements Phase 4 of the Background Task Runner plan: Makes TaskTool truly fire-and-forget by returning immediately after enqueueing work to SessionRunner, while maintaining live progress updates in the parent tool part metadata.
PR Stack
feat/async-subagent-1-runnerfeat/async-subagent-2-backgroundfeat/async-subagent-3-centralizepr4-fire-and-forget-tasktoolBase: This PR is stacked on top of #6041
Changes
src/tool/tool.tstoolPartID?: stringtoTool.Contexttype for post-return metadata updatessrc/session/prompt.tstoolPartIDwhen invokingtool.execute()so tools can update their own part after returningsrc/tool/task.tsPartUpdatedevents and update parent tool part metadata viaStorage.read+Session.updatePartcompleted,failed,canceled,timed_out) when background job endsctx.callID(actual tool call ID) instead ofctx.messageIDBehavior Change
Before: TaskTool blocked until child session completed, then returned the full result.
After: TaskTool returns immediately with
"Task started in background."and the child session runs asynchronously. Progress is streamed to the parent tool part metadata. Users can click to navigate to the subagent session.Testing
Related
~/Desktop/plan.md(Phase 4)