feat(opencode): configure Cohere North model (#31536)

This commit is contained in:
Aiden Cline 2026-06-09 10:54:03 -05:00 committed by GitHub
parent 8415ff50cb
commit 0bb677cef9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 50 additions and 0 deletions

View File

@ -478,6 +478,7 @@ export function message(msgs: ModelMessage[], model: Provider.Model, options: Re
export function temperature(model: Provider.Model) {
const id = model.id.toLowerCase()
if (id.includes("north-mini-code")) return 1.0
if (id.includes("qwen")) return 0.55
if (id.includes("claude")) return undefined
if (id.includes("gemini")) return 1.0
@ -826,6 +827,9 @@ export function variants(model: Provider.Model): Record<string, Record<string, a
case "venice-ai-sdk-provider":
// https://docs.venice.ai/overview/guides/reasoning-models#reasoning-effort
case "@ai-sdk/openai-compatible":
if (model.api.id.toLowerCase().includes("north-mini-code")) {
return Object.fromEntries(["none", "high"].map((effort) => [effort, { reasoningEffort: effort }]))
}
const efforts = [...WIDELY_SUPPORTED_EFFORTS]
if (model.api.id.toLowerCase().includes("deepseek-v4")) {
efforts.push("max")
@ -1105,6 +1109,10 @@ export function options(input: {
}
const modelId = input.model.api.id.toLowerCase()
if (modelId.includes("north-mini-code") && input.model.api.npm === "@ai-sdk/openai-compatible") {
result["options"] = { citation_options: { mode: "disabled" } }
}
// MiniMax's Anthropic interface defaults thinking off, unlike Chat Completions.
if (modelId.includes("minimax-m3") && input.model.api.npm === "@ai-sdk/anthropic") {
result["thinking"] = { type: "adaptive" }

View File

@ -2483,6 +2483,31 @@ describe("ProviderTransform.message - cache control on gateway", () => {
})
})
describe("ProviderTransform.options - Cohere North", () => {
test("disables citations by default for north-mini-code-1-0", () => {
const result = ProviderTransform.options({
model: {
id: "cohere/north-mini-code-1-0",
providerID: "cohere",
api: {
id: "North-Mini-Code-1-0-latest",
url: "https://api.cohere.com/compatibility/v1",
npm: "@ai-sdk/openai-compatible",
},
capabilities: { reasoning: true },
} as any,
sessionID: "test-session-123",
})
expect(result.options).toEqual({ citation_options: { mode: "disabled" } })
})
})
describe("ProviderTransform.temperature - Cohere North", () => {
test("defaults north-mini-code models to 1.0", () => {
expect(ProviderTransform.temperature({ id: "cohere/North-Mini-Code-1-0-latest" } as any)).toBe(1.0)
})
})
describe("ProviderTransform.variants", () => {
const createMockModel = (overrides: Partial<any> = {}): any => ({
id: "test/test-model",
@ -3209,6 +3234,23 @@ describe("ProviderTransform.variants", () => {
expect(result.low).toEqual({ reasoningEffort: "low" })
expect(result.high).toEqual({ reasoningEffort: "high" })
})
test("north-mini-code-1-0 returns only none and high", () => {
const model = createMockModel({
id: "cohere/north-mini-code-1-0",
providerID: "cohere",
api: {
id: "North-Mini-Code-1-0-latest",
url: "https://api.cohere.com/compatibility/v1",
npm: "@ai-sdk/openai-compatible",
},
})
const result = ProviderTransform.variants(model)
expect(result).toEqual({
none: { reasoningEffort: "none" },
high: { reasoningEffort: "high" },
})
})
})
describe("@ai-sdk/azure", () => {