import { describe, expect, it } from "vitest"; import { buildReplyPayloads } from "./agent-runner-payloads.js"; const baseParams = { isHeartbeat: false, didLogHeartbeatStrip: false, blockStreamingEnabled: false, blockReplyPipeline: null, replyToMode: "off" as const, }; describe("buildReplyPayloads media filter integration", () => { it("strips media URL from payload when in messagingToolSentMediaUrls", () => { const { replyPayloads } = buildReplyPayloads({ ...baseParams, payloads: [{ text: "hello", mediaUrl: "file:///tmp/photo.jpg" }], messagingToolSentMediaUrls: ["file:///tmp/photo.jpg"], }); expect(replyPayloads).toHaveLength(1); expect(replyPayloads[0].mediaUrl).toBeUndefined(); }); it("preserves media URL when not in messagingToolSentMediaUrls", () => { const { replyPayloads } = buildReplyPayloads({ ...baseParams, payloads: [{ text: "hello", mediaUrl: "file:///tmp/photo.jpg" }], messagingToolSentMediaUrls: ["file:///tmp/other.jpg"], }); expect(replyPayloads).toHaveLength(1); expect(replyPayloads[0].mediaUrl).toBe("file:///tmp/photo.jpg"); }); it("applies media filter after text filter", () => { const { replyPayloads } = buildReplyPayloads({ ...baseParams, payloads: [{ text: "hello world!", mediaUrl: "file:///tmp/photo.jpg" }], messagingToolSentTexts: ["hello world!"], messagingToolSentMediaUrls: ["file:///tmp/photo.jpg"], }); // Text filter removes the payload entirely (text matched), so nothing remains. expect(replyPayloads).toHaveLength(0); }); });