| 1 | package config |
| 2 | |
| 3 | import ( |
| 4 | "fmt" |
| 5 | "reflect" |
| 6 | "strings" |
| 7 | ) |
| 8 | |
| 9 | func renderAgentModelAssignments(b *strings.Builder, c *Config) { |
| 10 | if c.Agent.PlannerModel != "" { |
| 11 | fmt.Fprintf(b, "planner_model = %q # low-frequency planner (two-model collaboration)\n", c.Agent.PlannerModel) |
| 12 | } else { |
| 13 | b.WriteString("# planner_model = \"deepseek-pro\" # optional: enable two-model collaboration\n") |
| 14 | } |
| 15 | if c.Agent.WebSearchModel != "" { |
| 16 | fmt.Fprintf(b, "web_search_model = %q\n", c.Agent.WebSearchModel) |
| 17 | } |
| 18 | if c.Agent.VisionModel != "" { |
| 19 | fmt.Fprintf(b, "vision_model = %q # image understanding fallback: auto or provider/model\n", c.Agent.VisionModel) |
| 20 | } else { |
| 21 | b.WriteString("# vision_model = \"auto\" # optional: summarize images for text-only models\n") |
| 22 | } |
| 23 | if c.Agent.SubagentModel != "" { |
| 24 | fmt.Fprintf(b, "subagent_model = %q # default model for runAs=subagent skills\n", c.Agent.SubagentModel) |
| 25 | } else { |
| 26 | b.WriteString("# subagent_model = \"deepseek-pro\" # optional default for runAs=subagent skills\n") |
| 27 | } |
| 28 | if len(c.Agent.SubagentModels) > 0 { |
| 29 | fmt.Fprintf(b, "subagent_models = %s # per-skill overrides\n", renderStringMap(c.Agent.SubagentModels)) |
| 30 | } else { |
| 31 | b.WriteString("# subagent_models = { review = \"deepseek-pro\", security_review = \"deepseek-pro\" } # per-skill overrides\n") |
| 32 | } |
| 33 | } |
| 34 | |
| 35 | func renderAgentModelAssignmentDelta(b *strings.Builder, c, d *Config, anyAgent *bool) { |
| 36 | if c.Agent.PlannerModel != "" && c.Agent.PlannerModel != d.Agent.PlannerModel { |
| 37 | fmt.Fprintf(b, "planner_model = %q\n", c.Agent.PlannerModel) |
| 38 | *anyAgent = true |
| 39 | } |
| 40 | if c.Agent.WebSearchModel != d.Agent.WebSearchModel { |
| 41 | fmt.Fprintf(b, "web_search_model = %q\n", c.Agent.WebSearchModel) |
| 42 | *anyAgent = true |
| 43 | } |
| 44 | if c.Agent.VisionModel != d.Agent.VisionModel { |
| 45 | fmt.Fprintf(b, "vision_model = %q\n", c.Agent.VisionModel) |
| 46 | *anyAgent = true |
| 47 | } |
| 48 | if c.Agent.SubagentModel != "" && c.Agent.SubagentModel != d.Agent.SubagentModel { |
| 49 | fmt.Fprintf(b, "subagent_model = %q\n", c.Agent.SubagentModel) |
| 50 | *anyAgent = true |
| 51 | } |
| 52 | if len(c.Agent.SubagentModels) > 0 && !reflect.DeepEqual(c.Agent.SubagentModels, d.Agent.SubagentModels) { |
| 53 | fmt.Fprintf(b, "subagent_models = %s\n", renderStringMap(c.Agent.SubagentModels)) |
| 54 | *anyAgent = true |
| 55 | } |
| 56 | } |
| 57 |