summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorFilip <[email protected]>2025-10-31 05:35:26 +0100
committerGitHub <[email protected]>2025-10-30 23:35:26 -0500
commit51e4c9fc4cb4ef01f7d337127b463729c2967594 (patch)
tree7689fad82be7db37949d31013a76671910e2d57c
parent43e272e6c4a631b96e1958271e72700bea0d4bdd (diff)
downloadopencode-51e4c9fc4cb4ef01f7d337127b463729c2967594.tar.gz
opencode-51e4c9fc4cb4ef01f7d337127b463729c2967594.zip
add optional headers field to model config (#3546)
-rw-r--r--packages/opencode/src/provider/models.ts1
-rw-r--r--packages/opencode/src/provider/provider.ts1
-rw-r--r--packages/opencode/src/session/compaction.ts1
-rw-r--r--packages/opencode/src/session/prompt.ts9
-rw-r--r--packages/opencode/src/session/summary.ts2
5 files changed, 11 insertions, 3 deletions
diff --git a/packages/opencode/src/provider/models.ts b/packages/opencode/src/provider/models.ts
index 4981d38b3..34640706a 100644
--- a/packages/opencode/src/provider/models.ts
+++ b/packages/opencode/src/provider/models.ts
@@ -37,6 +37,7 @@ export namespace ModelsDev {
experimental: z.boolean().optional(),
status: z.enum(["alpha", "beta"]).optional(),
options: z.record(z.string(), z.any()),
+ headers: z.record(z.string(), z.string()).optional(),
provider: z.object({ npm: z.string() }).optional(),
})
.meta({
diff --git a/packages/opencode/src/provider/provider.ts b/packages/opencode/src/provider/provider.ts
index c42b361b1..9bcff4b48 100644
--- a/packages/opencode/src/provider/provider.ts
+++ b/packages/opencode/src/provider/provider.ts
@@ -306,6 +306,7 @@ export namespace Provider {
input: ["text"],
output: ["text"],
},
+ headers: model.headers,
provider: model.provider ?? existing?.provider,
}
if (model.id && model.id !== modelID) {
diff --git a/packages/opencode/src/session/compaction.ts b/packages/opencode/src/session/compaction.ts
index 4896d5f5e..116a7e39d 100644
--- a/packages/opencode/src/session/compaction.ts
+++ b/packages/opencode/src/session/compaction.ts
@@ -150,6 +150,7 @@ export namespace SessionCompaction {
maxRetries: 0,
model: model.language,
providerOptions: ProviderTransform.providerOptions(model.npm, model.providerID, model.info.options),
+ headers: model.info.headers,
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 080f9d994..c6e0ad589 100644
--- a/packages/opencode/src/session/prompt.ts
+++ b/packages/opencode/src/session/prompt.ts
@@ -270,13 +270,15 @@ export namespace SessionPrompt {
toolName: "invalid",
}
},
- headers:
- model.providerID === "opencode"
+ headers: {
+ ...(model.providerID === "opencode"
? {
"x-opencode-session": input.sessionID,
"x-opencode-request": userMsg.info.id,
}
- : undefined,
+ : undefined),
+ ...model.info.headers,
+ },
// set to 0, we handle loop
maxRetries: 0,
activeTools: Object.keys(tools).filter((x) => x !== "invalid"),
@@ -1816,6 +1818,7 @@ export namespace SessionPrompt {
},
]),
],
+ headers: small.info.headers,
model: small.language,
})
.then((result) => {
diff --git a/packages/opencode/src/session/summary.ts b/packages/opencode/src/session/summary.ts
index 115fbe452..12b040f6b 100644
--- a/packages/opencode/src/session/summary.ts
+++ b/packages/opencode/src/session/summary.ts
@@ -84,6 +84,7 @@ export namespace SessionSummary {
content: textPart?.text ?? "",
},
],
+ headers:small.info.headers,
model: small.language,
})
log.info("title", { title: result.text })
@@ -116,6 +117,7 @@ export namespace SessionSummary {
`,
},
],
+ headers: small.info.headers
})
summary = result.text
}