Skip to content

Commit c5090b4

Browse files
committed
Always return all the agents
If there is no root agent then we either return all the info of the single agent that's present in the file, or we return only the id if there are multiple agents since we can't know which one to take. Fixes #594 Signed-off-by: Djordje Lukic <djordje.lukic@docker.com>
1 parent 83ab408 commit c5090b4

1 file changed

Lines changed: 30 additions & 9 deletions

File tree

pkg/server/server.go

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -793,19 +793,40 @@ func (s *Server) getAgents(c echo.Context) error {
793793
slog.Error("Failed to refresh agents from disk", "error", err)
794794
}
795795

796-
var agents []api.Agent
796+
// DO NOT, under any circumstance, replace this with "var agents []api.Agent",
797+
// we want to return an empty slice if there are no agents, not nil.
798+
agents := []api.Agent{}
799+
797800
for id, t := range s.teams {
798801
a, err := t.Agent("root")
799802
if err != nil {
800-
slog.Error("Agent root not found", "team", id)
801-
continue
803+
switch {
804+
case t.Size() > 1:
805+
agents = append(agents, api.Agent{
806+
Name: id,
807+
Multi: true,
808+
})
809+
case t.Size() == 1:
810+
a, err = t.Agent(t.AgentNames()[0])
811+
if err != nil {
812+
return echo.NewHTTPError(http.StatusInternalServerError, "failed to get agent")
813+
}
814+
agents = append(agents, api.Agent{
815+
Name: id,
816+
Description: a.Description(),
817+
Multi: false,
818+
})
819+
default:
820+
slog.Warn("Team has no agents", "team", id)
821+
continue
822+
}
823+
} else {
824+
agents = append(agents, api.Agent{
825+
Name: id,
826+
Description: a.Description(),
827+
Multi: a.HasSubAgents(),
828+
})
802829
}
803-
804-
agents = append(agents, api.Agent{
805-
Name: id,
806-
Description: a.Description(),
807-
Multi: a.HasSubAgents(),
808-
})
809830
}
810831

811832
// Sort agents by name

0 commit comments

Comments
 (0)