




























@@ -4,16 +4,13 @@ import { describe, expect, it, vi } from "vitest";
44import { createInlineCodeState } from "../../packages/markdown-core/src/code-spans.js";
55import { createStreamingDirectiveAccumulator } from "../auto-reply/reply/streaming-directives.js";
66import {
7-buildAssistantStreamData,
87consumePendingAssistantReplyDirectivesIntoReply,
98consumePendingToolMediaIntoReply,
109consumePendingToolMediaReply,
1110handleMessageEnd,
1211handleMessageUpdate,
1312hasAssistantVisibleReply,
1413readPendingToolMediaReply,
15-recordPendingAssistantReplyDirectives,
16-resolveSilentReplyFallbackText,
1714} from "./embedded-agent-subscribe.handlers.messages.js";
1815import type { EmbeddedAgentSubscribeContext } from "./embedded-agent-subscribe.handlers.types.js";
1916import {
@@ -199,50 +196,6 @@ function createMessageToolEnvelope(message: string, args: Record<string, unknown
199196});
200197}
201198202-describe("resolveSilentReplyFallbackText", () => {
203-it("replaces NO_REPLY with latest messaging tool text when available", () => {
204-expect(
205-resolveSilentReplyFallbackText({
206-text: "NO_REPLY",
207-messagingToolSentTexts: ["first", "final delivered text"],
208-}),
209-).toBe("final delivered text");
210-});
211-212-it("keeps original text when response is not NO_REPLY", () => {
213-expect(
214-resolveSilentReplyFallbackText({
215-text: "normal assistant reply",
216-messagingToolSentTexts: ["final delivered text"],
217-}),
218-).toBe("normal assistant reply");
219-});
220-221-it("keeps NO_REPLY when there is no messaging tool text to mirror", () => {
222-expect(
223-resolveSilentReplyFallbackText({
224-text: "NO_REPLY",
225-messagingToolSentTexts: [],
226-}),
227-).toBe("NO_REPLY");
228-});
229-230-it("tolerates malformed text payloads without throwing", () => {
231-expect(
232-resolveSilentReplyFallbackText({
233-text: undefined,
234-messagingToolSentTexts: ["final delivered text"],
235-}),
236-).toBe("");
237-expect(
238-resolveSilentReplyFallbackText({
239-text: "NO_REPLY",
240-messagingToolSentTexts: [42 as unknown as string],
241-}),
242-).toBe("42");
243-});
244-});
245-246199describe("hasAssistantVisibleReply", () => {
247200it("treats audio-only payloads as visible", () => {
248201expect(hasAssistantVisibleReply({ audioAsVoice: true })).toBe(true);
@@ -255,38 +208,16 @@ describe("hasAssistantVisibleReply", () => {
255208});
256209});
257210258-describe("buildAssistantStreamData", () => {
259-it("normalizes media payloads for assistant stream events", () => {
260-expect(
261-buildAssistantStreamData({
262-text: "hello",
263-delta: "he",
264-replace: true,
265-mediaUrl: "https://example.com/a.png",
266-phase: "final_answer",
267-}),
268-).toEqual({
269-text: "hello",
270-delta: "he",
271-replace: true,
272-mediaUrls: ["https://example.com/a.png"],
273-phase: "final_answer",
274-});
275-});
276-});
277-278211describe("pending assistant reply directives", () => {
279212it("merges directive metadata into the next non-reasoning block reply", () => {
280-const state = { pendingAssistantReplyDirectives: undefined };
281-282-recordPendingAssistantReplyDirectives(state, {
283-text: "",
284-mediaUrls: ["/tmp/reply.ogg"],
285-replyToCurrent: true,
286-replyToTag: true,
287-audioAsVoice: true,
288-isSilent: false,
289-});
213+const state = {
214+pendingAssistantReplyDirectives: {
215+mediaUrls: ["/tmp/reply.ogg"],
216+replyToCurrent: true,
217+replyToTag: true,
218+audioAsVoice: true,
219+},
220+};
290221291222expect(
292223consumePendingAssistantReplyDirectivesIntoReply(state, {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。