

























@@ -485,6 +485,83 @@ describe("startAcpSpawnParentStreamRelay", () => {
485485relay.dispose();
486486});
487487488+it("relays commentary-phase assistant text when enabled", () => {
489+const relay = startAcpSpawnParentStreamRelay({
490+runId: "run-commentary-enabled",
491+parentSessionKey: "agent:main:main",
492+childSessionKey: "agent:codex:acp:child-commentary-enabled",
493+agentId: "codex",
494+streamFlushMs: 10,
495+noOutputNoticeMs: 120_000,
496+assistantCommentary: true,
497+});
498+499+emitAgentEvent({
500+runId: "run-commentary-enabled",
501+stream: "assistant",
502+data: {
503+delta: "checking thread context; then post a tight progress reply here.",
504+phase: "commentary",
505+},
506+});
507+vi.advanceTimersByTime(15);
508+509+const texts = collectedTexts();
510+expectTextWithFragment(
511+texts,
512+"codex: checking thread context; then post a tight progress reply here.",
513+);
514+relay.dispose();
515+});
516+517+it("classifies opted-in commentary as visible output for stall notices", () => {
518+const relay = startAcpSpawnParentStreamRelay({
519+runId: "run-commentary-visible-stall",
520+parentSessionKey: "agent:main:main",
521+childSessionKey: "agent:codex:acp:child-commentary-visible-stall",
522+agentId: "codex",
523+streamFlushMs: 1,
524+noOutputNoticeMs: 1_000,
525+noOutputPollMs: 250,
526+assistantCommentary: true,
527+});
528+529+emitAgentEvent({
530+runId: "run-commentary-visible-stall",
531+stream: "acp",
532+data: {
533+phase: "prompt_submitted",
534+at: Date.now(),
535+proxyEnvKeys: [],
536+},
537+});
538+emitAgentEvent({
539+runId: "run-commentary-visible-stall",
540+stream: "acp",
541+data: {
542+phase: "runtime_event",
543+eventType: "status",
544+text: "connecting to upstream",
545+},
546+});
547+emitAgentEvent({
548+runId: "run-commentary-visible-stall",
549+stream: "assistant",
550+data: {
551+delta: "checking active files before patching.",
552+phase: "commentary",
553+},
554+});
555+vi.advanceTimersByTime(5);
556+vi.advanceTimersByTime(1_500);
557+558+const texts = collectedTexts();
559+expectTextWithFragment(texts, "codex: checking active files before patching.");
560+expectNoTextWithFragment(texts, "has ACP runtime activity but no visible assistant output");
561+expectTextWithFragment(texts, "has produced no visible output for 1s");
562+relay.dispose();
563+});
564+488565it("still relays final_answer assistant text after suppressed commentary", () => {
489566const relay = startAcpSpawnParentStreamRelay({
490567runId: "run-final",
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。