enhancement(agent): add returnRunResult option to agent.asTool() to expose RunResult and interruptions #249
+122
−5
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.
This adds a
returnRunResult
option toagent.asTool()
that allows developers to access the fullRunResult
of the sub-agent when invoked as a tool.By default,
asTool()
only returns the final output string of the sub-agent, which means any interruptions (e.g. approval requests vianeedsApproval
) are hidden from the parent agent.With this flag enabled:
RunResult
is returnedThis change is backward-compatible and opt-in. It does not affect any existing users of
asTool()
.Also, note that we have,
tools.mdx
to explain thereturnRunResult
flag.agentsAsTools.ts
to include anechoTool
usingreturnRunResult
.tool-use-behavior.ts
that demonstrates how to inspectRunResult.newItems
.Added tests to verify that:
asTool({ returnRunResult: true })
returns aRunResult
with the correctfinalOutput
.stopAtToolNames
works without needing acustomOutputExtractor
, fixing #247.RunContext
is properly used in.invoke()
to satisfy typing and test runtime behavior.Example usage:
Resolves #243 and also
Resolves #247 –
asTool()
now correctly returnsfinalOutput
withstopAtToolNames
, without requiring a custom extractorTested with
pnpm test
,pnpm link
, andpnpm build-check
.