Skip to content

Commit 3d38ccd

Browse files
committed
test(agents): cover internal orphan prompt sources
1 parent e684ac2 commit 3d38ccd

2 files changed

Lines changed: 55 additions & 31 deletions

File tree

src/agents/embedded-agent-runner/run/attempt.test.ts

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,15 @@ describe("shouldWarnOnOrphanedUserRepair", () => {
342342
});
343343
});
344344

345+
const internalSessionStateSourceTools = [
346+
"agent_harness_task",
347+
"image_generate",
348+
"music_generate",
349+
"subagent_announce",
350+
"subagent_interrupted_resume",
351+
"video_generate",
352+
] as const;
353+
345354
describe("mergeOrphanedTrailingUserPrompt", () => {
346355
it("merges an orphaned user leaf into the next user-triggered prompt when missing", () => {
347356
expect(
@@ -361,22 +370,25 @@ describe("mergeOrphanedTrailingUserPrompt", () => {
361370
});
362371
});
363372

364-
it("drops stale internal inter-session leaves instead of shadowing a fresh prompt", () => {
365-
expect(
366-
mergeOrphanedTrailingUserPrompt({
373+
it.each(internalSessionStateSourceTools)(
374+
"drops stale internal inter-session %s leaves instead of shadowing a fresh prompt",
375+
(sourceTool) => {
376+
expect(
377+
mergeOrphanedTrailingUserPrompt({
378+
prompt: "newest inbound message",
379+
trigger: "user",
380+
leafMessage: {
381+
content: [{ type: "text", text: `NO_REPLY stale ${sourceTool} completion` }],
382+
provenance: { kind: "inter_session", sourceTool },
383+
} as never,
384+
}),
385+
).toEqual({
386+
merged: false,
387+
removeLeaf: true,
367388
prompt: "newest inbound message",
368-
trigger: "user",
369-
leafMessage: {
370-
content: [{ type: "text", text: "NO_REPLY stale subagent completion" }],
371-
provenance: { kind: "inter_session", sourceTool: "subagent_announce" },
372-
} as never,
373-
}),
374-
).toEqual({
375-
merged: false,
376-
removeLeaf: true,
377-
prompt: "newest inbound message",
378-
});
379-
});
389+
});
390+
},
391+
);
380392

381393
it("keeps user-directed inter-session leaves in the repaired prompt", () => {
382394
expect(

src/agents/embedded-agent-runner/run/transcript-repair-runtime-contract.test.ts

Lines changed: 28 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,15 @@ afterEach(() => {
2323
restoreStrategy = undefined;
2424
});
2525

26+
const internalSessionStateSourceTools = [
27+
"agent_harness_task",
28+
"image_generate",
29+
"music_generate",
30+
"subagent_announce",
31+
"subagent_interrupted_resume",
32+
"video_generate",
33+
] as const;
34+
2635
describe("embedded agent transcript repair runtime contract", () => {
2736
it("merges text orphan leaves into the next prompt with the queued marker", () => {
2837
const result = mergeOrphanedTrailingUserPrompt({
@@ -38,22 +47,25 @@ describe("embedded agent transcript repair runtime contract", () => {
3847
});
3948
});
4049

41-
it("removes internal completion leaves instead of prepending them to a fresh prompt", () => {
42-
const result = mergeOrphanedTrailingUserPrompt({
43-
prompt: "newest inbound message",
44-
trigger: "user",
45-
leafMessage: {
46-
content: [{ type: "text", text: "NO_REPLY stale subagent completion" }],
47-
provenance: { kind: "inter_session", sourceTool: "subagent_announce" },
48-
},
49-
});
50-
51-
expect(result).toEqual({
52-
merged: false,
53-
removeLeaf: true,
54-
prompt: "newest inbound message",
55-
});
56-
});
50+
it.each(internalSessionStateSourceTools)(
51+
"removes internal %s leaves instead of prepending them to a fresh prompt",
52+
(sourceTool) => {
53+
const result = mergeOrphanedTrailingUserPrompt({
54+
prompt: "newest inbound message",
55+
trigger: "user",
56+
leafMessage: {
57+
content: [{ type: "text", text: `NO_REPLY stale ${sourceTool} completion` }],
58+
provenance: { kind: "inter_session", sourceTool },
59+
},
60+
});
61+
62+
expect(result).toEqual({
63+
merged: false,
64+
removeLeaf: true,
65+
prompt: "newest inbound message",
66+
});
67+
},
68+
);
5769

5870
it("preserves user-directed inter-session leaves in the repaired prompt", () => {
5971
const result = mergeOrphanedTrailingUserPrompt({

0 commit comments

Comments
 (0)