diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index 668f3041..ccc36ba2 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -128,10 +128,15 @@ export namespace ProviderTransform { return undefined } - export function options(providerID: string, modelID: string, sessionID: string): Record | undefined { + export function options( + providerID: string, + modelID: string, + npm: string, + sessionID: string, + ): Record | undefined { const result: Record = {} - if (providerID === "openai") { + if (providerID === "openai" || npm.includes("openai")) { result["promptCacheKey"] = sessionID } diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index ae6aff22..0fb7ad22 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -266,7 +266,7 @@ export namespace SessionPrompt { : undefined, topP: agent.topP ?? ProviderTransform.topP(model.providerID, model.modelID), options: { - ...ProviderTransform.options(model.providerID, model.modelID, input.sessionID), + ...ProviderTransform.options(model.providerID, model.modelID, model.npm ?? "", input.sessionID), ...model.info.options, ...agent.options, }, @@ -1819,7 +1819,7 @@ export namespace SessionPrompt { const small = (await Provider.getSmallModel(input.providerID)) ?? (await Provider.getModel(input.providerID, input.modelID)) const options = { - ...ProviderTransform.options(small.providerID, small.modelID, input.session.id), + ...ProviderTransform.options(small.providerID, small.modelID, small.npm ?? "", input.session.id), ...small.info.options, } if (small.providerID === "openai" || small.modelID.includes("gpt-5")) {