fix: harden iMessage echo dedupe and reasoning suppression (#25897)

This commit is contained in:
Peter Steinberger
2026-02-25 00:43:44 +00:00
parent a9ce6bd79b
commit 2a11c09a8d
13 changed files with 273 additions and 40 deletions

View File

@@ -908,6 +908,14 @@ describe("normalizeOutboundPayloadsForJson", () => {
expect(normalizeOutboundPayloadsForJson(input)).toEqual(testCase.expected);
}
});
it("suppresses reasoning payloads", () => {
const normalized = normalizeOutboundPayloadsForJson([
{ text: "Reasoning:\n_step_", isReasoning: true },
{ text: "final answer" },
]);
expect(normalized).toEqual([{ text: "final answer", mediaUrl: null, mediaUrls: undefined }]);
});
});
describe("normalizeOutboundPayloads", () => {
@@ -916,6 +924,14 @@ describe("normalizeOutboundPayloads", () => {
const normalized = normalizeOutboundPayloads([{ channelData }]);
expect(normalized).toEqual([{ text: "", mediaUrls: [], channelData }]);
});
it("suppresses reasoning payloads", () => {
const normalized = normalizeOutboundPayloads([
{ text: "Reasoning:\n_step_", isReasoning: true },
{ text: "final answer" },
]);
expect(normalized).toEqual([{ text: "final answer", mediaUrls: [] }]);
});
});
describe("formatOutboundPayloadLog", () => {

View File

@@ -41,6 +41,9 @@ export function normalizeReplyPayloadsForDelivery(
payloads: readonly ReplyPayload[],
): ReplyPayload[] {
return payloads.flatMap((payload) => {
if (payload.isReasoning) {
return [];
}
const parsed = parseReplyDirectives(payload.text ?? "");
const explicitMediaUrls = payload.mediaUrls ?? parsed.mediaUrls;
const explicitMediaUrl = payload.mediaUrl ?? parsed.mediaUrl;