on main help sign in
feat(responses): opt in specific copilot models to responses
commitf6dc495d97b10bdc8d0dcd0be6503285a54ba7f6 authorKieran Klukas <kieran@dunkirk.sh> dateTue 12 May 2026, 16:40 (5 months ago) parent9e126c2
3 files changed+18−4
go.mod+1−1 go.sum+2−2 internal/agent/coordinator.go+15−1
go.mod+1−1
@@ -7,7 +7,7 @@ require (
77 charm.land/bubbletea/v2 v2.0.6
88 charm.land/catwalk v0.40.0
99 charm.land/fang/v2 v2.0.1
10− charm.land/fantasy v0.23.2
10+ charm.land/fantasy v0.24.0
1111 charm.land/glamour/v2 v2.0.0
1212 charm.land/lipgloss/v2 v2.0.3
1313 charm.land/log/v2 v2.0.0
go.sum+2−2
@@ -6,8 +6,8 @@ charm.land/catwalk v0.40.0 h1:Ldqr2YzTqk2QdXAFFa5W/EiFoxNGMQc7KXekze5Z+Cw=
66charm.land/catwalk v0.40.0/go.mod h1:LmMFJdRqF5F7qKa+xqD9SBq7tph7L98GU3ZFa1TxftA=
77charm.land/fang/v2 v2.0.1 h1:zQCM8JQJ1JnQX/66B5jlCYBUxL2as5JXQZ2KJ6EL0mY=
88charm.land/fang/v2 v2.0.1/go.mod h1:S1GmkpcvK+OB5w9caywUnJcsMew45Ot8FXqoz8ALrII=
9−charm.land/fantasy v0.23.2 h1:9gUknrENwv0lV379Hs7m/GK2c/9m+gWXyfbox1tVHrg=
10−charm.land/fantasy v0.23.2/go.mod h1:8QrWUzIcKwZQP+aAnC9vLu3iID6hu9/Jt+rPMiieBkc=
9+charm.land/fantasy v0.24.0 h1:/q35T2TvrqTYqMnFOBHEqp8IWoKMxh05Y7r5wsF/6F4=
10+charm.land/fantasy v0.24.0/go.mod h1:8QrWUzIcKwZQP+aAnC9vLu3iID6hu9/Jt+rPMiieBkc=
1111charm.land/glamour/v2 v2.0.0 h1:IDBoqLEy7Hdpb9VOXN+khLP/XSxtJy1VsHuW/yF87+U=
1212charm.land/glamour/v2 v2.0.0/go.mod h1:kjq9WB0s8vuUYZNYey2jp4Lgd9f4cKdzAw88FZtpj/w=
1313charm.land/lipgloss/v2 v2.0.3 h1:yM2zJ4Cf5Y51b7RHIwioil4ApI/aypFXXVHSwlM6RzU=
internal/agent/coordinator.go+15−1
@@ -62,6 +62,15 @@ var (
6262 errSmallModelNotFound = errors.New("small model not found in provider config")
6363)
6464
65+// Copilot models that use the Responses API instead of Chat Completions.
66+var copilotResponsesModels = map[string]bool{
67+ "gpt-5.2": true,
68+ "gpt-5.2-codex": true,
69+ "gpt-5.3-codex": true,
70+ "gpt-5.4-mini": true,
71+ "gpt-5-mini": true,
72+}
73+
6574type Coordinator interface {
6675 // INFO: (kujtim) this is not used yet we will use this when we have multiple agents
6776 // SetMainAgent(string)
@@ -731,7 +740,12 @@ func (c *coordinator) buildOpenaiCompatProvider(baseURL, apiKey string, headers
731740 // Set HTTP client based on provider and debug mode.
732741 var httpClient *http.Client
733742 if providerID == string(catwalk.InferenceProviderCopilot) {
734− opts = append(opts, openaicompat.WithUseResponsesAPI())
743+ opts = append(opts,
744+ openaicompat.WithUseResponsesAPI(),
745+ openaicompat.WithResponsesAPIFunc(func(modelID string) bool {
746+ return copilotResponsesModels[modelID]
747+ }),
748+ )
735749 httpClient = copilot.NewClient(isSubAgent, c.cfg.Config().Options.Debug)
736750 } else if c.cfg.Config().Options.Debug {
737751 httpClient = log.NewHTTPClient()