From 51e4c9fc4cb4ef01f7d337127b463729c2967594 Mon Sep 17 00:00:00 2001 From: Filip <34747899+neriousy@users.noreply.github.com> Date: Fri, 31 Oct 2025 05:35:26 +0100 Subject: [PATCH] add optional headers field to model config (#3546) --- packages/opencode/src/provider/models.ts | 1 + packages/opencode/src/provider/provider.ts | 1 + packages/opencode/src/session/compaction.ts | 1 + packages/opencode/src/session/prompt.ts | 9 ++++++--- packages/opencode/src/session/summary.ts | 2 ++ 5 files changed, 11 insertions(+), 3 deletions(-) diff --git a/packages/opencode/src/provider/models.ts b/packages/opencode/src/provider/models.ts index 4981d38b..34640706 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 c42b361b..9bcff4b4 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 4896d5f5..116a7e39 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 080f9d99..c6e0ad58 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 115fbe45..12b040f6 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 }