Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion cmd/root/new.go
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ func (f *newFlags) runNewCommand(cmd *cobra.Command, args []string) error {
}
if len(args) > 0 {
arg := strings.Join(args, " ")
opts = append(opts, session.WithUserMessage("", arg))
opts = append(opts, session.WithUserMessage(arg))
firstMessage = &arg
}

Expand Down
4 changes: 2 additions & 2 deletions e2e/cagent_mcp_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ func TestMCP_SingleAgent(t *testing.T) {
require.NoError(t, team.StopToolSets(ctx))
})

handler := mcp.CreateToolHandler(team, "root", "testdata/basic.yaml")
handler := mcp.CreateToolHandler(team, "root")
_, output, err := handler(ctx, nil, mcp.ToolInput{
Message: "What is 2+2? Answer in one sentence.",
})
Expand All @@ -43,7 +43,7 @@ func TestMCP_MultiAgent(t *testing.T) {
require.NoError(t, team.StopToolSets(ctx))
})

handler := mcp.CreateToolHandler(team, "web", "testdata/multi.yaml")
handler := mcp.CreateToolHandler(team, "web")
_, output, err := handler(ctx, nil, mcp.ToolInput{
Message: "Say hello in one sentence.",
})
Expand Down
4 changes: 2 additions & 2 deletions e2e/runtime_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ func TestRuntime_OpenAI_Basic(t *testing.T) {
rt, err := runtime.New(team)
require.NoError(t, err)

sess := session.New(session.WithUserMessage("", "What's 2+2?"))
sess := session.New(session.WithUserMessage("What's 2+2?"))
_, err = rt.Run(ctx, sess)
require.NoError(t, err)

Expand All @@ -44,7 +44,7 @@ func TestRuntime_Mistral_Basic(t *testing.T) {
rt, err := runtime.New(team)
require.NoError(t, err)

sess := session.New(session.WithUserMessage("", "What's 2+2?"))
sess := session.New(session.WithUserMessage("What's 2+2?"))
_, err = rt.Run(ctx, sess)
require.NoError(t, err)

Expand Down
2 changes: 1 addition & 1 deletion examples/golibrary/builtintool/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ func run(ctx context.Context) error {
return err
}

sess := session.New(session.WithUserMessage("", "Tell me a story about my current directory"))
sess := session.New(session.WithUserMessage("Tell me a story about my current directory"))

messages, err := rt.Run(ctx, sess)
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion examples/golibrary/multi/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ func run(ctx context.Context) error {
return err
}

sess := session.New(session.WithUserMessage("", "Ask your child how they are doing and tell me what they said"))
sess := session.New(session.WithUserMessage("Ask your child how they are doing and tell me what they said"))

messages, err := rt.Run(ctx, sess)
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion examples/golibrary/simple/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ func run(ctx context.Context) error {
return err
}

sess := session.New(session.WithUserMessage("", "How are you doing?"))
sess := session.New(session.WithUserMessage("How are you doing?"))

messages, err := rt.Run(ctx, sess)
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion examples/golibrary/stream/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ func run(ctx context.Context) error {
return err
}

sess := session.New(session.WithUserMessage("", "How are you doing?"))
sess := session.New(session.WithUserMessage("How are you doing?"))

events := rt.RunStream(ctx, sess)
for event := range events {
Expand Down
2 changes: 1 addition & 1 deletion examples/golibrary/tool/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ func run(ctx context.Context) error {
return err
}

sess := session.New(session.WithUserMessage("", "What is 1 + 2?"))
sess := session.New(session.WithUserMessage("What is 1 + 2?"))

messages, err := rt.Run(ctx, sess)
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion pkg/a2a/adapter.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ func runCAgent(ctx agent.InvocationContext, t *team.Team, agentName string, a *c

// Create a cagent session
sess := session.New(
session.WithUserMessage("", message),
session.WithUserMessage(message),
session.WithMaxIterations(a.MaxIterations()),
session.WithToolsApproved(true),
)
Expand Down
2 changes: 1 addition & 1 deletion pkg/a2a/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import (
)

func Start(ctx context.Context, out *cli.Printer, agentFilename, agentName string, runConfig *config.RuntimeConfig, ln net.Listener) error {
slog.Debug("Starting A2A server", "agent", agentFilename, "addr", ln.Addr().String())
slog.Debug("Starting A2A server", "agent", agentName, "addr", ln.Addr().String())

t, err := teamloader.Load(ctx, agentFilename, runConfig)
if err != nil {
Expand Down
1 change: 0 additions & 1 deletion pkg/acp/agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,6 @@ func (a *Agent) Initialize(ctx context.Context, params acp.InitializeRequest) (a

a.mu.Lock()
defer a.mu.Unlock()
slog.Debug("Loading teams", "agent_file", a.agentFilename)
t, err := teamloader.Load(ctx, a.agentFilename, a.runtimeConfig, teamloader.WithToolsetRegistry(createToolsetRegistry(a)))
if err != nil {
return acp.InitializeResponse{}, fmt.Errorf("failed to load teams: %w", err)
Expand Down
8 changes: 4 additions & 4 deletions pkg/app/transcript_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@ import (
)

func TestSimple(t *testing.T) {
sess := session.New(session.WithUserMessage("", "Hello"))
sess := session.New(session.WithUserMessage("Hello"))
content := transcript(sess)
golden.Assert(t, content, "simple.golden")
}

func TestAssistantMessage(t *testing.T) {
sess := session.New(
session.WithUserMessage("", "Hello"),
session.WithUserMessage("Hello"),
)
sess.AddMessage(&session.Message{
AgentName: "root",
Expand All @@ -33,7 +33,7 @@ func TestAssistantMessage(t *testing.T) {

func TestAssistantMessageWithReasoning(t *testing.T) {
sess := session.New(
session.WithUserMessage("", "Hello"),
session.WithUserMessage("Hello"),
)
sess.AddMessage(&session.Message{
AgentName: "root",
Expand All @@ -49,7 +49,7 @@ func TestAssistantMessageWithReasoning(t *testing.T) {

func TestToolCalls(t *testing.T) {
sess := session.New(
session.WithUserMessage("", "Hello"),
session.WithUserMessage("Hello"),
)
sess.AddMessage(&session.Message{
AgentName: "root",
Expand Down
2 changes: 1 addition & 1 deletion pkg/creator/agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ func CreateAgent(ctx context.Context, baseDir, prompt string, runConfig *config.
}

sess := session.New(
session.WithUserMessage("", prompt),
session.WithUserMessage(prompt),
session.WithToolsApproved(true),
)

Expand Down
12 changes: 3 additions & 9 deletions pkg/mcp/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import (
"github.com/modelcontextprotocol/go-sdk/mcp"

"github.com/docker/cagent/pkg/agent"
"github.com/docker/cagent/pkg/agentfile"
"github.com/docker/cagent/pkg/cli"
"github.com/docker/cagent/pkg/config"
"github.com/docker/cagent/pkg/runtime"
Expand All @@ -30,11 +29,6 @@ type ToolOutput struct {
func StartMCPServer(ctx context.Context, out *cli.Printer, agentFilename string, runConfig *config.RuntimeConfig) error {
slog.Debug("Starting MCP server", "agent", agentFilename)

agentFilename, err := agentfile.Resolve(ctx, out, agentFilename)
if err != nil {
return err
}

t, err := teamloader.Load(ctx, agentFilename, runConfig)
if err != nil {
return fmt.Errorf("failed to load agents: %w", err)
Expand Down Expand Up @@ -82,7 +76,7 @@ func StartMCPServer(ctx context.Context, out *cli.Printer, agentFilename string,
OutputSchema: tools.MustSchemaFor[ToolOutput](),
}

mcp.AddTool(server, toolDef, CreateToolHandler(t, agentName, agentFilename))
mcp.AddTool(server, toolDef, CreateToolHandler(t, agentName))
}

slog.Debug("MCP server starting with stdio transport")
Expand All @@ -94,7 +88,7 @@ func StartMCPServer(ctx context.Context, out *cli.Printer, agentFilename string,
return nil
}

func CreateToolHandler(t *team.Team, agentName, agentFilename string) func(context.Context, *mcp.CallToolRequest, ToolInput) (*mcp.CallToolResult, ToolOutput, error) {
func CreateToolHandler(t *team.Team, agentName string) func(context.Context, *mcp.CallToolRequest, ToolInput) (*mcp.CallToolResult, ToolOutput, error) {
return func(ctx context.Context, req *mcp.CallToolRequest, input ToolInput) (*mcp.CallToolResult, ToolOutput, error) {
slog.Debug("MCP tool called", "agent", agentName, "message", input.Message)

Expand All @@ -106,7 +100,7 @@ func CreateToolHandler(t *team.Team, agentName, agentFilename string) func(conte
sess := session.New(
session.WithTitle("MCP tool call"),
session.WithMaxIterations(ag.MaxIterations()),
session.WithUserMessage(agentFilename, input.Message),
session.WithUserMessage(input.Message),
session.WithToolsApproved(true),
)

Expand Down
4 changes: 2 additions & 2 deletions pkg/oci/build.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ type Options struct {
Pull bool
}

func BuildDockerImage(ctx context.Context, out *cli.Printer, agentFilePath string, fs filesystem.FS, dockerImageName string, opts Options) error {
cfg, err := config.LoadConfig(ctx, agentFilePath, fs)
func BuildDockerImage(ctx context.Context, out *cli.Printer, agentFilename string, fs filesystem.FS, dockerImageName string, opts Options) error {
cfg, err := config.LoadConfig(ctx, agentFilename, fs)
if err != nil {
return err
}
Expand Down
2 changes: 1 addition & 1 deletion pkg/runtime/runtime.go
Original file line number Diff line number Diff line change
Expand Up @@ -1424,7 +1424,7 @@ func (r *LocalRuntime) generateSessionTitle(ctx context.Context, sess *session.S
team.WithAgents(agent.New("root", systemPrompt, agent.WithModel(titleModel))),
)
titleSession := session.New(
session.WithUserMessage("", userPrompt),
session.WithUserMessage(userPrompt),
session.WithTitle("Generating title..."),
)

Expand Down
4 changes: 2 additions & 2 deletions pkg/runtime/runtime_response_api_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ func TestResponseAPIToolCallHandling(t *testing.T) {
AddStopWithUsage(10, 15).
Build()

sess := session.New(session.WithUserMessage("", "Search for test"))
sess := session.New(session.WithUserMessage("Search for test"))

events := runSession(t, sess, stream)

Expand Down Expand Up @@ -55,7 +55,7 @@ func TestResponseAPIMultipleToolCalls(t *testing.T) {
AddStopWithUsage(20, 30).
Build()

sess := session.New(session.WithUserMessage("", "Search and calculate"))
sess := session.New(session.WithUserMessage("Search and calculate"))

events := runSession(t, sess, stream)

Expand Down
20 changes: 10 additions & 10 deletions pkg/runtime/runtime_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ func TestSimple(t *testing.T) {
AddStopWithUsage(3, 2).
Build()

sess := session.New(session.WithUserMessage("", "Hi"))
sess := session.New(session.WithUserMessage("Hi"))

events := runSession(t, sess, stream)

Expand Down Expand Up @@ -240,7 +240,7 @@ func TestMultipleContentChunks(t *testing.T) {
AddStopWithUsage(8, 12).
Build()

sess := session.New(session.WithUserMessage("", "Please greet me"))
sess := session.New(session.WithUserMessage("Please greet me"))

events := runSession(t, sess, stream)

Expand Down Expand Up @@ -270,7 +270,7 @@ func TestWithReasoning(t *testing.T) {
AddStopWithUsage(10, 15).
Build()

sess := session.New(session.WithUserMessage("", "Hi"))
sess := session.New(session.WithUserMessage("Hi"))

events := runSession(t, sess, stream)

Expand Down Expand Up @@ -299,7 +299,7 @@ func TestMixedContentAndReasoning(t *testing.T) {
AddStopWithUsage(15, 20).
Build()

sess := session.New(session.WithUserMessage("", "Hi there"))
sess := session.New(session.WithUserMessage("Hi there"))

events := runSession(t, sess, stream)

Expand Down Expand Up @@ -327,7 +327,7 @@ func TestToolCallSequence(t *testing.T) {
AddStopWithUsage(5, 8).
Build()

sess := session.New(session.WithUserMessage("", "Please use the test tool"))
sess := session.New(session.WithUserMessage("Please use the test tool"))

events := runSession(t, sess, stream)

Expand All @@ -346,7 +346,7 @@ func TestErrorEvent(t *testing.T) {
rt, err := New(tm, WithSessionCompaction(false), WithModelStore(mockModelStore{}))
require.NoError(t, err)

sess := session.New(session.WithUserMessage("", "Hi"))
sess := session.New(session.WithUserMessage("Hi"))
sess.Title = "Unit Test"

evCh := rt.RunStream(t.Context(), sess)
Expand Down Expand Up @@ -382,7 +382,7 @@ func TestContextCancellation(t *testing.T) {
rt, err := New(tm, WithSessionCompaction(false), WithModelStore(mockModelStore{}))
require.NoError(t, err)

sess := session.New(session.WithUserMessage("", "Hi"))
sess := session.New(session.WithUserMessage("Hi"))
sess.Title = "Unit Test"

ctx, cancel := context.WithCancel(t.Context())
Expand Down Expand Up @@ -547,7 +547,7 @@ func TestToolCallVariations(t *testing.T) {
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
stream := tt.streamBuilder().Build()
sess := session.New(session.WithUserMessage("", "Use tools"))
sess := session.New(session.WithUserMessage("Use tools"))
events := runSession(t, sess, stream)

require.True(t, hasEventType(t, events, &PartialToolCallEvent{}), "Expected PartialToolCallEvent for %s", tt.description)
Expand Down Expand Up @@ -621,7 +621,7 @@ func TestCompactionOccursAfterToolResultsWhenToolUsePresent(t *testing.T) {
rt, err := New(tm, WithSessionCompaction(true), WithModelStore(mockModelStoreWithLimit{limit: 100}))
require.NoError(t, err)

sess := session.New(session.WithUserMessage("", "Start"))
sess := session.New(session.WithUserMessage("Start"))
events := rt.RunStream(t.Context(), sess)

// Collect events
Expand Down Expand Up @@ -801,7 +801,7 @@ func TestProcessToolCalls_UnknownTool_NoToolResultMessage(t *testing.T) {
// Register default tools (contains only transfer_task) to ensure unknown tool isn't matched
rt.registerDefaultTools()

sess := session.New(session.WithUserMessage("", "Start"))
sess := session.New(session.WithUserMessage("Start"))

// Simulate a model-issued tool call to a non-existent tool
calls := []tools.ToolCall{{
Expand Down
4 changes: 2 additions & 2 deletions pkg/session/session.go
Original file line number Diff line number Diff line change
Expand Up @@ -209,9 +209,9 @@ func (s *Session) GetLastUserMessageContent() string {

type Opt func(s *Session)

func WithUserMessage(agentFilename, content string) Opt {
func WithUserMessage(content string) Opt {
return func(s *Session) {
s.AddMessage(UserMessage(agentFilename, content))
s.AddMessage(UserMessage("", content))
}
}

Expand Down
4 changes: 2 additions & 2 deletions pkg/teamloader/teamloader.go
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,8 @@ func WithID(id string) Opt {

// Load loads an agent team from the given file path.
// Prefers LoadFrom for more control over the source.
func Load(ctx context.Context, p string, runtimeConfig *config.RuntimeConfig, opts ...Opt) (*team.Team, error) {
return LoadFrom(ctx, NewFileSource(p), runtimeConfig, opts...)
func Load(ctx context.Context, agentFilename string, runtimeConfig *config.RuntimeConfig, opts ...Opt) (*team.Team, error) {
return LoadFrom(ctx, NewFileSource(agentFilename), runtimeConfig, opts...)
}

// LoadFrom loads an agent team from the given source
Expand Down
Loading