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
isDefault
step).
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 invalue
exists in the session'srecentlyUsedTools
history. -
sequence_match
: Checks if the end of therecentlyUsedTools
history matches thesequence
defined for this step.
-
-
value
(String, Conditional): The value associated with the condition.- Required if
type
istool_used
(specifies the tool name). - Not used (and should be omitted) if
type
issequence_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
availableTools
is omitted, all tools configured for the agent are implicitly allowed. - If only
allowed
is present, only those tools are available. - If only
denied
is present, all tools except those denied are available. - If both are present, tools are allowed if they match
allowed
AND 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
StepSequencer
typically restricts available tools to only the next tool required in the sequence. - Tools listed here should generally also be permitted by the
availableTools
configuration for this step. - See Step Sequencing for more details.