From 72ebaeb8f7e5ac86b9b2d876658ff3fff4638b25 Mon Sep 17 00:00:00 2001 From: DS <78942835+Tarquinen@users.noreply.github.com> Date: Mon, 15 Dec 2025 20:59:55 -0500 Subject: [PATCH] fix: rejoin system prompt if experimental plugin hook triggers to preserve caching (#5550) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- packages/opencode/src/session/llm.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/opencode/src/session/llm.ts b/packages/opencode/src/session/llm.ts index f95690420..ce7b60f0a 100644 --- a/packages/opencode/src/session/llm.ts +++ b/packages/opencode/src/session/llm.ts @@ -60,11 +60,18 @@ export namespace LLM { .join("\n"), ) + const header = system[0] const original = clone(system) await Plugin.trigger("experimental.chat.system.transform", {}, { system }) if (system.length === 0) { system.push(...original) } + // rejoin to maintain 2-part structure for caching if header unchanged + if (system.length > 2 && system[0] === header) { + const rest = system.slice(1) + system.length = 0 + system.push(header, rest.join("\n")) + } const params = await Plugin.trigger( "chat.params",