summaryrefslogtreecommitdiff
path: root/internal/agentloop/tools.go
diff options
context:
space:
mode:
authorClaudomator Agent <agent@claudomator>2026-07-08 08:55:38 +0000
committerClaudomator Agent <agent@claudomator>2026-07-08 08:55:38 +0000
commit3eb50175564ecc7e0b0b250ce8b43dec7edec003 (patch)
tree99202f65ea80ddb123dcba3d0d3efca374fb59b5 /internal/agentloop/tools.go
parent02489d25b98d67f332fe0c93156bb767c2e860a1 (diff)
feat(agentloop,executor): expose depends_on on the spawn_subtask tool
Diffstat (limited to 'internal/agentloop/tools.go')
-rw-r--r--internal/agentloop/tools.go13
1 files changed, 8 insertions, 5 deletions
diff --git a/internal/agentloop/tools.go b/internal/agentloop/tools.go
index ad1aecf..32dd284 100644
--- a/internal/agentloop/tools.go
+++ b/internal/agentloop/tools.go
@@ -56,6 +56,7 @@ func agentToolSpecs() []provider.ToolSpec {
"model": strProp("optional model override"),
"max_budget_usd": map[string]any{"type": "number", "description": "optional budget cap in USD"},
"role": strProp("optional role name to dispatch the subtask through instead of a fixed model (e.g. an evaluator role); when set, model is ignored and the role's escalation ladder picks the provider/model"),
+ "depends_on": map[string]any{"type": "array", "items": map[string]any{"type": "string"}, "description": "optional list of sibling subtask IDs (returned by prior spawn_subtask calls in this same decomposition) this subtask must wait for before it can run"},
},
"required": []string{"name", "instructions"},
},
@@ -205,11 +206,12 @@ func (l *Loop) dispatchTool(ctx context.Context, name, argsJSON string) (result
case "spawn_subtask":
var a struct {
- Name string `json:"name"`
- Instructions string `json:"instructions"`
- Model string `json:"model"`
- MaxBudgetUSD float64 `json:"max_budget_usd"`
- Role string `json:"role"`
+ Name string `json:"name"`
+ Instructions string `json:"instructions"`
+ Model string `json:"model"`
+ MaxBudgetUSD float64 `json:"max_budget_usd"`
+ Role string `json:"role"`
+ DependsOn []string `json:"depends_on"`
}
_ = json.Unmarshal([]byte(argsJSON), &a)
id, ssErr := l.Channel.SpawnSubtask(ctx, agentchannel.SubtaskSpec{
@@ -218,6 +220,7 @@ func (l *Loop) dispatchTool(ctx context.Context, name, argsJSON string) (result
Model: a.Model,
MaxBudgetUSD: a.MaxBudgetUSD,
Role: a.Role,
+ DependsOn: a.DependsOn,
})
if ssErr != nil {
return "", false, ssErr