@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.
Files changed (61) hide show
  1. package/README.md +33 -7
  2. package/dist/hono/agent-session.d.ts +0 -1
  3. package/dist/hono/agent-session.d.ts.map +1 -1
  4. package/dist/hono/agent-session.js +0 -7
  5. package/dist/hono/agent-session.js.map +1 -1
  6. package/dist/hono/agent-session.test.js +1 -7
  7. package/dist/hono/agent-session.test.js.map +1 -1
  8. package/dist/hono/agent.d.ts.map +1 -1
  9. package/dist/hono/agent.js +5 -8
  10. package/dist/hono/agent.js.map +1 -1
  11. package/dist/hono/bridge-job.d.ts +9 -1
  12. package/dist/hono/bridge-job.d.ts.map +1 -1
  13. package/dist/hono/bridge-job.js +151 -20
  14. package/dist/hono/bridge-job.js.map +1 -1
  15. package/dist/hono/bridge-job.test.js +233 -2
  16. package/dist/hono/bridge-job.test.js.map +1 -1
  17. package/dist/hono/convex.d.ts +2 -1
  18. package/dist/hono/convex.d.ts.map +1 -1
  19. package/dist/hono/convex.js +4 -0
  20. package/dist/hono/convex.js.map +1 -1
  21. package/dist/hono/main-sync.d.ts.map +1 -1
  22. package/dist/hono/main-sync.js +18 -5
  23. package/dist/hono/main-sync.js.map +1 -1
  24. package/dist/hono/main-sync.test.js +12 -0
  25. package/dist/hono/main-sync.test.js.map +1 -1
  26. package/dist/hono/relay.d.ts +8 -1
  27. package/dist/hono/relay.d.ts.map +1 -1
  28. package/dist/hono/relay.js +3 -0
  29. package/dist/hono/relay.js.map +1 -1
  30. package/dist/hono/served-model.d.ts +23 -0
  31. package/dist/hono/served-model.d.ts.map +1 -0
  32. package/dist/hono/served-model.js +82 -0
  33. package/dist/hono/served-model.js.map +1 -0
  34. package/dist/hono/served-model.test.d.ts +2 -0
  35. package/dist/hono/served-model.test.d.ts.map +1 -0
  36. package/dist/hono/served-model.test.js +29 -0
  37. package/dist/hono/served-model.test.js.map +1 -0
  38. package/dist/hono/session-continuity.d.ts +30 -0
  39. package/dist/hono/session-continuity.d.ts.map +1 -1
  40. package/dist/hono/session-continuity.integration.test.js +201 -5
  41. package/dist/hono/session-continuity.integration.test.js.map +1 -1
  42. package/dist/hono/session-continuity.js +99 -8
  43. package/dist/hono/session-continuity.js.map +1 -1
  44. package/dist/hono/session-store.d.ts +2 -0
  45. package/dist/hono/session-store.d.ts.map +1 -1
  46. package/dist/hono/session-store.js +6 -0
  47. package/dist/hono/session-store.js.map +1 -1
  48. package/dist/hono/session-usage-baseline.d.ts +1 -0
  49. package/dist/hono/session-usage-baseline.d.ts.map +1 -1
  50. package/dist/hono/session-usage-baseline.js +17 -4
  51. package/dist/hono/session-usage-baseline.js.map +1 -1
  52. package/dist/hono/turn-events.d.ts +1 -1
  53. package/dist/hono/turn-events.d.ts.map +1 -1
  54. package/dist/hono/turn-events.js.map +1 -1
  55. package/dist/review/digest.d.ts +35 -0
  56. package/dist/review/digest.d.ts.map +1 -1
  57. package/dist/review/digest.js +171 -27
  58. package/dist/review/digest.js.map +1 -1
  59. package/dist/review/digest.test.js +130 -1
  60. package/dist/review/digest.test.js.map +1 -1
  61. 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":"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"}
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("aborts during a dirty tool batch, clears continuity, and rehydrates the next turn without resume", async () => {
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.toBeUndefined();
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).not.toHaveProperty("resume");
215
- expect(await promptText(harness.sdk.queries[1]?.prompt)).toContain("Current user request\nContinue after abort");
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).not.toHaveProperty("resume");
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: input.requestPrompt,
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
- // A verbatim command (`/compact`, a workspace skill) must stay the leading
56
- // token. If there is no live session to resume, a history preamble would push
57
- // it off the front, so send it bare — with no boundary there is nothing to
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
- return input.reminder ? { reminder: input.reminder } : {};
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;