diff options
| author | Shantur Rathore <[email protected]> | 2025-11-25 04:20:52 +0000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-11-24 22:20:52 -0600 |
| commit | 9b6d03c497d33d136cd635e44ba9e543b59d9f62 (patch) | |
| tree | 7f081fac8abafbef75f767b929adaf1274949370 | |
| parent | d3ea0446197a78d668342d360cc9d07fa5cc6fce (diff) | |
| download | opencode-9b6d03c497d33d136cd635e44ba9e543b59d9f62.tar.gz opencode-9b6d03c497d33d136cd635e44ba9e543b59d9f62.zip | |
config: add setCacheKey in provider options (#4654)
Co-authored-by: GitHub Action <[email protected]>
| -rw-r--r-- | packages/opencode/src/config/config.ts | 4 | ||||
| -rw-r--r-- | packages/opencode/src/provider/transform.ts | 10 | ||||
| -rw-r--r-- | packages/opencode/src/session/prompt.ts | 17 |
3 files changed, 26 insertions, 5 deletions
diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index 779a4e8e2..4fdbc0d2c 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -529,6 +529,10 @@ export namespace Config { apiKey: z.string().optional(), baseURL: z.string().optional(), enterpriseUrl: z.string().optional().describe("GitHub Enterprise URL for copilot authentication"), + setCacheKey: z + .boolean() + .optional() + .describe("Enable promptCacheKey for this provider (default false)"), timeout: z .union([ z diff --git a/packages/opencode/src/provider/transform.ts b/packages/opencode/src/provider/transform.ts index 6cf03fc06..7faea89b3 100644 --- a/packages/opencode/src/provider/transform.ts +++ b/packages/opencode/src/provider/transform.ts @@ -128,7 +128,13 @@ export namespace ProviderTransform { return undefined } - export function options(providerID: string, modelID: string, npm: string, sessionID: string): Record<string, any> { + export function options( + providerID: string, + modelID: string, + npm: string, + sessionID: string, + providerOptions?: Record<string, any>, + ): Record<string, any> | undefined { const result: Record<string, any> = {} // switch to providerID later, for now use this @@ -138,7 +144,7 @@ export namespace ProviderTransform { } } - if (providerID === "openai") { + if (providerID === "openai" || providerOptions?.setCacheKey) { result["promptCacheKey"] = sessionID } diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index 741e3cc7e..d1e60d577 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -475,13 +475,14 @@ export namespace SessionPrompt { tools: lastUser.tools, processor, }) + const provider = await Provider.getProvider(model.providerID) const params = await Plugin.trigger( "chat.params", { sessionID: sessionID, agent: lastUser.agent, model: model.info, - provider: await Provider.getProvider(model.providerID), + provider, message: lastUser, }, { @@ -491,7 +492,9 @@ export namespace SessionPrompt { topP: agent.topP ?? ProviderTransform.topP(model.providerID, model.modelID), options: pipe( {}, - mergeDeep(ProviderTransform.options(model.providerID, model.modelID, model.npm ?? "", sessionID)), + mergeDeep( + ProviderTransform.options(model.providerID, model.modelID, model.npm ?? "", sessionID, provider?.options), + ), mergeDeep(model.info.options), mergeDeep(agent.options), ), @@ -1412,7 +1415,15 @@ export namespace SessionPrompt { (await Provider.getSmallModel(input.providerID)) ?? (await Provider.getModel(input.providerID, input.modelID)) const options = pipe( {}, - mergeDeep(ProviderTransform.options(small.providerID, small.modelID, small.npm ?? "", input.session.id)), + mergeDeep( + ProviderTransform.options( + small.providerID, + small.modelID, + small.npm ?? "", + input.session.id, + provider?.options, + ), + ), mergeDeep(ProviderTransform.smallOptions({ providerID: small.providerID, modelID: small.modelID })), mergeDeep(small.info.options), ) |
