summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-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({