@koda-sl/baker-bridge 0.168.0-dev.d78500250 → 0.168.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 (69) hide show
  1. package/README.md +44 -42
  2. package/dist/hono/agent.d.ts.map +1 -1
  3. package/dist/hono/agent.js +2 -1
  4. package/dist/hono/agent.js.map +1 -1
  5. package/dist/hono/agent.test.js +91 -175
  6. package/dist/hono/agent.test.js.map +1 -1
  7. package/dist/hono/attachments.d.ts.map +1 -1
  8. package/dist/hono/attachments.js +9 -1
  9. package/dist/hono/attachments.js.map +1 -1
  10. package/dist/hono/attachments.test.js +22 -1
  11. package/dist/hono/attachments.test.js.map +1 -1
  12. package/dist/hono/bridge-job.d.ts +7 -17
  13. package/dist/hono/bridge-job.d.ts.map +1 -1
  14. package/dist/hono/bridge-job.js +31 -110
  15. package/dist/hono/bridge-job.js.map +1 -1
  16. package/dist/hono/bridge-job.test.js +44 -184
  17. package/dist/hono/bridge-job.test.js.map +1 -1
  18. package/dist/hono/flow-input-card-fields.test.js +1 -1
  19. package/dist/hono/flow-input.d.ts +1 -1
  20. package/dist/hono/flow-input.js +1 -1
  21. package/dist/hono/main-sync.d.ts +22 -0
  22. package/dist/hono/main-sync.d.ts.map +1 -1
  23. package/dist/hono/main-sync.js +110 -2
  24. package/dist/hono/main-sync.js.map +1 -1
  25. package/dist/hono/main-sync.test.js +127 -1
  26. package/dist/hono/main-sync.test.js.map +1 -1
  27. package/dist/hono/openrouter-session.d.ts +13 -16
  28. package/dist/hono/openrouter-session.d.ts.map +1 -1
  29. package/dist/hono/openrouter-session.js +13 -16
  30. package/dist/hono/openrouter-session.js.map +1 -1
  31. package/dist/hono/relay.d.ts +0 -8
  32. package/dist/hono/relay.d.ts.map +1 -1
  33. package/dist/hono/relay.js +0 -2
  34. package/dist/hono/relay.js.map +1 -1
  35. package/dist/hono/relay.test.js +0 -24
  36. package/dist/hono/relay.test.js.map +1 -1
  37. package/dist/hono/runtime-files.d.ts +0 -1
  38. package/dist/hono/runtime-files.d.ts.map +1 -1
  39. package/dist/hono/runtime-files.js +0 -3
  40. package/dist/hono/runtime-files.js.map +1 -1
  41. package/dist/review/digest.d.ts +0 -13
  42. package/dist/review/digest.d.ts.map +1 -1
  43. package/dist/review/digest.js +1 -1
  44. package/dist/review/digest.js.map +1 -1
  45. package/package.json +1 -1
  46. package/dist/hono/effort-route.d.ts +0 -43
  47. package/dist/hono/effort-route.d.ts.map +0 -1
  48. package/dist/hono/effort-route.js +0 -36
  49. package/dist/hono/effort-route.js.map +0 -1
  50. package/dist/hono/effort-route.test.d.ts +0 -2
  51. package/dist/hono/effort-route.test.d.ts.map +0 -1
  52. package/dist/hono/effort-route.test.js +0 -54
  53. package/dist/hono/effort-route.test.js.map +0 -1
  54. package/dist/hono/tool-result-ledger.d.ts +0 -30
  55. package/dist/hono/tool-result-ledger.d.ts.map +0 -1
  56. package/dist/hono/tool-result-ledger.js +0 -63
  57. package/dist/hono/tool-result-ledger.js.map +0 -1
  58. package/dist/hono/tool-result-ledger.test.d.ts +0 -2
  59. package/dist/hono/tool-result-ledger.test.d.ts.map +0 -1
  60. package/dist/hono/tool-result-ledger.test.js +0 -61
  61. package/dist/hono/tool-result-ledger.test.js.map +0 -1
  62. package/dist/hono/workspace-instructions.d.ts +0 -43
  63. package/dist/hono/workspace-instructions.d.ts.map +0 -1
  64. package/dist/hono/workspace-instructions.js +0 -68
  65. package/dist/hono/workspace-instructions.js.map +0 -1
  66. package/dist/hono/workspace-instructions.test.d.ts +0 -2
  67. package/dist/hono/workspace-instructions.test.d.ts.map +0 -1
  68. package/dist/hono/workspace-instructions.test.js +0 -68
  69. package/dist/hono/workspace-instructions.test.js.map +0 -1
