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
15 changes: 15 additions & 0 deletions agent/execution/protocol/a2a/a2a_coverage_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -568,6 +568,21 @@ func TestHTTPServer_GetDefaultAgent_WithDefaultID(t *testing.T) {
assert.Equal(t, "default-agent", defaultAg.ID())
}

func TestHTTPServer_GetDefaultAgent_MultipleAgentsWithoutDefaultReturnsError(t *testing.T) {
server := NewHTTPServer(&ServerConfig{
BaseURL: "http://localhost:8080",
Logger: zap.NewNop(),
})

_ = server.RegisterAgent(newMockAgent("agent-a", "Agent A"))
_ = server.RegisterAgent(newMockAgent("agent-b", "Agent B"))

ag, err := server.getDefaultAgent()
require.Error(t, err)
assert.Nil(t, ag)
assert.Contains(t, err.Error(), "multiple agents registered")
}

// --- AgentCard discovery with agent_id query param ---

func TestHTTPServer_HandleAgentCardDiscovery_WithAgentID(t *testing.T) {
Expand Down
17 changes: 14 additions & 3 deletions agent/execution/protocol/a2a/server_agent.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package a2a

import (
"fmt"
"sort"

"go.uber.org/zap"
)
Expand Down Expand Up @@ -133,9 +134,19 @@ func (s *HTTPServer) getDefaultAgent() (Agent, error) {
}
}

// 返回第一个可用的代理
for _, ag := range s.agents {
return ag, nil
if len(s.agents) == 1 {
for _, ag := range s.agents {
return ag, nil
}
}

if len(s.agents) > 1 {
agentIDs := make([]string, 0, len(s.agents))
for id := range s.agents {
agentIDs = append(agentIDs, id)
}
sort.Strings(agentIDs)
return nil, fmt.Errorf("multiple agents registered (%d) but no default agent configured; set DefaultAgentID (available: %v)", len(agentIDs), agentIDs)
}

return nil, ErrAgentNotFound
Expand Down
18 changes: 18 additions & 0 deletions agent/execution/protocol/a2a/server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,24 @@ func TestHTTPServer_HandleAgentCardDiscovery(t *testing.T) {
assert.Equal(t, "Test Agent", card.Name)
}

func TestHTTPServer_HandleAgentCardDiscovery_MultipleAgentsWithoutDefaultReturnsNotFound(t *testing.T) {
server := NewHTTPServer(&ServerConfig{
BaseURL: "http://localhost:8080",
Logger: zap.NewNop(),
})

_ = server.RegisterAgent(newMockAgent("agent-a", "Agent A"))
_ = server.RegisterAgent(newMockAgent("agent-b", "Agent B"))

req := httptest.NewRequest(http.MethodGet, "/.well-known/agent.json", nil)
w := httptest.NewRecorder()

server.ServeHTTP(w, req)

assert.Equal(t, http.StatusNotFound, w.Code)
assert.Contains(t, w.Body.String(), "multiple agents registered")
}

func TestHTTPServer_HandleSyncMessage(t *testing.T) {
server := NewHTTPServer(&ServerConfig{
BaseURL: "http://localhost:8080",
Expand Down
Loading