



























@@ -5249,12 +5249,11 @@ describe("sendPolicy deny — suppress delivery, not processing (#53328)", () =>
52495249expect(firstFinalReplyPayload(dispatcher)?.text).toBe("visible direct reply");
52505250});
525152515252-it("uses harness defaults for direct source delivery when config is unset", async () => {
5252+it("keeps Codex direct source delivery automatic when config is unset", async () => {
52535253setNoAbort();
52545254registerAgentHarness({
52555255id: "codex",
52565256label: "Codex",
5257-deliveryDefaults: { sourceVisibleReplies: "message_tool" },
52585257supports: () => ({ supported: true, priority: 100 }),
52595258runAttempt: vi.fn(async () => ({}) as never),
52605259});
@@ -5266,7 +5265,7 @@ describe("sendPolicy deny — suppress delivery, not processing (#53328)", () =>
52665265};
52675266const dispatcher = createDispatcher();
52685267const replyResolver = vi.fn(async (_ctx: MsgContext, opts?: GetReplyOptions) => {
5269-expect(opts?.sourceReplyDeliveryMode).toBe("message_tool_only");
5268+expect(opts?.sourceReplyDeliveryMode).toBe("automatic");
52705269return { text: "final reply" } satisfies ReplyPayload;
52715270});
52725271@@ -5281,6 +5280,44 @@ describe("sendPolicy deny — suppress delivery, not processing (#53328)", () =>
52815280 replyResolver,
52825281});
528352825283+expect(replyResolver).toHaveBeenCalledTimes(1);
5284+expect(result.queuedFinal).toBe(true);
5285+expect(firstFinalReplyPayload(dispatcher)?.text).toBe("final reply");
5286+});
5287+5288+it("preserves non-Codex harness direct source delivery defaults", async () => {
5289+setNoAbort();
5290+registerAgentHarness({
5291+id: "custom",
5292+label: "Custom",
5293+deliveryDefaults: { sourceVisibleReplies: "message_tool" },
5294+supports: () => ({ supported: true, priority: 200 }),
5295+runAttempt: vi.fn(async () => ({}) as never),
5296+});
5297+sessionStoreMocks.currentEntry = {
5298+sessionId: "s1",
5299+updatedAt: 0,
5300+agentHarnessId: "custom",
5301+sendPolicy: "allow",
5302+};
5303+const dispatcher = createDispatcher();
5304+const replyResolver = vi.fn(async (_ctx: MsgContext, opts?: GetReplyOptions) => {
5305+expect(opts?.sourceReplyDeliveryMode).toBe("message_tool_only");
5306+return { text: "private final reply" } satisfies ReplyPayload;
5307+});
5308+5309+const result = await dispatchReplyFromConfig({
5310+ctx: buildTestCtx({
5311+ChatType: "direct",
5312+CommandSource: undefined,
5313+Provider: "custom",
5314+SessionKey: "agent:main:main",
5315+}),
5316+cfg: emptyConfig,
5317+ dispatcher,
5318+ replyResolver,
5319+});
5320+52845321expect(replyResolver).toHaveBeenCalledTimes(1);
52855322expect(result.queuedFinal).toBe(false);
52865323expect(dispatcher.sendFinalReply).not.toHaveBeenCalled();
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。