feat(agent): add runSubagent primitive for subagent spawning#23
Merged
Conversation
Adds a reusable runSubagent() function to the agent SDK that creates a fresh-context child Agent with model override, optional Budget (maxTurns/maxTokens/timeoutMs — all uncapped by default), signal forwarding, and a separate onEvent event stream. Returns SubagentResult with final text (for parent), full transcript messages (for caller persistence), and accumulated usage. The parent agent only sees the final text — the full transcript is isolated and available for the caller to persist to a child session. Background mode and task resumption are deferred to the app layer; permissions stay in the code layer.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Adds a reusable
unSubagent() function to the agent SDK that creates a fresh-context child Agent with:
The parent agent only sees
esult.text via the tool result. The full transcript (
esult.messages) is available for the caller to persist — it's isolated from the parent's context.
Layer 1 only (SDK). App-layer persistence (child sessions), background mode, and task resumption deferred.