diff --git a/CHANGELOG.md b/CHANGELOG.md index 783575b69..e401cbfa7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -37,6 +37,7 @@ - Auto-reply: block reply ordering fix (duplicate PR superseded by #503). (#483) — thanks @AbhisekBasu1 - Auto-reply: avoid splitting outbound chunks inside parentheses. (#499) — thanks @philipp-spiess - Auto-reply: preserve spacing when stripping inline directives. (#539) — thanks @joshp123 +- Auto-reply: relax reply tag parsing to allow whitespace. (#560) — thanks @mcinteerj - Auto-reply: fix /status usage summary filtering for the active provider. - Status: show provider prefix in /status model display. (#506) — thanks @mcinteerj - Status: compact /status with session token usage + estimated cost, add `/cost` per-response usage lines (tokens-only for OAuth). diff --git a/src/auto-reply/reply.directive.parse.test.ts b/src/auto-reply/reply.directive.parse.test.ts index e3a2fecfb..ad03d8fa6 100644 --- a/src/auto-reply/reply.directive.parse.test.ts +++ b/src/auto-reply/reply.directive.parse.test.ts @@ -162,12 +162,24 @@ describe("directive parsing", () => { expect(res.cleaned).toBe("ok"); }); + it("extracts reply_to_current tag with whitespace", () => { + const res = extractReplyToTag("ok [[ reply_to_current ]]", "msg-1"); + expect(res.replyToId).toBe("msg-1"); + expect(res.cleaned).toBe("ok"); + }); + it("extracts reply_to id tag", () => { const res = extractReplyToTag("see [[reply_to:12345]] now", "msg-1"); expect(res.replyToId).toBe("12345"); expect(res.cleaned).toBe("see now"); }); + it("extracts reply_to id tag with whitespace", () => { + const res = extractReplyToTag("see [[ reply_to : 12345 ]] now", "msg-1"); + expect(res.replyToId).toBe("12345"); + expect(res.cleaned).toBe("see now"); + }); + it("preserves newlines when stripping reply tags", () => { const res = extractReplyToTag( "line 1\nline 2 [[reply_to_current]]\n\nline 3", diff --git a/src/auto-reply/reply/reply-tags.ts b/src/auto-reply/reply/reply-tags.ts index 86ca07956..ef2de524a 100644 --- a/src/auto-reply/reply/reply-tags.ts +++ b/src/auto-reply/reply/reply-tags.ts @@ -22,7 +22,7 @@ export function extractReplyToTag( const idMatch = cleaned.match(/\[\[\s*reply_to\s*:\s*([^\]\n]+)\s*\]\]/i); if (idMatch?.[1]) { - cleaned = cleaned.replace(/\[\[\s*reply_to\s*:[^\]\n]+\]\]/gi, " "); + cleaned = cleaned.replace(/\[\[\s*reply_to\s*:\s*[^\]\n]+\s*\]\]/gi, " "); replyToId = idMatch[1].trim(); hasTag = true; }