ref(openai-agents): Use first class agent hooks when available - #7029
ref(openai-agents): Use first class agent hooks when available#7029alexander-alderman-webb wants to merge 18 commits into
Conversation
Codecov Results 📊✅ 97214 passed | ⏭️ 6239 skipped | Total: 103453 | Pass Rate: 93.97% | Execution Time: 358m 25s 📊 Comparison with Base Branch
All tests are passing successfully. ✅ Patch coverage is 89.32%. Project has 2494 uncovered lines. Files with missing lines (3)
Coverage diff@@ Coverage Diff @@
## main #PR +/-##
==========================================
+ Coverage 89.90% 90.00% +0.1%
==========================================
Files 193 193 —
Lines 24822 24936 +114
Branches 8924 8974 +50
==========================================
+ Hits 22315 22442 +127
- Misses 2507 2494 -13
- Partials 1417 1423 +6Generated by Codecov Action |
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 8343310. Configure here.
| if use_run_hooks: | ||
| run_hooks = kwargs.get("hooks") | ||
| if run_hooks is not None: |
There was a problem hiding this comment.
To confirm my understanding of what's happening here - are run hooks something that are passed in by users (which is why they could potentially be None)?
| and `on_tool_end()` | ||
| Responsible for creating Execute Tool and Invoke Agent spans. Both | ||
| spans can also be closed by hooks, and Execute Tool spans are exclusively | ||
| closed in the hook. |
There was a problem hiding this comment.
When you say "the hook" here - is there are specific hook that you're referring to? Or do you mean this as just a generalized "run hook"?

Description
Add
on_agent_start(),on_agent_end()andon_handoff()hooks.Unlike tool hooks, the Invoke Agent span is stored on the
RunHooksinstance.If the hooks are active, start and finish Invoke Agent spans in the hooks in successful executions. If an exception bubbles up,
on_agent_end()does not run. Modify monkey-patches so that the span stored on theRunHooksinstance is finished if the hooks are present.Make the signatures of
invoke_agent_span(),update_invoke_agent_span()and_maybe_start_agent_span()more minimal so that they can be re-used in theon_agent_start()andon_agent_end()hooks.Issues
Closes #6989
Reminders
uv run ruff.feat:,fix:,ref:,meta:)