feat(hooks): add resume flag to AfterInvocationEvent#1767
Draft
mkmeral wants to merge 4 commits intostrands-agents:mainfrom
Draft
feat(hooks): add resume flag to AfterInvocationEvent#1767mkmeral wants to merge 4 commits intostrands-agents:mainfrom
mkmeral wants to merge 4 commits intostrands-agents:mainfrom
Conversation
…-invocation Add a writable 'resume' field (AgentInput | None) to AfterInvocationEvent. When a hook sets resume to a non-None value, the agent automatically re-invokes with that input, triggering a full new invocation cycle including BeforeInvocationEvent.
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
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.
Description
Motivation
Hooks that run after an agent invocation sometimes need to trigger a follow-up invocation automatically. For example, a coding agent hook could run tests and linting after each response, and if checks fail, resume the agent with the error output so it can fix the issues autonomously. Similarly, a validation hook could inspect the agent's output against acceptance criteria and loop until the result passes. Today there's no way to do this from a hook; callers have to build the retry loop externally, which duplicates lifecycle logic and bypasses the hook system entirely.
This PR adds a
resumefield toAfterInvocationEvent. When a hook setsresumeto any validAgentInput, the agent re-invokes itself with that input, firing a full new invocation cycle (includingBeforeInvocationEvent). WhenresumeisNone(the default), behavior is unchanged.Public API Changes
AfterInvocationEventgains a writableresumeattribute:Each resume triggers a complete invocation cycle:
BeforeInvocationEvent→ event loop →AfterInvocationEvent, so all existing hooks participate in every iteration. The resume input is converted to messages via the same_convert_prompt_to_messagespath as normal agent calls.Use Cases
Related Issues
Resolves: #1181
Documentation PR
TBD
Type of Change
New feature
Testing
4 unit tests covering resume triggering, no-resume default, BeforeInvocationEvent firing on resume, and multi-step chaining
3 unit tests for the
resumefield onAfterInvocationEvent(default value, writability, input type acceptance)Manually tested with a Jupyter notebook demo