diff --git a/packages/opencode/src/session/llm.ts b/packages/opencode/src/session/llm.ts index 53d8fdc1d3..e7e7e1d700 100644 --- a/packages/opencode/src/session/llm.ts +++ b/packages/opencode/src/session/llm.ts @@ -11,7 +11,7 @@ import { tool, jsonSchema, } from "ai" -import { mergeDeep, pipe } from "remeda" +import { clone, mergeDeep, pipe } from "remeda" import { ProviderTransform } from "@/provider/transform" import { Config } from "@/config/config" import { Instance } from "@/project/instance" @@ -80,7 +80,7 @@ export namespace LLM { ) const header = system[0] - const original = structuredClone(system) + const original = clone(system) await Plugin.trigger( "experimental.chat.system.transform", { sessionID: input.sessionID, model: input.model }, @@ -210,18 +210,12 @@ export namespace LLM { maxOutputTokens, abortSignal: input.abort, headers: { - ...(input.model.providerID.startsWith("opencode") - ? { - "x-opencode-project": Instance.project.id, - "x-opencode-session": input.sessionID, - "x-opencode-request": input.user.id, - "x-opencode-client": Flag.OPENCODE_CLIENT, - } - : input.model.providerID !== "anthropic" - ? { - "User-Agent": `opencode/${Installation.VERSION}`, - } - : undefined), + ...(input.model.providerID.startsWith("opencode") && { + "x-opencode-project": Instance.project.id, + "x-opencode-session": input.sessionID, + "x-opencode-request": input.user.id, + "x-opencode-client": Flag.OPENCODE_CLIENT, + }), ...input.model.headers, ...headers, }, diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts index bf7e16f622..6ca93979e3 100644 --- a/packages/opencode/src/session/prompt.ts +++ b/packages/opencode/src/session/prompt.ts @@ -22,6 +22,7 @@ import PROMPT_PLAN from "../session/prompt/plan.txt" import BUILD_SWITCH from "../session/prompt/build-switch.txt" import MAX_STEPS from "../session/prompt/max-steps.txt" import { defer } from "../util/defer" +import { clone } from "remeda" import { ToolRegistry } from "../tool/registry" import { MCP } from "../mcp" import { LSP } from "../lsp" @@ -626,7 +627,7 @@ export namespace SessionPrompt { }) } - const sessionMessages = structuredClone(msgs) + const sessionMessages = clone(msgs) // Ephemerally wrap queued user messages with a reminder to stay on track if (step > 1 && lastFinished) {