@esankhan3/anvil-agent-core 0.3.0 → 0.4.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 (147) hide show
  1. package/README.md +1 -1
  2. package/dist/__tests__/gemini-adapter-recording.test.d.ts +11 -0
  3. package/dist/__tests__/gemini-adapter-recording.test.d.ts.map +1 -0
  4. package/dist/__tests__/gemini-adapter-recording.test.js +108 -0
  5. package/dist/__tests__/gemini-adapter-recording.test.js.map +1 -0
  6. package/dist/__tests__/legacy-adapter-language-model.test.d.ts +11 -0
  7. package/dist/__tests__/legacy-adapter-language-model.test.d.ts.map +1 -0
  8. package/dist/__tests__/legacy-adapter-language-model.test.js +102 -0
  9. package/dist/__tests__/legacy-adapter-language-model.test.js.map +1 -0
  10. package/dist/__tests__/ollama-adapter-recording.test.d.ts +15 -0
  11. package/dist/__tests__/ollama-adapter-recording.test.d.ts.map +1 -0
  12. package/dist/__tests__/ollama-adapter-recording.test.js +128 -0
  13. package/dist/__tests__/ollama-adapter-recording.test.js.map +1 -0
  14. package/dist/__tests__/openrouter-prefill.integration.test.d.ts +19 -0
  15. package/dist/__tests__/openrouter-prefill.integration.test.d.ts.map +1 -0
  16. package/dist/__tests__/openrouter-prefill.integration.test.js +410 -0
  17. package/dist/__tests__/openrouter-prefill.integration.test.js.map +1 -0
  18. package/dist/__tests__/prefill-truncate.test.d.ts +8 -0
  19. package/dist/__tests__/prefill-truncate.test.d.ts.map +1 -0
  20. package/dist/__tests__/prefill-truncate.test.js +75 -0
  21. package/dist/__tests__/prefill-truncate.test.js.map +1 -0
  22. package/dist/__tests__/router-circuit-breaker.test.js +1 -1
  23. package/dist/__tests__/router-circuit-breaker.test.js.map +1 -1
  24. package/dist/__tests__/router-classify-unified.test.d.ts +12 -0
  25. package/dist/__tests__/router-classify-unified.test.d.ts.map +1 -0
  26. package/dist/__tests__/router-classify-unified.test.js +108 -0
  27. package/dist/__tests__/router-classify-unified.test.js.map +1 -0
  28. package/dist/__tests__/router-fallback.test.js +1 -1
  29. package/dist/__tests__/router-fallback.test.js.map +1 -1
  30. package/dist/__tests__/router-model-registry.test.js +24 -0
  31. package/dist/__tests__/router-model-registry.test.js.map +1 -1
  32. package/dist/__tests__/router-retry.test.js +3 -5
  33. package/dist/__tests__/router-retry.test.js.map +1 -1
  34. package/dist/__tests__/router-runagent.test.d.ts +14 -0
  35. package/dist/__tests__/router-runagent.test.d.ts.map +1 -0
  36. package/dist/__tests__/router-runagent.test.js +95 -0
  37. package/dist/__tests__/router-runagent.test.js.map +1 -0
  38. package/dist/__tests__/router-scaffold.test.js +2 -1
  39. package/dist/__tests__/router-scaffold.test.js.map +1 -1
  40. package/dist/__tests__/router-spend-ledger.test.js +1 -1
  41. package/dist/__tests__/router-spend-ledger.test.js.map +1 -1
  42. package/dist/__tests__/router-stream-fallback.test.d.ts +13 -0
  43. package/dist/__tests__/router-stream-fallback.test.d.ts.map +1 -0
  44. package/dist/__tests__/router-stream-fallback.test.js +129 -0
  45. package/dist/__tests__/router-stream-fallback.test.js.map +1 -0
  46. package/dist/__tests__/router-telemetry.test.js +3 -1
  47. package/dist/__tests__/router-telemetry.test.js.map +1 -1
  48. package/dist/__tests__/util/mock-upstream.d.ts +77 -0
  49. package/dist/__tests__/util/mock-upstream.d.ts.map +1 -0
  50. package/dist/__tests__/util/mock-upstream.js +219 -0
  51. package/dist/__tests__/util/mock-upstream.js.map +1 -0
  52. package/dist/adk-adapter.d.ts.map +1 -1
  53. package/dist/adk-adapter.js +51 -0
  54. package/dist/adk-adapter.js.map +1 -1
  55. package/dist/agent/session/adapter.d.ts +15 -0
  56. package/dist/agent/session/adapter.d.ts.map +1 -1
  57. package/dist/agent/session/adapter.js +3 -0
  58. package/dist/agent/session/adapter.js.map +1 -1
  59. package/dist/agent/session/index.d.ts +1 -0
  60. package/dist/agent/session/index.d.ts.map +1 -1
  61. package/dist/agent/session/index.js +1 -0
  62. package/dist/agent/session/index.js.map +1 -1
  63. package/dist/agent/session/language-model-bridge.d.ts.map +1 -1
  64. package/dist/agent/session/language-model-bridge.js +22 -0
  65. package/dist/agent/session/language-model-bridge.js.map +1 -1
  66. package/dist/agent/session/legacy-adapter-language-model.d.ts +27 -0
  67. package/dist/agent/session/legacy-adapter-language-model.d.ts.map +1 -0
  68. package/dist/agent/session/legacy-adapter-language-model.js +221 -0
  69. package/dist/agent/session/legacy-adapter-language-model.js.map +1 -0
  70. package/dist/agent/session/types.d.ts +20 -0
  71. package/dist/agent/session/types.d.ts.map +1 -1
  72. package/dist/agent/session/types.js.map +1 -1
  73. package/dist/claude-adapter.d.ts.map +1 -1
  74. package/dist/claude-adapter.js +27 -0
  75. package/dist/claude-adapter.js.map +1 -1
  76. package/dist/gemini-adapter.d.ts.map +1 -1
  77. package/dist/gemini-adapter.js +46 -0
  78. package/dist/gemini-adapter.js.map +1 -1
  79. package/dist/index.d.ts +9 -0
  80. package/dist/index.d.ts.map +1 -1
  81. package/dist/index.js +5 -0
  82. package/dist/index.js.map +1 -1
  83. package/dist/ollama-adapter.d.ts.map +1 -1
  84. package/dist/ollama-adapter.js +118 -8
  85. package/dist/ollama-adapter.js.map +1 -1
  86. package/dist/openrouter-adapter.d.ts.map +1 -1
  87. package/dist/openrouter-adapter.js +289 -15
  88. package/dist/openrouter-adapter.js.map +1 -1
  89. package/dist/prefill/strip.d.ts +49 -0
  90. package/dist/prefill/strip.d.ts.map +1 -0
  91. package/dist/prefill/strip.js +93 -0
  92. package/dist/prefill/strip.js.map +1 -0
  93. package/dist/prefill/translate.d.ts +55 -0
  94. package/dist/prefill/translate.d.ts.map +1 -0
  95. package/dist/prefill/translate.js +162 -0
  96. package/dist/prefill/translate.js.map +1 -0
  97. package/dist/prefill/truncate.d.ts +62 -0
  98. package/dist/prefill/truncate.d.ts.map +1 -0
  99. package/dist/prefill/truncate.js +77 -0
  100. package/dist/prefill/truncate.js.map +1 -0
  101. package/dist/router/errors.d.ts +24 -7
  102. package/dist/router/errors.d.ts.map +1 -1
  103. package/dist/router/errors.js +71 -14
  104. package/dist/router/errors.js.map +1 -1
  105. package/dist/router/index.d.ts +3 -2
  106. package/dist/router/index.d.ts.map +1 -1
  107. package/dist/router/index.js +2 -1
  108. package/dist/router/index.js.map +1 -1
  109. package/dist/router/model-registry.d.ts +22 -0
  110. package/dist/router/model-registry.d.ts.map +1 -1
  111. package/dist/router/model-registry.js +64 -1
  112. package/dist/router/model-registry.js.map +1 -1
  113. package/dist/router/provider-registry-resolver.d.ts +25 -0
  114. package/dist/router/provider-registry-resolver.d.ts.map +1 -0
  115. package/dist/router/provider-registry-resolver.js +84 -0
  116. package/dist/router/provider-registry-resolver.js.map +1 -0
  117. package/dist/router/retry.d.ts +3 -0
  118. package/dist/router/retry.d.ts.map +1 -1
  119. package/dist/router/retry.js +4 -1
  120. package/dist/router/retry.js.map +1 -1
  121. package/dist/router/router.d.ts +79 -1
  122. package/dist/router/router.d.ts.map +1 -1
  123. package/dist/router/router.js +256 -2
  124. package/dist/router/router.js.map +1 -1
  125. package/dist/router/types.d.ts +1 -1
  126. package/dist/router/types.d.ts.map +1 -1
  127. package/dist/router/types.js +1 -0
  128. package/dist/router/types.js.map +1 -1
  129. package/dist/turn-recorder/__tests__/turn-recorder.test.d.ts +20 -0
  130. package/dist/turn-recorder/__tests__/turn-recorder.test.d.ts.map +1 -0
  131. package/dist/turn-recorder/__tests__/turn-recorder.test.js +282 -0
  132. package/dist/turn-recorder/__tests__/turn-recorder.test.js.map +1 -0
  133. package/dist/turn-recorder/hash.d.ts +10 -0
  134. package/dist/turn-recorder/hash.d.ts.map +1 -0
  135. package/dist/turn-recorder/hash.js +35 -0
  136. package/dist/turn-recorder/hash.js.map +1 -0
  137. package/dist/turn-recorder/index.d.ts +119 -0
  138. package/dist/turn-recorder/index.d.ts.map +1 -0
  139. package/dist/turn-recorder/index.js +326 -0
  140. package/dist/turn-recorder/index.js.map +1 -0
  141. package/dist/turn-recorder/types.d.ts +227 -0
  142. package/dist/turn-recorder/types.d.ts.map +1 -0
  143. package/dist/turn-recorder/types.js +20 -0
  144. package/dist/turn-recorder/types.js.map +1 -0
  145. package/dist/types.d.ts +35 -2
  146. package/dist/types.d.ts.map +1 -1
  147. package/package.json +2 -2
