summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAiden Cline <[email protected]>2025-10-21 11:08:21 -0500
committerGitHub <[email protected]>2025-10-21 11:08:21 -0500
commitca0f3902b789a8a43bb75fbc3669589b215afbc9 (patch)
tree7d29f4ed33708512924d79f022feb0cedab3330c
parente9996342a7b9c8ef3144dcb7d25c4832a0b2b6c6 (diff)
downloadopencode-ca0f3902b789a8a43bb75fbc3669589b215afbc9.tar.gz
opencode-ca0f3902b789a8a43bb75fbc3669589b215afbc9.zip
fix: provider option transforms (#3331)
-rw-r--r--packages/opencode/src/provider/transform.ts18
-rw-r--r--packages/opencode/src/session/compaction.ts5
-rw-r--r--packages/opencode/src/session/prompt.ts9
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 => ({