@@ -82,8 +82,9 @@ type ProviderConfig struct {
84type Agent struct {
84type Agent struct {
85+ ID AgentID `json:"id"`
85− Name string `json:"name"`
86+ Name string `json:"name"`
86− Description string `json:"description,omitempty"`
87+ Description string `json:"description,omitempty"`
87 // This is the id of the system prompt used by the agent
88 // This is the id of the system prompt used by the agent
88 Disabled bool `json:"disabled"`
89 Disabled bool `json:"disabled"`
@@ -229,6 +230,7 @@ func loadConfig(cwd string) (*Config, error) {
230 agents := map[AgentID]Agent{
231 agents := map[AgentID]Agent{
231 AgentCoder: {
232 AgentCoder: {
232 Name: "Coder",
234 Name: "Coder",
233 Description: "An agent that helps with executing coding tasks.",
235 Description: "An agent that helps with executing coding tasks.",
234 Provider: preferredProvider.ID,
236 Provider: preferredProvider.ID,
@@ -237,6 +239,7 @@ func loadConfig(cwd string) (*Config, error) {
237 // All tools allowed
239 // All tools allowed
239 AgentTask: {
241 AgentTask: {
240 Name: "Task",
243 Name: "Task",
241 Description: "An agent that helps with searching for context and finding implementation details.",
244 Description: "An agent that helps with searching for context and finding implementation details.",
242 Provider: preferredProvider.ID,
245 Provider: preferredProvider.ID,
@@ -254,6 +257,7 @@ func loadConfig(cwd string) (*Config, error) {
254 AllowedLSP: []string{},
257 AllowedLSP: []string{},
256 AgentTitle: {
259 AgentTitle: {
257 Name: "Title",
261 Name: "Title",
258 Description: "An agent that helps with generating titles for sessions.",
262 Description: "An agent that helps with generating titles for sessions.",
259 Provider: preferredProvider.ID,
263 Provider: preferredProvider.ID,
@@ -265,6 +269,7 @@ func loadConfig(cwd string) (*Config, error) {
265 AllowedLSP: []string{},
269 AllowedLSP: []string{},
267 AgentSummarize: {
271 AgentSummarize: {
268 Name: "Summarize",
273 Name: "Summarize",
269 Description: "An agent that helps with summarizing sessions.",
274 Description: "An agent that helps with summarizing sessions.",
270 Provider: preferredProvider.ID,
275 Provider: preferredProvider.ID,
@@ -429,43 +434,44 @@ func mergeAgents(base, global, local *Config) {
429 if cfg == nil {
434 if cfg == nil {
432− for agentID, globalAgent := range cfg.Agents {
437+ for agentID, newAgent := range cfg.Agents {
433 if _, ok := base.Agents[agentID]; !ok {
438 if _, ok := base.Agents[agentID]; !ok {
439+ newAgent.ID = agentID // Ensure the ID is set correctly
434− base.Agents[agentID] = globalAgent
440+ base.Agents[agentID] = newAgent
436 switch agentID {
442 switch agentID {
437 case AgentCoder:
443 case AgentCoder:
438 baseAgent := base.Agents[agentID]
444 baseAgent := base.Agents[agentID]
439− baseAgent.Model = globalAgent.Model
445+ baseAgent.Model = newAgent.Model
440− baseAgent.Provider = globalAgent.Provider
446+ baseAgent.Provider = newAgent.Provider
441− baseAgent.AllowedMCP = globalAgent.AllowedMCP
447+ baseAgent.AllowedMCP = newAgent.AllowedMCP
442− baseAgent.AllowedLSP = globalAgent.AllowedLSP
448+ baseAgent.AllowedLSP = newAgent.AllowedLSP
443 base.Agents[agentID] = baseAgent
449 base.Agents[agentID] = baseAgent
444 case AgentTask:
450 case AgentTask:
445 baseAgent := base.Agents[agentID]
451 baseAgent := base.Agents[agentID]
446− baseAgent.Model = globalAgent.Model
452+ baseAgent.Model = newAgent.Model
447− baseAgent.Provider = globalAgent.Provider
453+ baseAgent.Provider = newAgent.Provider
448 base.Agents[agentID] = baseAgent
454 base.Agents[agentID] = baseAgent
449 case AgentTitle:
455 case AgentTitle:
450 baseAgent := base.Agents[agentID]
456 baseAgent := base.Agents[agentID]
451− baseAgent.Model = globalAgent.Model
457+ baseAgent.Model = newAgent.Model
452− baseAgent.Provider = globalAgent.Provider
458+ baseAgent.Provider = newAgent.Provider
453 base.Agents[agentID] = baseAgent
459 base.Agents[agentID] = baseAgent
454 case AgentSummarize:
460 case AgentSummarize:
455 baseAgent := base.Agents[agentID]
461 baseAgent := base.Agents[agentID]
456− baseAgent.Model = globalAgent.Model
462+ baseAgent.Model = newAgent.Model
457− baseAgent.Provider = globalAgent.Provider
463+ baseAgent.Provider = newAgent.Provider
458 base.Agents[agentID] = baseAgent
464 base.Agents[agentID] = baseAgent
460 baseAgent := base.Agents[agentID]
466 baseAgent := base.Agents[agentID]
461− baseAgent.Name = globalAgent.Name
467+ baseAgent.Name = newAgent.Name
462− baseAgent.Description = globalAgent.Description
468+ baseAgent.Description = newAgent.Description
463− baseAgent.Disabled = globalAgent.Disabled
469+ baseAgent.Disabled = newAgent.Disabled
464− baseAgent.Provider = globalAgent.Provider
470+ baseAgent.Provider = newAgent.Provider
465− baseAgent.Model = globalAgent.Model
471+ baseAgent.Model = newAgent.Model
466− baseAgent.AllowedTools = globalAgent.AllowedTools
472+ baseAgent.AllowedTools = newAgent.AllowedTools
467− baseAgent.AllowedMCP = globalAgent.AllowedMCP
473+ baseAgent.AllowedMCP = newAgent.AllowedMCP
468− baseAgent.AllowedLSP = globalAgent.AllowedLSP
474+ baseAgent.AllowedLSP = newAgent.AllowedLSP
469 base.Agents[agentID] = baseAgent
475 base.Agents[agentID] = baseAgent