From f350bb4dfc62cca71a15dc627c07e32b5daf8aff Mon Sep 17 00:00:00 2001 From: Ayaan Zaidi Date: Tue, 21 Apr 2026 13:58:02 +0530 Subject: [PATCH] fix(media): parse lowercase media directives --- src/auto-reply/reply/reply-delivery.test.ts | 14 ++++++++++++++ src/auto-reply/reply/reply-delivery.ts | 2 +- src/media/parse.ts | 2 +- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/auto-reply/reply/reply-delivery.test.ts b/src/auto-reply/reply/reply-delivery.test.ts index d8148268fed..4a7a7bdd3ec 100644 --- a/src/auto-reply/reply/reply-delivery.test.ts +++ b/src/auto-reply/reply/reply-delivery.test.ts @@ -125,6 +125,20 @@ describe("createBlockReplyDeliveryHandler", () => { }); }); + it("parses lowercase media directives in block replies before path normalization", () => { + const normalized = normalizeReplyPayloadDirectives({ + payload: { text: "media: ./report.pdf" }, + trimLeadingWhitespace: true, + parseMode: "auto", + }); + + expect(normalized.payload).toMatchObject({ + text: undefined, + mediaUrl: "./report.pdf", + mediaUrls: ["./report.pdf"], + }); + }); + it("passes normalized media block replies through media path normalization", async () => { const blockReplyPipeline = { enqueue: vi.fn(), diff --git a/src/auto-reply/reply/reply-delivery.ts b/src/auto-reply/reply/reply-delivery.ts index f08e15ae1fd..9547ba1bc1a 100644 --- a/src/auto-reply/reply/reply-delivery.ts +++ b/src/auto-reply/reply/reply-delivery.ts @@ -26,7 +26,7 @@ export function normalizeReplyPayloadDirectives(params: { parseMode === "always" || (parseMode === "auto" && (sourceText.includes("[[") || - sourceText.includes("MEDIA:") || + /media:/i.test(sourceText) || sourceText.includes(silentToken))); const parsed = shouldParse diff --git a/src/media/parse.ts b/src/media/parse.ts index c12165acafb..3fef2db7a96 100644 --- a/src/media/parse.ts +++ b/src/media/parse.ts @@ -184,7 +184,7 @@ export function splitMediaFromOutput(raw: string): { } const trimmedStart = line.trimStart(); - if (!trimmedStart.startsWith("MEDIA:")) { + if (!trimmedStart.toUpperCase().startsWith("MEDIA:")) { keptLines.push(line); pushTextSegment(line); lineOffset += line.length + 1; // +1 for newline