@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.
- package/README.md +1 -1
- package/dist/__tests__/gemini-adapter-recording.test.d.ts +11 -0
- package/dist/__tests__/gemini-adapter-recording.test.d.ts.map +1 -0
- package/dist/__tests__/gemini-adapter-recording.test.js +108 -0
- package/dist/__tests__/gemini-adapter-recording.test.js.map +1 -0
- package/dist/__tests__/legacy-adapter-language-model.test.d.ts +11 -0
- package/dist/__tests__/legacy-adapter-language-model.test.d.ts.map +1 -0
- package/dist/__tests__/legacy-adapter-language-model.test.js +102 -0
- package/dist/__tests__/legacy-adapter-language-model.test.js.map +1 -0
- package/dist/__tests__/ollama-adapter-recording.test.d.ts +15 -0
- package/dist/__tests__/ollama-adapter-recording.test.d.ts.map +1 -0
- package/dist/__tests__/ollama-adapter-recording.test.js +128 -0
- package/dist/__tests__/ollama-adapter-recording.test.js.map +1 -0
- package/dist/__tests__/openrouter-prefill.integration.test.d.ts +19 -0
- package/dist/__tests__/openrouter-prefill.integration.test.d.ts.map +1 -0
- package/dist/__tests__/openrouter-prefill.integration.test.js +410 -0
- package/dist/__tests__/openrouter-prefill.integration.test.js.map +1 -0
- package/dist/__tests__/prefill-truncate.test.d.ts +8 -0
- package/dist/__tests__/prefill-truncate.test.d.ts.map +1 -0
- package/dist/__tests__/prefill-truncate.test.js +75 -0
- package/dist/__tests__/prefill-truncate.test.js.map +1 -0
- package/dist/__tests__/router-circuit-breaker.test.js +1 -1
- package/dist/__tests__/router-circuit-breaker.test.js.map +1 -1
- package/dist/__tests__/router-classify-unified.test.d.ts +12 -0
- package/dist/__tests__/router-classify-unified.test.d.ts.map +1 -0
- package/dist/__tests__/router-classify-unified.test.js +108 -0
- package/dist/__tests__/router-classify-unified.test.js.map +1 -0
- package/dist/__tests__/router-fallback.test.js +1 -1
- package/dist/__tests__/router-fallback.test.js.map +1 -1
- package/dist/__tests__/router-model-registry.test.js +24 -0
- package/dist/__tests__/router-model-registry.test.js.map +1 -1
- package/dist/__tests__/router-retry.test.js +3 -5
- package/dist/__tests__/router-retry.test.js.map +1 -1
- package/dist/__tests__/router-runagent.test.d.ts +14 -0
- package/dist/__tests__/router-runagent.test.d.ts.map +1 -0
- package/dist/__tests__/router-runagent.test.js +95 -0
- package/dist/__tests__/router-runagent.test.js.map +1 -0
- package/dist/__tests__/router-scaffold.test.js +2 -1
- package/dist/__tests__/router-scaffold.test.js.map +1 -1
- package/dist/__tests__/router-spend-ledger.test.js +1 -1
- package/dist/__tests__/router-spend-ledger.test.js.map +1 -1
- package/dist/__tests__/router-stream-fallback.test.d.ts +13 -0
- package/dist/__tests__/router-stream-fallback.test.d.ts.map +1 -0
- package/dist/__tests__/router-stream-fallback.test.js +129 -0
- package/dist/__tests__/router-stream-fallback.test.js.map +1 -0
- package/dist/__tests__/router-telemetry.test.js +3 -1
- package/dist/__tests__/router-telemetry.test.js.map +1 -1
- package/dist/__tests__/util/mock-upstream.d.ts +77 -0
- package/dist/__tests__/util/mock-upstream.d.ts.map +1 -0
- package/dist/__tests__/util/mock-upstream.js +219 -0
- package/dist/__tests__/util/mock-upstream.js.map +1 -0
- package/dist/adk-adapter.d.ts.map +1 -1
- package/dist/adk-adapter.js +51 -0
- package/dist/adk-adapter.js.map +1 -1
- package/dist/agent/session/adapter.d.ts +15 -0
- package/dist/agent/session/adapter.d.ts.map +1 -1
- package/dist/agent/session/adapter.js +3 -0
- package/dist/agent/session/adapter.js.map +1 -1
- package/dist/agent/session/index.d.ts +1 -0
- package/dist/agent/session/index.d.ts.map +1 -1
- package/dist/agent/session/index.js +1 -0
- package/dist/agent/session/index.js.map +1 -1
- package/dist/agent/session/language-model-bridge.d.ts.map +1 -1
- package/dist/agent/session/language-model-bridge.js +22 -0
- package/dist/agent/session/language-model-bridge.js.map +1 -1
- package/dist/agent/session/legacy-adapter-language-model.d.ts +27 -0
- package/dist/agent/session/legacy-adapter-language-model.d.ts.map +1 -0
- package/dist/agent/session/legacy-adapter-language-model.js +221 -0
- package/dist/agent/session/legacy-adapter-language-model.js.map +1 -0
- package/dist/agent/session/types.d.ts +20 -0
- package/dist/agent/session/types.d.ts.map +1 -1
- package/dist/agent/session/types.js.map +1 -1
- package/dist/claude-adapter.d.ts.map +1 -1
- package/dist/claude-adapter.js +27 -0
- package/dist/claude-adapter.js.map +1 -1
- package/dist/gemini-adapter.d.ts.map +1 -1
- package/dist/gemini-adapter.js +46 -0
- package/dist/gemini-adapter.js.map +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/ollama-adapter.d.ts.map +1 -1
- package/dist/ollama-adapter.js +118 -8
- package/dist/ollama-adapter.js.map +1 -1
- package/dist/openrouter-adapter.d.ts.map +1 -1
- package/dist/openrouter-adapter.js +289 -15
- package/dist/openrouter-adapter.js.map +1 -1
- package/dist/prefill/strip.d.ts +49 -0
- package/dist/prefill/strip.d.ts.map +1 -0
- package/dist/prefill/strip.js +93 -0
- package/dist/prefill/strip.js.map +1 -0
- package/dist/prefill/translate.d.ts +55 -0
- package/dist/prefill/translate.d.ts.map +1 -0
- package/dist/prefill/translate.js +162 -0
- package/dist/prefill/translate.js.map +1 -0
- package/dist/prefill/truncate.d.ts +62 -0
- package/dist/prefill/truncate.d.ts.map +1 -0
- package/dist/prefill/truncate.js +77 -0
- package/dist/prefill/truncate.js.map +1 -0
- package/dist/router/errors.d.ts +24 -7
- package/dist/router/errors.d.ts.map +1 -1
- package/dist/router/errors.js +71 -14
- package/dist/router/errors.js.map +1 -1
- package/dist/router/index.d.ts +3 -2
- package/dist/router/index.d.ts.map +1 -1
- package/dist/router/index.js +2 -1
- package/dist/router/index.js.map +1 -1
- package/dist/router/model-registry.d.ts +22 -0
- package/dist/router/model-registry.d.ts.map +1 -1
- package/dist/router/model-registry.js +64 -1
- package/dist/router/model-registry.js.map +1 -1
- package/dist/router/provider-registry-resolver.d.ts +25 -0
- package/dist/router/provider-registry-resolver.d.ts.map +1 -0
- package/dist/router/provider-registry-resolver.js +84 -0
- package/dist/router/provider-registry-resolver.js.map +1 -0
- package/dist/router/retry.d.ts +3 -0
- package/dist/router/retry.d.ts.map +1 -1
- package/dist/router/retry.js +4 -1
- package/dist/router/retry.js.map +1 -1
- package/dist/router/router.d.ts +79 -1
- package/dist/router/router.d.ts.map +1 -1
- package/dist/router/router.js +256 -2
- package/dist/router/router.js.map +1 -1
- package/dist/router/types.d.ts +1 -1
- package/dist/router/types.d.ts.map +1 -1
- package/dist/router/types.js +1 -0
- package/dist/router/types.js.map +1 -1
- package/dist/turn-recorder/__tests__/turn-recorder.test.d.ts +20 -0
- package/dist/turn-recorder/__tests__/turn-recorder.test.d.ts.map +1 -0
- package/dist/turn-recorder/__tests__/turn-recorder.test.js +282 -0
- package/dist/turn-recorder/__tests__/turn-recorder.test.js.map +1 -0
- package/dist/turn-recorder/hash.d.ts +10 -0
- package/dist/turn-recorder/hash.d.ts.map +1 -0
- package/dist/turn-recorder/hash.js +35 -0
- package/dist/turn-recorder/hash.js.map +1 -0
- package/dist/turn-recorder/index.d.ts +119 -0
- package/dist/turn-recorder/index.d.ts.map +1 -0
- package/dist/turn-recorder/index.js +326 -0
- package/dist/turn-recorder/index.js.map +1 -0
- package/dist/turn-recorder/types.d.ts +227 -0
- package/dist/turn-recorder/types.d.ts.map +1 -0
- package/dist/turn-recorder/types.js +20 -0
- package/dist/turn-recorder/types.js.map +1 -0
- package/dist/types.d.ts +35 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/router/router.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* never trigger cross-provider fallback (security default).
|
|
8
8
|
*/
|
|
9
9
|
import type { ErrorClass, InvokeOpts, RouteAttempt, RouteOutcome, RouterConfig } from './types.js';
|
|
10
|
-
import type { LanguageModel, LanguageModelInvokeOptions, InvokeResult } from '../types.js';
|
|
10
|
+
import type { LanguageModel, LanguageModelInvokeOptions, InvokeResult, StreamEvent } from '../types.js';
|
|
11
11
|
import { TokenBucketRateLimiter } from './rate-limiter.js';
|
|
12
12
|
import { SpendLedger } from './spend-ledger.js';
|
|
13
13
|
import { CircuitBreaker } from './circuit-breaker.js';
|
|
@@ -49,6 +49,51 @@ export interface LlmRouterDeps {
|
|
|
49
49
|
/** Adapter-specific error classifiers (per-provider override). */
|
|
50
50
|
errorClassifiers?: Record<string, (err: unknown) => ErrorClass | undefined>;
|
|
51
51
|
}
|
|
52
|
+
/**
|
|
53
|
+
* Options for the agentic chain walk (`runAgent`). Unlike `invoke`/`invokeStream`
|
|
54
|
+
* (tag-routed, single-shot adapter calls), the agentic path executes an
|
|
55
|
+
* injected `attempt(model, prefill)` — a full agent spawn the caller owns
|
|
56
|
+
* (e.g. the dashboard's `spawnAndWait` over `AgentManager`). The router
|
|
57
|
+
* supplies the reliability: per-error-class backoff retry, circuit breaking,
|
|
58
|
+
* unified classification, and cross-model burn + durable prefill resume.
|
|
59
|
+
*/
|
|
60
|
+
export interface AgentChainOptions<P = unknown> {
|
|
61
|
+
/** Stage label for telemetry / burn events. */
|
|
62
|
+
stage: string;
|
|
63
|
+
/** Resolve the next model id given the burned set (caller's liveness-aware walker). */
|
|
64
|
+
resolveModel: (excluded: ReadonlySet<string>) => string;
|
|
65
|
+
/** Derive a provider key from a model id for the circuit breaker. Defaults to the resolver. */
|
|
66
|
+
providerOf?: (model: string) => string;
|
|
67
|
+
/** After a burn, produce the prefill the next attempt continues from (durable cross-vendor resume). */
|
|
68
|
+
resolvePrefill?: (info: {
|
|
69
|
+
burnedModel: string;
|
|
70
|
+
attemptIndex: number;
|
|
71
|
+
nextModel?: string;
|
|
72
|
+
}) => Promise<P | undefined>;
|
|
73
|
+
/**
|
|
74
|
+
* Fired when a model is burned. `errorClass` is the unified classification
|
|
75
|
+
* (rate_limit / timeout / server_5xx / model_unavailable / …) and `delayMs`
|
|
76
|
+
* is the backoff about to elapse before the next attempt (0 on the final
|
|
77
|
+
* attempt). Lets the UI render the real timeline:
|
|
78
|
+
* "minimax rate_limited → backoff 2.1s → next model".
|
|
79
|
+
*/
|
|
80
|
+
onBurn?: (info: {
|
|
81
|
+
stageName: string;
|
|
82
|
+
model: string;
|
|
83
|
+
status: number | string;
|
|
84
|
+
message: string;
|
|
85
|
+
errorClass: ErrorClass;
|
|
86
|
+
delayMs: number;
|
|
87
|
+
}) => void;
|
|
88
|
+
/** Max distinct chain entries to walk. Default 5. */
|
|
89
|
+
maxAttempts?: number;
|
|
90
|
+
signal?: AbortSignal;
|
|
91
|
+
}
|
|
92
|
+
export interface AgentChainResult<T> {
|
|
93
|
+
result: T;
|
|
94
|
+
model: string;
|
|
95
|
+
attempts: RouteAttempt[];
|
|
96
|
+
}
|
|
52
97
|
export declare class LlmRouter {
|
|
53
98
|
protected readonly config: RouterConfig;
|
|
54
99
|
protected readonly resolver?: AdapterResolver;
|
|
@@ -75,6 +120,39 @@ export declare class LlmRouter {
|
|
|
75
120
|
* - All attempts are ledgered (including failed ones with cost)
|
|
76
121
|
*/
|
|
77
122
|
invoke(opts: InvokeOpts): Promise<RouteOutcome>;
|
|
123
|
+
/**
|
|
124
|
+
* Streaming sibling of `invoke()`. Walks the same fallback chain with the
|
|
125
|
+
* same reliability kernel — circuit-breaker gate, per-error-class backoff
|
|
126
|
+
* retry, spend ledger — but yields `StreamEvent`s as the provider produces
|
|
127
|
+
* them and RETURNS the final `RouteOutcome`.
|
|
128
|
+
*
|
|
129
|
+
* Stream retry/fallback semantics: the retryable window is "establish the
|
|
130
|
+
* stream + pull its first event". A failure there — the canonical
|
|
131
|
+
* connect-time `fetch failed` that used to burn a whole chain in ~1.5s — is
|
|
132
|
+
* retried with backoff on the same model (letting a poisoned socket recycle)
|
|
133
|
+
* and, once that model's policy is exhausted, burns it and falls back to the
|
|
134
|
+
* next chain entry. Once the first event has been yielded downstream we are
|
|
135
|
+
* committed to that model's stream: a mid-stream failure surfaces (the
|
|
136
|
+
* agentic session layer adds durable mid-stream continuation in Phase 3).
|
|
137
|
+
*/
|
|
138
|
+
invokeStream(opts: InvokeOpts): AsyncGenerator<StreamEvent, RouteOutcome>;
|
|
139
|
+
/**
|
|
140
|
+
* Agentic chain walk — the reliability core for full agent spawns (one-shot
|
|
141
|
+
* runner AND each turn of a multi-turn session). Drop-in replacement for the
|
|
142
|
+
* old `runWithChainFallback`, but layered: each chain entry's attempt is
|
|
143
|
+
* wrapped in per-error-class **backoff retry** (`runWithRetry`) and gated by
|
|
144
|
+
* the **circuit breaker**; classification is the unified `classifyError`.
|
|
145
|
+
*
|
|
146
|
+
* On a fall-back-eligible failure the model is burned, the breaker records a
|
|
147
|
+
* failure, the durable `resolvePrefill` produces the continuation for the
|
|
148
|
+
* next model, and the walk advances. Terminal (auth/content/invalid) and
|
|
149
|
+
* non-eligible (`unknown`) errors surface immediately — no burn, no walk.
|
|
150
|
+
*
|
|
151
|
+
* This is what fixes the production failure: a connect-time `fetch failed`
|
|
152
|
+
* now backs off (letting the socket pool recycle) and recovers on the same
|
|
153
|
+
* model before burning, instead of the zero-backoff chain burn-through.
|
|
154
|
+
*/
|
|
155
|
+
runAgent<T, P = unknown>(opts: AgentChainOptions<P>, attempt: (model: string, prefill?: P) => Promise<T>): Promise<AgentChainResult<T>>;
|
|
78
156
|
/** Build the ordered chain of (model, on-gate) steps for a given tag. */
|
|
79
157
|
protected buildChain(opts: InvokeOpts): Array<{
|
|
80
158
|
model: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/router/router.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EAEV,YAAY,EAEZ,YAAY,EACZ,YAAY,EACb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,aAAa,EAAE,0BAA0B,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/router/router.ts"],"names":[],"mappings":"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"}
|
package/dist/router/router.js
CHANGED
|
@@ -6,8 +6,8 @@
|
|
|
6
6
|
* fallback steps are eligible. content_policy / auth / invalid_request
|
|
7
7
|
* never trigger cross-provider fallback (security default).
|
|
8
8
|
*/
|
|
9
|
-
import { RouterError, classifyError } from './errors.js';
|
|
10
|
-
import { DEFAULT_RETRY_POLICY, runWithRetry } from './retry.js';
|
|
9
|
+
import { RouterError, classifyError, isFallbackEligibleErrorClass, parseRetryAfterMs } from './errors.js';
|
|
10
|
+
import { DEFAULT_RETRY_POLICY, runWithRetry, computeDelay } from './retry.js';
|
|
11
11
|
import { TokenBucketRateLimiter } from './rate-limiter.js';
|
|
12
12
|
import { CircuitBreaker } from './circuit-breaker.js';
|
|
13
13
|
export class LlmRouter {
|
|
@@ -163,6 +163,260 @@ export class LlmRouter {
|
|
|
163
163
|
cause: finalErr,
|
|
164
164
|
});
|
|
165
165
|
}
|
|
166
|
+
/**
|
|
167
|
+
* Streaming sibling of `invoke()`. Walks the same fallback chain with the
|
|
168
|
+
* same reliability kernel — circuit-breaker gate, per-error-class backoff
|
|
169
|
+
* retry, spend ledger — but yields `StreamEvent`s as the provider produces
|
|
170
|
+
* them and RETURNS the final `RouteOutcome`.
|
|
171
|
+
*
|
|
172
|
+
* Stream retry/fallback semantics: the retryable window is "establish the
|
|
173
|
+
* stream + pull its first event". A failure there — the canonical
|
|
174
|
+
* connect-time `fetch failed` that used to burn a whole chain in ~1.5s — is
|
|
175
|
+
* retried with backoff on the same model (letting a poisoned socket recycle)
|
|
176
|
+
* and, once that model's policy is exhausted, burns it and falls back to the
|
|
177
|
+
* next chain entry. Once the first event has been yielded downstream we are
|
|
178
|
+
* committed to that model's stream: a mid-stream failure surfaces (the
|
|
179
|
+
* agentic session layer adds durable mid-stream continuation in Phase 3).
|
|
180
|
+
*/
|
|
181
|
+
async *invokeStream(opts) {
|
|
182
|
+
const startedAt = this.now();
|
|
183
|
+
if (!this.resolver) {
|
|
184
|
+
throw new Error('LlmRouter.invokeStream requires an AdapterResolver (deps.resolver)');
|
|
185
|
+
}
|
|
186
|
+
this.enforceBudgetPreflight(opts);
|
|
187
|
+
const chain = this.buildChain(opts);
|
|
188
|
+
const allAttempts = [];
|
|
189
|
+
let totalCostUsd = 0;
|
|
190
|
+
let lastError;
|
|
191
|
+
let lastErrorClass;
|
|
192
|
+
let priorAttempted = false;
|
|
193
|
+
const maxCost = this.config.maxFallbackCostUsd ?? 1.0;
|
|
194
|
+
for (let step = 0; step < chain.length; step += 1) {
|
|
195
|
+
const link = chain[step];
|
|
196
|
+
const adapter = this.resolver.resolve(link.model);
|
|
197
|
+
if (step > 0 && priorAttempted && !this.shouldTryFallback(link, lastErrorClass)) {
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
if (!this.circuitBreaker.canAttempt(adapter.provider)) {
|
|
201
|
+
continue;
|
|
202
|
+
}
|
|
203
|
+
this.circuitBreaker.reserveAttempt(adapter.provider);
|
|
204
|
+
priorAttempted = true;
|
|
205
|
+
const llmOpts = this.buildInvokeOpts(opts, link.model);
|
|
206
|
+
const estimatedTokens = this.estimateTokens(llmOpts);
|
|
207
|
+
const policyFor = (cls) => this.config.retryPolicy[cls] ?? DEFAULT_RETRY_POLICY[cls];
|
|
208
|
+
const classify = (err) => {
|
|
209
|
+
const override = this.errorClassifiers[adapter.provider];
|
|
210
|
+
return override?.(err) ?? classifyError(err);
|
|
211
|
+
};
|
|
212
|
+
const retryRun = await runWithRetry(async () => {
|
|
213
|
+
await this.rateLimiter.acquire(adapter.provider, estimatedTokens);
|
|
214
|
+
const iterator = adapter.invokeStream(llmOpts)[Symbol.asyncIterator]();
|
|
215
|
+
const first = await iterator.next();
|
|
216
|
+
return { iterator, first };
|
|
217
|
+
}, { policyFor, classify, sleep: this.sleep, now: this.now, random: this.random, signal: opts.signal });
|
|
218
|
+
const stepAttempts = retryRun.attempts.map((a) => ({
|
|
219
|
+
model: link.model,
|
|
220
|
+
provider: adapter.provider,
|
|
221
|
+
attemptIndex: a.index,
|
|
222
|
+
fallbackIndex: step,
|
|
223
|
+
errorClass: a.errorClass,
|
|
224
|
+
durationMs: a.durationMs,
|
|
225
|
+
costUsd: undefined,
|
|
226
|
+
}));
|
|
227
|
+
allAttempts.push(...stepAttempts);
|
|
228
|
+
if (!retryRun.result) {
|
|
229
|
+
lastError = retryRun.error ?? new Error('LlmRouter.invokeStream: unknown failure');
|
|
230
|
+
lastErrorClass = stepAttempts[stepAttempts.length - 1]?.errorClass ?? 'unknown';
|
|
231
|
+
this.recordSpend(opts, adapter.provider, link.model, stepAttempts, undefined, lastError);
|
|
232
|
+
if (!isTerminal(lastErrorClass)) {
|
|
233
|
+
this.circuitBreaker.recordFailure(adapter.provider);
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
break;
|
|
237
|
+
}
|
|
238
|
+
if (totalCostUsd > maxCost)
|
|
239
|
+
break;
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
// Stream established — drain it, yielding events; capture the final result.
|
|
243
|
+
const { iterator, first } = retryRun.result;
|
|
244
|
+
let result;
|
|
245
|
+
let drainError;
|
|
246
|
+
try {
|
|
247
|
+
if (first.done) {
|
|
248
|
+
result = first.value;
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
yield first.value;
|
|
252
|
+
while (true) {
|
|
253
|
+
const s = await iterator.next();
|
|
254
|
+
if (s.done) {
|
|
255
|
+
result = s.value;
|
|
256
|
+
break;
|
|
257
|
+
}
|
|
258
|
+
yield s.value;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
catch (err) {
|
|
263
|
+
drainError = err;
|
|
264
|
+
}
|
|
265
|
+
if (drainError || !result) {
|
|
266
|
+
// Mid-stream failure AFTER emitting — can't fall back to another model
|
|
267
|
+
// cleanly (events already flowed downstream). Surface it.
|
|
268
|
+
lastError = drainError instanceof Error
|
|
269
|
+
? drainError
|
|
270
|
+
: new Error(String(drainError ?? 'stream ended without a result'));
|
|
271
|
+
lastErrorClass = classify(lastError) ?? 'unknown';
|
|
272
|
+
this.recordSpend(opts, adapter.provider, link.model, stepAttempts, undefined, lastError);
|
|
273
|
+
if (!isTerminal(lastErrorClass))
|
|
274
|
+
this.circuitBreaker.recordFailure(adapter.provider);
|
|
275
|
+
throw new RouterError(`route '${opts.tag}' stream failed mid-flight on ${link.model}: ${lastError.message}`, { attempts: allAttempts, cause: lastError });
|
|
276
|
+
}
|
|
277
|
+
const last = stepAttempts[stepAttempts.length - 1];
|
|
278
|
+
if (last)
|
|
279
|
+
last.costUsd = result.costUsd;
|
|
280
|
+
totalCostUsd += result.costUsd;
|
|
281
|
+
this.recordSpend(opts, adapter.provider, link.model, stepAttempts, result, undefined);
|
|
282
|
+
this.circuitBreaker.recordSuccess(adapter.provider);
|
|
283
|
+
const outcome = {
|
|
284
|
+
result,
|
|
285
|
+
attempts: allAttempts,
|
|
286
|
+
totalDurationMs: Math.max(0, this.now() - startedAt),
|
|
287
|
+
totalCostUsd,
|
|
288
|
+
};
|
|
289
|
+
this.populateBudgetRemaining(outcome, opts);
|
|
290
|
+
return outcome;
|
|
291
|
+
}
|
|
292
|
+
const finalErr = lastError ?? new Error('LlmRouter.invokeStream: chain produced no error and no result');
|
|
293
|
+
throw new RouterError(`route '${opts.tag}' failed: ${finalErr.message}`, {
|
|
294
|
+
attempts: allAttempts,
|
|
295
|
+
cause: finalErr,
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Agentic chain walk — the reliability core for full agent spawns (one-shot
|
|
300
|
+
* runner AND each turn of a multi-turn session). Drop-in replacement for the
|
|
301
|
+
* old `runWithChainFallback`, but layered: each chain entry's attempt is
|
|
302
|
+
* wrapped in per-error-class **backoff retry** (`runWithRetry`) and gated by
|
|
303
|
+
* the **circuit breaker**; classification is the unified `classifyError`.
|
|
304
|
+
*
|
|
305
|
+
* On a fall-back-eligible failure the model is burned, the breaker records a
|
|
306
|
+
* failure, the durable `resolvePrefill` produces the continuation for the
|
|
307
|
+
* next model, and the walk advances. Terminal (auth/content/invalid) and
|
|
308
|
+
* non-eligible (`unknown`) errors surface immediately — no burn, no walk.
|
|
309
|
+
*
|
|
310
|
+
* This is what fixes the production failure: a connect-time `fetch failed`
|
|
311
|
+
* now backs off (letting the socket pool recycle) and recovers on the same
|
|
312
|
+
* model before burning, instead of the zero-backoff chain burn-through.
|
|
313
|
+
*/
|
|
314
|
+
async runAgent(opts, attempt) {
|
|
315
|
+
const maxAttempts = Math.max(1, opts.maxAttempts ?? 5);
|
|
316
|
+
const burned = new Set();
|
|
317
|
+
const attempts = [];
|
|
318
|
+
let prefill;
|
|
319
|
+
let lastErr;
|
|
320
|
+
const providerOf = opts.providerOf ?? ((m) => {
|
|
321
|
+
try {
|
|
322
|
+
return this.resolver?.resolve(m).provider ?? 'unknown';
|
|
323
|
+
}
|
|
324
|
+
catch {
|
|
325
|
+
return 'unknown';
|
|
326
|
+
}
|
|
327
|
+
});
|
|
328
|
+
const policyFor = (cls) => this.config.retryPolicy[cls] ?? DEFAULT_RETRY_POLICY[cls];
|
|
329
|
+
const random = this.random ?? Math.random;
|
|
330
|
+
const now = this.now;
|
|
331
|
+
const sleep = this.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
|
|
332
|
+
// ONE attempt per chain entry — agent spawns are expensive, so we do NOT
|
|
333
|
+
// re-spawn the same model in a tight loop (that's what `invoke`'s
|
|
334
|
+
// `runWithRetry` is for). Instead, on a fall-back-eligible failure we burn
|
|
335
|
+
// the model, BACK OFF (the fix — lets a poisoned socket pool / quota
|
|
336
|
+
// recover), then let `resolveModel` pick the next entry. When the caller's
|
|
337
|
+
// resolver ignores the burn set (cli: one pinned model) this naturally
|
|
338
|
+
// becomes same-model retry-with-backoff; when it excludes burns (dashboard
|
|
339
|
+
// liveness walker) it's cross-model fallback. Terminal + `unknown` errors
|
|
340
|
+
// surface immediately — no burn, no backoff — matching the prior
|
|
341
|
+
// `runWithChainFallback` semantics (a generic error is a bug, not a
|
|
342
|
+
// provider fault).
|
|
343
|
+
for (let i = 0; i < maxAttempts; i += 1) {
|
|
344
|
+
let model;
|
|
345
|
+
try {
|
|
346
|
+
model = opts.resolveModel(burned);
|
|
347
|
+
}
|
|
348
|
+
catch (err) {
|
|
349
|
+
lastErr = err;
|
|
350
|
+
break;
|
|
351
|
+
}
|
|
352
|
+
const provider = providerOf(model);
|
|
353
|
+
const classify = (err) => this.errorClassifiers[provider]?.(err) ?? classifyError(err);
|
|
354
|
+
// Circuit breaker open → skip this provider, burn its model, walk on.
|
|
355
|
+
if (!this.circuitBreaker.canAttempt(provider)) {
|
|
356
|
+
attempts.push({ model, provider, attemptIndex: i, fallbackIndex: i, durationMs: 0 });
|
|
357
|
+
burned.add(model);
|
|
358
|
+
continue;
|
|
359
|
+
}
|
|
360
|
+
this.circuitBreaker.reserveAttempt(provider);
|
|
361
|
+
const startedAt = now();
|
|
362
|
+
try {
|
|
363
|
+
const result = await attempt(model, prefill);
|
|
364
|
+
attempts.push({ model, provider, attemptIndex: i, fallbackIndex: i, durationMs: Math.max(0, now() - startedAt) });
|
|
365
|
+
this.circuitBreaker.recordSuccess(provider);
|
|
366
|
+
return { result, model, attempts };
|
|
367
|
+
}
|
|
368
|
+
catch (err) {
|
|
369
|
+
lastErr = err instanceof Error ? err : new Error(String(err));
|
|
370
|
+
const cls = classify(lastErr);
|
|
371
|
+
attempts.push({ model, provider, attemptIndex: i, fallbackIndex: i, errorClass: cls, durationMs: Math.max(0, now() - startedAt) });
|
|
372
|
+
// Terminal or non-eligible (unknown) → surface immediately.
|
|
373
|
+
if (isTerminal(cls) || !isFallbackEligibleErrorClass(cls)) {
|
|
374
|
+
throw lastErr;
|
|
375
|
+
}
|
|
376
|
+
this.circuitBreaker.recordFailure(provider);
|
|
377
|
+
burned.add(model);
|
|
378
|
+
const status = lastErr.status ?? '?';
|
|
379
|
+
const message = lastErr.message?.slice(0, 200) ?? 'unknown';
|
|
380
|
+
// Backoff for the NEXT attempt — honor Retry-After when present, else
|
|
381
|
+
// the per-error-class curve. `model_unavailable` has a zero-delay
|
|
382
|
+
// policy, so a phantom-model id hops instantly. Zero on the final
|
|
383
|
+
// attempt (nothing to wait for). Computed BEFORE onBurn so the UI can
|
|
384
|
+
// render the backoff the burn is about to incur.
|
|
385
|
+
const hasNext = i + 1 < maxAttempts;
|
|
386
|
+
const policy = policyFor(cls);
|
|
387
|
+
const headerDelay = parseRetryAfterMs(lastErr.headers);
|
|
388
|
+
const delayMs = hasNext ? (headerDelay ?? computeDelay(policy, i, random)) : 0;
|
|
389
|
+
opts.onBurn?.({ stageName: opts.stage, model, status, message, errorClass: cls, delayMs });
|
|
390
|
+
if (hasNext) {
|
|
391
|
+
if (delayMs > 0) {
|
|
392
|
+
try {
|
|
393
|
+
await sleep(delayMs, opts.signal);
|
|
394
|
+
}
|
|
395
|
+
catch (e) {
|
|
396
|
+
lastErr = e;
|
|
397
|
+
break;
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
if (opts.resolvePrefill) {
|
|
401
|
+
let nextModel;
|
|
402
|
+
try {
|
|
403
|
+
nextModel = opts.resolveModel(burned);
|
|
404
|
+
}
|
|
405
|
+
catch {
|
|
406
|
+
nextModel = undefined;
|
|
407
|
+
}
|
|
408
|
+
try {
|
|
409
|
+
prefill = await opts.resolvePrefill({ burnedModel: model, attemptIndex: i + 1, nextModel });
|
|
410
|
+
}
|
|
411
|
+
catch {
|
|
412
|
+
prefill = undefined;
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
throw lastErr ?? new Error(`LlmRouter.runAgent: chain exhausted for stage '${opts.stage}'`);
|
|
419
|
+
}
|
|
166
420
|
/** Build the ordered chain of (model, on-gate) steps for a given tag. */
|
|
167
421
|
buildChain(opts) {
|
|
168
422
|
if (opts.model) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/router/router.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AA0CtD,MAAM,OAAO,SAAS;IACD,MAAM,CAAe;IACrB,QAAQ,CAAmB;IAC3B,WAAW,CAAyB;IACpC,cAAc,CAAiB;IAC/B,MAAM,CAAe;IACrB,KAAK,CAAe;IACpB,GAAG,CAAe;IAClB,KAAK,CAAuD;IAC5D,MAAM,CAAgB;IACtB,gBAAgB,CAA2D;IAE9F,YAAY,IAAmB;QAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,YAAY,CAAC;QACxC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,EAAE,CAAC;QACpD,IAAI,CAAC,WAAW;YACd,IAAI,CAAC,WAAW;gBAChB,IAAI,sBAAsB,CAAC;oBACzB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;oBAC7B,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,KAAK,EAAE,IAAI,CAAC,KAAK;wBACf,CAAC,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,CAAC,KAAM,CAAC,EAAE,CAAC;wBACjC,CAAC,CAAC,SAAS;oBACb,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;iBACrC,CAAC,CAAC;QACL,IAAI,CAAC,cAAc;YACjB,IAAI,CAAC,cAAc;gBACnB,IAAI,cAAc,CAAC;oBACjB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc;oBAClC,GAAG,EAAE,IAAI,CAAC,GAAG;iBACd,CAAC,CAAC;IACP,CAAC;IAED,sDAAsD;IACtD,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,MAAM,CAAC,IAAgB;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QAED,0CAA0C;QAC1C,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAElC,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACpC,MAAM,WAAW,GAAmB,EAAE,CAAC;QACvC,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,SAA4B,CAAC;QACjC,IAAI,cAAsC,CAAC;QAC3C,IAAI,cAAc,GAAG,KAAK,CAAC,CAAC,sCAAsC;QAClE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,IAAI,GAAG,CAAC;QAEtD,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAElD,oEAAoE;YACpE,qEAAqE;YACrE,qEAAqE;YACrE,4CAA4C;YAC5C,IAAI,IAAI,GAAG,CAAC,IAAI,cAAc,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC;gBAChF,SAAS;YACX,CAAC;YAED,qEAAqE;YACrE,mDAAmD;YACnD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACtD,SAAS;YACX,CAAC;YACD,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACrD,cAAc,GAAG,IAAI,CAAC;YAEtB,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACvD,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAErD,MAAM,SAAS,GAAG,CAAC,GAAe,EAAe,EAAE,CACjD,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAC;YAE5D,MAAM,QAAQ,GAAG,CAAC,GAAY,EAA0B,EAAE;gBACxD,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACzD,OAAO,QAAQ,EAAE,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC;YAC/C,CAAC,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,YAAY,CACjC,KAAK,IAAI,EAAE;gBACT,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC;gBAClE,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACjC,CAAC,EACD;gBACE,SAAS;gBACT,QAAQ;gBACR,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CACF,CAAC;YAEF,MAAM,YAAY,GAAmB,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACjE,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,YAAY,EAAE,CAAC,CAAC,KAAK;gBACrB,aAAa,EAAE,IAAI;gBACnB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,OAAO,EAAE,SAAS;aACnB,CAAC,CAAC,CAAC;YACJ,WAAW,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;YAElC,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACpB,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACnD,IAAI,IAAI;oBAAE,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;gBACjD,YAAY,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;gBACxC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAC/F,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACpD,MAAM,OAAO,GAAiB;oBAC5B,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,QAAQ,EAAE,WAAW;oBACrB,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;oBACpD,YAAY;iBACb,CAAC;gBACF,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAC5C,OAAO,OAAO,CAAC;YACjB,CAAC;YAED,SAAS,GAAG,QAAQ,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;YACtE,cAAc,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,UAAU,IAAI,SAAS,CAAC;YAEhF,wEAAwE;YACxE,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAEzF,+DAA+D;YAC/D,oEAAoE;YACpE,oEAAoE;YACpE,eAAe;YACf,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;gBAChC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACN,oEAAoE;gBACpE,MAAM;YACR,CAAC;YAED,wEAAwE;YACxE,IAAI,YAAY,GAAG,OAAO,EAAE,CAAC;gBAC3B,MAAM;YACR,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,SAAS,IAAI,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAC5F,MAAM,IAAI,WAAW,CAAC,UAAU,IAAI,CAAC,GAAG,aAAa,QAAQ,CAAC,OAAO,EAAE,EAAE;YACvE,QAAQ,EAAE,WAAW;YACrB,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;IACL,CAAC;IAED,yEAAyE;IAC/D,UAAU,CAAC,IAAgB;QACnC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,8CAA8C;YAC9C,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,KAAK,GAA4B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1F,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,CAAC,GAAG,2BAA2B,CAAC,CAAC;QACvF,CAAC;QACD,MAAM,KAAK,GAAgD,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACtF,KAAK,MAAM,EAAE,IAAI,KAAK,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAC7C,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,4EAA4E;IAClE,iBAAiB,CACzB,QAA+B,EAC/B,UAAkC;QAElC,IAAI,CAAC,UAAU;YAAE,OAAO,KAAK,CAAC;QAC9B,IAAI,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO,KAAK,CAAC;QACzC,8CAA8C;QAC9C,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QAC1D,OAAO,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC;IAED,0EAA0E;IAEhE,sBAAsB,CAAC,IAAgB;QAC/C,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,SAAS,KAAK,SAAS;YAAE,OAAO;QACpC,IAAI,SAAS,GAAG,CAAC;YAAE,OAAO;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC5C,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,wCAAwC,IAAI,CAAC,GAAG,WAAW,IAAI,CAAC,KAAK,IAAI,EAAE,IAAI,CAAC,CAAC;QACnG,CAAC;QACD,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;QACjF,CAAC;QACD,4EAA4E;QAC5E,uCAAuC;IACzC,CAAC;IAES,sBAAsB,CAAC,IAAgB;QAC/C,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,OAAO,SAAS,CAAC;QAC3D,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,SAA6B,CAAC;QAClC,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE;YAC7B,SAAS,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QACvE,CAAC,CAAC;QACF,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;YAChC,MAAM,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5C,MAAM,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAES,uBAAuB,CAAC,OAAqB,EAAE,IAAgB;QACvE,MAAM,CAAC,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,SAAS;YAAE,OAAO,CAAC,kBAAkB,GAAG,CAAC,CAAC;IACtD,CAAC;IAES,WAAW,CACnB,IAAgB,EAChB,QAAgB,EAChB,OAAe,EACf,QAAqC,EACrC,MAAgC,EAChC,GAAsB;QAEtB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QACzB,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACjB,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE;YAChB,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,WAAW,EAAE;YACtC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,QAAQ;YACR,KAAK,EAAE,OAAO;YACd,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,WAAW,IAAI,CAAC;YAC3C,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,YAAY,IAAI,CAAC;YAC7C,eAAe,EAAE,MAAM,EAAE,KAAK,CAAC,eAAe,IAAI,CAAC;YACnD,gBAAgB,EAAE,MAAM,EAAE,KAAK,CAAC,gBAAgB,IAAI,CAAC;YACrD,OAAO,EAAE,MAAM,EAAE,OAAO,IAAI,CAAC;YAC7B,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;YAC1D,aAAa,EAAE,IAAI,EAAE,aAAa,IAAI,CAAC;YACvC,YAAY,EAAE,QAAQ,CAAC,MAAM;YAC7B,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9D,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACO,cAAc,CAAC,IAAgC;QACvD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAChF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;QAChD,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;QAC9C,OAAO,YAAY,GAAG,cAAc,CAAC;IACvC,CAAC;IAED,yEAAyE;IAE/D,eAAe,CAAC,IAAgB,EAAE,OAAe;QACzD,MAAM,QAAQ,GACZ,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;YAC7B,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YACnD,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACrE,OAAO;YACL,KAAK,EAAE,OAAO;YACd,QAAQ;YACR,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC;IACJ,CAAC;CACF;AAED,6EAA6E;AAE7E,SAAS,eAAe;IACtB,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IACrB,CAAC,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1B,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;AACzB,CAAC;AAED,SAAS,YAAY;IACnB,oEAAoE;IACpE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,OAAO,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,UAAU,CAAC,GAA2B;IAC7C,OAAO,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,gBAAgB,IAAI,GAAG,KAAK,iBAAiB,CAAC;AACjF,CAAC"}
|
|
1
|
+
{"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/router/router.ts"],"names":[],"mappings":"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"}
|
package/dist/router/types.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* declaration-only — runtime behavior lives in router.ts and friends.
|
|
6
6
|
*/
|
|
7
7
|
import type { LanguageModelInvokeOptions, InvokeResult, ProviderName } from '../types.js';
|
|
8
|
-
export type ErrorClass = 'rate_limit' | 'timeout' | 'server_5xx' | 'auth' | 'content_policy' | 'invalid_request' | 'unknown';
|
|
8
|
+
export type ErrorClass = 'rate_limit' | 'timeout' | 'server_5xx' | 'auth' | 'content_policy' | 'invalid_request' | 'model_unavailable' | 'unknown';
|
|
9
9
|
export declare const ALL_ERROR_CLASSES: readonly ErrorClass[];
|
|
10
10
|
export interface RetryPolicy {
|
|
11
11
|
/** 0 = no retry. The total attempt count is `attempts + 1`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/router/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,0BAA0B,EAC1B,YAAY,EACZ,YAAY,EACb,MAAM,aAAa,CAAC;AAMrB,MAAM,MAAM,UAAU,GAClB,YAAY,GACZ,SAAS,GACT,YAAY,GACZ,MAAM,GACN,gBAAgB,GAChB,iBAAiB,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/router/types.ts"],"names":[],"mappings":"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"}
|
package/dist/router/types.js
CHANGED
package/dist/router/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/router/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/router/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA2BH,MAAM,CAAC,MAAM,iBAAiB,GAA0B;IACtD,YAAY;IACZ,SAAS;IACT,YAAY;IACZ,MAAM;IACN,gBAAgB;IAChB,iBAAiB;IACjB,mBAAmB;IACnB,SAAS;CACD,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unit tests for TurnRecorder — v2 ADR §2.1 / §2.5.
|
|
3
|
+
*
|
|
4
|
+
* Covers:
|
|
5
|
+
* a) startTurn records `assistant-start` WITHOUT an input-hash guard, so
|
|
6
|
+
* a resume whose prompt drifted (live-requeried KB/memory, cross-vendor
|
|
7
|
+
* continuation) replays the recorded transcript instead of aborting.
|
|
8
|
+
* b) Concurrent recorder instances do not cross-pollinate turn counters.
|
|
9
|
+
* c) runTool records `tool_use:N` AND `tool_result:N`, executes the
|
|
10
|
+
* exec callback exactly once on live, returns its NeutralToolResult.
|
|
11
|
+
* d) Replay path — when the underlying runtime returns recorded
|
|
12
|
+
* payloads, runTool short-circuits the executor (exec never fires).
|
|
13
|
+
* e) endTurn records `assistant-end` with provenance + usage.
|
|
14
|
+
* f) flushPartial emits an AssistantPartial through the sink with the
|
|
15
|
+
* same turnUuid that startTurn minted; idempotent across calls.
|
|
16
|
+
* g) NullTurnRecorder factory produces a recorder whose calls all
|
|
17
|
+
* complete cleanly with no persisted side effects.
|
|
18
|
+
*/
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=turn-recorder.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"turn-recorder.test.d.ts","sourceRoot":"","sources":["../../../src/turn-recorder/__tests__/turn-recorder.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG"}
|