@koda-sl/baker-bridge 0.166.0 → 0.167.0-dev.521cbd067

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 CHANGED
@@ -833,6 +833,27 @@ whose reflog or remote branch still holds a commit it no longer reaches (reset
833
833
  or rebased back to `main`) holds lost work, not none, so it never reports
834
834
  unchanged. If git cannot answer, the field is left out.
835
835
 
836
+ ## After a Publish is pushed
837
+
838
+ A chat can go on after Publish, so once this chat's Publish is on `main` (its
839
+ `publish: <branch>` commit), the bridge settles it: when the publish turn ends,
840
+ and again before the next turn's catch-up for a Runtime that stopped first. In
841
+ order:
842
+
843
+ 1. The chat branch starts again from `main` (`git checkout -B <branch>
844
+ origin/main`), only when the workspace holds exactly what was published:
845
+ nothing written since, and the same tree as the published commit, or the
846
+ same change when the Publish re-applied it on a newer `main`. Its reflog
847
+ from before goes with it: everything it held is live. Anything else leaves
848
+ the branch as it is, with a warning in the log.
849
+ 2. The remote chat branch is deleted.
850
+ 3. `refs/baker/published` records the published commit, and how many entries
851
+ the branch's reflog held then. The lost-work check above reads only the
852
+ entries after them, so what was published never reads as lost work, while a
853
+ commit lost after Publish still does.
854
+
855
+ A Publish already recorded is not settled twice.
856
+
836
857
  ## Keeping the CLI on the current release
837
858
 
838
859
  A turn's request may carry `cliVersion`: the `baker` CLI release the turn should
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/hono/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA2B,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAI5F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAiCvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAU3D,OAAO,EACL,KAAK,qBAAqB,EAK3B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAoB/E,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,MAAM,CAEhG;AA2DD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE5D;AAOD,cAAM,oBAAoB;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAE5C,YAAY,QAAQ,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,qBAAqB,EAcpE;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,EAE3B;IAED,KAAK,IAAI,OAAO,CAEf;IAED,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAE9F;IAED,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAE9D;IAED,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAE3E;IAED,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAE5E;IAED,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,yBAAyB,GAAG,OAAO,CAExF;IAED,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAEhF;IAED,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAE5E;IAEK,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAwCjF;IAED,OAAO,CAAC,uBAAuB;YA8FjB,kBAAkB;YAQlB,mBAAmB;YAOnB,sBAAsB;YAItB,cAAc;IAO5B,OAAO,CAAC,wBAAwB;YAKlB,uBAAuB;YAQvB,+BAA+B;YAQ/B,wBAAwB;YAwBxB,kBAAkB;CAejC;AAwBD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAElF;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEtD;AAWD,wBAAgB,sBAAsB,IAAI,IAAI,CAI7C;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CA2BhE"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/hono/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA2B,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAI5F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAiCvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAU3D,OAAO,EACL,KAAK,qBAAqB,EAK3B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAoB/E,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,MAAM,CAEhG;AA2DD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE5D;AAOD,cAAM,oBAAoB;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,oBAAoB,CAAK;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAE5C,YAAY,QAAQ,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,qBAAqB,EAcpE;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,EAE3B;IAED,KAAK,IAAI,OAAO,CAEf;IAED,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAE9F;IAED,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,GAAG,OAAO,CAE9D;IAED,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAE3E;IAED,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,mBAAmB,GAAG,OAAO,CAE5E;IAED,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,yBAAyB,GAAG,OAAO,CAExF;IAED,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAEhF;IAED,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAE5E;IAEK,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAwCjF;IAED,OAAO,CAAC,uBAAuB;YA+FjB,kBAAkB;YAQlB,mBAAmB;YAOnB,sBAAsB;YAItB,cAAc;IAO5B,OAAO,CAAC,wBAAwB;YAKlB,uBAAuB;YAQvB,+BAA+B;YAQ/B,wBAAwB;YAwBxB,kBAAkB;CAejC;AAwBD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAElF;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEtD;AAWD,wBAAgB,sBAAsB,IAAI,IAAI,CAI7C;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CA2BhE"}
@@ -4,7 +4,7 @@ import { buildAttachmentPromptSuffix, downloadAttachments } from "./attachments.
4
4
  import { BridgeJobExecutor, } from "./bridge-job.js";
