@koda-sl/baker-bridge 0.152.0-dev.1a19b1876 → 0.152.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -7
- package/dist/hono/agent-session.d.ts +0 -1
- package/dist/hono/agent-session.d.ts.map +1 -1
- package/dist/hono/agent-session.js +0 -7
- package/dist/hono/agent-session.js.map +1 -1
- package/dist/hono/agent-session.test.js +1 -7
- package/dist/hono/agent-session.test.js.map +1 -1
- package/dist/hono/agent.d.ts.map +1 -1
- package/dist/hono/agent.js +5 -8
- package/dist/hono/agent.js.map +1 -1
- package/dist/hono/bridge-job.d.ts +9 -1
- package/dist/hono/bridge-job.d.ts.map +1 -1
- package/dist/hono/bridge-job.js +151 -20
- package/dist/hono/bridge-job.js.map +1 -1
- package/dist/hono/bridge-job.test.js +233 -2
- package/dist/hono/bridge-job.test.js.map +1 -1
- package/dist/hono/convex.d.ts +2 -1
- package/dist/hono/convex.d.ts.map +1 -1
- package/dist/hono/convex.js +4 -0
- package/dist/hono/convex.js.map +1 -1
- package/dist/hono/main-sync.d.ts.map +1 -1
- package/dist/hono/main-sync.js +18 -5
- package/dist/hono/main-sync.js.map +1 -1
- package/dist/hono/main-sync.test.js +12 -0
- package/dist/hono/main-sync.test.js.map +1 -1
- package/dist/hono/relay.d.ts +8 -1
- package/dist/hono/relay.d.ts.map +1 -1
- package/dist/hono/relay.js +3 -0
- package/dist/hono/relay.js.map +1 -1
- package/dist/hono/served-model.d.ts +23 -0
- package/dist/hono/served-model.d.ts.map +1 -0
- package/dist/hono/served-model.js +82 -0
- package/dist/hono/served-model.js.map +1 -0
- package/dist/hono/served-model.test.d.ts +2 -0
- package/dist/hono/served-model.test.d.ts.map +1 -0
- package/dist/hono/served-model.test.js +29 -0
- package/dist/hono/served-model.test.js.map +1 -0
- package/dist/hono/session-continuity.d.ts +30 -0
- package/dist/hono/session-continuity.d.ts.map +1 -1
- package/dist/hono/session-continuity.integration.test.js +201 -5
- package/dist/hono/session-continuity.integration.test.js.map +1 -1
- package/dist/hono/session-continuity.js +99 -8
- package/dist/hono/session-continuity.js.map +1 -1
- package/dist/hono/session-store.d.ts +2 -0
- package/dist/hono/session-store.d.ts.map +1 -1
- package/dist/hono/session-store.js +6 -0
- package/dist/hono/session-store.js.map +1 -1
- package/dist/hono/session-usage-baseline.d.ts +1 -0
- package/dist/hono/session-usage-baseline.d.ts.map +1 -1
- package/dist/hono/session-usage-baseline.js +17 -4
- package/dist/hono/session-usage-baseline.js.map +1 -1
- package/dist/hono/turn-events.d.ts +1 -1
- package/dist/hono/turn-events.d.ts.map +1 -1
- package/dist/hono/turn-events.js.map +1 -1
- package/dist/review/digest.d.ts +35 -0
- package/dist/review/digest.d.ts.map +1 -1
- package/dist/review/digest.js +171 -27
- package/dist/review/digest.js.map +1 -1
- package/dist/review/digest.test.js +130 -1
- package/dist/review/digest.test.js.map +1 -1
- package/package.json +1 -1
|
@@ -7,10 +7,16 @@ export type InProgressSession = {
|
|
|
7
7
|
resumeSessionAt?: string;
|
|
8
8
|
sawSessionId: boolean;
|
|
9
9
|
sawCleanResult: boolean;
|
|
10
|
+
cancelPoint?: {
|
|
11
|
+
sessionId: string;
|
|
12
|
+
uuid: string;
|
|
13
|
+
};
|
|
14
|
+
pendingToolUseIds?: readonly string[];
|
|
10
15
|
};
|
|
11
16
|
export type SessionAttempt = {
|
|
12
17
|
prompt: string;
|
|
13
18
|
reminder?: string;
|
|
19
|
+
delivered?: () => Promise<void>;
|
|
14
20
|
attemptedRehydration: boolean;
|
|
15
21
|
usedBoundary?: ClaudeSessionBoundary;
|
|
16
22
|
resumeOptions: Pick<Options, "resume" | "resumeSessionAt" | "forkSession">;
|
|
@@ -22,6 +28,7 @@ export declare function emptyInProgressSession(): InProgressSession;
|
|
|
22
28
|
export declare function prepareSessionAttempt(input: {
|
|
23
29
|
requestPrompt: string;
|
|
24
30
|
reminder?: string;
|
|
31
|
+
delivered?: () => Promise<void>;
|
|
25
32
|
history?: DispatchHistorySnapshot;
|
|
26
33
|
loaded?: LoadedSessionBoundary;
|
|
27
34
|
leadingCommand?: boolean;
|
|
@@ -53,6 +60,10 @@ export declare const INTERRUPTED_RESUME_PROMPT: string;
|
|
|
53
60
|
export declare function interruptedResumeAttempt(attempt: SessionAttempt, input: {
|
|
54
61
|
readonly jobTurnId: string;
|
|
55
62
|
readonly inFlight: InFlightTurn | undefined;
|
|
63
|
+
readonly mainSync?: {
|
|
64
|
+
readonly reminder: string;
|
|
65
|
+
readonly delivered: () => Promise<void>;
|
|
66
|
+
};
|
|
56
67
|
}): SessionAttempt | undefined;
|
|
57
68
|
export declare const COMPACTION_RESUME_PROMPT: string;
|
|
58
69
|
/**
|
|
@@ -77,6 +88,24 @@ export declare function compactionRetryAttempt(attempt: SessionAttempt, inProgre
|
|
|
77
88
|
*/
|
|
78
89
|
export declare function isContextOverflowError(error: unknown): boolean;
|
|
79
90
|
export declare function observeInProgressSession(inProgress: InProgressSession, msg: SDKMessage): InProgressSession;
|
|
91
|
+
/**
|
|
92
|
+
* Where the next turn resumes after this one was cancelled: the cancelled turn's
|
|
93
|
+
* own session, up to the last entry it completed. A cancel stops the turn, not
|
|
94
|
+
* the conversation, so what the turn already read stays in it; only the tool
|
|
95
|
+
* call still waiting for its result is dropped, since a session ending on an
|
|
96
|
+
* unanswered tool call cannot be resumed. Before the turn completed anything,
|
|
97
|
+
* the session it resumed still holds, because every turn runs in a fork and
|
|
98
|
+
* never writes to it — but that session never received the cancelled request,
|
|
99
|
+
* so the request rides along as `unansweredRequest`. Undefined when the turn
|
|
100
|
+
* resumed no session: the next turn is rebuilt from the chat history, which
|
|
101
|
+
* has the request.
|
|
102
|
+
*/
|
|
103
|
+
export declare function buildCancelBoundary(input: {
|
|
104
|
+
inProgress: InProgressSession;
|
|
105
|
+
resumed?: ClaudeSessionBoundary;
|
|
106
|
+
request?: string;
|
|
107
|
+
nowMs: number;
|
|
108
|
+
}): ClaudeSessionBoundary | undefined;
|
|
80
109
|
export declare function buildCleanBoundary(input: {
|
|
81
110
|
inProgress: InProgressSession;
|
|
82
111
|
nowMs: number;
|
|
@@ -90,5 +119,6 @@ export declare function formatSenderLabel(sender: DispatchSender): string;
|
|
|
90
119
|
* the chat UI — it only rides along in the prompt sent to the model.
|
|
91
120
|
*/
|
|
92
121
|
export declare function applyCurrentSenderAttribution(content: string, sender?: DispatchSender): string;
|
|
122
|
+
export declare function isCliResumeRefusal(error: unknown): boolean;
|
|
93
123
|
export declare function isResumeSessionError(error: unknown): boolean;
|
|
94
124
|
//# sourceMappingURL=session-continuity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-continuity.d.ts","sourceRoot":"","sources":["../../src/hono/session-continuity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAErG,OAAO,KAAK,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE1E,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,GAAG,cAAc,GAAG,gBAAgB,CAAC;AAEpH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"session-continuity.d.ts","sourceRoot":"","sources":["../../src/hono/session-continuity.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,11 +36,16 @@ class FakeQuery {
|
|
|
36
36
|
steps;
|
|
37
37
|
closeCalls = 0;
|
|
38
38
|
blocked = new Deferred();
|
|
39
|
+
permissionOutcomes = [];
|
|
39
40
|
closed = false;
|
|
40
41
|
releaseBlock;
|
|
42
|
+
options;
|
|
41
43
|
constructor(steps) {
|
|
42
44
|
this.steps = steps;
|
|
43
45
|
}
|
|
46
|
+
bind(options) {
|
|
47
|
+
this.options = options;
|
|
48
|
+
}
|
|
44
49
|
close() {
|
|
45
50
|
this.closeCalls += 1;
|
|
46
51
|
this.closed = true;
|
|
@@ -66,6 +71,19 @@ class FakeQuery {
|
|
|
66
71
|
}
|
|
67
72
|
continue;
|
|
68
73
|
}
|
|
74
|
+
if (isPermissionStep(step)) {
|
|
75
|
+
const decision = this.options?.canUseTool?.(step.toolName, step.input, {
|
|
76
|
+
signal: new AbortController().signal,
|
|
77
|
+
toolUseID: step.toolUseId,
|
|
78
|
+
requestId: `request_${step.toolUseId}`,
|
|
79
|
+
});
|
|
80
|
+
this.blocked.resolve();
|
|
81
|
+
this.permissionOutcomes.push(await decision?.catch((error) => error));
|
|
82
|
+
if (this.closed) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
69
87
|
await Promise.resolve();
|
|
70
88
|
yield step;
|
|
71
89
|
}
|
|
@@ -85,6 +103,7 @@ class FakeSdk {
|
|
|
85
103
|
if (!next) {
|
|
86
104
|
throw new Error("No fake SDK query queued");
|
|
87
105
|
}
|
|
106
|
+
next.bind(input.options);
|
|
88
107
|
return next;
|
|
89
108
|
}
|
|
90
109
|
}
|
|
@@ -179,7 +198,7 @@ describe("bridge session continuity integration", () => {
|
|
|
179
198
|
expect(harness.callbacks.completes).toContainEqual(expect.objectContaining({ threadId: "thread_tool_batch", isError: false }));
|
|
180
199
|
expect(visibleCallbackText(harness.callbacks)).not.toMatch(/API Error: 400 due to tool use concurrency/i);
|
|
181
200
|
});
|
|
182
|
-
it("
|
|
201
|
+
it("a cancel before the turn completed anything keeps the previous turn's boundary for the next turn", async () => {
|
|
183
202
|
const harness = await createHarness();
|
|
184
203
|
await harness.writeSessionFile("thread_abort_dirty", {
|
|
185
204
|
version: 2,
|
|
@@ -203,7 +222,10 @@ describe("bridge session continuity integration", () => {
|
|
|
203
222
|
});
|
|
204
223
|
expect(harness.abortSession("thread_abort_dirty")).toBe(true);
|
|
205
224
|
await firstTurn;
|
|
206
|
-
await expect(harness.readSessionFile("thread_abort_dirty")).resolves.
|
|
225
|
+
await expect(harness.readSessionFile("thread_abort_dirty")).resolves.toMatchObject({
|
|
226
|
+
sessionId: "session_prior_abort",
|
|
227
|
+
resumeSessionAt: "assistant_prior_abort",
|
|
228
|
+
});
|
|
207
229
|
expect(dirtyQuery.closeCalls).toBeGreaterThan(0);
|
|
208
230
|
await harness.processAsync({
|
|
209
231
|
threadId: "thread_abort_dirty",
|
|
@@ -211,8 +233,124 @@ describe("bridge session continuity integration", () => {
|
|
|
211
233
|
prompt: "Continue after abort",
|
|
212
234
|
history: history([{ role: "user", text: "Start tool work", createdAt: 1 }]),
|
|
213
235
|
});
|
|
214
|
-
expect(harness.sdk.queries[1]?.options).
|
|
215
|
-
|
|
236
|
+
expect(harness.sdk.queries[1]?.options).toMatchObject({
|
|
237
|
+
resume: "session_prior_abort",
|
|
238
|
+
forkSession: true,
|
|
239
|
+
resumeSessionAt: "assistant_prior_abort",
|
|
240
|
+
});
|
|
241
|
+
const nextPrompt = await promptText(harness.sdk.queries[1]?.prompt);
|
|
242
|
+
expect(nextPrompt).toContain("Start tool work");
|
|
243
|
+
expect(nextPrompt).toContain("Continue after abort");
|
|
244
|
+
});
|
|
245
|
+
it("two quick cancels in a row carry both stopped requests under one current request", async () => {
|
|
246
|
+
const harness = await createHarness();
|
|
247
|
+
await harness.writeSessionFile("thread_abort_twice", {
|
|
248
|
+
version: 2,
|
|
249
|
+
sessionId: "session_prior_twice",
|
|
250
|
+
resumeSessionAt: "assistant_prior_twice",
|
|
251
|
+
updatedAtMs: 100,
|
|
252
|
+
});
|
|
253
|
+
const firstQuery = harness.sdk.enqueue(systemSession("session_first_stop"), { type: "block" });
|
|
254
|
+
const secondQuery = harness.sdk.enqueue(systemSession("session_second_stop"), { type: "block" });
|
|
255
|
+
harness.sdk.enqueue(resultMessage("session_after_twice", 0.2));
|
|
256
|
+
const firstTurn = harness.processAsync({
|
|
257
|
+
threadId: "thread_abort_twice",
|
|
258
|
+
turnId: "turn_twice_1",
|
|
259
|
+
prompt: "Make a video ad",
|
|
260
|
+
history: history([]),
|
|
261
|
+
});
|
|
262
|
+
await firstQuery.blocked.promise;
|
|
263
|
+
expect(harness.abortSession("thread_abort_twice")).toBe(true);
|
|
264
|
+
await firstTurn;
|
|
265
|
+
const secondTurn = harness.processAsync({
|
|
266
|
+
threadId: "thread_abort_twice",
|
|
267
|
+
turnId: "turn_twice_2",
|
|
268
|
+
prompt: "Make it thirty seconds",
|
|
269
|
+
history: history([{ role: "user", text: "Make a video ad", createdAt: 1 }]),
|
|
270
|
+
});
|
|
271
|
+
await secondQuery.blocked.promise;
|
|
272
|
+
expect(harness.abortSession("thread_abort_twice")).toBe(true);
|
|
273
|
+
await secondTurn;
|
|
274
|
+
await harness.processAsync({
|
|
275
|
+
threadId: "thread_abort_twice",
|
|
276
|
+
turnId: "turn_twice_3",
|
|
277
|
+
prompt: "And use the summer palette",
|
|
278
|
+
history: history([
|
|
279
|
+
{ role: "user", text: "Make a video ad", createdAt: 1 },
|
|
280
|
+
{ role: "user", text: "Make it thirty seconds", createdAt: 2 },
|
|
281
|
+
]),
|
|
282
|
+
});
|
|
283
|
+
const thirdPrompt = await promptText(harness.sdk.queries[2]?.prompt);
|
|
284
|
+
expect(thirdPrompt.match(/--- Current user request/g)).toHaveLength(1);
|
|
285
|
+
expect(thirdPrompt.indexOf("Make a video ad")).toBeLessThan(thirdPrompt.indexOf("Make it thirty seconds"));
|
|
286
|
+
expect(thirdPrompt.indexOf("Make it thirty seconds")).toBeLessThan(thirdPrompt.indexOf("--- Current user request"));
|
|
287
|
+
expect(thirdPrompt.split("--- Current user request")[1]).toContain("And use the summer palette");
|
|
288
|
+
});
|
|
289
|
+
it("resumes a cancelled turn's own session at the last entry it completed, dropping the unanswered tool call", async () => {
|
|
290
|
+
const harness = await createHarness();
|
|
291
|
+
await harness.writeSessionFile("thread_cancel_keeps_work", {
|
|
292
|
+
version: 2,
|
|
293
|
+
sessionId: "session_prior_cancel",
|
|
294
|
+
resumeSessionAt: "assistant_prior_cancel",
|
|
295
|
+
updatedAtMs: 100,
|
|
296
|
+
});
|
|
297
|
+
const cancelledQuery = harness.sdk.enqueue(systemSession("session_cancelled"), toolUseMessage("assistant_read", "toolu_read", "session_cancelled"), toolResultMessage("user_read_result", "toolu_read", "session_cancelled"), toolUseMessage("assistant_second_read", "toolu_second_read", "session_cancelled"), { type: "block" });
|
|
298
|
+
harness.sdk.enqueue(resultMessage("session_after_cancel", 0.2));
|
|
299
|
+
const cancelledTurn = harness.processAsync({
|
|
300
|
+
threadId: "thread_cancel_keeps_work",
|
|
301
|
+
turnId: "turn_cancel_1",
|
|
302
|
+
prompt: "Read the account",
|
|
303
|
+
history: history([]),
|
|
304
|
+
});
|
|
305
|
+
await cancelledQuery.blocked.promise;
|
|
306
|
+
expect(harness.abortSession("thread_cancel_keeps_work")).toBe(true);
|
|
307
|
+
await cancelledTurn;
|
|
308
|
+
await harness.processAsync({
|
|
309
|
+
threadId: "thread_cancel_keeps_work",
|
|
310
|
+
turnId: "turn_cancel_2",
|
|
311
|
+
prompt: "Only the Valencia account",
|
|
312
|
+
history: history([{ role: "user", text: "Read the account", createdAt: 1 }]),
|
|
313
|
+
});
|
|
314
|
+
expect(harness.sdk.queries[1]?.options).toMatchObject({
|
|
315
|
+
resume: "session_cancelled",
|
|
316
|
+
forkSession: true,
|
|
317
|
+
resumeSessionAt: "user_read_result",
|
|
318
|
+
});
|
|
319
|
+
expect(await promptText(harness.sdk.queries[1]?.prompt)).not.toContain("Current user request");
|
|
320
|
+
expect(harness.callbacks.contexts).toContainEqual(expect.objectContaining({ turnId: "turn_cancel_2", source: "local_resume" }));
|
|
321
|
+
});
|
|
322
|
+
it("a plan approval that replaces the turn waiting on ExitPlanMode resumes it with the planning reads kept", async () => {
|
|
323
|
+
const harness = await createHarness();
|
|
324
|
+
const planningQuery = harness.sdk.enqueue(systemSession("session_planning"), toolUseMessage("assistant_plan_read", "toolu_plan_read", "session_planning"), toolResultMessage("user_plan_read_result", "toolu_plan_read", "session_planning"), toolUseMessage("assistant_exit_plan", "toolu_exit_plan", "session_planning", "ExitPlanMode"), {
|
|
325
|
+
type: "permission",
|
|
326
|
+
toolName: "ExitPlanMode",
|
|
327
|
+
toolUseId: "toolu_exit_plan",
|
|
328
|
+
input: { plan: "1. Pause the campaign" },
|
|
329
|
+
});
|
|
330
|
+
harness.sdk.enqueue(resultMessage("session_implementing", 0.3));
|
|
331
|
+
const planningTurn = harness.processAsync({
|
|
332
|
+
threadId: "thread_plan_approval",
|
|
333
|
+
turnId: "turn_plan_1",
|
|
334
|
+
prompt: "Plan the campaign changes",
|
|
335
|
+
history: history([]),
|
|
336
|
+
planMode: true,
|
|
337
|
+
});
|
|
338
|
+
await harness.planReviewPosted;
|
|
339
|
+
await harness.processAsync({
|
|
340
|
+
threadId: "thread_plan_approval",
|
|
341
|
+
turnId: "turn_plan_2",
|
|
342
|
+
prompt: "I approve the plan below. Plan mode is over — implement it now.",
|
|
343
|
+
history: history([{ role: "user", text: "Plan the campaign changes", createdAt: 1 }]),
|
|
344
|
+
});
|
|
345
|
+
await planningTurn;
|
|
346
|
+
expect(harness.sdk.queries[0]?.options).toMatchObject({ permissionMode: "plan" });
|
|
347
|
+
expect(planningQuery.permissionOutcomes).toEqual([new Error("ExitPlanMode aborted")]);
|
|
348
|
+
expect(harness.sdk.queries[1]?.options).toMatchObject({
|
|
349
|
+
resume: "session_planning",
|
|
350
|
+
forkSession: true,
|
|
351
|
+
resumeSessionAt: "user_plan_read_result",
|
|
352
|
+
});
|
|
353
|
+
expect(harness.callbacks.completes).toContainEqual(expect.objectContaining({ turnId: "turn_plan_2", isError: false }));
|
|
216
354
|
});
|
|
217
355
|
it("replacement during a dirty stream does not resume the replaced turn's in-progress session", async () => {
|
|
218
356
|
const harness = await createHarness();
|
|
@@ -244,7 +382,11 @@ describe("bridge session continuity integration", () => {
|
|
|
244
382
|
resumeSessionAt: "assistant_prior_replace",
|
|
245
383
|
});
|
|
246
384
|
expect(dirtyQuery.closeCalls).toBeGreaterThan(0);
|
|
247
|
-
expect(harness.sdk.queries[1]?.options).
|
|
385
|
+
expect(harness.sdk.queries[1]?.options).toMatchObject({
|
|
386
|
+
resume: "session_prior_replace",
|
|
387
|
+
resumeSessionAt: "assistant_prior_replace",
|
|
388
|
+
});
|
|
389
|
+
expect(await promptText(harness.sdk.queries[1]?.prompt)).toContain("Start long work");
|
|
248
390
|
await expect(harness.readSessionFile("thread_replace_dirty")).resolves.toMatchObject({
|
|
249
391
|
version: 2,
|
|
250
392
|
sessionId: "session_replacement",
|
|
@@ -283,6 +425,27 @@ describe("bridge session continuity integration", () => {
|
|
|
283
425
|
expect(harness.sdk.queries[1]?.options).not.toHaveProperty("resume");
|
|
284
426
|
expect(await promptText(harness.sdk.queries[1]?.prompt)).toContain("Current user request\nRecover");
|
|
285
427
|
});
|
|
428
|
+
it("rebuilds the turn from history when the CLI cannot find the entry the boundary resumes at", async () => {
|
|
429
|
+
const harness = await createHarness();
|
|
430
|
+
await harness.writeSessionFile("thread_missing_entry", {
|
|
431
|
+
version: 2,
|
|
432
|
+
sessionId: "session_cancelled_unflushed",
|
|
433
|
+
resumeSessionAt: "user_unflushed_result",
|
|
434
|
+
updatedAtMs: 100,
|
|
435
|
+
});
|
|
436
|
+
harness.sdk.enqueue(errorResult("session_refused_resume", 0, ["No message found with message.uuid of: user_unflushed_result"]));
|
|
437
|
+
harness.sdk.enqueue(assistantMessage("assistant_rebuilt", "Rebuilt", "session_rebuilt"), resultMessage("session_rebuilt", 0.2));
|
|
438
|
+
await harness.processAsync({
|
|
439
|
+
threadId: "thread_missing_entry",
|
|
440
|
+
turnId: "turn_missing_entry",
|
|
441
|
+
prompt: "Carry on",
|
|
442
|
+
history: history([{ role: "user", text: "Read the account", createdAt: 1 }]),
|
|
443
|
+
});
|
|
444
|
+
expect(harness.sdk.queries).toHaveLength(2);
|
|
445
|
+
expect(harness.sdk.queries[1]?.options).not.toHaveProperty("resume");
|
|
446
|
+
expect(await promptText(harness.sdk.queries[1]?.prompt)).toContain("Current user request\nCarry on");
|
|
447
|
+
expect(harness.callbacks.completes).toContainEqual(expect.objectContaining({ turnId: "turn_missing_entry", isError: false }));
|
|
448
|
+
});
|
|
286
449
|
it("clears legacy session files and does not resume them", async () => {
|
|
287
450
|
const harness = await createHarness();
|
|
288
451
|
await harness.writeSessionFile("thread_legacy_dirty", { sessionId: "session_legacy_dirty" });
|
|
@@ -312,6 +475,7 @@ async function createHarness() {
|
|
|
312
475
|
await mkdir(projectRoot, { recursive: true });
|
|
313
476
|
const sdk = new FakeSdk();
|
|
314
477
|
const callbacks = { streamText: [], events: [], contexts: [], completes: [] };
|
|
478
|
+
const planReviewPosted = new Deferred();
|
|
315
479
|
vi.doMock("./env.ts", () => ({
|
|
316
480
|
env: {
|
|
317
481
|
BAKER_CONVEX_SITE_URL: "https://example.convex.site",
|
|
@@ -366,8 +530,14 @@ async function createHarness() {
|
|
|
366
530
|
postHeartbeat: vi.fn(() => Promise.resolve(true)),
|
|
367
531
|
postInputRequest: vi.fn(() => Promise.resolve(true)),
|
|
368
532
|
postInputResolved: vi.fn(() => Promise.resolve(true)),
|
|
533
|
+
postPlanReview: vi.fn(() => {
|
|
534
|
+
planReviewPosted.resolve();
|
|
535
|
+
return Promise.resolve(true);
|
|
536
|
+
}),
|
|
537
|
+
postPlanResolved: vi.fn(() => Promise.resolve(true)),
|
|
369
538
|
postTagInputRequest: vi.fn(() => Promise.resolve(true)),
|
|
370
539
|
postTagInputResolved: vi.fn(() => Promise.resolve(true)),
|
|
540
|
+
postToolOutcomes: vi.fn(() => Promise.resolve(true)),
|
|
371
541
|
recordContextSource: vi.fn((threadId, source, metadata, turnId) => {
|
|
372
542
|
callbacks.contexts.push({ threadId, source, metadata, turnId });
|
|
373
543
|
return Promise.resolve(true);
|
|
@@ -395,6 +565,7 @@ async function createHarness() {
|
|
|
395
565
|
return {
|
|
396
566
|
sdk,
|
|
397
567
|
callbacks,
|
|
568
|
+
planReviewPosted: planReviewPosted.promise,
|
|
398
569
|
processAsync,
|
|
399
570
|
abortSession,
|
|
400
571
|
async readSessionFile(threadId) {
|
|
@@ -459,6 +630,28 @@ function assistantMessage(uuid, text, sessionId) {
|
|
|
459
630
|
},
|
|
460
631
|
};
|
|
461
632
|
}
|
|
633
|
+
function toolUseMessage(uuid, toolUseId, sessionId, toolName = "Bash") {
|
|
634
|
+
return {
|
|
635
|
+
type: "assistant",
|
|
636
|
+
uuid,
|
|
637
|
+
session_id: sessionId,
|
|
638
|
+
parent_tool_use_id: null,
|
|
639
|
+
message: {
|
|
640
|
+
role: "assistant",
|
|
641
|
+
content: [{ type: "tool_use", id: toolUseId, name: toolName, input: { command: "baker ads meta campaigns" } }],
|
|
642
|
+
stop_reason: "tool_use",
|
|
643
|
+
},
|
|
644
|
+
};
|
|
645
|
+
}
|
|
646
|
+
function toolResultMessage(uuid, toolUseId, sessionId) {
|
|
647
|
+
return {
|
|
648
|
+
type: "user",
|
|
649
|
+
uuid,
|
|
650
|
+
session_id: sessionId,
|
|
651
|
+
parent_tool_use_id: null,
|
|
652
|
+
message: { role: "user", content: [{ type: "tool_result", tool_use_id: toolUseId, content: "3 campaigns" }] },
|
|
653
|
+
};
|
|
654
|
+
}
|
|
462
655
|
function toolUseEvent(toolUseId, toolName, sessionId) {
|
|
463
656
|
return {
|
|
464
657
|
type: "stream_event",
|
|
@@ -472,6 +665,9 @@ function toolUseEvent(toolUseId, toolName, sessionId) {
|
|
|
472
665
|
function isBlockStep(step) {
|
|
473
666
|
return "type" in step && step.type === "block";
|
|
474
667
|
}
|
|
668
|
+
function isPermissionStep(step) {
|
|
669
|
+
return "type" in step && step.type === "permission";
|
|
670
|
+
}
|
|
475
671
|
function visibleCallbackText(callbacks) {
|
|
476
672
|
return JSON.stringify([callbacks.streamText, callbacks.events, callbacks.completes]);
|
|
477
673
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-continuity.integration.test.js","sourceRoot":"","sources":["../../src/hono/session-continuity.integration.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"session-continuity.integration.test.js","sourceRoot":"","sources":["../../src/hono/session-continuity.integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,10 +37,15 @@ export function prepareSessionAttempt(input) {
|
|
|
37
37
|
contextSource: "detached_publish",
|
|
38
38
|
};
|
|
39
39
|
}
|
|
40
|
+
// A verbatim command (`/compact`, a workspace skill) must stay the leading
|
|
41
|
+
// token, so nothing may be put in front of it.
|
|
42
|
+
const leadingCommand = input.leadingCommand === true || isVerbatimSlashCommandPrompt(input.requestPrompt);
|
|
40
43
|
if (input.loaded?.kind === "clean") {
|
|
41
44
|
const boundary = input.loaded.boundary;
|
|
42
45
|
return {
|
|
43
|
-
prompt:
|
|
46
|
+
prompt: boundary.unansweredRequest && !leadingCommand
|
|
47
|
+
? withUnansweredRequest(input.requestPrompt, boundary.unansweredRequest)
|
|
48
|
+
: input.requestPrompt,
|
|
44
49
|
...reminderOf(input),
|
|
45
50
|
attemptedRehydration: false,
|
|
46
51
|
usedBoundary: boundary,
|
|
@@ -52,11 +57,9 @@ export function prepareSessionAttempt(input) {
|
|
|
52
57
|
contextSource: "local_resume",
|
|
53
58
|
};
|
|
54
59
|
}
|
|
55
|
-
//
|
|
56
|
-
//
|
|
57
|
-
//
|
|
58
|
-
// compact anyway, and a skill works from the workspace, not the transcript.
|
|
59
|
-
const leadingCommand = input.leadingCommand === true || isVerbatimSlashCommandPrompt(input.requestPrompt);
|
|
60
|
+
// If there is no live session to resume, a history preamble would push a
|
|
61
|
+
// leading command off the front, so send it bare — with no boundary there is
|
|
62
|
+
// nothing to compact anyway, and a skill works from the workspace, not the transcript.
|
|
60
63
|
if (shouldRehydrate(input.history) && !leadingCommand) {
|
|
61
64
|
return {
|
|
62
65
|
prompt: buildRehydratedPrompt(input.requestPrompt, input.history),
|
|
@@ -73,8 +76,22 @@ export function prepareSessionAttempt(input) {
|
|
|
73
76
|
resumeOptions: {},
|
|
74
77
|
};
|
|
75
78
|
}
|
|
79
|
+
// The resumed session ends before a request the user stopped before it was
|
|
80
|
+
// answered; a follow-up ("and keep it under two minutes") only means something with it.
|
|
81
|
+
function withUnansweredRequest(requestPrompt, unansweredRequest) {
|
|
82
|
+
return [
|
|
83
|
+
"--- Earlier request, stopped by the user before you answered it",
|
|
84
|
+
unansweredRequest,
|
|
85
|
+
"",
|
|
86
|
+
"--- Current user request",
|
|
87
|
+
requestPrompt,
|
|
88
|
+
].join("\n");
|
|
89
|
+
}
|
|
76
90
|
function reminderOf(input) {
|
|
77
|
-
|
|
91
|
+
if (!input.reminder) {
|
|
92
|
+
return {};
|
|
93
|
+
}
|
|
94
|
+
return { reminder: input.reminder, ...(input.delivered ? { delivered: input.delivered } : {}) };
|
|
78
95
|
}
|
|
79
96
|
// Agent-facing continuation nudge for a mid-turn stream-stall retry. The CLI
|
|
80
97
|
// persisted every completed message before the hung request, so a resume lands
|
|
@@ -130,6 +147,7 @@ export function interruptedResumeAttempt(attempt, input) {
|
|
|
130
147
|
}
|
|
131
148
|
return {
|
|
132
149
|
prompt: INTERRUPTED_RESUME_PROMPT,
|
|
150
|
+
...(input.mainSync ? { reminder: input.mainSync.reminder, delivered: input.mainSync.delivered } : {}),
|
|
133
151
|
attemptedRehydration: false,
|
|
134
152
|
usedBoundary: attempt.usedBoundary,
|
|
135
153
|
resumeOptions: { resume: input.inFlight.sessionId, forkSession: true },
|
|
@@ -202,7 +220,70 @@ export function observeInProgressSession(inProgress, msg) {
|
|
|
202
220
|
...(sessionId ? { sessionId, sawSessionId: true } : {}),
|
|
203
221
|
};
|
|
204
222
|
}
|
|
205
|
-
return next;
|
|
223
|
+
return observeCancelPoint(next, msg, sessionId);
|
|
224
|
+
}
|
|
225
|
+
// Subagent messages (`parent_tool_use_id` set) live in their own transcripts, so
|
|
226
|
+
// only the main conversation's entries can be a place to resume it.
|
|
227
|
+
function observeCancelPoint(inProgress, msg, sessionId) {
|
|
228
|
+
if ((msg.type !== "assistant" && msg.type !== "user") || msg.parent_tool_use_id || !msg.uuid || !sessionId) {
|
|
229
|
+
return inProgress;
|
|
230
|
+
}
|
|
231
|
+
const blocks = Array.isArray(msg.message.content) ? msg.message.content : [];
|
|
232
|
+
const blockIds = (type) => blocks.flatMap((block) => {
|
|
233
|
+
if (block.type !== type) {
|
|
234
|
+
return [];
|
|
235
|
+
}
|
|
236
|
+
const id = block.type === "tool_use" ? block.id : block.type === "tool_result" ? block.tool_use_id : undefined;
|
|
237
|
+
return typeof id === "string" ? [id] : [];
|
|
238
|
+
});
|
|
239
|
+
let pending = inProgress.pendingToolUseIds ?? [];
|
|
240
|
+
let complete;
|
|
241
|
+
if (msg.type === "assistant") {
|
|
242
|
+
const calls = blockIds("tool_use");
|
|
243
|
+
pending = [...pending, ...calls];
|
|
244
|
+
complete = calls.length === 0 && blocks.some((block) => block.type === "text");
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
const answered = blockIds("tool_result");
|
|
248
|
+
pending = pending.filter((id) => !answered.includes(id));
|
|
249
|
+
complete = answered.length > 0;
|
|
250
|
+
}
|
|
251
|
+
return {
|
|
252
|
+
...inProgress,
|
|
253
|
+
pendingToolUseIds: pending,
|
|
254
|
+
...(complete && pending.length === 0 ? { cancelPoint: { sessionId, uuid: msg.uuid } } : {}),
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Where the next turn resumes after this one was cancelled: the cancelled turn's
|
|
259
|
+
* own session, up to the last entry it completed. A cancel stops the turn, not
|
|
260
|
+
* the conversation, so what the turn already read stays in it; only the tool
|
|
261
|
+
* call still waiting for its result is dropped, since a session ending on an
|
|
262
|
+
* unanswered tool call cannot be resumed. Before the turn completed anything,
|
|
263
|
+
* the session it resumed still holds, because every turn runs in a fork and
|
|
264
|
+
* never writes to it — but that session never received the cancelled request,
|
|
265
|
+
* so the request rides along as `unansweredRequest`. Undefined when the turn
|
|
266
|
+
* resumed no session: the next turn is rebuilt from the chat history, which
|
|
267
|
+
* has the request.
|
|
268
|
+
*/
|
|
269
|
+
export function buildCancelBoundary(input) {
|
|
270
|
+
const point = input.inProgress.cancelPoint;
|
|
271
|
+
if (point) {
|
|
272
|
+
return { version: 2, sessionId: point.sessionId, resumeSessionAt: point.uuid, updatedAtMs: input.nowMs };
|
|
273
|
+
}
|
|
274
|
+
if (!input.resumed || !input.request) {
|
|
275
|
+
return undefined;
|
|
276
|
+
}
|
|
277
|
+
return {
|
|
278
|
+
version: 2,
|
|
279
|
+
sessionId: input.resumed.sessionId,
|
|
280
|
+
...(input.resumed.resumeSessionAt ? { resumeSessionAt: input.resumed.resumeSessionAt } : {}),
|
|
281
|
+
// Raw requests only, oldest first: the next prompt adds the section headers once.
|
|
282
|
+
unansweredRequest: input.resumed.unansweredRequest
|
|
283
|
+
? `${input.resumed.unansweredRequest}\n\n${input.request}`
|
|
284
|
+
: input.request,
|
|
285
|
+
updatedAtMs: input.nowMs,
|
|
286
|
+
};
|
|
206
287
|
}
|
|
207
288
|
export function buildCleanBoundary(input) {
|
|
208
289
|
if (!input.inProgress.sawCleanResult || !input.inProgress.sessionId) {
|
|
@@ -248,7 +329,17 @@ export function applyCurrentSenderAttribution(content, sender) {
|
|
|
248
329
|
}
|
|
249
330
|
return `[Current speaker: ${formatSenderLabel(sender)}]\n\n${content}`;
|
|
250
331
|
}
|
|
332
|
+
// The CLI refuses a resume as an error result, before the model is asked
|
|
333
|
+
// anything: a session file that is gone, or a resume point it never wrote.
|
|
334
|
+
const CLI_RESUME_REFUSALS = ["no conversation found with session id", "no message found with message.uuid of"];
|
|
335
|
+
export function isCliResumeRefusal(error) {
|
|
336
|
+
const message = errorMessage(error).toLowerCase();
|
|
337
|
+
return CLI_RESUME_REFUSALS.some((refusal) => message.includes(refusal));
|
|
338
|
+
}
|
|
251
339
|
export function isResumeSessionError(error) {
|
|
340
|
+
if (isCliResumeRefusal(error)) {
|
|
341
|
+
return true;
|
|
342
|
+
}
|
|
252
343
|
const message = errorMessage(error).toLowerCase();
|
|
253
344
|
if (!message.includes("session") && !message.includes("resume")) {
|
|
254
345
|
return false;
|