feat(DATAGO-114389): PR 4: Workflow Tool for Agents #709
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.
PR 4: Workflow Tool for Agents
Overview
This PR provides an ADK Tool implementation that allows agents to invoke workflows as tools. This creates a bridge between LLM-driven agent orchestration and prescriptive workflows, enabling agents to call deterministic workflows when needed.
Branch Information
pr/workflows-4-workflow-toolpr/workflows-3-agent-supportFiles Changed
src/solace_agent_mesh/agent/tools/workflow_tool.pyThe
WorkflowAgentToolclass (~370 lines) provides:__init__()_get_declaration()run_async()_prepare_input_artifact()_prepare_a2a_message()_submit_task()_poll_for_result()Key Features
Tool Discovery Flow
When a workflow publishes its agent card with input/output schemas:
SamAgentComponentreceives agent card via discoveryWorkflowAgentToolInvocation Modes
Message Flow
Key Concepts
Tool Naming Convention
Workflow tools are named with prefix
workflow_:Correlation for Response Matching
Sub-task correlation IDs link requests to responses:
Schema-to-ADK Translation
The tool dynamically converts JSON Schema to ADK types:
stringType.STRINGintegerType.INTEGERnumberType.NUMBERbooleanType.BOOLEANarrayType.ARRAYobjectType.OBJECT