5
5
  import { cliKeeper } from "./cli-sync.js";
6
6
  import { clearStreamBuffer, enqueueStreamingTools, enqueueStreamText, flushStream, markStreamReplace, postAgentActivity, postAvatarCastingRequest, postAvatarCastingResolved, postCompaction, postConnectionInputRequest, postConnectionInputResolved, postContextUsage, postCredentialInputRequest, postCredentialInputResolved, postEvent, postFlowInputRequest, postFlowInputResolved, postHeartbeat, postInputRequest, postInputResolved, postPlanResolved, postPlanReview, postRetractedEvents, postReviewDigest, postTagInputRequest, postTagInputResolved, postToolOutcomes, recordContextSource, signalComplete, waitForTerminalCompletionLifecycle, } from "./convex.js";
7
- import { catchUpWithMain, holdsNoWorkOfItsOwn } from "./main-sync.js";
7
+ import { catchUpWithMain, holdsNoWorkOfItsOwn, settleAfterPublish } from "./main-sync.js";
8
8
  import { createMcpServersProvider } from "./mcp-servers.js";
9
9
  import { resolveAgentModel } from "./model-capabilities.js";
10
10
  import { recoverStalledPublish, waitForStalledPublishRecovery } from "./publish-recovery.js";
@@ -234,6 +234,7 @@ class BridgeRuntimeSession {
234
234
  mcpServersProvider,
235
235
  catchUpWithMain: (threadId) => catchUpWithMain(bridgeRuntimeFiles.projectRoot(), threadId),
236
236
  holdsNoWork: () => holdsNoWorkOfItsOwn(bridgeRuntimeFiles.projectRoot()),
237
+ settleAfterPublish: () => settleAfterPublish(bridgeRuntimeFiles.projectRoot()),
237
238
  keepCliInStep,
238
239
  model: resolveAgentModel(),
239
240
  sessionStore: {
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/hono/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/hono/agent.ts"],"names":[],"mappings":"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"}
@@ -2,14 +2,43 @@ import { mkdir, mkdtemp } from "node:fs/promises";
2
2
  import { tmpdir } from "node:os";
3
3
  import { join } from "node:path";
4
4
  import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
5
- // getSlashCommands reads the workspace's skills off disk, so the project root
6
- // has to be steerable to a fixture directory.
7
- const projectRootMock = vi.hoisted(() => ({ value: process.cwd() }));
5
+ // The turn runs in a workspace of its own: a temp directory outside any git repository, so the
6
+ // before-turn sync with main never fetches or writes refs in the checkout running these tests.
7
+ // getSlashCommands reads the workspace's skills off disk, so the project root stays steerable.
8
+ // The session boundary and in-flight turn are kept under a temp Baker home, where the tests read them.
9
+ const dirs = await vi.hoisted(async () => {
10
+ const { mkdtempSync } = await import("node:fs");
11
+ const { tmpdir } = await import("node:os");
12
+ const { join } = await import("node:path");
13
+ return {
14
+ projectRoot: { value: mkdtempSync(join(tmpdir(), "baker-agent-workspace-")) },
15
+ bakerHome: mkdtempSync(join(tmpdir(), "baker-agent-home-")),
16
+ };
17
+ });
18
+ const projectRootMock = dirs.projectRoot;
19
+ // The real session store clears a boundary by deleting its file. A test that
20
+ // needs a stale clear to land late holds that delete open here.
21
+ const sessionFileDeletes = vi.hoisted(() => ({
22
+ hold: undefined,
23
+ }));
24
+ vi.mock("node:fs/promises", async (importOriginal) => {
25
+ const actual = await importOriginal();
26
+ return {
27
+ ...actual,
28
+ rm: async (...args) => {
29
+ await sessionFileDeletes.hold?.(String(args[0]));
30
+ return actual.rm(...args);
31
+ },
32
+ };
33
+ });
8
34
  vi.mock("./runtime-files.ts", async (importOriginal) => {
9
35
  const actual = await importOriginal();
10
36
  return {
11
37
  ...actual,
12
- bridgeRuntimeFiles: { ...actual.bridgeRuntimeFiles, projectRoot: () => projectRootMock.value },
38
+ bridgeRuntimeFiles: {
39
+ ...actual.createBridgeRuntimeFiles({ bakerHome: dirs.bakerHome }),
40
+ projectRoot: () => projectRootMock.value,
41
+ },
13
42
  };
14
43
  });
15
44
  // The real provider POSTs to the convex site above: every turn here went out to
@@ -33,24 +62,6 @@ vi.mock("@anthropic-ai/claude-agent-sdk", () => ({
33
62
  createSdkMcpServer: vi.fn(() => ({ type: "sdk", name: "baker_ui", instance: {} })),
34
63
  tool: vi.fn((name) => ({ name })),
35
64
  }));
36
- vi.mock("./model-capabilities.ts", () => ({
37
- DEFAULT_MODEL: "claude-opus-5-5",
38
- resolveAgentModel: () => "claude-opus-5-5",
39
- agentModelOverride: () => undefined,
40
- contextWindowForModel: (model) => (model === "claude-opus-5-5" ? 1_000_000 : null),
41
- autoCompactWindowForModel: (model) => model === "claude-opus-5-5" ? 1_000_000 : undefined,
42
- betasForModel: (model) => model === "claude-haiku-4-5" ? undefined : ["context-1m-2025-08-07"],
43
- }));
44
- vi.mock("./session-store.ts", () => ({
45
- loadSessionBoundary: vi.fn(async () => undefined),
46
- saveSessionBoundary: vi.fn(async () => undefined),
47
- clearSessionBoundary: vi.fn(async () => undefined),
48
- inFlightTurnStore: {
49
- load: vi.fn(async () => undefined),
50
- save: vi.fn(async () => undefined),
51
- clear: vi.fn(async () => undefined),
52
- },
53
- }));
54
65
  vi.mock("./convex.ts", () => ({
55
66
  clearStreamBuffer: vi.fn(),
56
67
  enqueueStreamingTools: vi.fn(),
@@ -76,9 +87,11 @@ import { abortSession, buildRehydratedPrompt, getSlashCommands, isResumeSessionE
76
87
  import { processAsync } from "./callback.js";
77
88
  import { recordContextSource, signalComplete, waitForTerminalCompletionLifecycle } from "./convex.js";
78
89
  import { recoverStalledPublish, waitForStalledPublishRecovery } from "./publish-recovery.js";
79
- import { clearSessionBoundary, loadSessionBoundary, saveSessionBoundary } from "./session-store.js";
90
+ import { loadSessionBoundary, saveSessionBoundary } from "./session-store.js";
80
91
  beforeEach(() => {
81
92
  vi.clearAllMocks();
93
+ // Every turn here runs on the default model; a developer's own override stays out of it.
94
+ vi.stubEnv("BAKER_AGENT_MODEL", "");
82
95
  });
83
96
  // Two tests install fake timers and restore them in a `finally`. A test that
84
97
  // times out never reaches its `finally` — vitest fails it but leaves the body
@@ -87,6 +100,7 @@ beforeEach(() => {
87
100
  // dozen. Hooks still run after a timed-out test, so restore the clock here.
88
101
  afterEach(() => {
89
102
  vi.useRealTimers();
103
+ vi.unstubAllEnvs();
90
104
  });
91
105
  function history(entries, renderedContext) {
92
106
  return {
@@ -105,11 +119,14 @@ function history(entries, renderedContext) {
105
119
  ].join("\n")),
106
120
  };
107
121
  }
108
- function cleanLoadedBoundary(sessionId) {
109
- return {
110
- kind: "clean",
111
- boundary: { version: 2, sessionId, resumeSessionAt: "assistant_saved", updatedAtMs: 100 },
112
- };
122
+ /** A clean boundary a thread's last turn left on disk, to resume from. */
123
+ async function savedCleanBoundary(threadId, sessionId) {
124
+ await saveSessionBoundary(threadId, { version: 2, sessionId, resumeSessionAt: "assistant_saved", updatedAtMs: 100 });
125
+ }
126
+ /** The session the thread's next turn would resume, as the bridge left it on disk. */
127
+ async function persistedSessionId(threadId) {
128
+ const loaded = await loadSessionBoundary(threadId);
129
+ return loaded?.kind === "clean" ? loaded.boundary.sessionId : undefined;
113
130
  }
114
131
  function deferred() {
115
132
  let resolve;
@@ -373,7 +390,7 @@ describe("processAsync rehydration flow", () => {
373
390
  });
374
391
  expect(signalComplete).toHaveBeenCalledWith("thread_flow_missing_session", "turn_flow", expect.objectContaining({ kind: "completed", costUsd: 0, model: "claude-opus-5-5" }));
375
392
  expect(vi.mocked(signalComplete).mock.lastCall?.[2]).not.toMatchObject({ completeChat: true });
376
- expect(saveSessionBoundary).toHaveBeenCalledWith("thread_flow_missing_session", expect.objectContaining({ version: 2, sessionId: "session_next" }));
393
+ expect(await persistedSessionId("thread_flow_missing_session")).toBe("session_next");
377
394
  });
378
395
  it("sends the preview-pane context as its own system-reminder block, leaving the marketer's words alone", async () => {
379
396
  const queryMock = vi.mocked(query);
@@ -447,44 +464,9 @@ describe("processAsync rehydration flow", () => {
447
464
  expect(reminders.join("\n")).toContain("Baker: this chat's last publish failed.");
448
465
  expect(reminders.join("\n")).toContain("Verify failed (exit 1)");
449
466
  });
450
- it("clears an invalid saved SDK session and retries once with rehydrated history", async () => {
451
- const queryMock = vi.mocked(query);
452
- vi.mocked(loadSessionBoundary).mockResolvedValueOnce(cleanLoadedBoundary("session_stale"));
453
- queryMock
454
- .mockReturnValueOnce({
455
- async *[Symbol.asyncIterator]() {
456
- yield await Promise.reject(new Error("Cannot resume: session not found"));
457
- },
458
- })
459
- .mockReturnValueOnce({
460
- async *[Symbol.asyncIterator]() {
461
- await Promise.resolve();
462
- yield { type: "result", total_cost_usd: 0.5, session_id: "session_next" };
463
- },
464
- });
465
- await processAsync({
466
- threadId: "thread_flow_invalid_resume",
467
- prompt: "Continue from context",
468
- history: history([{ role: "user", text: "Persisted fact", createdAt: 1 }]),
469
- turnId: "turn_invalid_resume",
470
- });
471
- expect(queryMock).toHaveBeenCalledTimes(2);
472
- expect(queryMock.mock.calls[0]?.[0].options).toMatchObject({
473
- resume: "session_stale",
474
- forkSession: true,
475
- resumeSessionAt: "assistant_saved",
476
- });
477
- expect(await promptText(queryMock.mock.calls[0]?.[0].prompt)).toBe("Continue from context");
478
- expect(queryMock.mock.calls[1]?.[0].options).not.toHaveProperty("resume");
479
- const retryPrompt = await promptText(queryMock.mock.calls[1]?.[0].prompt);
480
- expect(retryPrompt).toContain("[user] Persisted fact");
481
- expect(retryPrompt).toContain("Current user request\nContinue from context");
482
- expect(clearSessionBoundary).toHaveBeenCalledWith("thread_flow_invalid_resume");
483
- expect(recordContextSource).toHaveBeenCalledWith("thread_flow_invalid_resume", "rehydrated_invalid_resume", expect.objectContaining({ historyEntryCount: 1, reason: "invalid_resume" }), "turn_invalid_resume");
484
- });
485
467
  it("treats tool-use concurrency SDK errors as failed dirty continuity instead of string-match repair", async () => {
486
468
  const queryMock = vi.mocked(query);
487
- vi.mocked(loadSessionBoundary).mockResolvedValueOnce(cleanLoadedBoundary("session_broken_tool_state"));
469
+ await savedCleanBoundary("thread_flow_tool_use_error", "session_broken_tool_state");
488
470
  queryMock.mockReturnValueOnce({
489
471
  async *[Symbol.asyncIterator]() {
490
472
  yield await Promise.reject(new Error("Claude Code returned an error result: API Error: 400 due to tool use concurrency issues."));
@@ -502,7 +484,7 @@ describe("processAsync rehydration flow", () => {
502
484
  forkSession: true,
503
485
  resumeSessionAt: "assistant_saved",
504
486
  });
505
- expect(clearSessionBoundary).toHaveBeenCalledWith("thread_flow_tool_use_error");
487
+ expect(await loadSessionBoundary("thread_flow_tool_use_error")).toBeUndefined();
506
488
  expect(recordContextSource).not.toHaveBeenCalledWith("thread_flow_tool_use_error", "rehydrated_repaired_tool_state", expect.anything(), "turn_tool_use_error");
507
489
  expect(signalComplete).toHaveBeenCalledWith("thread_flow_tool_use_error", "turn_tool_use_error", expect.objectContaining({
508
490
  kind: "errored",
@@ -511,65 +493,6 @@ describe("processAsync rehydration flow", () => {
511
493
  errors: [expect.stringContaining("tool use concurrency issues")],
512
494
  }));
513
495
  });
514
- it("treats tool-use concurrency result errors as failed dirty continuity instead of retrying", async () => {
515
- const queryMock = vi.mocked(query);
516
- vi.mocked(loadSessionBoundary).mockResolvedValueOnce(cleanLoadedBoundary("session_broken_tool_state_result"));
517
- queryMock.mockReturnValueOnce({
518
- async *[Symbol.asyncIterator]() {
519
- await Promise.resolve();
520
- yield {
521
- type: "result",
522
- subtype: "error_during_execution",
523
- is_error: true,
524
- errors: ["API Error: 400 due to tool use concurrency issues"],
525
- total_cost_usd: 0.3,
526
- session_id: "session_broken_tool_state_result",
527
- };
528
- },
529
- });
530
- await processAsync({
531
- threadId: "thread_flow_tool_use_result_error",
532
- prompt: "Continue from persisted state",
533
- history: history([{ role: "assistant", text: "I was about to run a tool", createdAt: 1 }]),
534
- turnId: "turn_tool_use_result_error",
535
- });
536
- expect(queryMock).toHaveBeenCalledTimes(1);
537
- expect(clearSessionBoundary).toHaveBeenCalledWith("thread_flow_tool_use_result_error");
538
- expect(signalComplete).toHaveBeenCalledWith("thread_flow_tool_use_result_error", "turn_tool_use_result_error", expect.objectContaining({
539
- kind: "errored",
540
- costUsd: 0.3,
541
- model: "claude-opus-5-5",
542
- errors: ["Claude Code returned an error result: API Error: 400 due to tool use concurrency issues"],
543
- }));
544
- });
545
- it("does not retry invalid resume after any user-visible SDK event has been observed", async () => {
546
- const queryMock = vi.mocked(query);
547
- vi.mocked(loadSessionBoundary).mockResolvedValueOnce(cleanLoadedBoundary("session_stale_after_event"));
548
- queryMock.mockReturnValueOnce({
549
- async *[Symbol.asyncIterator]() {
550
- yield { type: "stream_event", event: { type: "message_start" } };
551
- yield {
552
- type: "stream_event",
553
- event: { type: "content_block_delta", delta: { type: "text_delta", text: "Visible" } },
554
- };
555
- yield await Promise.reject(new Error("Cannot resume: session not found"));
556
- },
557
- });
558
- await processAsync({
559
- threadId: "thread_flow_invalid_resume_after_event",
560
- prompt: "Continue from context",
561
- history: history([{ role: "user", text: "Persisted fact", createdAt: 1 }]),
562
- turnId: "turn_invalid_resume_after_event",
563
- });
564
- expect(queryMock).toHaveBeenCalledTimes(1);
565
- expect(clearSessionBoundary).toHaveBeenCalledWith("thread_flow_invalid_resume_after_event");
566
- expect(signalComplete).toHaveBeenCalledWith("thread_flow_invalid_resume_after_event", "turn_invalid_resume_after_event", expect.objectContaining({
567
- kind: "errored",
568
- costUsd: 0,
569
- model: "claude-opus-5-5",
570
- errors: [expect.stringContaining("Cannot resume: session not found")],
571
- }));
572
- });
573
496
  it("does not resume from a clean SDK result that is replaced before completion publishes", async () => {
574
497
  vi.useFakeTimers();
575
498
  try {
@@ -600,7 +523,7 @@ describe("processAsync rehydration flow", () => {
600
523
  turnId: "turn_completion_clean",
601
524
  });
602
525
  await completionStarted.promise;
603
- expect(saveSessionBoundary).not.toHaveBeenCalledWith("thread_flow_replace_during_completion", expect.objectContaining({ sessionId: "session_unpublished_clean" }));
526
+ expect(await persistedSessionId("thread_flow_replace_during_completion")).not.toBe("session_unpublished_clean");
604
527
  const second = processAsync({
605
528
  threadId: "thread_flow_replace_during_completion",
606
529
  prompt: "Replace before publish finishes",
@@ -611,10 +534,10 @@ describe("processAsync rehydration flow", () => {
611
534
  await second;
612
535
  expect(queryMock).toHaveBeenCalledTimes(2);
613
536
  expect(queryMock.mock.calls[1]?.[0].options).not.toHaveProperty("resume", "session_unpublished_clean");
614
- expect(saveSessionBoundary).toHaveBeenCalledWith("thread_flow_replace_during_completion", expect.objectContaining({ version: 2, sessionId: "session_replacement_clean" }));
537
+ expect(await persistedSessionId("thread_flow_replace_during_completion")).toBe("session_replacement_clean");
615
538
  releaseCompletion.resolve(true);
616
539
  await first;
617
- expect(saveSessionBoundary).not.toHaveBeenCalledWith("thread_flow_replace_during_completion", expect.objectContaining({ sessionId: "session_unpublished_clean" }));
540
+ expect(await persistedSessionId("thread_flow_replace_during_completion")).not.toBe("session_unpublished_clean");
618
541
  }
619
542
  finally {
620
543
  vi.useRealTimers();
@@ -641,9 +564,9 @@ describe("processAsync rehydration flow", () => {
641
564
  history: history([]),
642
565
  turnId: "turn_idle_clean_1",
643
566
  });
644
- expect(saveSessionBoundary).toHaveBeenCalledWith("thread_flow_stale_abort_after_clean", expect.objectContaining({ version: 2, sessionId: "session_idle_clean" }));
567
+ expect(await persistedSessionId("thread_flow_stale_abort_after_clean")).toBe("session_idle_clean");
645
568
  expect(abortSession("thread_flow_stale_abort_after_clean")).toBe(false);
646
- expect(clearSessionBoundary).not.toHaveBeenCalledWith("thread_flow_stale_abort_after_clean");
569
+ expect(await persistedSessionId("thread_flow_stale_abort_after_clean")).toBe("session_idle_clean");
647
570
  await processAsync({
648
571
  threadId: "thread_flow_stale_abort_after_clean",
649
572
  prompt: "Continue after stale abort",
@@ -657,70 +580,63 @@ describe("processAsync rehydration flow", () => {
657
580
  });
658
581
  it("repairs a stale dirty clear that finishes after a replacement committed a clean boundary", async () => {
659
582
  vi.useFakeTimers();
583
+ const queryMock = vi.mocked(query);
584
+ await savedCleanBoundary("thread_flow_stale_clear_race", "session_prior_race");
585
+ // The failing turn's clear deletes the boundary file; hold that delete open
586
+ // until the replacement has committed its own boundary.
587
+ const clearStarted = deferred();
588
+ const staleClear = deferred();
589
+ sessionFileDeletes.hold = (path) => {
590
+ if (!path.endsWith("thread_flow_stale_clear_race.json"))
591
+ return undefined;
592
+ sessionFileDeletes.hold = undefined;
593
+ clearStarted.resolve();
594
+ return staleClear.promise;
595
+ };
596
+ queryMock
597
+ .mockReturnValueOnce({
598
+ async *[Symbol.asyncIterator]() {
599
+ yield await Promise.reject(new Error("Claude Code returned an error result: API Error: 400 due to tool use concurrency issues."));
600
+ },
601
+ })
602
+ .mockReturnValueOnce({
603
+ async *[Symbol.asyncIterator]() {
604
+ await Promise.resolve();
605
+ yield {
606
+ type: "assistant",
607
+ uuid: "assistant_replacement_race",
608
+ session_id: "session_replacement_race",
609
+ message: { role: "assistant", content: [{ type: "text", text: "Replacement" }] },
610
+ };
611
+ yield { type: "result", total_cost_usd: 0.3, session_id: "session_replacement_race" };
612
+ },
613
+ });
660
614
  try {
661
- const queryMock = vi.mocked(query);
662
- vi.mocked(loadSessionBoundary).mockResolvedValueOnce(cleanLoadedBoundary("session_prior_race"));
663
- const staleClear = deferred();
664
- const dirtyBlocked = deferred();
665
- const releaseDirty = deferred();
666
- let clearCalls = 0;
667
- let persistedBoundary = cleanLoadedBoundary("session_prior_race").boundary;
668
- vi.mocked(clearSessionBoundary).mockImplementation(async () => {
669
- clearCalls += 1;
670
- if (clearCalls === 2) {
671
- await staleClear.promise;
672
- }
673
- persistedBoundary = undefined;
674
- });
675
- vi.mocked(saveSessionBoundary).mockImplementation((_threadId, boundary) => {
676
- persistedBoundary = boundary;
677
- return Promise.resolve();
678
- });
679
- queryMock
680
- .mockReturnValueOnce({
681
- close: () => {
682
- setTimeout(() => releaseDirty.resolve(), 0);
683
- },
684
- async *[Symbol.asyncIterator]() {
685
- yield { type: "system", subtype: "init", session_id: "session_dirty_race" };
686
- dirtyBlocked.resolve();
687
- await releaseDirty.promise;
688
- },
689
- })
690
- .mockReturnValueOnce({
691
- async *[Symbol.asyncIterator]() {
692
- await Promise.resolve();
693
- yield {
694
- type: "assistant",
695
- uuid: "assistant_replacement_race",
696
- session_id: "session_replacement_race",
697
- message: { role: "assistant", content: [{ type: "text", text: "Replacement" }] },
698
- };
699
- yield { type: "result", total_cost_usd: 0.3, session_id: "session_replacement_race" };
700
- },
701
- });
702
615
  const first = processAsync({
703
616
  threadId: "thread_flow_stale_clear_race",
704
617
  prompt: "Start dirty work",
705
618
  history: history([]),
706
619
  turnId: "turn_stale_clear_1",
707
620
  });
708
- await dirtyBlocked.promise;
621
+ await clearStarted.promise;
622
+ // The replacement waits out the stuck turn's takeover window before it runs.
709
623
  const second = processAsync({
710
624
  threadId: "thread_flow_stale_clear_race",
711
625
  prompt: "Replace dirty work",
712
626
  history: history([{ role: "user", text: "Start dirty work", createdAt: 1 }]),
713
627
  turnId: "turn_stale_clear_2",
714
628
  });
715
- await vi.advanceTimersByTimeAsync(0);
716
629
  await vi.advanceTimersByTimeAsync(30_000);
717
630
  await second;
718
- expect(persistedBoundary).toMatchObject({ version: 2, sessionId: "session_replacement_race" });
631
+ expect(await persistedSessionId("thread_flow_stale_clear_race")).toBe("session_replacement_race");
632
+ // The stale clear lands only now, after the replacement committed: it must not stick.
719
633
  staleClear.resolve();
720
634
  await first;
721
- expect(persistedBoundary).toMatchObject({ version: 2, sessionId: "session_replacement_race" });
635
+ expect(await persistedSessionId("thread_flow_stale_clear_race")).toBe("session_replacement_race");
722
636
  }
723
637
  finally {
638
+ sessionFileDeletes.hold = undefined;
639
+ staleClear.resolve();
724
640
  vi.useRealTimers();
725
641
  }
726
642
  });