



















@@ -34,7 +34,13 @@ let mockedReplyThreadTs: string | undefined = THREAD_TS;
3434let mockedReplyThreadTsSequence: Array<string | undefined> | undefined;
3535let mockedDispatchSequence: Array<{
3636kind: "tool" | "block" | "final";
37-payload: { text: string; isError?: boolean; mediaUrl?: string; mediaUrls?: string[] };
37+payload: {
38+text: string;
39+isError?: boolean;
40+isReasoning?: boolean;
41+mediaUrl?: string;
42+mediaUrls?: string[];
43+};
3844}> = [];
39454046const noop = () => {};
@@ -289,7 +295,13 @@ vi.mock("../reply.runtime.js", () => ({
289295replyOptions?: { disableBlockStreaming?: boolean };
290296dispatcher: {
291297deliver: (
292-payload: { text: string; isError?: boolean; mediaUrl?: string; mediaUrls?: string[] },
298+payload: {
299+text: string;
300+isError?: boolean;
301+isReasoning?: boolean;
302+mediaUrl?: string;
303+mediaUrls?: string[];
304+},
293305info: { kind: "tool" | "block" | "final" },
294306) => Promise<void>;
295307};
@@ -389,6 +401,25 @@ describe("dispatchPreparedSlackMessage preview fallback", () => {
389401expect(deliverRepliesMock).not.toHaveBeenCalled();
390402});
391403404+it("suppresses reasoning payloads before Slack native streaming delivery", async () => {
405+mockedNativeStreaming = true;
406+mockedDispatchSequence = [
407+{ kind: "block", payload: { text: "Reasoning:\n_hidden_", isReasoning: true } },
408+{ kind: "final", payload: { text: FINAL_REPLY_TEXT } },
409+];
410+411+await dispatchPreparedSlackMessage(createPreparedSlackMessage());
412+413+expect(startSlackStreamMock).toHaveBeenCalledTimes(1);
414+expect(startSlackStreamMock).toHaveBeenCalledWith(
415+expect.objectContaining({
416+text: FINAL_REPLY_TEXT,
417+}),
418+);
419+expect(appendSlackStreamMock).not.toHaveBeenCalled();
420+expect(deliverRepliesMock).not.toHaveBeenCalled();
421+});
422+392423it("keeps same-content tool and final payloads distinct after preview fallback", async () => {
393424mockedDispatchSequence = [
394425{ kind: "tool", payload: { text: SAME_TEXT } },
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。