summaryrefslogtreecommitdiffhomepage
path: root/packages
diff options
context:
space:
mode:
authorShantur Rathore <[email protected]>2025-11-25 23:53:56 +0000
committerGitHub <[email protected]>2025-11-25 17:53:56 -0600
commit69c2dd53adf126a3c68d2974b8753ae0f92ee854 (patch)
tree3b7d05d6a5ba584780585250fe4b899a4417d598 /packages
parent14a910bd64ae3c11b8ff0d2a6a5789d46bccb008 (diff)
downloadopencode-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.ts4
-rw-r--r--packages/opencode/src/provider/transform.ts10
-rw-r--r--packages/opencode/src/session/prompt.ts18
-rw-r--r--packages/sdk/js/src/gen/types.gen.ts6
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
}
}
}