Orchestration Configuration
This document details how to configure orchestration behavior for AgentDock agents using the agent template (template.json or similar).
Structure
Orchestration is defined within the main agent configuration under the top-level orchestration key:
{
"id": "research-planner",
"name": "Research and Planning Agent",
"description": "An agent that performs research and planning.",
"llm": {
"provider": "openai",
"model": "gpt-4-turbo"
},
"tools": ["web_search", "think", "list_generation"],
"orchestration": {
"description": "Manages transitions between research and planning modes.",
"defaultStep": "idle",
"steps": [
// Step definitions go here...
]
}
}
-
orchestration: The main object containing all orchestration settings. -
description: Optional description of the orchestration workflow. -
defaultStep: (Optional) The name of the step to activate if no other step's conditions are met. If omitted, the agent might operate without a specific step active initially or fall back to allowing all configured tools. -
steps: An array of orchestration step objects.
Step Definition
Each object in the steps array defines an orchestration step:
{
"name": "research_mode",
"description": "Step for active research using web search.",
"conditions": [
{
"type": "tool_used",
"value": "search"
},
{
"type": "sequence_match"
}
],
"availableTools": {
"allowed": ["web_search", "think", "*cognitive*"],
"denied": []
},
"sequence": [
"web_search",
"think"
],
"resetSequenceOn": ["message_contains"]
}
Core Step Properties:
-
name(Required): A unique identifier string for the step (e.g.,research_mode,planning,code_review). -
description(Optional): A human-readable description of the step's purpose.
conditions (Array, Optional)
An array of condition objects that must all be met for this step to become active.
- Each object in the array represents a single condition.
- If this array is omitted or empty, the step has no activation conditions (other than potentially being the
isDefaultstep).
Condition Object
{
"type": "tool_used" | "sequence_match",
"value": "string (required for type='tool_used', unused for type='sequence_match')",
"description": "string (optional)"
}
-
type(String, Required): The type of condition to check. Valid types:-
tool_used: Checks if the tool specified invalueexists in the session'srecentlyUsedToolshistory. -
sequence_match: Checks if the end of therecentlyUsedToolshistory matches thesequencedefined for this step.
-
-
value(String, Conditional): The value associated with the condition.- Required if
typeistool_used(specifies the tool name). - Not used (and should be omitted) if
typeissequence_match.
- Required if
-
description(String, Optional): A human-readable description of the condition's purpose.
availableTools
- (Optional) An object controlling which tools are accessible when this step is active.
-
allowed: An array of tool names or wildcards (e.g.,*cognitive*) that are permitted. -
denied: An array of tool names or wildcards that are explicitly forbidden, even if matched byallowed. - Behavior:
- If
availableToolsis omitted, all tools configured for the agent are implicitly allowed. - If only
allowedis present, only those tools are available. - If only
deniedis present, all tools except those denied are available. - If both are present, tools are allowed if they match
allowedAND do not matchdenied.
- If
sequence (Array, Optional)
- An array of tool name strings defining a required order of execution for this step.
- When a step with a sequence is active, the
StepSequencertypically restricts available tools to only the next tool required in the sequence. - Tools listed here should generally also be permitted by the
availableToolsconfiguration for this step. - See Step Sequencing for more details.