@@ -25,6 +25,10 @@
25
25
  */
26
26
  import { randomUUID } from 'node:crypto';
27
27
  import { emitContent, emitResult, emitToolResult, emitToolUse } from './stream-format.js';
28
+ import { createNullTurnRecorder } from './turn-recorder/index.js';
29
+ import { contentHashFromArgs } from './turn-recorder/hash.js';
30
+ import { materializePrefill, materializePriorTurns } from './prefill/translate.js';
31
+ import { stripForTarget } from './prefill/strip.js';
28
32
  const DEFAULT_MAX_ITERATIONS = 32;
29
33
  /**
30
34
  * Re-export the shared `UpstreamError` so existing imports
@@ -158,9 +162,44 @@ export class OpenRouterAdapter {
158
162
  const messages = [];
159
163
  if (config.projectPrompt)
160
164
  messages.push({ role: 'system', content: config.projectPrompt });
165
+ // §Tier 2 stateful resume: re-present COMPLETED prior turns BEFORE this
166
+ // phase's user message so a non-claude session keeps full conversation
167
+ // context across start→sendInput. materializePriorTurns emits clean
168
+ // target-format messages (no vendor keys), so no stripForTarget is
169
+ // needed. Empty/undefined → byte-identical to the single-turn path.
170
+ if (config.priorMessages?.length) {
171
+ messages.push(...materializePriorTurns(config.priorMessages, this.provider));
172
+ }
161
173
  messages.push({ role: 'user', content: config.userPrompt });
174
+ // Prefill continuation (v2 ADR §2.3): a prior chain entry burned
175
+ // mid-stream. Re-present its completed tool calls + partial
176
+ // assistant text in this provider's wire shape so this model
177
+ // continues from the exact character instead of regenerating. The
178
+ // recorded tool results are replayed (not re-executed) — their
179
+ // side effects already happened on the burned model. Strip applies
180
+ // any cross-vendor field removal; materialize emits OpenAI-compat
181
+ // shape (this adapter family).
182
+ if (config.prefill) {
183
+ const materialized = materializePrefill(config.prefill, this.provider);
184
+ const safe = stripForTarget(materialized, {
185
+ sourceProvider: config.prefill.sourceProvider,
186
+ targetProvider: this.provider,
187
+ });
188
+ messages.push(...safe);
189
+ }
162
190
  const tools = config.toolExecutor ? mapSchemasToOpenAI(config.toolExecutor.listSchemas()) : undefined;
163
191
  const maxIter = config.maxToolIterations ?? DEFAULT_MAX_ITERATIONS;
192
+ // Turn-level durable recorder (v2 ADR §2.5). Defaults to a no-op
193
+ // recorder when the caller hasn't injected a real one — structural
194
+ // calls happen either way, persistence is gated on whether a real
195
+ // EffectRuntime + partial sink were threaded through the bridge. The
196
+ // no-op fallback covers single-shot / non-durable call sites (e.g. the
197
+ // router's thin `invoke`); the live durable pipeline always threads a
198
+ // real recorder.
199
+ const recorder = config.turnRecorder ?? createNullTurnRecorder({
200
+ runId: config.sessionId,
201
+ stepId: config.stage,
202
+ });
164
203
  let aggregatedText = '';
165
204
  let totalIn = 0;
166
205
  let totalOut = 0;
@@ -169,9 +208,107 @@ export class OpenRouterAdapter {
169
208
  let openRouterCost = 0;
170
209
  let stopReason;
171
210
  let providerFinishReason;
211
+ // Track the current turn for catch-block flushPartial. -1 means
212
+ // we never opened a turn (catch fired before startTurn). `activeAcc`
213
+ // is the live accumulator runOneTurn writes into, so the catch reads
214
+ // whatever streamed before a mid-turn throw. `activeTurnSseComplete`
215
+ // flips true the instant runOneTurn returns (the SSE finished); the
216
+ // catch flushes a partial ONLY when this is false — i.e. the stream
217
+ // itself was interrupted, NOT when a post-stream step (endTurn, tool
218
+ // dispatch, an effect-runtime determinism error) throws after the
219
+ // turn's text was already fully received. Without this guard the
220
+ // catch would persist a "partial" carrying the COMPLETE turn text
221
+ // and mislabel its reason (review finding: spurious partial flush).
222
+ let activeTurnIdx = -1;
223
+ let activeAcc = null;
224
+ let activeTurnSseComplete = false;
225
+ // §H3 burn sentinel: the provider-native messages appended SO FAR in the
226
+ // active turn (assistant msg + tool-result msgs). On a mid-stream burn the
227
+ // catch records these into a `stopReason:'burned'` assistant-end so replay
228
+ // re-appends them verbatim before re-burning. Reset at each live turn; []
229
+ // for the common case (runOneTurn burns before any message is appended).
230
+ let activeHistoryDelta = [];
172
231
  try {
173
232
  for (let iter = 0; iter < maxIter; iter++) {
174
- const turn = await this.runOneTurn(apiKey, messages, tools, config, output, abortController.signal);
233
+ // The prefill (§2.3) is consumed on the FIRST turn only — it's the
234
+ // continuation handed by the chain walker after a burn. Turns 1+
235
+ // of this same adapter run are fresh, un-prefilled generations.
236
+ const turnPrefill = iter === 0 ? config.prefill : undefined;
237
+ const { turn: turnIdx, replayed } = await recorder.startTurn({
238
+ model: config.model,
239
+ provider: this.provider,
240
+ system: config.projectPrompt,
241
+ messages: messages.slice(),
242
+ prefill: turnPrefill,
243
+ // §Tier 2: record this phase's user prompt so a stateful resume can
244
+ // reconstruct prior turns WITH their prompts. Every turn of one
245
+ // run() carries the same prompt; reconstruction de-dupes per phase.
246
+ userPrompt: config.userPrompt,
247
+ });
248
+ activeTurnIdx = turnIdx;
249
+ // ── H3 replay-skip ────────────────────────────────────────────
250
+ // This turn's `assistant-end` is already in the durable log (a
251
+ // prior process ran it). Skip the upstream call entirely; re-append
252
+ // the EXACT recorded native history so the FIRST live turn past the
253
+ // replay frontier continues from coherent conversation context, and
254
+ // re-issue runTool/endTurn in order so the replay cursor advances over
255
+ // the recorded sub-effects (exec never fires — recorded tool_results
256
+ // are returned verbatim; runTool's tool-arg idempotencyKey still
257
+ // matches because the args are replayed verbatim).
258
+ if (replayed) {
259
+ activeTurnSseComplete = true; // no live SSE happened this turn
260
+ // §H3 burned-turn replay: this turn burned mid-stream live (its
261
+ // assistant-end is a `stopReason:'burned'` sentinel). Re-issue its
262
+ // recorded tool sub-effects in order (advancing the replay cursor;
263
+ // exec NEVER fires — recorded results are returned verbatim),
264
+ // re-record the sentinel end, then re-throw a retryable upstream
265
+ // error so the chain walker burns this model and continues to the
266
+ // next exactly as it did live. This keeps the model→turn mapping
267
+ // deterministic regardless of whether the transient error cleared.
268
+ if (replayed.stopReason === 'burned') {
269
+ for (const m of replayed.historyDelta)
270
+ messages.push(m);
271
+ for (const tu of replayed.toolUses) {
272
+ await recorder.runTool(turnIdx, tu.name, tu.arguments, tu.idempotencyKey, async () => { throw new Error(`replay invariant: exec ran for recorded burned-turn tool ${tu.name}`); });
273
+ }
274
+ await recorder.endTurn(turnIdx, replayed.text, 'burned', replayed.usage, replayed.provenance, replayed.historyDelta);
275
+ throw new _UpstreamError(503, `${this.provider} replayed burn for "${config.model}" (deterministic chain re-derivation)`, { provider: this.provider, retryable: true });
276
+ }
277
+ aggregatedText += replayed.text;
278
+ totalIn += replayed.usage.inputTokens;
279
+ totalOut += replayed.usage.outputTokens;
280
+ totalCachedReadTokens += replayed.usage.cacheReadTokens ?? 0;
281
+ if (replayed.text)
282
+ emitContent(output, replayed.text);
283
+ if (replayed.toolUses.length === 0 || !config.toolExecutor) {
284
+ stopReason = replayed.stopReason;
285
+ await recorder.endTurn(turnIdx, replayed.text, replayed.stopReason, replayed.usage, replayed.provenance, replayed.historyDelta);
286
+ break;
287
+ }
288
+ for (const m of replayed.historyDelta)
289
+ messages.push(m);
290
+ for (const tu of replayed.toolUses) {
291
+ emitToolUse(output, tu.name, tu.arguments, tu.id);
292
+ const r = await recorder.runTool(turnIdx, tu.name, tu.arguments, tu.idempotencyKey, async () => { throw new Error(`replay invariant: exec ran for recorded tool ${tu.name}`); });
293
+ const rc = typeof r.content === 'string' ? r.content : JSON.stringify(r.content);
294
+ emitToolResult(output, { toolUseId: tu.id, content: rc, isError: !r.ok });
295
+ }
296
+ await recorder.endTurn(turnIdx, replayed.text, replayed.stopReason, replayed.usage, replayed.provenance, replayed.historyDelta);
297
+ if (abortController.signal.aborted) {
298
+ stopReason = 'aborted';
299
+ break;
300
+ }
301
+ continue;
302
+ }
303
+ activeTurnSseComplete = false;
304
+ activeHistoryDelta = [];
305
+ const acc = { text: '', toolCalls: new Map() };
306
+ activeAcc = acc;
307
+ const turn = await this.runOneTurn(apiKey, messages, tools, config, output, abortController.signal, acc);
308
+ // SSE finished cleanly for this turn — any throw past this point
309
+ // (endTurn, tool dispatch, effect determinism) is NOT a mid-stream
310
+ // burn, so the catch must not flush a spurious partial.
311
+ activeTurnSseComplete = true;
175
312
  aggregatedText += turn.text;
176
313
  totalIn += turn.inputTokens;
177
314
  totalOut += turn.outputTokens;
@@ -180,8 +317,20 @@ export class OpenRouterAdapter {
180
317
  openRouterCost += turn.cost;
181
318
  if (turn.finishReason)
182
319
  providerFinishReason = turn.finishReason;
320
+ // §2.6 prefill cost: when this turn re-injected a prior model's
321
+ // text, carve out those tokens so the cost rollup can bill them to
322
+ // a separate reinjection bucket (sourceTokens is the durable count
323
+ // model A reported). §2.7 provenance: two segments when prefilled.
324
+ const usage = {
325
+ inputTokens: turn.inputTokens,
326
+ outputTokens: turn.outputTokens,
327
+ cacheReadTokens: turn.cachedReadTokens,
328
+ ...(turnPrefill ? { prefilledInputTokens: turnPrefill.sourceTokens } : {}),
329
+ };
330
+ const provenance = buildProvenance(config.model, this.provider, turn.text, turnPrefill);
183
331
  if (turn.toolCalls.length === 0 || !config.toolExecutor) {
184
332
  stopReason = turn.toolCalls.length === 0 ? 'end_turn' : 'tools_unsupported';
333
+ await recorder.endTurn(turnIdx, turn.text, stopReason, usage, provenance);
185
334
  break;
186
335
  }
187
336
  // Append assistant turn to history so the model sees its own
@@ -202,7 +351,12 @@ export class OpenRouterAdapter {
202
351
  // reasoning fields entirely — they're strict on unknown sibling
203
352
  // fields. Subclasses override `stripReasoningEcho()` to return
204
353
  // true and skip the echo. See anomalyco/opencode #14716.
205
- messages.push({
354
+ // §H3 historyDelta: capture the EXACT native messages appended this
355
+ // turn so crash-resume re-appends them verbatim (recorded in
356
+ // assistant-end). Order matters — assistant message first, then
357
+ // each tool-result message — and must mirror the live push order.
358
+ const historyDelta = activeHistoryDelta;
359
+ const assistantMsg = {
206
360
  role: 'assistant',
207
361
  content: turn.text || null,
208
362
  ...(this.stripReasoningEcho()
@@ -211,19 +365,36 @@ export class OpenRouterAdapter {
211
365
  ? { reasoning_details: turn.reasoningDetails }
212
366
  : (turn.reasoning ? { reasoning: turn.reasoning } : {})),
213
367
  tool_calls: turn.toolCalls,
214
- });
368
+ };
369
+ messages.push(assistantMsg);
370
+ historyDelta.push(assistantMsg);
215
371
  for (const tc of turn.toolCalls) {
216
372
  const args = parseArgs(tc.function.arguments);
217
373
  const call = { id: tc.id, name: tc.function.name, arguments: args };
218
374
  emitToolUse(output, call.name, args, tc.id);
219
- const result = await invokeTool(config.toolExecutor, call, config.workingDir, abortController.signal);
220
- emitToolResult(output, { toolUseId: tc.id, content: result.content, isError: result.isError });
221
- messages.push({
375
+ const idempotencyKey = contentHashFromArgs({ name: call.name, arguments: args });
376
+ const neutralResult = await recorder.runTool(turnIdx, call.name, args, idempotencyKey, async () => {
377
+ const r = await invokeTool(config.toolExecutor, call, config.workingDir, abortController.signal);
378
+ return {
379
+ toolUseId: tc.id,
380
+ toolName: call.name,
381
+ ok: !r.isError,
382
+ content: r.content,
383
+ };
384
+ });
385
+ const resultContent = typeof neutralResult.content === 'string'
386
+ ? neutralResult.content
387
+ : JSON.stringify(neutralResult.content);
388
+ emitToolResult(output, { toolUseId: tc.id, content: resultContent, isError: !neutralResult.ok });
389
+ const toolMsg = {
222
390
  role: 'tool',
223
- content: result.content,
391
+ content: resultContent,
224
392
  tool_call_id: tc.id,
225
- });
393
+ };
394
+ messages.push(toolMsg);
395
+ historyDelta.push(toolMsg);
226
396
  }
397
+ await recorder.endTurn(turnIdx, turn.text, turn.toolCalls.length > 0 ? 'tool_use' : 'end_turn', usage, provenance, historyDelta);
227
398
  if (abortController.signal.aborted) {
228
399
  stopReason = 'aborted';
229
400
  break;
@@ -232,6 +403,44 @@ export class OpenRouterAdapter {
232
403
  if (stopReason === undefined)
233
404
  stopReason = 'iteration_limit';
234
405
  }
406
+ catch (err) {
407
+ // Best-effort partial flush: capture whatever the current turn
408
+ // managed to stream before the throw. NullTurnRecorder no-ops
409
+ // this; real recorders durably persist it for the chain walker
410
+ // to read. We swallow no errors — the upstream throw proceeds
411
+ // after the (synchronous) flushPartial returns.
412
+ //
413
+ // §2.1.1 truncation rule: only count tool_use blocks whose
414
+ // streamed `arguments` parse as clean JSON. A tool call cut off
415
+ // mid-args (unparseable) is NOT counted and NOT replayed — model
416
+ // B re-decides whether to call it. `text` is whatever streamed.
417
+ if (activeTurnIdx >= 0 && activeAcc && !activeTurnSseComplete) {
418
+ // Only a genuine mid-stream interruption gets a partial. By the
419
+ // time we flush, any non-abort failure is an upstream/network
420
+ // interruption (a socket drop surfaces as a bare TypeError from
421
+ // consumeSSE's reader, NOT an UpstreamError — so the old
422
+ // `err.name === 'UpstreamError'` check mislabeled those as
423
+ // 'timeout'). Collapse to abort-vs-upstream.
424
+ const reason = abortController.signal.aborted ? 'abort' : 'upstream';
425
+ recorder.flushPartial(activeTurnIdx, activeAcc.text, countParsedToolUses(activeAcc.toolCalls), reason);
426
+ // §H3 burn sentinel: record a `stopReason:'burned'` assistant-end for
427
+ // the interrupted turn so crash-resume replays it deterministically.
428
+ // On replay startTurn sees this end → the replay-skip branch re-issues
429
+ // the recorded tool sub-effects (advancing the cursor), re-appends
430
+ // historyDelta, then re-throws so chain-fallback re-derives the SAME
431
+ // model→turn mapping it had live — independent of whether the
432
+ // transient upstream error has since cleared. Without it a recovered
433
+ // model would complete the turn live (writing a NEW assistant-end) and
434
+ // collide with the recorded continuation turn → DeterminismViolation.
435
+ // Only genuine upstream burns get a sentinel; an abort (cancellation)
436
+ // must stay resumable as a fresh turn. usage:{} so the per-model cost
437
+ // rollup prices the burn via the partial (output estimate), not twice.
438
+ if (reason === 'upstream') {
439
+ await recorder.endTurn(activeTurnIdx, activeAcc.text, 'burned', { inputTokens: 0, outputTokens: 0 }, { segments: [] }, activeHistoryDelta);
440
+ }
441
+ }
442
+ throw err;
443
+ }
235
444
  finally {
236
445
  this.activeControllers.delete(abortController);
237
446
  }
@@ -288,7 +497,11 @@ export class OpenRouterAdapter {
288
497
  };
289
498
  }
290
499
  // -- Per-turn round-trip --------------------------------------------------
291
- async runOneTurn(apiKey, messages, tools, config, output, signal) {
500
+ async runOneTurn(apiKey, messages, tools, config, output, signal,
501
+ /** Live working state — written as deltas stream so a mid-stream
502
+ * throw still leaves the partial text/tool_calls readable by the
503
+ * caller's catch block. */
504
+ acc) {
292
505
  const url = `${this.getBaseUrl()}/chat/completions`;
293
506
  const body = {
294
507
  model: config.model,
@@ -341,15 +554,14 @@ export class OpenRouterAdapter {
341
554
  }
342
555
  if (!response.body)
343
556
  throw new _UpstreamError(0, `${this.provider} returned no response body`, { provider: this.provider });
344
- return this.consumeSSE(response, output);
557
+ return this.consumeSSE(response, output, signal, acc);
345
558
  }
346
559
  /**
347
560
  * Drain the SSE stream. Reassembles `tool_calls` from streamed deltas
348
561
  * (OpenAI sends arguments as multiple chunks indexed by tool-call
349
562
  * `index`). Emits text deltas to the output stream as they arrive.
350
563
  */
351
- async consumeSSE(response, output) {
352
- let text = '';
564
+ async consumeSSE(response, output, signal, acc) {
353
565
  let reasoning = '';
354
566
  const reasoningDetails = [];
355
567
  let inputTokens = 0;
@@ -358,7 +570,9 @@ export class OpenRouterAdapter {
358
570
  let reasoningTokens = 0;
359
571
  let cost = 0;
360
572
  let finishReason;
361
- const toolCallsByIndex = new Map();
573
+ // Text + tool_calls live on the shared accumulator (not locals) so a
574
+ // mid-stream throw leaves them readable by run()'s catch (§2.1 / §2.5).
575
+ const toolCallsByIndex = acc.toolCalls;
362
576
  const reader = response.body.getReader();
363
577
  const decoder = new TextDecoder();
364
578
  let buffer = '';
@@ -383,6 +597,14 @@ export class OpenRouterAdapter {
383
597
  const lines = buffer.split('\n');
384
598
  buffer = lines.pop() ?? '';
385
599
  for (const line of lines) {
600
+ // Abort latch (§2.1.2): once the per-call signal has aborted,
601
+ // drop every remaining delta. A pull-reader normally rejects on
602
+ // abort, but a final frame can still be buffered in `lines` from
603
+ // the last successful read() — this guarantees post-abort deltas
604
+ // never mutate the accumulator (which would corrupt the partial
605
+ // we're about to flush).
606
+ if (signal.aborted)
607
+ break;
386
608
  const trimmed = line.trim();
387
609
  if (!trimmed || trimmed.startsWith(':'))
388
610
  continue; // empty / SSE comment
@@ -401,7 +623,7 @@ export class OpenRouterAdapter {
401
623
  const choice = chunk.choices?.[0];
402
624
  const delta = choice?.delta;
403
625
  if (delta?.content) {
404
- text += delta.content;
626
+ acc.text += delta.content;
405
627
  pendingText += delta.content;
406
628
  // Split the accumulated buffer on newlines so the flush is
407
629
  // always anchored at a natural line boundary; emit each
@@ -484,7 +706,7 @@ export class OpenRouterAdapter {
484
706
  .sort(([a], [b]) => a - b)
485
707
  .map(([, v]) => v);
486
708
  return {
487
- text,
709
+ text: acc.text,
488
710
  reasoning,
489
711
  reasoningDetails: reasoningDetails.filter(Boolean),
490
712
  toolCalls,
@@ -544,4 +766,56 @@ function countToolCalls(messages) {
544
766
  }
545
767
  return n;
546
768
  }
769
+ /**
770
+ * §2.1.1 mid-`tool_use` truncation rule. Counts only the streamed
771
+ * tool_calls whose `arguments` parse as clean, complete JSON AND that
772
+ * carry a non-empty name. A tool call cut off mid-args (e.g. the stream
773
+ * died at `{"path": "src/fo`) is unparseable and excluded — it must NOT
774
+ * be replayed against partial JSON; the next model re-decides. Empty
775
+ * `arguments` is treated as the valid empty-object call `{}`.
776
+ */
777
+ function countParsedToolUses(toolCalls) {
778
+ let n = 0;
779
+ for (const tc of toolCalls.values()) {
780
+ if (!tc.function.name)
781
+ continue;
782
+ const raw = tc.function.arguments;
783
+ if (raw === '') {
784
+ n += 1;
785
+ continue;
786
+ }
787
+ try {
788
+ const parsed = JSON.parse(raw);
789
+ if (parsed !== null && typeof parsed === 'object')
790
+ n += 1;
791
+ }
792
+ catch {
793
+ // unparseable / truncated args — drop per §2.1.1
794
+ }
795
+ }
796
+ return n;
797
+ }
798
+ /**
799
+ * §2.7 provenance. Without a prefill: one `live` segment covering the
800
+ * model's full output. WITH a prefill (a chain-fallback resume): two
801
+ * segments over the LOGICAL combined text — `[0, prefill.len)` attributed
802
+ * to the source model as `prefill`, `[prefill.len, prefill.len+live.len)`
803
+ * attributed to the live model. Ranges are CHARACTER offsets, contiguous
804
+ * and non-overlapping (replay reads them back verbatim). An empty live
805
+ * continuation yields a zero-width live segment, which is valid.
806
+ */
807
+ function buildProvenance(model, provider, liveText, prefill) {
808
+ if (prefill && prefill.text.length > 0) {
809
+ const cut = prefill.text.length;
810
+ return {
811
+ segments: [
812
+ { model: prefill.sourceModel ?? 'unknown', provider: prefill.sourceProvider, range: [0, cut], source: 'prefill' },
813
+ { model, provider, range: [cut, cut + liveText.length], source: 'live' },
814
+ ],
815
+ };
816
+ }
817
+ return {
818
+ segments: [{ model, provider, range: [0, liveText.length], source: 'live' }],
819
+ };
820
+ }
547
821
  //# sourceMappingURL=openrouter-adapter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter-adapter.js","sourceRoot":"","sources":["../src/openrouter-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openrouter-adapter.js","sourceRoot":"","sources":["../src/openrouter-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Cross-provider strip policy (v2 ADR §2.3.1).
3
+ *
4
+ * Vendor-specific message blocks DO NOT survive a chain-fallback swap
5
+ * across providers. `stripForTarget` removes fields the target provider
6
+ * would reject (or silently misinterpret) when the conversation
7
+ * originated on a different vendor.
8
+ *
9
+ * The matrix (§2.3.1):
10
+ * - reasoning_details[] / reasoning — OpenRouter reasoning models;
11
+ * strip when source !== target (Anthropic + OpenAI reject them).
12
+ * - cache_control — Anthropic; strip when target is non-Anthropic.
13
+ * - prompt_cache_key — OpenAI; strip when target is non-OpenAI.
14
+ *
15
+ * Same-vendor swaps short-circuit: nothing is stripped (hot path), and
16
+ * they additionally qualify for the §5.1 prefix-cache fast-path.
17
+ *
18
+ * The function is shape-agnostic: it walks each message object and
19
+ * deletes the known vendor keys (including inside content-block arrays
20
+ * for Anthropic's `cache_control`). It never mutates the input — every
21
+ * message is shallow-cloned before a key is removed.
22
+ */
23
+ import type { ProviderName } from '../types.js';
24
+ export interface StripContext {
25
+ sourceProvider: ProviderName;
26
+ targetProvider: ProviderName;
27
+ }
28
+ /** Anthropic family: native `messages` API consumers.
29
+ *
30
+ * NOTE on 'adk': ADK is provider-agnostic at runtime (claude-via-adk =
31
+ * Anthropic wire; gemini-via-adk = Google wire). Per ADR §2.8, ADK
32
+ * prefill is materialized via `Session.appendEvent`, NOT through
33
+ * `materializePrefill`/`stripForTarget` — so this predicate is NOT
34
+ * exercised for ADK targets in the H2 path. When ADK is ported (H4),
35
+ * its wire format must be detected from the underlying model id, not
36
+ * assumed Anthropic here. Kept in the Anthropic bucket only so the
37
+ * §5.1 same-vendor cache fast-path can recognise `claude`↔`claude`;
38
+ * revisit when ADK joins the prefill path. */
39
+ declare function isAnthropic(p: ProviderName): boolean;
40
+ /** OpenAI-compatible chat-completions consumers. */
41
+ declare function isOpenAICompat(p: ProviderName): boolean;
42
+ /**
43
+ * Return a new message array safe to send to `targetProvider` given it
44
+ * originated on `sourceProvider`. Same-vendor → returned as a shallow
45
+ * copy untouched.
46
+ */
47
+ export declare function stripForTarget(messages: readonly unknown[], ctx: StripContext): unknown[];
48
+ export { isAnthropic, isOpenAICompat };
49
+ //# sourceMappingURL=strip.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strip.d.ts","sourceRoot":"","sources":["../../src/prefill/strip.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,YAAY,CAAC;IAC7B,cAAc,EAAE,YAAY,CAAC;CAC9B;AAED;;;;;;;;;;8CAU8C;AAC9C,iBAAS,WAAW,CAAC,CAAC,EAAE,YAAY,GAAG,OAAO,CAE7C;AAED,oDAAoD;AACpD,iBAAS,cAAc,CAAC,CAAC,EAAE,YAAY,GAAG,OAAO,CAEhD;AAID;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,EAAE,CAqCzF;AAcD,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,CAAC"}