diff options
| author | Shantur Rathore <[email protected]> | 2025-11-25 23:53:56 +0000 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-11-25 17:53:56 -0600 |
| commit | 69c2dd53adf126a3c68d2974b8753ae0f92ee854 (patch) | |
| tree | 3b7d05d6a5ba584780585250fe4b899a4417d598 /packages | |
| parent | 14a910bd64ae3c11b8ff0d2a6a5789d46bccb008 (diff) | |
| download | opencode-69c2dd53adf126a3c68d2974b8753ae0f92ee854.tar.gz opencode-69c2dd53adf126a3c68d2974b8753ae0f92ee854.zip | |
config: add setCacheKey in provider options (#4738)
Co-authored-by: GitHub Action <[email protected]>
Co-authored-by: Aiden Cline <[email protected]>
Diffstat (limited to 'packages')
| -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 | 18 | ||||
| -rw-r--r-- | packages/sdk/js/src/gen/types.gen.ts | 6 |
4 files changed, 32 insertions, 6 deletions
diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index 28b8ca3b2..0ea0e8fa2 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -540,6 +540,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..2b9c53bbf 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> { 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 e6c64f96b..c6721202a 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -477,13 +477,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, }, { @@ -493,7 +494,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,9 +1415,18 @@ export namespace SessionPrompt { if (!isFirst) return const small = (await Provider.getSmallModel(input.providerID)) ?? (await Provider.getModel(input.providerID, input.modelID)) + const provider = await Provider.getProvider(small.providerID) 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), ) diff --git a/packages/sdk/js/src/gen/types.gen.ts b/packages/sdk/js/src/gen/types.gen.ts index 2de8ca2f1..6e3b8c071 100644 --- a/packages/sdk/js/src/gen/types.gen.ts +++ b/packages/sdk/js/src/gen/types.gen.ts @@ -1124,10 +1124,14 @@ export type Config = { */ enterpriseUrl?: string /** + * Enable promptCacheKey for this provider (default false) + */ + setCacheKey?: boolean + /** * Timeout in milliseconds for requests to this provider. Default is 300000 (5 minutes). Set to false to disable timeout. */ timeout?: number | false - [key: string]: unknown | string | (number | false) | undefined + [key: string]: unknown | string | boolean | (number | false) | undefined } } } |
