@koda-sl/baker-bridge 0.164.0 → 0.168.0-dev.d78500250

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 (50) hide show
  1. package/README.md +40 -19
  2. package/dist/hono/bridge-job.d.ts +17 -0
  3. package/dist/hono/bridge-job.d.ts.map +1 -1
  4. package/dist/hono/bridge-job.js +110 -19
  5. package/dist/hono/bridge-job.js.map +1 -1
  6. package/dist/hono/bridge-job.test.js +184 -13
  7. package/dist/hono/bridge-job.test.js.map +1 -1
  8. package/dist/hono/effort-route.d.ts +43 -0
  9. package/dist/hono/effort-route.d.ts.map +1 -0
  10. package/dist/hono/effort-route.js +36 -0
  11. package/dist/hono/effort-route.js.map +1 -0
  12. package/dist/hono/effort-route.test.d.ts +2 -0
  13. package/dist/hono/effort-route.test.d.ts.map +1 -0
  14. package/dist/hono/effort-route.test.js +54 -0
  15. package/dist/hono/effort-route.test.js.map +1 -0
  16. package/dist/hono/openrouter-session.d.ts +16 -13
  17. package/dist/hono/openrouter-session.d.ts.map +1 -1
  18. package/dist/hono/openrouter-session.js +16 -13
  19. package/dist/hono/openrouter-session.js.map +1 -1
  20. package/dist/hono/relay.d.ts +8 -0
  21. package/dist/hono/relay.d.ts.map +1 -1
  22. package/dist/hono/relay.js +2 -0
  23. package/dist/hono/relay.js.map +1 -1
  24. package/dist/hono/relay.test.js +24 -0
  25. package/dist/hono/relay.test.js.map +1 -1
  26. package/dist/hono/runtime-files.d.ts +1 -0
  27. package/dist/hono/runtime-files.d.ts.map +1 -1
  28. package/dist/hono/runtime-files.js +3 -0
  29. package/dist/hono/runtime-files.js.map +1 -1
  30. package/dist/hono/tool-result-ledger.d.ts +30 -0
  31. package/dist/hono/tool-result-ledger.d.ts.map +1 -0
  32. package/dist/hono/tool-result-ledger.js +63 -0
  33. package/dist/hono/tool-result-ledger.js.map +1 -0
  34. package/dist/hono/tool-result-ledger.test.d.ts +2 -0
  35. package/dist/hono/tool-result-ledger.test.d.ts.map +1 -0
  36. package/dist/hono/tool-result-ledger.test.js +61 -0
  37. package/dist/hono/tool-result-ledger.test.js.map +1 -0
  38. package/dist/hono/workspace-instructions.d.ts +43 -0
  39. package/dist/hono/workspace-instructions.d.ts.map +1 -0
  40. package/dist/hono/workspace-instructions.js +68 -0
  41. package/dist/hono/workspace-instructions.js.map +1 -0
  42. package/dist/hono/workspace-instructions.test.d.ts +2 -0
  43. package/dist/hono/workspace-instructions.test.d.ts.map +1 -0
  44. package/dist/hono/workspace-instructions.test.js +68 -0
  45. package/dist/hono/workspace-instructions.test.js.map +1 -0
  46. package/dist/review/digest.d.ts +13 -0
  47. package/dist/review/digest.d.ts.map +1 -1
  48. package/dist/review/digest.js +1 -1
  49. package/dist/review/digest.js.map +1 -1
  50. package/package.json +1 -1
