Cover three integration points where media dedup could silently regress: - trimMessagingToolSent FIFO cap at 200 entries - buildReplyPayloads media filter wiring (new test file) - followup-runner messagingToolSentMediaUrls filtering
47 lines
1.6 KiB
TypeScript
47 lines
1.6 KiB
TypeScript
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);
|
|
});
|
|
});
|