Skip to content

feat(workflow): Allow ToolNode to accept JSON string or Content inputs#6065

Open
baptmont wants to merge 6 commits into
google:mainfrom
baptmont:tool_node_args
Open

feat(workflow): Allow ToolNode to accept JSON string or Content inputs#6065
baptmont wants to merge 6 commits into
google:mainfrom
baptmont:tool_node_args

Conversation

@baptmont

Copy link
Copy Markdown

Please ensure you have read the contribution guide before creating a pull request.

Link to Issue or Description of Change

1. Link to an existing issue (if applicable):

  • Closes: N/A
  • Related: N/A

2. Or, if no issue exists, describe the change:

Problem:
Previously, ToolNode in ADK workflows required input to be strictly a Python dict or None. This limited workflow flexibility, preventing users from chaining a ToolNode directly downstream of nodes (like LLM Agents or custom function nodes) that output inputs as serialized JSON strings or types.Content objects without manual parsing boilerplate.

Solution:
Enhanced ToolNode._run_impl in _tool_node.py to dynamically coerce input formats before tool execution:

  • Extract text from types.Content when received.
  • Strip and deserialize JSON strings via json.loads if received.
  • Coerce None to {}.
  • Keep strict validation raising TypeError for non-dictionary representations (e.g. lists, invalid JSON).

Testing Plan

Unit Tests:

  • I have added or updated unit tests for my change.
  • All unit tests pass locally.

Pytest Summary:

tests/unittests/workflow/test_tool_node.py .......                       [100%]
======================== 7 passed, 4 warnings in 2.80s =========================

Manual End-to-End (E2E) Tests:
Verified all workflow tests pass locally with no regressions:

uv run pytest tests/unittests/workflow/
...
==== 600 passed, 10 skipped, 26 xfailed, 9 xpassed, 237 warnings in 15.17s =====

Checklist

  • I have read the CONTRIBUTING.md document.
  • I have performed a self-review of my own code.
  • I have commented my code, particularly in hard-to-understand areas.
  • I have added tests that prove my fix is effective or that my feature works.
  • New and existing unit tests pass locally with my changes.
  • I have manually tested my changes end-to-end.
  • Any dependent changes have been merged and published in downstream modules.

Enable ToolNode to receive JSON-formatted strings or types.Content objects in workflows. This supports flexible upstream formats, such as output from LLM agents or raw user content, automatically parsing them into dictionary arguments for downstream tools.
@adk-bot adk-bot added the core [Component] This issue is related to the core interface and implementation label Jun 10, 2026
@adk-bot

adk-bot commented Jun 10, 2026

Copy link
Copy Markdown
Collaborator

Response from ADK Triaging Agent

Hello @baptmont, thank you for contributing this PR! This looks like a great enhancement to ToolNode to handle more flexible input formats in workflows.

I noticed that the automated pre-commit check has failed for this pull request. To ensure code formatting and style guidelines are met, could you please run pre-commit locally to format and check your changes?

You can run it manually across all files using:

pre-commit run --all-files

More details about the development setup and code formatting can be found in our Contribution Guidelines.

This will help us get your pull request reviewed and merged more quickly. Thank you!

@rohityan rohityan self-assigned this Jun 11, 2026
@rohityan

Copy link
Copy Markdown
Collaborator

/adk-pr-analyze

@rohityan rohityan added workflow [Component] This issue is related to ADKworkflow needs review [Status] The PR/issue is awaiting review from the maintainer and removed core [Component] This issue is related to the core interface and implementation labels Jun 11, 2026
@rohityan rohityan requested a review from swapydapy June 11, 2026 22:12
@rohityan

Copy link
Copy Markdown
Collaborator

Hi @baptmont, Thank you for your contribution! We appreciate you taking the time to submit this pull request. Your PR has been received by the team and is currently under review. We will provide feedback as soon as we have an update to share.

@rohityan

Copy link
Copy Markdown
Collaborator

Hi @swapydapy , can you please review this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs review [Status] The PR/issue is awaiting review from the maintainer workflow [Component] This issue is related to ADKworkflow

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants