summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAiden Cline <[email protected]>2026-01-02 20:42:56 -0800
committerGitHub <[email protected]>2026-01-02 22:42:56 -0600
commitf991fbbde8c2887ddc881d02e020f2dc71d3b509 (patch)
tree632c9b97671a593580d10e9d89f01bfb685c25bf
parent401b498c7d9727b69f9b80ef472da0667244fc6d (diff)
downloadopencode-f991fbbde8c2887ddc881d02e020f2dc71d3b509.tar.gz
opencode-f991fbbde8c2887ddc881d02e020f2dc71d3b509.zip
core: ephemerally wrap queued user messages with reminder to stay on track (#6725)
-rw-r--r--packages/opencode/src/session/prompt.ts19
1 files changed, 19 insertions, 0 deletions
diff --git a/packages/opencode/src/session/prompt.ts b/packages/opencode/src/session/prompt.ts
index b635cee7f..634539ade 100644
--- a/packages/opencode/src/session/prompt.ts
+++ b/packages/opencode/src/session/prompt.ts
@@ -560,6 +560,25 @@ export namespace SessionPrompt {
const sessionMessages = clone(msgs)
+ // Ephemerally wrap queued user messages with a reminder to stay on track
+ if (step > 1 && lastFinished) {
+ for (const msg of sessionMessages) {
+ if (msg.info.role !== "user" || msg.info.id <= lastFinished.id) continue
+ for (const part of msg.parts) {
+ if (part.type !== "text" || part.ignored || part.synthetic) continue
+ if (!part.text.trim()) continue
+ part.text = [
+ "<system-reminder>",
+ "The user sent the following message:",
+ part.text,
+ "",
+ "Please address this message and continue with your tasks.",
+ "</system-reminder>",
+ ].join("\n")
+ }
+ }
+ }
+
await Plugin.trigger("experimental.chat.messages.transform", {}, { messages: sessionMessages })
const result = await processor.process({