Skip to content

Commit c0e287f

Browse files
committed
test: dedupe embedded attempt mock calls
1 parent e15bb30 commit c0e287f

1 file changed

Lines changed: 37 additions & 29 deletions

File tree

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

Lines changed: 37 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,14 @@ function expectSingleToolCallContent(
107107
expect(item.name).toBe(name);
108108
}
109109

110+
function firstBaseContext(baseFn: ReturnType<typeof vi.fn>): { messages: unknown[] } {
111+
const call = baseFn.mock.calls.at(0);
112+
if (!call) {
113+
throw new Error("expected base stream call");
114+
}
115+
return call[1] as { messages: unknown[] };
116+
}
117+
110118
describe("buildEmbeddedAttemptToolRunContext", () => {
111119
it("carries runtime toolsAllow into coding tool construction", () => {
112120
const context = buildEmbeddedAttemptToolRunContext({
@@ -1894,7 +1902,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
18941902
await Promise.resolve(stream);
18951903

18961904
expect(baseFn).toHaveBeenCalledTimes(1);
1897-
const seenContext = baseFn.mock.calls.at(0)?.[1] as { messages: unknown[] };
1905+
const seenContext = firstBaseContext(baseFn);
18981906
expect(seenContext.messages).toEqual([
18991907
{
19001908
role: "user",
@@ -1926,7 +1934,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
19261934
await Promise.resolve(stream);
19271935

19281936
expect(baseFn).toHaveBeenCalledTimes(1);
1929-
const seenContext = baseFn.mock.calls.at(0)?.[1] as { messages: unknown[] };
1937+
const seenContext = firstBaseContext(baseFn);
19301938
expect(seenContext.messages).toBe(messages);
19311939
});
19321940

@@ -1958,7 +1966,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
19581966
await Promise.resolve(stream);
19591967

19601968
expect(baseFn).toHaveBeenCalledTimes(1);
1961-
const seenContext = baseFn.mock.calls.at(0)?.[1] as { messages: unknown[] };
1969+
const seenContext = firstBaseContext(baseFn);
19621970
expect(seenContext.messages).toEqual([
19631971
{
19641972
role: "user",
@@ -1996,7 +2004,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
19962004
await Promise.resolve(stream);
19972005

19982006
expect(baseFn).toHaveBeenCalledTimes(1);
1999-
const seenContext = baseFn.mock.calls.at(0)?.[1] as { messages: unknown[] };
2007+
const seenContext = firstBaseContext(baseFn);
20002008
expect(seenContext.messages).toEqual([
20012009
{
20022010
role: "user",
@@ -2037,7 +2045,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
20372045
await Promise.resolve(stream);
20382046

20392047
expect(baseFn).toHaveBeenCalledTimes(1);
2040-
const seenContext = baseFn.mock.calls.at(0)?.[1] as { messages: unknown[] };
2048+
const seenContext = firstBaseContext(baseFn);
20412049
expect(seenContext.messages).toEqual([
20422050
{
20432051
role: "user",
@@ -2077,7 +2085,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
20772085
await Promise.resolve(stream);
20782086

20792087
expect(baseFn).toHaveBeenCalledTimes(1);
2080-
const seenContext = baseFn.mock.calls.at(0)?.[1] as { messages: unknown[] };
2088+
const seenContext = firstBaseContext(baseFn);
20812089
expect(seenContext.messages).toEqual([
20822090
{
20832091
role: "user",
@@ -2118,7 +2126,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
21182126
await Promise.resolve(stream);
21192127

21202128
expect(baseFn).toHaveBeenCalledTimes(1);
2121-
const seenContext = baseFn.mock.calls.at(0)?.[1] as { messages: unknown[] };
2129+
const seenContext = firstBaseContext(baseFn);
21222130
expect(seenContext.messages).toEqual([
21232131
{
21242132
role: "user",
@@ -2171,7 +2179,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
21712179
await Promise.resolve(stream);
21722180

21732181
expect(baseFn).toHaveBeenCalledTimes(1);
2174-
const seenContext = baseFn.mock.calls.at(0)?.[1] as { messages: unknown[] };
2182+
const seenContext = firstBaseContext(baseFn);
21752183
expect(seenContext.messages).toEqual([
21762184
{
21772185
role: "user",
@@ -2230,7 +2238,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
22302238
await Promise.resolve(stream);
22312239

22322240
expect(baseFn).toHaveBeenCalledTimes(1);
2233-
const seenContext = baseFn.mock.calls.at(0)?.[1] as { messages: unknown[] };
2241+
const seenContext = firstBaseContext(baseFn);
22342242
expect(seenContext.messages).toEqual([
22352243
{
22362244
role: "user",
@@ -2268,7 +2276,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
22682276
await Promise.resolve(stream);
22692277

22702278
expect(baseFn).toHaveBeenCalledTimes(1);
2271-
const seenContext = baseFn.mock.calls.at(0)?.[1] as { messages: unknown[] };
2279+
const seenContext = firstBaseContext(baseFn);
22722280
expect(seenContext.messages).toHaveLength(3);
22732281
expect(seenContext.messages[0]).toEqual({
22742282
role: "assistant",
@@ -2328,7 +2336,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
23282336
await Promise.resolve(stream);
23292337

23302338
expect(baseFn).toHaveBeenCalledTimes(1);
2331-
const seenContext = baseFn.mock.calls.at(0)?.[1] as {
2339+
const seenContext = firstBaseContext(baseFn) as {
23322340
messages: Array<{ content?: Array<Record<string, unknown>> }>;
23332341
};
23342342
const toolCall = seenContext.messages[0]?.content?.[0] as {
@@ -2366,7 +2374,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
23662374
await Promise.resolve(stream);
23672375

23682376
expect(baseFn).toHaveBeenCalledTimes(1);
2369-
const seenContext = baseFn.mock.calls.at(0)?.[1] as {
2377+
const seenContext = firstBaseContext(baseFn) as {
23702378
messages: Array<{ content?: unknown[] }>;
23712379
};
23722380
expect(seenContext.messages[0]?.content).toEqual([
@@ -2396,7 +2404,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
23962404
await Promise.resolve(stream);
23972405

23982406
expect(baseFn).toHaveBeenCalledTimes(1);
2399-
const seenContext = baseFn.mock.calls.at(0)?.[1] as { messages: unknown[] };
2407+
const seenContext = firstBaseContext(baseFn);
24002408
expect(seenContext.messages).toBe(messages);
24012409
});
24022410

@@ -2418,7 +2426,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
24182426
await Promise.resolve(stream);
24192427

24202428
expect(baseFn).toHaveBeenCalledTimes(1);
2421-
const seenContext = baseFn.mock.calls.at(0)?.[1] as {
2429+
const seenContext = firstBaseContext(baseFn) as {
24222430
messages: Array<{ content?: Array<{ name?: string }> }>;
24232431
};
24242432
expect(seenContext.messages[0]?.content?.[0]?.name).toBe("read");
@@ -2442,7 +2450,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
24422450
await Promise.resolve(stream);
24432451

24442452
expect(baseFn).toHaveBeenCalledTimes(1);
2445-
const seenContext = baseFn.mock.calls.at(0)?.[1] as {
2453+
const seenContext = firstBaseContext(baseFn) as {
24462454
messages: Array<{ content?: Array<{ name?: string }> }>;
24472455
};
24482456
expect(seenContext.messages[0]?.content?.[0]?.name).toBe("ReadFile");
@@ -2466,7 +2474,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
24662474
await Promise.resolve(stream);
24672475

24682476
expect(baseFn).toHaveBeenCalledTimes(1);
2469-
const seenContext = baseFn.mock.calls.at(0)?.[1] as {
2477+
const seenContext = firstBaseContext(baseFn) as {
24702478
messages: Array<{ content?: Array<{ name?: string }> }>;
24712479
};
24722480
expect(seenContext.messages[0]?.content?.[0]?.name).toBe("write");
@@ -2497,7 +2505,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
24972505
await Promise.resolve(stream);
24982506

24992507
expect(baseFn).toHaveBeenCalledTimes(1);
2500-
const seenContext = baseFn.mock.calls.at(0)?.[1] as { messages: unknown[] };
2508+
const seenContext = firstBaseContext(baseFn);
25012509
expect(seenContext.messages).toStrictEqual([]);
25022510
});
25032511

@@ -2519,7 +2527,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
25192527
await Promise.resolve(stream);
25202528

25212529
expect(baseFn).toHaveBeenCalledTimes(1);
2522-
const seenContext = baseFn.mock.calls.at(0)?.[1] as {
2530+
const seenContext = firstBaseContext(baseFn) as {
25232531
messages: Array<{ content?: Array<{ name?: string }> }>;
25242532
};
25252533
expect(seenContext.messages[0]?.content?.[0]?.name).toBe("read");
@@ -2555,7 +2563,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
25552563
await Promise.resolve(stream);
25562564

25572565
expect(baseFn).toHaveBeenCalledTimes(1);
2558-
const seenContext = baseFn.mock.calls.at(0)?.[1] as {
2566+
const seenContext = firstBaseContext(baseFn) as {
25592567
messages: Array<{ role?: string }>;
25602568
};
25612569
expect(seenContext.messages).toEqual([
@@ -2595,7 +2603,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
25952603
await Promise.resolve(stream);
25962604

25972605
expect(baseFn).toHaveBeenCalledTimes(1);
2598-
const seenContext = baseFn.mock.calls.at(0)?.[1] as {
2606+
const seenContext = firstBaseContext(baseFn) as {
25992607
messages: Array<{ role?: string }>;
26002608
};
26012609
expect(seenContext.messages).toEqual([
@@ -2630,7 +2638,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
26302638
await Promise.resolve(stream);
26312639

26322640
expect(baseFn).toHaveBeenCalledTimes(1);
2633-
const seenContext = baseFn.mock.calls.at(0)?.[1] as { messages: unknown[] };
2641+
const seenContext = firstBaseContext(baseFn);
26342642
expect(seenContext.messages).toStrictEqual([]);
26352643
});
26362644

@@ -2655,7 +2663,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
26552663
await Promise.resolve(stream);
26562664

26572665
expect(baseFn).toHaveBeenCalledTimes(1);
2658-
const seenContext = baseFn.mock.calls.at(0)?.[1] as { messages: unknown[] };
2666+
const seenContext = firstBaseContext(baseFn);
26592667
expect(seenContext.messages).toStrictEqual([]);
26602668
});
26612669

@@ -2692,7 +2700,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
26922700
await Promise.resolve(stream);
26932701

26942702
expect(baseFn).toHaveBeenCalledTimes(1);
2695-
const seenContext = baseFn.mock.calls.at(0)?.[1] as { messages: unknown[] };
2703+
const seenContext = firstBaseContext(baseFn);
26962704
expect(seenContext.messages).toEqual([
26972705
{
26982706
role: "assistant",
@@ -2745,7 +2753,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
27452753
await Promise.resolve(stream);
27462754

27472755
expect(baseFn).toHaveBeenCalledTimes(1);
2748-
const seenContext = baseFn.mock.calls.at(0)?.[1] as {
2756+
const seenContext = firstBaseContext(baseFn) as {
27492757
messages: Array<{ role?: string; content?: unknown[] }>;
27502758
};
27512759
expect(seenContext.messages).toEqual([
@@ -2792,7 +2800,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
27922800
await Promise.resolve(stream);
27932801

27942802
expect(baseFn).toHaveBeenCalledTimes(1);
2795-
const seenContext = baseFn.mock.calls.at(0)?.[1] as {
2803+
const seenContext = firstBaseContext(baseFn) as {
27962804
messages: Array<{ role?: string; content?: unknown[] }>;
27972805
};
27982806
expect(seenContext.messages).toEqual([
@@ -2846,7 +2854,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
28462854
await Promise.resolve(stream);
28472855

28482856
expect(baseFn).toHaveBeenCalledTimes(1);
2849-
const seenContext = baseFn.mock.calls.at(0)?.[1] as {
2857+
const seenContext = firstBaseContext(baseFn) as {
28502858
messages: Array<{ role?: string; content?: unknown[] }>;
28512859
};
28522860
expect(seenContext.messages).toEqual([
@@ -2897,7 +2905,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
28972905
await Promise.resolve(stream);
28982906

28992907
expect(baseFn).toHaveBeenCalledTimes(1);
2900-
const seenContext = baseFn.mock.calls.at(0)?.[1] as {
2908+
const seenContext = firstBaseContext(baseFn) as {
29012909
messages: Array<{ role?: string; content?: unknown[] }>;
29022910
};
29032911
expect(seenContext.messages).toEqual(messages);
@@ -2939,7 +2947,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
29392947
await Promise.resolve(stream);
29402948

29412949
expect(baseFn).toHaveBeenCalledTimes(1);
2942-
const seenContext = baseFn.mock.calls.at(0)?.[1] as {
2950+
const seenContext = firstBaseContext(baseFn) as {
29432951
messages: Array<{ role?: string; content?: unknown[] }>;
29442952
};
29452953
expect(seenContext.messages).toEqual(messages);
@@ -2981,7 +2989,7 @@ describe("wrapStreamFnSanitizeMalformedToolCalls", () => {
29812989
await Promise.resolve(stream);
29822990

29832991
expect(baseFn).toHaveBeenCalledTimes(1);
2984-
const seenContext = baseFn.mock.calls.at(0)?.[1] as {
2992+
const seenContext = firstBaseContext(baseFn) as {
29852993
messages: Array<{ role?: string; content?: unknown[] }>;
29862994
};
29872995
expect(seenContext.messages).toEqual([

0 commit comments

Comments
 (0)