diff --git a/go.mod b/go.mod index b67187b73f1c7144d452364fa90578a7bb7337da..19df7e97ece12a2d1a1f0243e3513d2563e94cca 100644 --- a/go.mod +++ b/go.mod @@ -7,7 +7,7 @@ require ( charm.land/bubbletea/v2 v2.0.6 charm.land/catwalk v0.40.0 charm.land/fang/v2 v2.0.1 - charm.land/fantasy v0.23.2 + charm.land/fantasy v0.24.0 charm.land/glamour/v2 v2.0.0 charm.land/lipgloss/v2 v2.0.3 charm.land/log/v2 v2.0.0 diff --git a/go.sum b/go.sum index 2f9bbc3608391ad3c74c59dc3e6b22464cfb858f..c6878a43aba265a3c9a5a19e2bdb6c59c8525597 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,8 @@ charm.land/catwalk v0.40.0 h1:Ldqr2YzTqk2QdXAFFa5W/EiFoxNGMQc7KXekze5Z+Cw= charm.land/catwalk v0.40.0/go.mod h1:LmMFJdRqF5F7qKa+xqD9SBq7tph7L98GU3ZFa1TxftA= charm.land/fang/v2 v2.0.1 h1:zQCM8JQJ1JnQX/66B5jlCYBUxL2as5JXQZ2KJ6EL0mY= charm.land/fang/v2 v2.0.1/go.mod h1:S1GmkpcvK+OB5w9caywUnJcsMew45Ot8FXqoz8ALrII= -charm.land/fantasy v0.23.2 h1:9gUknrENwv0lV379Hs7m/GK2c/9m+gWXyfbox1tVHrg= -charm.land/fantasy v0.23.2/go.mod h1:8QrWUzIcKwZQP+aAnC9vLu3iID6hu9/Jt+rPMiieBkc= +charm.land/fantasy v0.24.0 h1:/q35T2TvrqTYqMnFOBHEqp8IWoKMxh05Y7r5wsF/6F4= +charm.land/fantasy v0.24.0/go.mod h1:8QrWUzIcKwZQP+aAnC9vLu3iID6hu9/Jt+rPMiieBkc= charm.land/glamour/v2 v2.0.0 h1:IDBoqLEy7Hdpb9VOXN+khLP/XSxtJy1VsHuW/yF87+U= charm.land/glamour/v2 v2.0.0/go.mod h1:kjq9WB0s8vuUYZNYey2jp4Lgd9f4cKdzAw88FZtpj/w= charm.land/lipgloss/v2 v2.0.3 h1:yM2zJ4Cf5Y51b7RHIwioil4ApI/aypFXXVHSwlM6RzU= diff --git a/internal/agent/coordinator.go b/internal/agent/coordinator.go index 68e83b1a63f05b20dea567fefeb41e1519a19ce7..749db4572775e646e6ebb318e13f84b48be1fd6f 100644 --- a/internal/agent/coordinator.go +++ b/internal/agent/coordinator.go @@ -62,6 +62,15 @@ var ( errSmallModelNotFound = errors.New("small model not found in provider config") ) +// Copilot models that use the Responses API instead of Chat Completions. +var copilotResponsesModels = map[string]bool{ + "gpt-5.2": true, + "gpt-5.2-codex": true, + "gpt-5.3-codex": true, + "gpt-5.4-mini": true, + "gpt-5-mini": true, +} + type Coordinator interface { // INFO: (kujtim) this is not used yet we will use this when we have multiple agents // SetMainAgent(string) @@ -731,7 +740,12 @@ func (c *coordinator) buildOpenaiCompatProvider(baseURL, apiKey string, headers // Set HTTP client based on provider and debug mode. var httpClient *http.Client if providerID == string(catwalk.InferenceProviderCopilot) { - opts = append(opts, openaicompat.WithUseResponsesAPI()) + opts = append(opts, + openaicompat.WithUseResponsesAPI(), + openaicompat.WithResponsesAPIFunc(func(modelID string) bool { + return copilotResponsesModels[modelID] + }), + ) httpClient = copilot.NewClient(isSubAgent, c.cfg.Config().Options.Debug) } else if c.cfg.Config().Options.Debug { httpClient = log.NewHTTPClient()