Skip to content

Commit 4f9676d

Browse files
committed
refactor: simplify Copilot Responses API routing
1 parent 6c94c9b commit 4f9676d

File tree

1 file changed

+17
-19
lines changed

1 file changed

+17
-19
lines changed

packages/opencode/src/provider/provider.ts

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,15 @@ export namespace Provider {
3737
return Number(match[1]) >= 5
3838
}
3939

40+
function shouldUseCopilotResponsesApi(useResponsesApi: boolean, modelID: string): boolean {
41+
return (
42+
useResponsesApi &&
43+
isGpt5OrLater(modelID) &&
44+
!modelID.startsWith("gpt-5-mini") &&
45+
!modelID.startsWith("gpt-5-chat")
46+
)
47+
}
48+
4049
const BUNDLED_PROVIDERS: Record<string, (options: any) => SDK> = {
4150
"@ai-sdk/amazon-bedrock": createAmazonBedrock,
4251
"@ai-sdk/anthropic": createAnthropic,
@@ -103,19 +112,12 @@ export namespace Provider {
103112
return {
104113
autoload: false,
105114
async getModel(sdk: any, modelID: string, _options?: Record<string, any>) {
106-
// GitHub Copilot can optionally route supported models through the Responses API.
107-
// This enables settings like reasoningEffort/reasoningSummary for GPT-5+ models.
115+
// TODO: once GitHub Copilot enables Responses API broadly, default this on for supported models
116+
// and remove the opt-in flag to reduce configuration surface area.
108117
const useResponsesApi = Boolean(input.options?.useResponsesApi)
109118

110-
if (modelID.includes("codex")) {
111-
return sdk.responses(modelID)
112-
}
113-
114-
// gpt-5-mini is known to be unsupported via Responses API for some users.
115-
if (useResponsesApi && isGpt5OrLater(modelID) && modelID !== "gpt-5-mini") {
116-
return sdk.responses(modelID)
117-
}
118-
return sdk.chat(modelID)
119+
const useResponses = modelID.includes("codex") || shouldUseCopilotResponsesApi(useResponsesApi, modelID)
120+
return useResponses ? sdk.responses(modelID) : sdk.chat(modelID)
119121
},
120122
options: {},
121123
}
@@ -124,16 +126,12 @@ export namespace Provider {
124126
return {
125127
autoload: false,
126128
async getModel(sdk: any, modelID: string, _options?: Record<string, any>) {
129+
// TODO: once GitHub Copilot enables Responses API broadly, default this on for supported models
130+
// and remove the opt-in flag to reduce configuration surface area.
127131
const useResponsesApi = Boolean(input.options?.useResponsesApi)
128132

129-
if (modelID.includes("codex")) {
130-
return sdk.responses(modelID)
131-
}
132-
133-
if (useResponsesApi && isGpt5OrLater(modelID) && modelID !== "gpt-5-mini") {
134-
return sdk.responses(modelID)
135-
}
136-
return sdk.chat(modelID)
133+
const useResponses = modelID.includes("codex") || shouldUseCopilotResponsesApi(useResponsesApi, modelID)
134+
return useResponses ? sdk.responses(modelID) : sdk.chat(modelID)
137135
},
138136
options: {},
139137
}

0 commit comments

Comments
 (0)