fix(opencode): add GitLab reasoning variants (#47306)
This commit is contained in:
parent
bbd72fb8b0
commit
7c2199d84a
5 changed files with 25 additions and 8 deletions
6
bun.lock
6
bun.lock
|
|
@ -341,7 +341,7 @@
|
|||
"drizzle-orm": "catalog:",
|
||||
"effect": "catalog:",
|
||||
"fuzzysort": "3.1.0",
|
||||
"gitlab-ai-provider": "6.13.0",
|
||||
"gitlab-ai-provider": "6.14.0",
|
||||
"glob": "13.0.5",
|
||||
"google-auth-library": "10.5.0",
|
||||
"gray-matter": "4.0.3",
|
||||
|
|
@ -634,7 +634,7 @@
|
|||
"drizzle-orm": "catalog:",
|
||||
"effect": "catalog:",
|
||||
"fuzzysort": "3.1.0",
|
||||
"gitlab-ai-provider": "6.13.0",
|
||||
"gitlab-ai-provider": "6.14.0",
|
||||
"glob": "13.0.5",
|
||||
"google-auth-library": "10.5.0",
|
||||
"gray-matter": "4.0.3",
|
||||
|
|
@ -3845,7 +3845,7 @@
|
|||
|
||||
"github-slugger": ["github-slugger@2.0.0", "", {}, "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw=="],
|
||||
|
||||
"gitlab-ai-provider": ["gitlab-ai-provider@6.13.0", "", { "dependencies": { "@anthropic-ai/sdk": "^0.71.0", "@anycable/core": "^0.9.2", "graphql-request": "^6.1.0", "isomorphic-ws": "^5.0.0", "openai": "^6.16.0", "socket.io-client": "^4.8.1", "vscode-jsonrpc": "^8.2.1", "zod": "^3.25.76" }, "peerDependencies": { "@ai-sdk/provider": ">=3.0.0", "@ai-sdk/provider-utils": ">=4.0.0" } }, "sha512-JDZhNjvoiB7xBfesNegXNDg6ItKf9M2l8/DifuIyuvYmGgaZnDDbl89QrOKSoIzAOpo/+3Om0qviBPm84nGEbg=="],
|
||||
"gitlab-ai-provider": ["gitlab-ai-provider@6.14.0", "", { "dependencies": { "@anthropic-ai/sdk": "^0.71.0", "@anycable/core": "^0.9.2", "graphql-request": "^6.1.0", "isomorphic-ws": "^5.0.0", "openai": "^6.16.0", "socket.io-client": "^4.8.1", "vscode-jsonrpc": "^8.2.1", "zod": "^3.25.76" }, "peerDependencies": { "@ai-sdk/provider": ">=3.0.0", "@ai-sdk/provider-utils": ">=4.0.0" } }, "sha512-qTkmFhcHXH0tjQN6i5D2lz9OpmYN0lwJdmFIXlsmy6IiYVV2dmsqMemlDNjpE5M8gdSC+61n4mByPzVsyBu0lg=="],
|
||||
|
||||
"glob": ["glob@13.0.5", "", { "dependencies": { "minimatch": "^10.2.1", "minipass": "^7.1.2", "path-scurry": "^2.0.0" } }, "sha512-BzXxZg24Ibra1pbQ/zE7Kys4Ua1ks7Bn6pKLkVPZ9FZe4JQS6/Q7ef3LG1H+k7lUf5l4T3PLSyYyYJVYUvfgTw=="],
|
||||
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@
|
|||
"drizzle-orm": "catalog:",
|
||||
"effect": "catalog:",
|
||||
"fuzzysort": "3.1.0",
|
||||
"gitlab-ai-provider": "6.13.0",
|
||||
"gitlab-ai-provider": "6.14.0",
|
||||
"glob": "13.0.5",
|
||||
"google-auth-library": "10.5.0",
|
||||
"gray-matter": "4.0.3",
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@
|
|||
"drizzle-orm": "catalog:",
|
||||
"effect": "catalog:",
|
||||
"fuzzysort": "3.1.0",
|
||||
"gitlab-ai-provider": "6.13.0",
|
||||
"gitlab-ai-provider": "6.14.0",
|
||||
"glob": "13.0.5",
|
||||
"google-auth-library": "10.5.0",
|
||||
"gray-matter": "4.0.3",
|
||||
|
|
|
|||
|
|
@ -1824,11 +1824,14 @@ function reasoningEffort(model: Provider.Model, effort: string) {
|
|||
case "ai-gateway-provider":
|
||||
case "merge-gateway-ai-sdk-provider":
|
||||
return { reasoningEffort: effort }
|
||||
case "gitlab-ai-provider":
|
||||
if (model.family?.startsWith("gpt")) return { reasoningEffort: effort }
|
||||
if (model.family?.startsWith("claude")) return { thinking: { type: "adaptive", effort } }
|
||||
return
|
||||
case "@ai-sdk/cohere":
|
||||
case "@ai-sdk/perplexity":
|
||||
case "@ai-sdk/vercel":
|
||||
case "@ai-sdk/alibaba":
|
||||
case "gitlab-ai-provider":
|
||||
return
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3798,10 +3798,11 @@ describe("ProviderTransform sampling defaults - DeepSeek", () => {
|
|||
|
||||
describe("ProviderTransform.reasoningVariants", () => {
|
||||
const model = (reasoning_options: ModelsDev.Model["reasoning_options"]) => ({ reasoning_options }) as ModelsDev.Model
|
||||
const target = (npm: string, id = "test-model") =>
|
||||
const target = (npm: string, id = "test-model", family = "") =>
|
||||
({
|
||||
id,
|
||||
providerID: "test",
|
||||
family,
|
||||
api: { id, npm, url: "" },
|
||||
capabilities: { reasoning: true },
|
||||
limit: { output: 64_000 },
|
||||
|
|
@ -3951,6 +3952,19 @@ describe("ProviderTransform.reasoningVariants", () => {
|
|||
})
|
||||
})
|
||||
|
||||
test("maps GitLab model efforts to provider-specific options", () => {
|
||||
const options = model([{ type: "effort", values: ["max"] }])
|
||||
const openai = target("gitlab-ai-provider", "duo-chat-gpt-5-6-sol", "gpt-sol")
|
||||
const anthropic = target("gitlab-ai-provider", "duo-chat-opus-4-8", "claude-opus")
|
||||
|
||||
expect(ProviderTransform.reasoningVariants(options, openai)).toEqual({
|
||||
max: { reasoningEffort: "max" },
|
||||
})
|
||||
expect(ProviderTransform.reasoningVariants(options, anthropic)).toEqual({
|
||||
max: { thinking: { type: "adaptive", effort: "max" } },
|
||||
})
|
||||
})
|
||||
|
||||
test("uses adaptive reasoning config for Anthropic models on Bedrock", () => {
|
||||
expect(
|
||||
ProviderTransform.reasoningVariants(
|
||||
|
|
@ -4150,7 +4164,7 @@ describe("ProviderTransform.reasoningVariants", () => {
|
|||
expect(ProviderTransform.reasoningVariants(effort, target("@ai-sdk/github-copilot", "gemini-3-pro"))).toEqual({})
|
||||
})
|
||||
|
||||
test.each(["@ai-sdk/cohere", "@ai-sdk/perplexity", "@ai-sdk/vercel", "@ai-sdk/alibaba", "gitlab-ai-provider"])(
|
||||
test.each(["@ai-sdk/cohere", "@ai-sdk/perplexity", "@ai-sdk/vercel", "@ai-sdk/alibaba"])(
|
||||
"does not invent effort controls for %s",
|
||||
(npm) => {
|
||||
expect(ProviderTransform.reasoningVariants(model([{ type: "effort", values: ["high"] }]), target(npm))).toEqual(
|
||||
|
|
|
|||
Loading…
Reference in a new issue