fix: ensure remote tools are included in sync tool list to prevent si… - #149
Merged
Iamsdt merged 1 commit intoJul 27, 2026
Conversation
There was a problem hiding this comment.
Pull request overview
This PR fixes a parity bug in the ToolNode tool-advertisement API by ensuring remote (client-side) tools are included in the synchronous tool listing, aligning it with the async path. It also improves remote-tool documentation, exports the AudioAgent as a prebuilt agent, and adjusts the QA user simulator config to set thread_id at the top-level as expected by the core graph runtime.
Changes:
- Update
ToolNode.all_tools_sync()to appendself.remote_tools, matching_all_tools_async()and preventing remote tools from being silently omitted. - Add regression tests covering remote-tool visibility and sync/async tool-set parity (issue #148).
- Improve
attach_remote_toolsdocumentation, exportAudioAgentfromagentflow.prebuilt, and simplify simulator thread ID configuration.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
agentflow/core/graph/tool_node/base.py |
Fixes sync tool listing to include remote tools and clarifies the sync accessor’s contract. |
tests/graph/test_tool_node.py |
Adds regression tests to ensure remote tools appear in all_tools_sync() and sync/async tool sets match. |
agentflow/core/graph/compiled_graph.py |
Updates attach_remote_tools docstring to clarify expected remote tool schema shape and routing. |
agentflow/prebuilt/__init__.py |
Exports AudioAgent via __init__ and __all__ for prebuilt access. |
agentflow/qa/evaluation/simulators/user_simulator.py |
Sets thread_id at top-level in run_config, consistent with core runtime config usage. |
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Iamsdt
deleted the
148-toolnodeall_tools_sync-silently-drops-remote-tools-async-path-includes-them
branch
July 27, 2026 17:58
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.
This pull request improves support for remote (client-side) tools in the tool node system, ensuring that remote tools are consistently advertised and accessible through both synchronous and asynchronous interfaces. It also adds the
AudioAgentto the prebuilt agents and includes regression tests to prevent future issues with tool visibility.Remote tool support and parity:
all_tools_syncmethod inToolNodeto includeremote_toolsin its returned list, ensuring remote tools are not omitted from the synchronous accessor and that the sync and async tool sets remain consistent. [1] [2]tests/graph/test_tool_node.pyto verify that remote tools are included inall_tools_syncand that sync/async tool sets match, addressing issue ToolNode.all_tools_sync() silently drops remote tools (async path includes them) #148.attach_remote_toolsto clarify the format and routing of remote tool schemas.Prebuilt agents:
AudioAgentto theagentflow/prebuilt/__init__.pyexports and__all__list, making it available as a prebuilt agent. [1] [2]Other improvements:
user_simulator.pyby settingthread_iddirectly at the top level ofrun_config.asyncioimport in test file for consistency.