diff options
| author | Aiden Cline <[email protected]> | 2025-10-21 11:08:21 -0500 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-10-21 11:08:21 -0500 |
| commit | ca0f3902b789a8a43bb75fbc3669589b215afbc9 (patch) | |
| tree | 7d29f4ed33708512924d79f022feb0cedab3330c /packages | |
| parent | e9996342a7b9c8ef3144dcb7d25c4832a0b2b6c6 (diff) | |
| download | opencode-ca0f3902b789a8a43bb75fbc3669589b215afbc9.tar.gz opencode-ca0f3902b789a8a43bb75fbc3669589b215afbc9.zip | |
fix: provider option transforms (#3331)
Diffstat (limited to 'packages')
| -rw-r--r-- | packages/opencode/src/provider/transform.ts | 18 | ||||
| -rw-r--r-- | packages/opencode/src/session/compaction.ts | 5 | ||||
| -rw-r--r-- | packages/opencode/src/session/prompt.ts | 9 |
3 files changed, 22 insertions, 10 deletions
diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index 92001814a..e59c7859b 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -105,6 +105,24 @@ export namespace ProviderTransform { return result } + export function providerOptions(npm: string | undefined, providerID: string, options: { [x: string]: any }) { + switch (npm) { + case "@ai-sdk/openai": + case "@ai-sdk/azure": + return { + ["openai" as string]: options, + } + case "@ai-sdk/anthropic": + return { + ["anthropic" as string]: options, + } + default: + return { + [providerID]: options, + } + } + } + export function maxOutputTokens( providerID: string, options: Record<string, any>, diff --git a/packages/opencode/src/session/compaction.ts b/packages/opencode/src/session/compaction.ts index 6ef56a7ea..e3041b40a 100644 --- a/packages/opencode/src/session/compaction.ts +++ b/packages/opencode/src/session/compaction.ts @@ -15,6 +15,7 @@ import { Token } from "../util/token" import { Log } from "../util/log" import { SessionLock } from "./lock" import { NamedError } from "../util/error" +import { ProviderTransform } from "@/provider/transform" export namespace SessionCompaction { const log = Log.create({ service: "session.compaction" }) @@ -143,9 +144,7 @@ export namespace SessionCompaction { const stream = streamText({ maxRetries: 10, model: model.language, - providerOptions: { - [model.npm === "@ai-sdk/openai" ? "openai" : model.providerID]: model.info.options, - }, + providerOptions: ProviderTransform.providerOptions(model.npm, model.providerID, model.info.options), abortSignal: signal, onError(error) { log.error("stream error", { diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index 689dd6f2c..fa9d7f633 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -282,10 +282,7 @@ export namespace SessionPrompt { OUTPUT_TOKEN_MAX, ), abortSignal: abort.signal, - providerOptions: { - [model.npm === "@ai-sdk/openai" || model.npm === "@ai-sdk/azure" ? "openai" : model.providerID]: - params.options, - }, + providerOptions: ProviderTransform.providerOptions(model.npm, model.providerID, params.options), stopWhen: stepCountIs(1), temperature: params.temperature, topP: params.topP, @@ -1822,9 +1819,7 @@ export namespace SessionPrompt { } generateText({ maxOutputTokens: small.info.reasoning ? 1500 : 20, - providerOptions: { - [small.providerID]: options, - }, + providerOptions: ProviderTransform.providerOptions(small.npm, small.providerID, options), messages: [ ...SystemPrompt.title(small.providerID).map( (x): ModelMessage => ({ |