package/README.md CHANGED
@@ -50,7 +50,8 @@ await server.start();
50
50
  | `BAKER_CHAT_ID` | Present only when running inside a chat sandbox. When set, the bridge relocates Claude Code auto-memory into the cloned repo (`.claude/memory`) — see [Session journal](#session-journal-agent-memory) |
51
51
  | `BAKER_ACTING_USER_ID` | Injected into the Agent SDK subprocess env per turn (when the turn's sender is known) so in-sandbox `baker` CLI calls can scope work to the acting user — e.g. `baker mcp add --scope user` |
52
52
  | `CLAUDE_CODE_ENABLE_TASKS` | Set to `0` on every Agent SDK subprocess. Turns off the CLI's built-in task backlog and its `task_reminder` — see [Session surface](#session-surface) |
53
- | `CLAUDE_CODE_MODEL_CAPABILITIES` | Set to `per_turn_effort` on every Agent SDK subprocess so the CLI restates the effort per message and a turn on another effort level keeps the prompt cache — see [Reasoning effort](#reasoning-effort) |
53
+ | `CLAUDE_CODE_DISABLE_TERMINAL_TITLE` | Set to `1` on every Agent SDK subprocess. The CLI's session-title request carries a structured output OpenRouter cannot route to Bedrock — see [Bedrock is the preferred provider](#bedrock-is-the-preferred-provider) |
54
+ | `CLAUDE_CODE_MODEL_CAPABILITIES` | Set to `-per_turn_effort` on every Agent SDK subprocess so no request carries a per-message effort, which OpenRouter cannot route to Bedrock — see [Bedrock is the preferred provider](#bedrock-is-the-preferred-provider) |
54
55
  | `NO_COLOR` | Set to `1` on every Agent SDK subprocess so `baker --help` output carries no ANSI escapes — see [Session surface](#session-surface) |
55
56
  | `BAKER_AGENT_MODEL` | Optional. Runs every turn in this runtime on the named model instead of the default, and is forwarded to subagents as `CLAUDE_CODE_SUBAGENT_MODEL`. Ignored unless it names a model with a known context window — see [Model selection](#model-selection) |
56
57
  | `CLAUDE_CODE_SUBAGENT_MODEL`, `CLAUDE_CODE_SUBAGENT_MODEL_FORCE` | Set on the Agent SDK subprocess only when `BAKER_AGENT_MODEL` is set. Together they override the `model:` each subagent pins in its own frontmatter |
@@ -110,9 +111,6 @@ use, and each one costs context on every turn. The bridge trims them at the
110
111
  disallowed — it is the subagent spawn the workspace's own agents ride — and
111
112
  neither is `SendMessage`, which continues a subagent the session already ran;
112
113
  the turn stays open until the continued subagent finishes.
113
- - **Developer tools are disallowed** — `DesignSync`, `ReportFindings`,
114
- `NotebookEdit`. None was called in 358 production chats, and each definition
115
- rides every request whenever the CLI does not defer it.
116
114
 
117
115
  To see what a session actually ends up with, read the tool list off its own
118
116
  `init` message (`--output-format stream-json --verbose`) rather than this list:
@@ -124,13 +122,6 @@ the CLI gates some tools on the model, so the resolved set differs per model.
124
122
  are never TTY-gated, so without it every help read spends ~5-10% of its tokens
125
123
  on colour codes the model cannot see.
126
124
 
127
- **The workspace's `CLAUDE.md` is sent as the system prompt**, minus its
128
- `@COMPANY.md` import, which loads from `~/.baker/instructions/CLAUDE.md` as an
129
- additional directory; the root file is excluded so it is not loaded twice. In
130
- the system prompt the scaffold's text ends on a cache breakpoint, so every chat
131
- reads one cached copy instead of writing its own ~24k tokens. A `CLAUDE.md`
132
- without that exact block loads as before. See `workspace-instructions.ts`.
133
-
134
125
  `Options.agents` is deliberately left unset: the workspace ships its own
135
126
  subagents in `.claude/agents/`, discovered from disk via
136
127
  `settingSources: ["project"]`, and setting the option risks replacing them.
@@ -174,30 +165,17 @@ Opus 5.5 it suppressed the short progress notes users read during long turns.
174
165
 
175
166
  ## Reasoning effort
176
167
 
177
- Each turn's effort is decided by Jev before its first query (`effort-route.ts`):
178
- `medium` — Opus 5.5's own default, sent explicitly — unless Jev clearly reads the
179
- turn as small (a short answer, one lookup, one change the marketer spelled out),
180
- which runs at `low`. Jev reads the message together with the agent's last reply,
181
- because a short "sí, hazlo" approves whatever that reply proposed; plan mode, a
182
- leading command, an unattended run and a turn with attachments keep `medium`
183
- without asking, and so does a turn Jev does not answer (2 s timeout). It is asked
184
- while the session boundary loads, so it adds no wait. The thresholds were read
185
- off 648 production turns (small ≥ 0.75, complex ≤ 0.3: 3% of turns, median 698
186
- output tokens); every decision is reported with the turn and kept on its
187
- `thread.complete` activity row, so the band can be widened against what those
188
- turns did. Effort governs thinking depth, preamble, and how many tool calls the
189
- model makes; Anthropic's own cost index puts `low` ~12% under `medium` per task.
190
-
191
- **A change of effort must go through the per-message form.** A top-level
192
- effort that differs from the previous request re-writes the cached conversation
193
- from its first tool exchange onward — on a session carrying hundreds of
194
- thousands of tokens, far more than any per-turn tuning saves. The bridge sets
195
- `CLAUDE_CODE_MODEL_CAPABILITIES=per_turn_effort`, so the CLI also restates the
196
- effort on its mid-conversation `role: "system"` message (`output_config.effort`,
197
- beta `per-turn-control`), which keeps the whole cache. Measured through the real
198
- CLI on Bedrock, effort medium → low → medium across resumed turns: 3,580 tokens
199
- re-written on the change without it, 106 with it. Prompt text is no substitute
200
- for the effort parameter on Opus 5.5.
168
+ Every turn is sent with `effort: "medium"` (the API default is `high`). Effort
169
+ governs thinking depth, preamble, and how many tool calls the model makes; the
170
+ tool-call reduction matters most, because each tool call is another request that
171
+ re-reads the whole prompt, so fewer calls also means less cache-read volume.
172
+
173
+ **It must stay a single constant.** The resolved effort is rendered into the
174
+ prompt, so changing it between requests invalidates every cache breakpoint above
175
+ it — on a session carrying hundreds of thousands of tokens, that re-write costs
176
+ far more than any per-turn tuning saves. To vary reasoning per task, steer with
177
+ prompt text on the newest user message instead; that leaves earlier breakpoints
178
+ intact.
201
179
 
202
180
  Subagents set their own `effort` (and `model`) in their markdown frontmatter and
203
181
  do **not** inherit either from the main thread. The four scaffold-shared agents
@@ -263,13 +241,16 @@ The `session_id` pin still applies whenever an inherited `provider` drops the
263
241
  `order`.
264
242
 
265
243
  The preference only holds for a request Bedrock can serve, and OpenRouter drops
266
- Bedrock from the route without an error when it can't. The day Opus 5.5 shipped,
267
- the CLI's per-message effort was such a request — 52 of ~4,600 Opus 5.5 requests
268
- reached Bedrock — and the bridge switched it off. Since then Bedrock serves it
269
- (verified 2026-10-30 with fallbacks off), so it is back on (see
270
- [Reasoning effort](#reasoning-effort)). A request with a structured-output schema (the CLI's
271
- short title request) is still served elsewhere, because Bedrock lacks structured
272
- outputs on OpenRouter.
244
+ Bedrock from the route without an error when it can't. From Opus 5.5 the CLI
245
+ restates the effort on its mid-conversation `role: "system"` message
246
+ (`output_config.effort`, beta `per-turn-control`), which no Bedrock endpoint
247
+ supports — so the day Opus 5.5 shipped, 52 of ~4,600 of its requests reached
248
+ Bedrock and the rest were billed to OpenRouter credits. The bridge sets
249
+ `CLAUDE_CODE_MODEL_CAPABILITIES=-per_turn_effort` to stop that; the request-level
250
+ `effort` still applies. A request with a structured-output schema is served
251
+ elsewhere, because Bedrock lacks structured outputs on OpenRouter; the CLI's one
252
+ such request, naming the session, is never sent
253
+ (`CLAUDE_CODE_DISABLE_TERMINAL_TITLE=1`), since nothing in Baker reads the name.
273
254
 
274
255
  ## OpenRouter web plugin is forced off
275
256
 
@@ -852,6 +833,27 @@ whose reflog or remote branch still holds a commit it no longer reaches (reset
852
833
  or rebased back to `main`) holds lost work, not none, so it never reports
853
834
  unchanged. If git cannot answer, the field is left out.
854
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
+
855
857
  ## Keeping the CLI on the current release
856
858
 
857
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
  });