




















@@ -941,6 +941,85 @@ describe("messaging tool media URL tracking", () => {
941941]);
942942});
943943944+it("commits upload-file args as message delivery evidence", async () => {
945+const { ctx } = createTestContext();
946+947+const startEvt: ToolExecutionStartEvent = {
948+type: "tool_execution_start",
949+toolName: "message",
950+toolCallId: "tool-upload-file",
951+args: {
952+action: "upload-file",
953+channel: "discord",
954+to: "channel:123",
955+message: "track ready",
956+path: "/tmp/generated-song.mp3",
957+},
958+};
959+await handleToolExecutionStart(ctx, startEvt);
960+961+expect(ctx.state.pendingMessagingMediaUrls.get("tool-upload-file")).toEqual([
962+"/tmp/generated-song.mp3",
963+]);
964+965+const endEvt: ToolExecutionEndEvent = {
966+type: "tool_execution_end",
967+toolName: "message",
968+toolCallId: "tool-upload-file",
969+isError: false,
970+result: { ok: true },
971+};
972+await handleToolExecutionEnd(ctx, endEvt);
973+974+expect(ctx.state.messagingToolSentMediaUrls).toEqual(["/tmp/generated-song.mp3"]);
975+expect(ctx.state.messagingToolSentTargets).toEqual([
976+expect.objectContaining({
977+provider: "discord",
978+to: "channel:123",
979+text: "track ready",
980+mediaUrls: ["/tmp/generated-song.mp3"],
981+}),
982+]);
983+expect(ctx.state.pendingMessagingMediaUrls.has("tool-upload-file")).toBe(false);
984+});
985+986+it("commits sendAttachment args as message delivery evidence", async () => {
987+const { ctx } = createTestContext();
988+989+const startEvt: ToolExecutionStartEvent = {
990+type: "tool_execution_start",
991+toolName: "message",
992+toolCallId: "tool-send-attachment",
993+args: {
994+action: "sendAttachment",
995+provider: "discord",
996+to: "channel:123",
997+content: "track ready",
998+filePath: "/tmp/generated-song.mp3",
999+},
1000+};
1001+await handleToolExecutionStart(ctx, startEvt);
1002+1003+const endEvt: ToolExecutionEndEvent = {
1004+type: "tool_execution_end",
1005+toolName: "message",
1006+toolCallId: "tool-send-attachment",
1007+isError: false,
1008+result: { ok: true },
1009+};
1010+await handleToolExecutionEnd(ctx, endEvt);
1011+1012+expect(ctx.state.messagingToolSentMediaUrls).toEqual(["/tmp/generated-song.mp3"]);
1013+expect(ctx.state.messagingToolSentTargets).toEqual([
1014+expect.objectContaining({
1015+provider: "discord",
1016+to: "channel:123",
1017+text: "track ready",
1018+mediaUrls: ["/tmp/generated-song.mp3"],
1019+}),
1020+]);
1021+});
1022+9441023it("trims messagingToolSentMediaUrls to 200 on commit (FIFO)", async () => {
9451024const { ctx } = createTestContext();
9461025此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。