package/README.md CHANGED
@@ -50,7 +50,7 @@ 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 no request carries a per-message effort, which OpenRouter cannot route to Bedrock — see [Bedrock is the preferred provider](#bedrock-is-the-preferred-provider) |
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) |
54
54
  | `NO_COLOR` | Set to `1` on every Agent SDK subprocess so `baker --help` output carries no ANSI escapes — see [Session surface](#session-surface) |
55
55
  | `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
56
  | `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,6 +110,9 @@ use, and each one costs context on every turn. The bridge trims them at the
110
110
  disallowed — it is the subagent spawn the workspace's own agents ride — and
111
111
  neither is `SendMessage`, which continues a subagent the session already ran;
112
112
  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.
113
116
 
114
117
  To see what a session actually ends up with, read the tool list off its own
115
118
  `init` message (`--output-format stream-json --verbose`) rather than this list:
@@ -121,6 +124,13 @@ the CLI gates some tools on the model, so the resolved set differs per model.
121
124
  are never TTY-gated, so without it every help read spends ~5-10% of its tokens
122
125
  on colour codes the model cannot see.
123
126
 
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
+
124
134
  `Options.agents` is deliberately left unset: the workspace ships its own
125
135
  subagents in `.claude/agents/`, discovered from disk via
126
136
  `settingSources: ["project"]`, and setting the option risks replacing them.
@@ -164,17 +174,30 @@ Opus 5.5 it suppressed the short progress notes users read during long turns.
164
174
 
165
175
  ## Reasoning effort
166
176
 
167
- Every turn is sent with `effort: "medium"` (the API default is `high`). Effort
168
- governs thinking depth, preamble, and how many tool calls the model makes; the
169
- tool-call reduction matters most, because each tool call is another request that
170
- re-reads the whole prompt, so fewer calls also means less cache-read volume.
171
-
172
- **It must stay a single constant.** The resolved effort is rendered into the
173
- prompt, so changing it between requests invalidates every cache breakpoint above
174
- it — on a session carrying hundreds of thousands of tokens, that re-write costs
175
- far more than any per-turn tuning saves. To vary reasoning per task, steer with
176
- prompt text on the newest user message instead; that leaves earlier breakpoints
177
- intact.
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.
178
201
 
179
202
  Subagents set their own `effort` (and `model`) in their markdown frontmatter and
180
203
  do **not** inherit either from the main thread. The four scaffold-shared agents
@@ -240,13 +263,11 @@ The `session_id` pin still applies whenever an inherited `provider` drops the
240
263
  `order`.
241
264
 
242
265
  The preference only holds for a request Bedrock can serve, and OpenRouter drops
243
- Bedrock from the route without an error when it can't. From Opus 5.5 the CLI
244
- restates the effort on its mid-conversation `role: "system"` message
245
- (`output_config.effort`, beta `per-turn-control`), which no Bedrock endpoint
246
- supports — so the day Opus 5.5 shipped, 52 of ~4,600 of its requests reached
247
- Bedrock and the rest were billed to OpenRouter credits. The bridge sets
248
- `CLAUDE_CODE_MODEL_CAPABILITIES=-per_turn_effort` to stop that; the request-level
249
- `effort` still applies. A request with a structured-output schema (the CLI's
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
250
271
  short title request) is still served elsewhere, because Bedrock lacks structured
251
272
  outputs on OpenRouter.
252
273
 
@@ -6,6 +6,7 @@ import { type AvatarCastingRequest, type AvatarCastingResult } from "./avatar-ca
6
6
  import { type ConnectionInputRequest, type ConnectionInputResolution } from "./connection-input.ts";
7
7
  import { type ContextUsage } from "./context-usage.ts";
8
8
  import { type CredentialInputRequest, type CredentialInputResult } from "./credential-input.ts";
9
+ import { type EffortDecision } from "./effort-route.ts";
9
10
  import { type FlowInputRequestInput, type FlowInputResolution, readRawFlowTree } from "./flow-input.ts";
10
11
  import { type Judge } from "./jev.ts";
11
12
  import { type MainSync } from "./main-sync.ts";
@@ -15,6 +16,7 @@ import { type DirtySessionReason } from "./session-continuity.ts";
15
16
  import type { ClaudeSessionBoundary, InFlightTurnStore, LoadedSessionBoundary } from "./session-store.ts";
16
17
  import { type UsageBaseline } from "./session-usage-baseline.ts";
17
18
  import { type TagChangeInput, type TagChangeResolution } from "./tag-input.ts";
19
+ import { type ToolResultSize } from "./tool-result-ledger.ts";
18
20
  import { type TurnEventRecorder } from "./turn-events.ts";
19
21
  import { type TurnModelUsage } from "./turn-model-usage.ts";
20
22
  import type { ChatAttachment, CurrentReference, DispatchHistorySnapshot, DispatchSender, PromptCredential, PublishStanding, ReviewTurn } from "./types.ts";
@@ -56,6 +58,8 @@ export type BridgeJobOutcome = {
56
58
  costUsd: number;
57
59
  model?: string;
58
60
  modelUsage?: TurnModelUsage[];
61
+ toolResults?: ToolResultSize[];
62
+ effortDecision?: EffortDecision;
59
63
  completeChat?: boolean;
60
64
  /** The turn left the chat branch with no work of its own (see `main-sync.ts` `holdsNoWorkOfItsOwn`). */
61
65
  workspaceUnchanged?: boolean;
@@ -67,11 +71,15 @@ export type BridgeJobOutcome = {
67
71
  costUsd: number;
68
72
  model?: string;
69
73
  modelUsage?: TurnModelUsage[];
74
+ toolResults?: ToolResultSize[];
75
+ effortDecision?: EffortDecision;
70
76
  } | {
71
77
  kind: "errored";
72
78
  costUsd: number;
73
79
  model?: string;
74
80
  modelUsage?: TurnModelUsage[];
81
+ toolResults?: ToolResultSize[];
82
+ effortDecision?: EffortDecision;
75
83
  errors: string[];
76
84
  };
77
85
  /** An answer to a question card: the user's, or the recommended options Baker picked when nobody answered. */
@@ -314,6 +322,8 @@ type BridgeJobExecutorDependencies = {
314
322
  readFlowTree?: (flowSlug: string) => ReturnType<typeof readRawFlowTree>;
315
323
  /** The decision model the guards read the user's and the agent's words with (see `jev.ts`); injected by tests. */
316
324
  judge?: Judge;
325
+ /** The same model, asked how hard a turn needs the agent to work (see `effort-route.ts`); injected by tests. */
326
+ effortJudge?: Judge;
317
327
  };
318
328
  export declare const REVIEW_DISALLOWED_TOOLS: string[];
319
329
  /**
@@ -406,8 +416,15 @@ export declare class BridgeJobExecutor {
406
416
  private readonly holdsNoWork?;
407
417
  private readonly keepCliInStep?;
408
418
  private readonly judge;
419
+ private readonly effortJudge;
409
420
  constructor(dependencies: BridgeJobExecutorDependencies);
410
421
  execute(job: BridgeJob, controls: BridgeJobControls): Promise<BridgeJobOutcome>;
422
+ /**
423
+ * How hard the agent works on this turn (see `effort-route.ts`); null for a
424
+ * Session review, which keeps the default. Never throws: an unanswered judge
425
+ * is the default level.
426
+ */
427
+ private decideEffort;
411
428
  private executeTurn;
412
429
  /** The attempt to retry a failed first attempt with, when its failure is one a different start can fix. */
413
430
  private fallbackAttempt;
@@ -1 +1 @@
1
- {"version":3,"file":"bridge-job.d.ts","sourceRoot":"","sources":["../../src/hono/bridge-job.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bridge-job.d.ts","sourceRoot":"","sources":["../../src/hono/bridge-job.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,mBAAmB,EACnB,UAAU,EACV,OAAO,EAEP,UAAU,EAEV,YAAY,EACb,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAqB,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAKtF,OAAO,EAAE,KAAK,SAAS,EAAwE,MAAM,kBAAkB,CAAC;AACxH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AASnD,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EAEzB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,yBAAyB,EAI/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,KAAK,YAAY,EAMlB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,EAE3B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAyC,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EAGxB,eAAe,EAGhB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,KAAK,KAAK,EAAY,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,KAAK,QAAQ,EAAoB,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAIL,KAAK,kBAAkB,EAGxB,MAAM,kBAAkB,CAAC;AAiB1B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,OAAO,EAML,KAAK,kBAAkB,EAWxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC1G,OAAO,EAAoC,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGnG,OAAO,EAKL,KAAK,cAAc,EACnB,KAAK,mBAAmB,EAEzB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAoB,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAuC,KAAK,cAAc,EAAsB,MAAM,uBAAuB,CAAC;AACrH,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,uBAAuB,EACvB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,UAAU,EACX,MAAM,YAAY,CAAC;AAIpB,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,sDAAsD;IACtD,oBAAoB,CAAC,EAAE,cAAc,EAAE,CAAC;IACxC,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACjC,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,iDAAiD;IACjD,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,uDAAuD;IACvD,qBAAqB,CAAC,EAAE,eAAe,CAAC;IACxC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB,CAAC;AAYF,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEzG,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAarE;AAED,MAAM,MAAM,gBAAgB,GACxB;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,wGAAwG;IACxG,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,aAAa,CAAC,EAAE,qBAAqB,CAAC;IACtC,yEAAyE;IACzE,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GACD;IACE,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC,GACD;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC;AAEN,8GAA8G;AAC9G,MAAM,MAAM,gBAAgB,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC9C,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG;IACxB,OAAO,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;IAC1C,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,CAAC,UAAU,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACnD,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,OAAO,EAAE,CAAC,UAAU,EAAE,mBAAmB,KAAK,IAAI,CAAC;IACnD,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,CAAC,MAAM,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACjD,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,OAAO,EAAE,CAAC,MAAM,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC/C,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF,6GAA6G;AAC7G,KAAK,SAAS,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAiCxE,MAAM,MAAM,sBAAsB,GAAG;IACnC,OAAO,EAAE,CAAC,UAAU,EAAE,yBAAyB,KAAK,IAAI,CAAC;IACzD,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmBxB;AAiBD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC/C,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACvC,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC/C,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACjD,uBAAuB,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAC7D,uBAAuB,EAAE,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAC7D,qBAAqB,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACzD;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5C;;;;;;OAMG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,SAAS,CAAC,IAAI,IAAI,CAAC;IACnB;;;;OAIG;IACH,eAAe,CAAC,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1C,QAAQ,IAAI,OAAO,CAAC;CACrB,CAAC;AAEF,KAAK,aAAa,GAAG;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,cAAc,GAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAiE3D,MAAM,MAAM,cAAc,GAAG;IAC3B,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAAC;IAC3C,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACzD,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IACnE,cAAc,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzF,wFAAwF;IACxF,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE,0FAA0F;IAC1F,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3G,aAAa,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,eAAe,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,cAAc,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrH,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,gBAAgB,CACd,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,qBAAqB,EAAE,CAAA;KAAE,GAChE,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzD,sBAAsB,CACpB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,sBAAsB,EAAE,CAAA;KAAE,GACpE,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,uBAAuB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,sBAAsB,CACpB,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,sBAAsB,GACtD,OAAO,CAAC,OAAO,CAAC,CAAC;IACpB,uBAAuB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,oBAAoB,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtH,qBAAqB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnG,YAAY,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,aAAa,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1E,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,UAAU,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChF,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzE,kFAAkF;IAClF,YAAY,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjF,aAAa,CACX,MAAM,EAAE,cAAc,EACtB,MAAM,EACF,cAAc,GACd,4BAA4B,GAC5B,2BAA2B,GAC3B,gCAAgC,GAChC,kBAAkB,GAClB,oBAAoB,GACpB,oBAAoB,EACxB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAChC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,QAAQ,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5E,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG,aAAa,CAAC,UAAU,CAAC,GAAG;IACtD,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;IACnB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;KAAE,CAAC,CAAC;IACxF;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAC5F,CAAC;AAEF,KAAK,eAAe,GAAG;IACrB,qGAAqG;IACrG,KAAK,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,GAAG,aAAa,CAAC;IACrF,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;CACnD,CAAC;AAEF,KAAK,6BAA6B,GAAG;IACnC,GAAG,EAAE,eAAe,CAAC;IACrB,KAAK,EAAE,cAAc,CAAC;IACtB,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE;QACZ,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAAC;QACnE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,qBAAqB,EAAE,OAAO,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACtG,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;YAAE,QAAQ,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,kBAAkB,CAAA;SAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KACnG,CAAC;IACF,kBAAkB,CAAC,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,EAAE,UAAU,EAAE,UAAU,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAChG;;;OAGG;IACH,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,iBAAiB,CAAC;IACpC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,kGAAkG;IAClG,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;IAC9E,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4GAA4G;IAC5G,eAAe,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC;;;;;OAKG;IACH,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;IACtE;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACrC,+FAA+F;IAC/F,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;IACxE,kHAAkH;IAClH,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,gHAAgH;IAChH,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB,CAAC;AA2IF,eAAO,MAAM,uBAAuB,UAA0D,CAAC;AAE/F;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,CAI1G;AAED,iGAAiG;AACjG,wBAAgB,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,GAAG,UAAU,CAAC,GAAG,MAAM,CAGhF;AAsBD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAUhF;AAED,oFAAoF;AACpF,eAAO,MAAM,gBAAgB,gCAAgC,CAAC;AAuH9D,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,cAGC;CACF;AA6QD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAM3D;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAE1D;AAgGD,2FAA2F;AAC3F,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAgB7D;AAKD,iGAAiG;AACjG,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,UAAU,GAAG,eAAe,EAAE,CAaxE;AA8BD;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAcjE;AAwCD,MAAM,WAAW,aAAa;IAC5B,cAAc,CAAC,GAAG,EAAE,UAAU,GAAG,IAAI,CAAC;IACtC,OAAO,IAAI,OAAO,CAAC;IACnB,6DAA6D;IAC7D,kBAAkB,IAAI,OAAO,CAAC;IAC9B,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,GAAG,EAAE,MAAM,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,EAAE,MAAM,OAAO,CAAC;IAChC,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,GAAG,aAAa,CAuChB;AAuTD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkB;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgD;IAC7E,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAoB;IAClD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAmE;IACtG,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAqB;IACzD,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAS;IAClD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoB;IACpD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IACzC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkE;IACpG,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA6D;IAC1F,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsB;IACtD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAsD;IACvF,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAyB;IACtD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAoC;IACnE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAQ;IAEpC,YAAY,YAAY,EAAE,6BAA6B,EAqCtD;IAEK,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAQpF;IAED;;;;OAIG;YACW,YAAY;YAgBZ,WAAW;IAkEzB,2GAA2G;YAC7F,eAAe;IAoB7B,uGAAuG;YACzF,sBAAsB;IAapC;;;OAGG;YACW,gCAAgC;YAmBhC,mBAAmB;YAanB,oBAAoB;IA2ClC;;;;;;;;;OASG;YACW,mBAAmB;YA+CnB,UAAU;YA8DV,uBAAuB;IAoDrC,OAAO,CAAC,YAAY;IAiCpB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,sBAAsB;YAQhB,oBAAoB;IAMlC,OAAO,CAAC,sBAAsB;IAI9B,oGAAoG;IACpG,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,0BAA0B;IAgClC;;;;OAIG;YACW,wBAAwB;YAWxB,4BAA4B;YAwC5B,iBAAiB;IAY/B;;;;;;;;;OASG;YACW,gBAAgB;IA4B9B,OAAO,CAAC,iBAAiB;IAezB;;;;OAIG;YACW,YAAY;IA0D1B;;;;;;;;;OASG;IACH,OAAO,CAAC,eAAe;YAyCT,YAAY;YA+NZ,UAAU;IA8ExB;;;;;;;;;;;;OAYG;YACW,2BAA2B;IAmCzC,OAAO,CAAC,mBAAmB;YA4Bb,iBAAiB;IAkF/B;;;;;;;;;;;;OAYG;YACW,mBAAmB;YAyBnB,aAAa;IAkC3B;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAuC1B;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;YA2Bb,mBAAmB;IAqDjC,+FAA+F;IAC/F,OAAO,CAAC,iBAAiB;IAsCzB,OAAO,CAAC,uBAAuB;IAwB/B,yGAAyG;IACzG,OAAO,CAAC,sBAAsB;YAoBhB,2BAA2B;YAmB3B,YAAY;YA8BZ,iBAAiB;IAsB/B,OAAO,CAAC,mBAAmB;YAwCb,qBAAqB;YA4CrB,qBAAqB;YA8DrB,sBAAsB;IAmEpC;;;;;OAKG;YACW,sBAAsB;YAqBtB,4BAA4B;YA8C5B,4BAA4B;YAuC5B,gBAAgB;IAyC9B;;;;;;;;OAQG;YACW,mBAAmB;IAoCjC;;;;;;;OAOG;YACW,0BAA0B;CAwCzC"}
@@ -15,6 +15,7 @@ import { CONNECTION_INPUT_TOOL_NAME, CONNECTION_PLATFORMS, connectedButNotLoaded
15
15
  import { messageContextTokens, pickContextWindow, streamEventContextUsage, turnContextUsage, } from "./context-usage.js";
16
16
  import { CREDENTIAL_INPUT_TOOL_NAME, normalizeCredentialInputToolInput, } from "./credential-input.js";
17
17
  import { credentialScrubHooks } from "./credential-scrub.js";
18
+ import { DEFAULT_TURN_EFFORT, decideTurnEffort } from "./effort-route.js";
18
19
  import { agentStatedFlowMessage, FLOW_INPUT_TOOL_NAME, nodeTargetRefusals, normalizeFlowInputToolInput, readRawFlowTree, sanitizeFlowRequests, unknownFlowPrefillMessage, } from "./flow-input.js";
19
20
  import { writesInventedLogo } from "./invented-logo.js";
20
21
  import { jevJudge } from "./jev.js";
@@ -23,7 +24,7 @@ import { composioScopesToInvalidate, failedCustomServers, reportMcpInvalid, serv
23
24
  import { agentModelOverride, autoCompactWindowForModel, betasForModel, contextWindowForModel, } from "./model-capabilities.js";
24
25
  import { agentShellPrefixEnv, killFirstWrapper } from "./oom-priority.js";
25
26
  import { anthropicCustomHeaders, runtimeOpenRouterTags } from "./openrouter-attribution.js";
26
- import { BEDROCK_SERVABLE_CAPABILITIES, buildAgentExtraBody, EXTRA_BODY_ENV, MODEL_CAPABILITIES_ENV, } from "./openrouter-session.js";
27
+ import { buildAgentExtraBody, EXTRA_BODY_ENV, MODEL_CAPABILITIES_ENV, PER_TURN_EFFORT_CAPABILITIES, } from "./openrouter-session.js";
27
28
  import { credentialReminder, currentReferenceReminder, kickoffBriefReminder } from "./prompt-context.js";
28
29
  import { publishLanguageReminder, publishRunReminder, publishStandingReminder } from "./publish-handoff.js";
29
30
  import { bridgeRuntimeFiles } from "./runtime-files.js";
@@ -35,8 +36,10 @@ import { skillLanguageHooks } from "./skill-language.js";
35
36
  import { BridgeSlashCommands, leadingSkillCommand, verbatimSlashCommand } from "./slash-commands.js";
36
37
  import { createBakerUiServer, normalizeTagInputToolInput, sanitizeTagChanges, TAG_INPUT_TOOL_NAME, unknownPrefillMessage, } from "./tag-input.js";
37
38
  import { blockingToolDelegated, toolRunAsCommand } from "./tool-in-shell.js";
39
+ import { ToolResultLedger } from "./tool-result-ledger.js";
38
40
  import { recordTurnEvent } from "./turn-events.js";
39
41
  import { addQueryModelUsage, queryModelUsage, turnModelUsageList } from "./turn-model-usage.js";
42
+ import { prepareSharedInstructions } from "./workspace-instructions.js";
40
43
  import { settleWorkspaceAfterTasks } from "./workspace-settle.js";
41
44
  export function parsePlanDecision(value) {
42
45
  if (!value || typeof value !== "object") {
@@ -217,6 +220,13 @@ const BASE_DISALLOWED_TOOLS = [
217
220
  // not asked to fund a research fleet. Ordinary fan-out is unaffected:
218
221
  // `Task` stays, so the scaffold's subagents still run.
219
222
  "Workflow",
223
+ // Developer tools: design-system sync, code-review findings, Jupyter edits.
224
+ // None was called once in 358 production chats (Oct 2026), and each
225
+ // definition rides every request whenever the CLI does not defer it —
226
+ // DesignSync's alone is ~9k characters.
227
+ "DesignSync",
228
+ "ReportFindings",
229
+ "NotebookEdit",
220
230
  // NOT listed: `SendMessage`. It is how the model follows up with a
221
231
  // subagent it already ran, and the CLI tells it to on every Agent result.
222
232
  // The continued subagent runs in the background, but it announces itself
@@ -245,7 +255,7 @@ function disallowedToolsFor(job) {
245
255
  function modelForJob(job, sessionModel) {
246
256
  return job.review?.model ?? sessionModel;
247
257
  }
248
- export const REVIEW_DISALLOWED_TOOLS = ["Edit", "Write", "MultiEdit", "NotebookEdit", "ExitPlanMode", "Skill"];
258
+ export const REVIEW_DISALLOWED_TOOLS = ["Edit", "Write", "MultiEdit", "ExitPlanMode", "Skill"];
249
259
  /**
250
260
  * The findings contract, enforced by the SDK rather than parsed back out of
251
261
  * prose. `structured_output` on the result message is what reaches Convex, and
@@ -432,6 +442,19 @@ function createBridgeJobState() {
432
442
  detachedSession: false,
433
443
  modelUsageTotals: new Map(),
434
444
  queryModelUsage: new Map(),
445
+ toolResults: new ToolResultLedger(),
446
+ };
447
+ }
448
+ /** What a finished turn reports about its spend: per-model usage and per-tool result sizes. */
449
+ function turnUsage(state) {
450
+ const toolResults = state.toolResults.summary();
451
+ return {
452
+ modelUsage: turnModelUsageList(state.modelUsageTotals),
453
+ ...(toolResults.length > 0 ? { toolResults } : {}),
454
+ // An unjudged turn is left off: no decision on the record means Jev never answered.
455
+ ...(state.effortDecision && state.effortDecision.reason !== "unjudged"
456
+ ? { effortDecision: state.effortDecision }
457
+ : {}),
435
458
  };
436
459
  }
437
460
  function errorMessage(error) {
@@ -508,6 +531,21 @@ function hookSettingsForJob(job) {
508
531
  }
509
532
  return {};
510
533
  }
534
+ /**
535
+ * Which instruction files a job loads as memory. A Session review loads none:
536
+ * its brief has it read the rulebook as the Session had it (`git show
537
+ * <sha>:CLAUDE.md`), since Publish may already have moved the working tree past
538
+ * it, and the auto-loaded copy is ~24k tokens of the marketer's instructions
539
+ * written cold and re-read on every review request. The client's agent loads
540
+ * the workspace's `CLAUDE.md` itself only when it could not be split into the
541
+ * shared system prompt (`prepareSharedInstructions`).
542
+ */
543
+ function instructionSettingsForJob(job, sharedInstructions) {
544
+ if (job.review) {
545
+ return { claudeMdExcludes: ["**/CLAUDE.md"] };
546
+ }
547
+ return sharedInstructions ? { claudeMdExcludes: [join(bridgeRuntimeFiles.projectRoot(), "CLAUDE.md")] } : {};
548
+ }
511
549
  // Carry a Runtime-wide model override down to the fan-out workers.
512
550
  //
513
551
  // The shared subagents pin themselves to Sonnet 5.5 in their own frontmatter (see
@@ -1169,6 +1207,7 @@ export class BridgeJobExecutor {
1169
1207
  holdsNoWork;
1170
1208
  keepCliInStep;
1171
1209
  judge;
1210
+ effortJudge;
1172
1211
  constructor(dependencies) {
1173
1212
  this.sdk = dependencies.sdk;
1174
1213
  this.relay = dependencies.relay;
@@ -1197,6 +1236,9 @@ export class BridgeJobExecutor {
1197
1236
  this.judge =
1198
1237
  dependencies.judge ??
1199
1238
  jevJudge(process.env.OPENROUTER_API_KEY, runtimeOpenRouterTags(process.env, { service: "bridge", feature: "bridge.toolCallGuard" }));
1239
+ this.effortJudge =
1240
+ dependencies.effortJudge ??
1241
+ jevJudge(process.env.OPENROUTER_API_KEY, runtimeOpenRouterTags(process.env, { service: "bridge", feature: "bridge.effortRoute" }));
1200
1242
  }
1201
1243
  async execute(job, controls) {
1202
1244
  try {
@@ -1208,6 +1250,26 @@ export class BridgeJobExecutor {
1208
1250
  await this.inFlightTurns.clear(job.threadId, job.turnId).catch(() => undefined);
1209
1251
  }
1210
1252
  }
1253
+ /**
1254
+ * How hard the agent works on this turn (see `effort-route.ts`); null for a
1255
+ * Session review, which keeps the default. Never throws: an unanswered judge
1256
+ * is the default level.
1257
+ */
1258
+ async decideEffort(job, request) {
1259
+ if (job.review) {
1260
+ return null;
1261
+ }
1262
+ const lastReply = (job.history?.entries ?? []).filter((entry) => entry.role === "assistant").at(-1);
1263
+ return await decideTurnEffort({
1264
+ message: job.prompt,
1265
+ previousReply: lastReply?.text ?? "",
1266
+ judge: this.effortJudge,
1267
+ planMode: job.planMode === true,
1268
+ leadingCommand: request.leadingCommand,
1269
+ unattended: job.unattended === true,
1270
+ hasAttachments: (job.attachments?.length ?? 0) > 0,
1271
+ }).catch(() => ({ effort: DEFAULT_TURN_EFFORT, reason: "unjudged" }));
1272
+ }
1211
1273
  async executeTurn(job, controls) {
1212
1274
  const state = createBridgeJobState();
1213
1275
  let result = { costUsd: 0, attemptedRehydration: false };
@@ -1219,6 +1281,8 @@ export class BridgeJobExecutor {
1219
1281
  if (!request?.prompt || !controls.isActive()) {
1220
1282
  return { kind: "cancelled", costUsd: 0, model: state.model };
1221
1283
  }
1284
+ // Asked while the boundary loads, so the answer (~0.3 s) costs the turn no time.
1285
+ const effortDecision = this.decideEffort(job, request);
1222
1286
  const loaded = await this.loadTrustedBoundary(job, controls);
1223
1287
  if (loaded?.kind !== "clean") {
1224
1288
  request = await this.withContinuedAttachments(job, request);
@@ -1237,6 +1301,7 @@ export class BridgeJobExecutor {
1237
1301
  state.detachedSession = attempt.detachedSession === true;
1238
1302
  result.attemptedRehydration = attempt.attemptedRehydration;
1239
1303
  this.recordAttemptContextSource(job, attempt);
1304
+ state.effortDecision = (await effortDecision) ?? undefined;
1240
1305
  result = await this.runAttempt(job, controls, state, attempt);
1241
1306
  return await this.finishSuccessfulAttempt(job, controls, state, result.costUsd);
1242
1307
  }
@@ -1245,6 +1310,8 @@ export class BridgeJobExecutor {
1245
1310
  if (repaired && controls.isActive()) {
1246
1311
  const repairState = createBridgeJobState();
1247
1312
  repairState.detachedSession = repaired.detachedSession === true;
1313
+ // The same turn, so the same level: a changed one would re-write the cache.
1314
+ repairState.effortDecision = state.effortDecision;
1248
1315
  let repairResult = { costUsd: 0, attemptedRehydration: repaired.attemptedRehydration };
1249
1316
  try {
1250
1317
  repairResult = await this.runAttempt(job, controls, repairState, repaired);
@@ -1447,22 +1514,22 @@ export class BridgeJobExecutor {
1447
1514
  return { costUsd, attemptedRehydration: attempt.attemptedRehydration };
1448
1515
  }
1449
1516
  async finishSuccessfulAttempt(job, controls, state, costUsd) {
1450
- const modelUsage = turnModelUsageList(state.modelUsageTotals);
1517
+ const usage = turnUsage(state);
1451
1518
  if (!controls.isActive()) {
1452
1519
  await this.clearIfDirty(job, controls, state, "abort");
1453
- return { kind: "cancelled", costUsd, model: state.model, modelUsage };
1520
+ return { kind: "cancelled", costUsd, model: state.model, ...usage };
1454
1521
  }
1455
1522
  // No boundary is handed back, so the refused exchange never becomes part of
1456
1523
  // the conversation the next message resumes.
1457
1524
  if (state.refusedWithoutFallback) {
1458
- return { kind: "errored", costUsd, model: state.model, modelUsage, errors: [MODEL_REFUSAL_MESSAGE] };
1525
+ return { kind: "errored", costUsd, model: state.model, ...usage, errors: [MODEL_REFUSAL_MESSAGE] };
1459
1526
  }
1460
1527
  if (!state.postedAssistantEvent && state.turnText.length > 0) {
1461
1528
  await this.postSyntheticAssistantEvent(job, state);
1462
1529
  }
1463
1530
  if (!controls.isActive()) {
1464
1531
  await this.clearIfDirty(job, controls, state, "abort");
1465
- return { kind: "cancelled", costUsd, model: state.model, modelUsage };
1532
+ return { kind: "cancelled", costUsd, model: state.model, ...usage };
1466
1533
  }
1467
1534
  // A detached turn (publish) ran in a session of its own. Handing that session
1468
1535
  // back as the thread's boundary would make the next chat message resume a
@@ -1479,7 +1546,7 @@ export class BridgeJobExecutor {
1479
1546
  kind: "completed",
1480
1547
  costUsd,
1481
1548
  model: state.model,
1482
- modelUsage,
1549
+ ...usage,
1483
1550
  ...(workspaceUnchanged ? { workspaceUnchanged: true } : {}),
1484
1551
  cleanBoundary,
1485
1552
  ...(state.structuredOutput === undefined ? {} : { structuredOutput: state.structuredOutput }),
@@ -1487,7 +1554,7 @@ export class BridgeJobExecutor {
1487
1554
  }
1488
1555
  errorOutcome(job, controls, state, result, error) {
1489
1556
  const model = state.model;
1490
- const modelUsage = turnModelUsageList(state.modelUsageTotals);
1557
+ const usage = turnUsage(state);
1491
1558
  if (result.attemptedRehydration) {
1492
1559
  void this.relay.contextSource({ threadId: job.threadId, turnId: job.turnId }, "rehydration_failed", {
1493
1560
  historyEntryCount: job.history?.entries.length ?? 0,
@@ -1497,7 +1564,7 @@ export class BridgeJobExecutor {
1497
1564
  });
1498
1565
  }
1499
1566
  if (!controls.isActive()) {
1500
- return { kind: "cancelled", costUsd: result.costUsd, model, modelUsage };
1567
+ return { kind: "cancelled", costUsd: result.costUsd, model, ...usage };
1501
1568
  }
1502
1569
  const shown = userFacingTurnError(error);
1503
1570
  if (shown !== errorMessage(error)) {
@@ -1507,7 +1574,7 @@ export class BridgeJobExecutor {
1507
1574
  kind: "errored",
1508
1575
  costUsd: result.costUsd,
1509
1576
  model,
1510
- modelUsage,
1577
+ ...usage,
1511
1578
  errors: [shown],
1512
1579
  };
1513
1580
  }
@@ -1782,6 +1849,12 @@ export class BridgeJobExecutor {
1782
1849
  await this.alignResumedTranscript(attempt);
1783
1850
  const mcpServers = await this.resolveMcpServers(job);
1784
1851
  const skills = await readSessionSkills(bridgeRuntimeFiles.projectRoot());
1852
+ const sharedInstructions = job.review
1853
+ ? null
1854
+ : await prepareSharedInstructions({
1855
+ projectRoot: bridgeRuntimeFiles.projectRoot(),
1856
+ contextDir: bridgeRuntimeFiles.instructionsDir(),
1857
+ });
1785
1858
  const autoCompactWindow = autoCompactWindowForModel(model);
1786
1859
  const betas = betasForModel(model);
1787
1860
  // No `outputStyle`: the built-in `Concise` style was pinned here against Opus 5's
@@ -1817,6 +1890,7 @@ export class BridgeJobExecutor {
1817
1890
  }
1818
1891
  : {}),
1819
1892
  ...hookSettingsForJob(job),
1893
+ ...instructionSettingsForJob(job, sharedInstructions),
1820
1894
  };
1821
1895
  const agentTags = runtimeOpenRouterTags(process.env, {
1822
1896
  service: "agent",
@@ -1836,15 +1910,29 @@ export class BridgeJobExecutor {
1836
1910
  // more per level than Opus 5, so compare `low` on real Sessions before
1837
1911
  // treating this as tuned.
1838
1912
  //
1839
- // MUST stay a single constant. The resolved effort is rendered into the
1840
- // prompt, so changing it between requests invalidates every cache
1841
- // breakpoint above it — on a session carrying hundreds of thousands of
1842
- // tokens that re-write costs far more than any per-turn tuning saves.
1843
- // Vary it per message only once the route accepts per-message effort
1844
- // (see `BEDROCK_SERVABLE_CAPABILITIES`); prose is no substitute.
1845
- effort: "medium",
1913
+ // A changed top-level effort alone re-writes the cached conversation from
1914
+ // its first tool exchange onward. It may differ between turns only because
1915
+ // the CLI also restates it per message (`PER_TURN_EFFORT_CAPABILITIES`),
1916
+ // which keeps the cache; prose is no substitute.
1917
+ effort: state.effortDecision?.effort ?? DEFAULT_TURN_EFFORT,
1846
1918
  cwd: process.cwd(),
1847
1919
  settingSources: ["project"],
1920
+ // The scaffold's CLAUDE.md, minus its `@COMPANY.md` import, as the system
1921
+ // prompt, so every chat reads one cached copy instead of writing its own;
1922
+ // the import loads from `instructionsDir` (see workspace-instructions.ts).
1923
+ ...(sharedInstructions
1924
+ ? {
1925
+ systemPrompt: {
1926
+ type: "preset",
1927
+ preset: "claude_code",
1928
+ append: sharedInstructions.shared,
1929
+ // Recorded once per conversation, so a scaffold sync mid-chat cannot
1930
+ // move the cached prefix under it; it lands at the next compaction.
1931
+ snapshot: true,
1932
+ },
1933
+ additionalDirectories: [bridgeRuntimeFiles.instructionsDir()],
1934
+ }
1935
+ : {}),
1848
1936
  // `baker_ui` hosts in-process interactive dashboard tools (secure tag
1849
1937
  // form). Always present; HTTP (Composio) servers merge alongside it.
1850
1938
  mcpServers: { ...(mcpServers ?? {}), baker_ui: createBakerUiServer({ credentials: credentialsEnabled() }) },
@@ -1896,6 +1984,8 @@ export class BridgeJobExecutor {
1896
1984
  // they are never TTY-gated, so every help read the agent does inside
1897
1985
  // the sandbox pays ~5-10% of its tokens on colour codes it can't see.
1898
1986
  NO_COLOR: "1",
1987
+ // Loads the `CLAUDE.md` in `instructionsDir`, which imports COMPANY.md.
1988
+ ...(sharedInstructions ? { CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD: "1" } : {}),
1899
1989
  // Pin the conversation to one OpenRouter provider instance so the
1900
1990
  // instance-scoped prompt cache is actually re-read across the turn's
1901
1991
  // many tool-call requests. Merged into every model request body by the
@@ -1907,8 +1997,8 @@ export class BridgeJobExecutor {
1907
1997
  ANTHROPIC_CUSTOM_HEADERS: [process.env.ANTHROPIC_CUSTOM_HEADERS, anthropicCustomHeaders(agentTags.headers)]
1908
1998
  .filter(Boolean)
1909
1999
  .join("\n"),
1910
- // Without it no Opus 5.5 request can reach Bedrock; see openrouter-session.ts.
1911
- [MODEL_CAPABILITIES_ENV]: BEDROCK_SERVABLE_CAPABILITIES,
2000
+ // Lets a turn change effort without losing the prompt cache; see openrouter-session.ts.
2001
+ [MODEL_CAPABILITIES_ENV]: PER_TURN_EFFORT_CAPABILITIES,
1912
2002
  // The turn's message sender, so in-sandbox `baker` calls can scope to the acting user.
1913
2003
  ...(job.currentSender?.userId ? { BAKER_ACTING_USER_ID: job.currentSender.userId } : {}),
1914
2004
  ...subagentModelEnv(),
@@ -1986,6 +2076,7 @@ export class BridgeJobExecutor {
1986
2076
  for await (const msg of query) {
1987
2077
  stallDetector.observeMessage(msg);
1988
2078
  turnEnd.observeMessage(msg);
2079
+ state.toolResults.observe(msg);
1989
2080
  controls.setWorkInFlight?.(stallDetector.hasPendingToolUses() || turnEnd.hasInFlightWork());
1990
2081
  try {
1991
2082
  costUsd = await this.consumeSdkMessage(job, controls, state, msg, costUsd);