feat(DATAGO-114389): PR 2: Workflow Definition Models #707
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 2: Workflow Definition Models
Overview
This PR introduces the Pydantic models that define the YAML schema for workflow definitions. These models provide Argo Workflows-compatible syntax with SAM extensions, enabling users to define deterministic, structured workflow DAGs.
Branch Information
pr/workflows-2-modelspr/workflows-1-foundationFiles Changed
src/solace_agent_mesh/workflow/app.pyComplete workflow definition model hierarchy:
Retry & Exit Handlers
BackoffStrategyRetryStrategyExitHandlerNode Types
WorkflowNodeAgentNodeConditionalNodeSwitchNodeSwitchCaseLoopNodeMapNodeWorkflow Definition & Configuration
WorkflowDefinitionWorkflowAppConfigWorkflowAppsrc/solace_agent_mesh/workflow/__init__.pyPackage initialization and exports.
Key Concepts
Argo Workflows Compatibility
The models support Argo-style field names via aliases:
Node Type Summary
agentagent_name,input,when,retry_strategyconditionalcondition,true_branch,false_branchswitchcases[],defaultloopnode,condition,max_iterationsmapitems,node,concurrency_limitDAG Validation
WorkflowDefinition.validate_dag_structure()ensures:Template Expression Syntax
Input mappings use template expressions: