Skip to content

Commit 6bb603b

Browse files
authored
Merge pull request #488 from dgageot/simple-shared-todo
Simpler shared TODO tool
2 parents cbd4cbd + b58e983 commit 6bb603b

2 files changed

Lines changed: 8 additions & 9 deletions

File tree

pkg/teamloader/teamloader.go

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -141,10 +141,6 @@ func LoadWithOverrides(ctx context.Context, path string, runtimeConfig config.Ru
141141
var agents []*agent.Agent
142142
agentsByName := make(map[string]*agent.Agent)
143143

144-
sharedTools := map[string]tools.ToolSet{
145-
"todo": builtin.NewTodoTool(),
146-
}
147-
148144
for name := range cfg.Agents {
149145
agentConfig := cfg.Agents[name]
150146

@@ -172,7 +168,7 @@ func LoadWithOverrides(ctx context.Context, path string, runtimeConfig config.Ru
172168
return nil, fmt.Errorf("agent '%s' not found in configuration", name)
173169
}
174170

175-
agentTools, err := getToolsForAgent(ctx, &a, parentDir, sharedTools, models[0], env, runtimeConfig)
171+
agentTools, err := getToolsForAgent(ctx, &a, parentDir, models[0], env, runtimeConfig)
176172
if err != nil {
177173
return nil, fmt.Errorf("failed to get tools: %w", err)
178174
}
@@ -238,7 +234,7 @@ func getModelsForAgent(ctx context.Context, cfg *latest.Config, a *latest.AgentC
238234
}
239235

240236
// getToolsForAgent returns the tool definitions for an agent based on its configuration
241-
func getToolsForAgent(ctx context.Context, a *latest.AgentConfig, parentDir string, sharedTools map[string]tools.ToolSet, model provider.Provider, envProvider environment.Provider, runtimeConfig config.RuntimeConfig) ([]tools.ToolSet, error) {
237+
func getToolsForAgent(ctx context.Context, a *latest.AgentConfig, parentDir string, model provider.Provider, envProvider environment.Provider, runtimeConfig config.RuntimeConfig) ([]tools.ToolSet, error) {
242238
var t []tools.ToolSet
243239

244240
if len(a.SubAgents) > 0 {
@@ -248,7 +244,7 @@ func getToolsForAgent(ctx context.Context, a *latest.AgentConfig, parentDir stri
248244
for i := range a.Toolsets {
249245
toolset := a.Toolsets[i]
250246

251-
tool, err := createTool(ctx, toolset, a, parentDir, sharedTools, model, envProvider, runtimeConfig)
247+
tool, err := createTool(ctx, toolset, a, parentDir, model, envProvider, runtimeConfig)
252248
if err != nil {
253249
return nil, err
254250
}
@@ -259,7 +255,7 @@ func getToolsForAgent(ctx context.Context, a *latest.AgentConfig, parentDir stri
259255
return t, nil
260256
}
261257

262-
func createTool(ctx context.Context, toolset latest.Toolset, a *latest.AgentConfig, parentDir string, sharedTools map[string]tools.ToolSet, model provider.Provider, envProvider environment.Provider, runtimeConfig config.RuntimeConfig) (tools.ToolSet, error) {
258+
func createTool(ctx context.Context, toolset latest.Toolset, a *latest.AgentConfig, parentDir string, model provider.Provider, envProvider environment.Provider, runtimeConfig config.RuntimeConfig) (tools.ToolSet, error) {
263259
env, err := environment.ExpandAll(ctx, environment.ToValues(toolset.Env), envProvider)
264260
if err != nil {
265261
return nil, fmt.Errorf("failed to expand the tool's environment variables: %w", err)
@@ -269,7 +265,7 @@ func createTool(ctx context.Context, toolset latest.Toolset, a *latest.AgentConf
269265
switch {
270266
case toolset.Type == "todo":
271267
if toolset.Shared {
272-
return sharedTools["todo"], nil
268+
return builtin.NewSharedTodoTool(), nil
273269
}
274270
return builtin.NewTodoTool(), nil
275271

pkg/tools/builtin/todo.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"encoding/json"
66
"fmt"
77
"strings"
8+
"sync"
89

910
"github.com/docker/cagent/pkg/tools"
1011
)
@@ -40,6 +41,8 @@ type todoHandler struct {
4041
todos map[string]Todo
4142
}
4243

44+
var NewSharedTodoTool = sync.OnceValue(NewTodoTool)
45+
4346
func NewTodoTool() *TodoTool {
4447
return &TodoTool{
4548
handler: &todoHandler{

0 commit comments

Comments
 (0)