Skip to content

Commit 70de104

Browse files
committed
refactor(agents): hide message handler helpers
1 parent 9dc9215 commit 70de104

2 files changed

Lines changed: 11 additions & 80 deletions

File tree

src/agents/embedded-agent-subscribe.handlers.messages.test.ts

Lines changed: 8 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,13 @@ import { describe, expect, it, vi } from "vitest";
44
import { createInlineCodeState } from "../../packages/markdown-core/src/code-spans.js";
55
import { createStreamingDirectiveAccumulator } from "../auto-reply/reply/streaming-directives.js";
66
import {
7-
buildAssistantStreamData,
87
consumePendingAssistantReplyDirectivesIntoReply,
98
consumePendingToolMediaIntoReply,
109
consumePendingToolMediaReply,
1110
handleMessageEnd,
1211
handleMessageUpdate,
1312
hasAssistantVisibleReply,
1413
readPendingToolMediaReply,
15-
recordPendingAssistantReplyDirectives,
16-
resolveSilentReplyFallbackText,
1714
} from "./embedded-agent-subscribe.handlers.messages.js";
1815
import type { EmbeddedAgentSubscribeContext } from "./embedded-agent-subscribe.handlers.types.js";
1916
import {
@@ -199,50 +196,6 @@ function createMessageToolEnvelope(message: string, args: Record<string, unknown
199196
});
200197
}
201198

202-
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-
246199
describe("hasAssistantVisibleReply", () => {
247200
it("treats audio-only payloads as visible", () => {
248201
expect(hasAssistantVisibleReply({ audioAsVoice: true })).toBe(true);
@@ -255,38 +208,16 @@ describe("hasAssistantVisibleReply", () => {
255208
});
256209
});
257210

258-
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-
278211
describe("pending assistant reply directives", () => {
279212
it("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+
};
290221

291222
expect(
292223
consumePendingAssistantReplyDirectivesIntoReply(state, {

src/agents/embedded-agent-subscribe.handlers.messages.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -271,7 +271,7 @@ function copyPartialBlockState(
271271
}
272272

273273
/** Replaces a silent-reply token with the latest sent messaging-tool text when available. */
274-
export function resolveSilentReplyFallbackText(params: {
274+
function resolveSilentReplyFallbackText(params: {
275275
text: unknown;
276276
messagingToolSentTexts: string[];
277277
}): string {
@@ -475,7 +475,7 @@ function resolveStreamingReplyText(params: {
475475
}
476476

477477
/** Records parsed reply directives until a sendable reply payload is built. */
478-
export function recordPendingAssistantReplyDirectives(
478+
function recordPendingAssistantReplyDirectives(
479479
state: Pick<EmbeddedAgentSubscribeState, "pendingAssistantReplyDirectives">,
480480
parsed: ReplyDirectiveParseResult | null | undefined,
481481
) {
@@ -529,7 +529,7 @@ export function hasAssistantVisibleReply(params: {
529529
}
530530

531531
/** Builds normalized stream payload data for assistant visible output. */
532-
export function buildAssistantStreamData(params: {
532+
function buildAssistantStreamData(params: {
533533
text?: string;
534534
delta?: string;
535535
replace?: boolean;

0 commit comments

Comments
 (0)