fix(hooks): handle kwargs in hook calls #1002
Open
+21
−19
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.
Issue 1: Ensure Fallback Name Handling in input_guardrail
Problem
The input_guardrail logic previously allowed the name attribute to be None if not explicitly provided. This caused issues in downstream systems such as logging, tracing, or serialization that expect a valid string name.
Changes
Introduced fallback logic to assign a default name if name is None.
Guarantees that all function metadata includes a valid string name.
Prevents unpredictable behavior or runtime errors in downstream processes.
Impact
Improves system robustness and fault tolerance.
Ensures consistent behavior in tools relying on function names.
No breaking changes introduced.
Issue 2: Standardize Hook Callback Signatures with **kwargs
Problem
Lifecycle hooks in AgentHooks and RunnerHooks were inconsistent:
on_handoff used **kwargs.
Other hooks like on_agent_start, on_tool_end, etc., used positional arguments.
This inconsistency led to:
Poor developer experience (requiring memorization of argument order).
Risk of bugs and lower maintainability.
Changes
Refactored all hook signatures to accept **kwargs.
Affected hooks include:
on_agent_start
on_agent_end
on_tool_start
on_tool_end
Internal invocation already uses named arguments, so no functional change occurred.
Impact
Improves consistency across the SDK.
Simplifies custom hook implementations.
Enables forward-compatible API evolution.