on main help sign in
chore(agent): allocate errors once, reuse errors
a3bfa19Christian Rocha
internal/agent/coordinator.go+23−11
@@ -43,6 +43,18 @@ import (
43 "github.com/qjebbs/go-jsons"
43 "github.com/qjebbs/go-jsons"
44)
44)
45
45
46+// Coordinator errors.
47+var (
48+ errCoderAgentNotConfigured = errors.New("coder agent not configured")
49+ errModelProviderNotConfigured = errors.New("model provider not configured")
50+ errLargeModelNotSelected = errors.New("large model not selected")
51+ errSmallModelNotSelected = errors.New("small model not selected")
52+ errLargeModelProviderNotConfigured = errors.New("large model provider not configured")
53+ errSmallModelProviderNotConfigured = errors.New("small model provider not configured")
54+ errLargeModelNotFound = errors.New("large model not found in provider config")
55+ errSmallModelNotFound = errors.New("small model not found in provider config")
56+)
57+
46type Coordinator interface {
58type Coordinator interface {
47 // INFO: (kujtim) this is not used yet we will use this when we have multiple agents
59 // INFO: (kujtim) this is not used yet we will use this when we have multiple agents
48 // SetMainAgent(string)
60 // SetMainAgent(string)
@@ -97,7 +109,7 @@ func NewCoordinator(
97
109
98 agentCfg, ok := cfg.Agents[config.AgentCoder]
110 agentCfg, ok := cfg.Agents[config.AgentCoder]
99 if !ok {
111 if !ok {
100− return nil, errors.New("coder agent not configured")
112+ return nil, errCoderAgentNotConfigured
101 }
113 }
102
114
103 // TODO: make this dynamic when we support multiple agents
115 // TODO: make this dynamic when we support multiple agents
@@ -145,7 +157,7 @@ func (c *coordinator) Run(ctx context.Context, sessionID string, prompt string,
145
157
146 providerCfg, ok := c.cfg.Providers.Get(model.ModelCfg.Provider)
158 providerCfg, ok := c.cfg.Providers.Get(model.ModelCfg.Provider)
147 if !ok {
159 if !ok {
148− return nil, errors.New("model provider not configured")
160+ return nil, errModelProviderNotConfigured
149 }
161 }
150
162
151 mergedOptions, temp, topP, topK, freqPenalty, presPenalty := mergeCallOptions(model, providerCfg)
163 mergedOptions, temp, topP, topK, freqPenalty, presPenalty := mergeCallOptions(model, providerCfg)
@@ -497,16 +509,16 @@ func (c *coordinator) buildTools(ctx context.Context, agent config.Agent) ([]fan
497func (c *coordinator) buildAgentModels(ctx context.Context, isSubAgent bool) (Model, Model, error) {
509func (c *coordinator) buildAgentModels(ctx context.Context, isSubAgent bool) (Model, Model, error) {
498 largeModelCfg, ok := c.cfg.Models[config.SelectedModelTypeLarge]
510 largeModelCfg, ok := c.cfg.Models[config.SelectedModelTypeLarge]
499 if !ok {
511 if !ok {
500− return Model{}, Model{}, errors.New("large model not selected")
512+ return Model{}, Model{}, errLargeModelNotSelected
501 }
513 }
502 smallModelCfg, ok := c.cfg.Models[config.SelectedModelTypeSmall]
514 smallModelCfg, ok := c.cfg.Models[config.SelectedModelTypeSmall]
503 if !ok {
515 if !ok {
504− return Model{}, Model{}, errors.New("small model not selected")
516+ return Model{}, Model{}, errSmallModelNotSelected
505 }
517 }
506
518
507 largeProviderCfg, ok := c.cfg.Providers.Get(largeModelCfg.Provider)
519 largeProviderCfg, ok := c.cfg.Providers.Get(largeModelCfg.Provider)
508 if !ok {
520 if !ok {
509− return Model{}, Model{}, errors.New("large model provider not configured")
521+ return Model{}, Model{}, errLargeModelProviderNotConfigured
510 }
522 }
511
523
512 largeProvider, err := c.buildProvider(largeProviderCfg, largeModelCfg, isSubAgent)
524 largeProvider, err := c.buildProvider(largeProviderCfg, largeModelCfg, isSubAgent)
@@ -516,7 +528,7 @@ func (c *coordinator) buildAgentModels(ctx context.Context, isSubAgent bool) (Mo
516
528
517 smallProviderCfg, ok := c.cfg.Providers.Get(smallModelCfg.Provider)
529 smallProviderCfg, ok := c.cfg.Providers.Get(smallModelCfg.Provider)
518 if !ok {
530 if !ok {
519− return Model{}, Model{}, errors.New("small model provider not configured")
531+ return Model{}, Model{}, errSmallModelProviderNotConfigured
520 }
532 }
521
533
522 smallProvider, err := c.buildProvider(smallProviderCfg, smallModelCfg, true)
534 smallProvider, err := c.buildProvider(smallProviderCfg, smallModelCfg, true)
@@ -539,11 +551,11 @@ func (c *coordinator) buildAgentModels(ctx context.Context, isSubAgent bool) (Mo
539 }
551 }
540
552
541 if largeCatwalkModel == nil {
553 if largeCatwalkModel == nil {
542− return Model{}, Model{}, errors.New("large model not found in provider config")
554+ return Model{}, Model{}, errLargeModelNotFound
543 }
555 }
544
556
545 if smallCatwalkModel == nil {
557 if smallCatwalkModel == nil {
546− return Model{}, Model{}, errors.New("small model not found in provider config")
558+ return Model{}, Model{}, errSmallModelNotFound
547 }
559 }
548
560
549 largeModelID := largeModelCfg.Model
561 largeModelID := largeModelCfg.Model
@@ -871,7 +883,7 @@ func (c *coordinator) UpdateModels(ctx context.Context) error {
871
883
872 agentCfg, ok := c.cfg.Agents[config.AgentCoder]
884 agentCfg, ok := c.cfg.Agents[config.AgentCoder]
873 if !ok {
885 if !ok {
874− return errors.New("coder agent not configured")
886+ return errCoderAgentNotConfigured
875 }
887 }
876
888
877 tools, err := c.buildTools(ctx, agentCfg)
889 tools, err := c.buildTools(ctx, agentCfg)
@@ -893,7 +905,7 @@ func (c *coordinator) QueuedPromptsList(sessionID string) []string {
893func (c *coordinator) Summarize(ctx context.Context, sessionID string) error {
905func (c *coordinator) Summarize(ctx context.Context, sessionID string) error {
894 providerCfg, ok := c.cfg.Providers.Get(c.currentAgent.Model().ModelCfg.Provider)
906 providerCfg, ok := c.cfg.Providers.Get(c.currentAgent.Model().ModelCfg.Provider)
895 if !ok {
907 if !ok {
896− return errors.New("model provider not configured")
908+ return errModelProviderNotConfigured
897 }
909 }
898 return c.currentAgent.Summarize(ctx, sessionID, getProviderOptions(c.currentAgent.Model(), providerCfg))
910 return c.currentAgent.Summarize(ctx, sessionID, getProviderOptions(c.currentAgent.Model(), providerCfg))
899}
911}
@@ -968,7 +980,7 @@ func (c *coordinator) runSubAgent(ctx context.Context, params subAgentParams) (f
968
980
969 providerCfg, ok := c.cfg.Providers.Get(model.ModelCfg.Provider)
981 providerCfg, ok := c.cfg.Providers.Get(model.ModelCfg.Provider)
970 if !ok {
982 if !ok {
971− return fantasy.ToolResponse{}, errors.New("model provider not configured")
983+ return fantasy.ToolResponse{}, errModelProviderNotConfigured
972 }
984 }
973
985
974 // Run the agent
986 // Run the agent