adaptive-memory-multi-model-router 2.15.2 → 2.15.3
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/AGENT_COUNCIL_FINDINGS.md +123 -98
- package/ARCHITECTURE.md +1 -1
- package/CAMPAIGN_SUMMARY.md +87 -0
- package/ENTERPRISE_INTEGRATIONS.md +94 -0
- package/INTEGRATION_PROGRESS.md +96 -0
- package/OPPORTUNITIES_100.md +277 -0
- package/POPULARITY_BOOSTERS.md +1 -1
- package/README.md +143 -173
- package/README_ja.md +16 -20
- package/README_zh.md +13 -17
- package/TODO_BROWSER_AUTOMATION.md +87 -0
- package/a3m-integrations-summary.md +73 -0
- package/articles/CHINESE_DIRECTORIES.md +2 -2
- package/articles/CHINESE_SUBMISSIONS_READY.md +5 -5
- package/articles/HN_POST_READY.md +16 -20
- package/articles/HN_SHOW_SEO.md +49 -0
- package/articles/INDIEHACKERS_READY.md +19 -34
- package/articles/PRODUCTHUNT_READY.md +47 -67
- package/articles/REDDIT_SEO_2026.md +50 -0
- package/demo/IMPROVED_PROMPTS.md +3 -3
- package/demo/VEO3_PROMPTS.md +2 -2
- package/demo/VIDEO_PRODUCTION_GUIDE.md +3 -3
- package/dist/analytics/costAnalytics.d.ts +0 -1
- package/dist/benchmark/reproducible.d.ts +0 -1
- package/dist/cache/semanticCache.d.ts +0 -1
- package/dist/cost/budgetEnforcer.d.ts +0 -1
- package/dist/cost/costTracker.d.ts +0 -1
- package/dist/ensemble/multiRoundDialog.d.ts +0 -1
- package/dist/ensemble/shapleyValue.d.ts +0 -1
- package/dist/ensemble.d.ts +0 -1
- package/dist/index.d.ts +0 -1
- package/dist/integrations/oauth.d.ts +0 -1
- package/dist/integrations/scienceAdapter.d.ts +0 -1
- package/dist/memory/autoFetch.d.ts +0 -1
- package/dist/memory/hybridMemory.d.ts +0 -1
- package/dist/memory/memoryTree.d.ts +0 -1
- package/dist/memory/obsidianVault.d.ts +0 -1
- package/dist/memory/reasoningBank.d.ts +0 -1
- package/dist/observability/changeWatch.d.ts +0 -1
- package/dist/observability/fatigueDetector.d.ts +0 -1
- package/dist/observability/index.d.ts +0 -1
- package/dist/observability/metrics.d.ts +0 -1
- package/dist/observability/middleware.d.ts +0 -1
- package/dist/observability/tracer.d.ts +0 -1
- package/dist/observability/types.d.ts +0 -1
- package/dist/providers/providerConfig.d.ts +0 -1
- package/dist/routing/advancedRouter.d.ts +1 -2
- package/dist/routing/advancedRouter.js +84 -0
- package/dist/routing/advancedRouter.js.map +1 -1
- package/dist/routing/crossModelValidation.d.ts +0 -1
- package/dist/routing/providerHealth.d.ts +77 -2
- package/dist/routing/providerHealth.js +190 -4
- package/dist/routing/providerHealth.js.map +1 -1
- package/dist/routing/providerRetry.d.ts +0 -1
- package/dist/routing/shadowSampler.d.ts +187 -0
- package/dist/routing/shadowSampler.js +306 -0
- package/dist/routing/shadowSampler.js.map +1 -0
- package/dist/sdk.d.ts +0 -1
- package/dist/security/guardrails.d.ts +0 -1
- package/dist/server/dashboard.d.ts +0 -1
- package/dist/server/handlers/chatHandler.d.ts +0 -1
- package/dist/server/handlers/completionsHandler.d.ts +0 -1
- package/dist/server/handlers/embeddingsHandler.d.ts +0 -1
- package/dist/server/handlers/healthHandler.d.ts +0 -1
- package/dist/server/handlers/metricsHandler.d.ts +0 -1
- package/dist/server/handlers/modelsHandler.d.ts +0 -1
- package/dist/server/metrics.d.ts +0 -1
- package/dist/server/modelMapper.d.ts +0 -1
- package/dist/server/proxyServer.d.ts +0 -1
- package/dist/server/router.d.ts +0 -1
- package/dist/server/state.d.ts +0 -1
- package/dist/tui/dashboard.d.ts +0 -1
- package/dist/utils/costUtils.d.ts +0 -1
- package/dist/utils/sorting.d.ts +0 -1
- package/dist/utils/tokenUtils.d.ts +0 -1
- package/docs/comparison-litellm.md +10 -18
- package/docs/index.html +29 -34
- package/docs/llms-full.txt +6 -6
- package/docs/llms.txt +21 -23
- package/docs-site/index.html +19 -19
- package/integrations/browser-use/README.md +155 -0
- package/integrations/browser-use/examples/form-filling.ts +179 -0
- package/integrations/browser-use/index.ts +145 -0
- package/integrations/browser-use/package.json +34 -0
- package/integrations/browser-use/tsconfig.json +17 -0
- package/integrations/mcp-browser/README.md +177 -0
- package/integrations/mcp-browser/package.json +38 -0
- package/integrations/mcp-browser/src/index.ts +297 -0
- package/integrations/sota-browser/README.md +191 -0
- package/integrations/sota-browser/package.json +34 -0
- package/llms-full.txt +6 -6
- package/llms.txt +22 -33
- package/mcp-server/package.json +0 -6
- package/mcp-server/tsconfig.json +2 -3
- package/package.json +3 -3
- package/sitemap.xml +15 -9
- package/src/routing/advancedRouter.ts +101 -0
- package/src/routing/providerHealth.ts +234 -4
- package/src/routing/shadowSampler.ts +427 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -94
- package/.github/ISSUE_TEMPLATE/checklist.md +0 -35
- package/.github/ISSUE_TEMPLATE/config.yml +0 -17
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -71
- package/.well-known/ai-plugin.json +0 -16
|
@@ -25,7 +25,8 @@
|
|
|
25
25
|
* const chain = healthManager.getFallbackChain(['openai/gpt-4o', 'anthropic/claude-3-5-sonnet']);
|
|
26
26
|
*/
|
|
27
27
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
-
exports.ProviderHealthManager = exports.HealthEvent = void 0;
|
|
28
|
+
exports.globalHealthManager = exports.ProviderHealthManager = exports.HealthEvent = void 0;
|
|
29
|
+
exports.mvtShouldRotate = mvtShouldRotate;
|
|
29
30
|
const events_1 = require("events");
|
|
30
31
|
// ============================================================
|
|
31
32
|
// Events
|
|
@@ -69,8 +70,11 @@ class ProviderHealthManager extends events_1.EventEmitter {
|
|
|
69
70
|
}
|
|
70
71
|
/**
|
|
71
72
|
* Record a successful request
|
|
73
|
+
* @param provider - provider name
|
|
74
|
+
* @param latencyMs - response latency in ms
|
|
75
|
+
* @param tokensUsed - tokens consumed this request (for MVT rate-limit tracking)
|
|
72
76
|
*/
|
|
73
|
-
recordSuccess(provider, latencyMs) {
|
|
77
|
+
recordSuccess(provider, latencyMs, tokensUsed = 0) {
|
|
74
78
|
this.ensureProviderExists(provider);
|
|
75
79
|
const now = Date.now();
|
|
76
80
|
const window = this.getMetricsWindow(provider);
|
|
@@ -81,13 +85,31 @@ class ProviderHealthManager extends events_1.EventEmitter {
|
|
|
81
85
|
failedRequests: 0,
|
|
82
86
|
totalLatency: latencyMs,
|
|
83
87
|
lastLatency: latencyMs,
|
|
88
|
+
tokensUsed,
|
|
84
89
|
});
|
|
85
90
|
// Trim to window size
|
|
86
91
|
while (window.length > this.config.windowSize) {
|
|
87
92
|
window.shift();
|
|
88
93
|
}
|
|
89
|
-
//
|
|
94
|
+
// === MVT RATE-LIMIT WINDOW MANAGEMENT ===
|
|
90
95
|
const health = this.health.get(provider);
|
|
96
|
+
const windowElapsed = now - health.rateLimitWindowStart;
|
|
97
|
+
// If window has elapsed (rolled over), reset the token counter
|
|
98
|
+
if (windowElapsed >= health.rateLimitWindowMs) {
|
|
99
|
+
health.tokensUsedThisWindow = 0;
|
|
100
|
+
health.rateLimitWindowStart = now;
|
|
101
|
+
}
|
|
102
|
+
// Accumulate tokens used
|
|
103
|
+
if (tokensUsed > 0) {
|
|
104
|
+
health.tokensUsedThisWindow += tokensUsed;
|
|
105
|
+
}
|
|
106
|
+
// Update rolling average tokens per request
|
|
107
|
+
const successfulReqs = window.filter(m => m.successfulRequests > 0);
|
|
108
|
+
if (successfulReqs.length > 0) {
|
|
109
|
+
const totalTokens = successfulReqs.reduce((s, m) => s + (m.tokensUsed || 0), 0);
|
|
110
|
+
health.avgTokensPerRequest = totalTokens / successfulReqs.length;
|
|
111
|
+
}
|
|
112
|
+
// Update health state
|
|
91
113
|
health.lastSuccess = now;
|
|
92
114
|
health.consecutiveErrors = 0;
|
|
93
115
|
health.cooldownUntil = 0;
|
|
@@ -110,6 +132,7 @@ class ProviderHealthManager extends events_1.EventEmitter {
|
|
|
110
132
|
failedRequests: 1,
|
|
111
133
|
totalLatency: 0,
|
|
112
134
|
lastLatency: 0,
|
|
135
|
+
tokensUsed: 0,
|
|
113
136
|
});
|
|
114
137
|
// Trim to window size
|
|
115
138
|
while (window.length > this.config.windowSize) {
|
|
@@ -228,6 +251,115 @@ class ProviderHealthManager extends events_1.EventEmitter {
|
|
|
228
251
|
});
|
|
229
252
|
return scored.map(s => s.provider);
|
|
230
253
|
}
|
|
254
|
+
// ================================================================
|
|
255
|
+
// MVT RATE-LIMIT ROTATION (Charnov 1976 Optimal Foraging)
|
|
256
|
+
// ================================================================
|
|
257
|
+
/**
|
|
258
|
+
* Configure rate-limit parameters for a provider.
|
|
259
|
+
* Call this once during provider registration with the provider's actual limits.
|
|
260
|
+
*
|
|
261
|
+
* @param provider - provider name
|
|
262
|
+
* @param rateLimitTokens - max tokens per window (e.g., 1000000 for 1M)
|
|
263
|
+
* @param rateLimitWindowMs - window duration in ms (e.g., 60000 for 1 min)
|
|
264
|
+
*/
|
|
265
|
+
setRateLimitConfig(provider, rateLimitTokens, rateLimitWindowMs) {
|
|
266
|
+
this.ensureProviderExists(provider);
|
|
267
|
+
const health = this.health.get(provider);
|
|
268
|
+
health.rateLimitTokens = rateLimitTokens;
|
|
269
|
+
health.rateLimitWindowMs = rateLimitWindowMs;
|
|
270
|
+
// Reset window on config change
|
|
271
|
+
health.tokensUsedThisWindow = 0;
|
|
272
|
+
health.rateLimitWindowStart = Date.now();
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Estimate cold-start latency for switching to a fallback provider.
|
|
276
|
+
* Based on the provider's average latency as a proxy.
|
|
277
|
+
* In production, this would include TLS handshake, DNS, and model warmup costs.
|
|
278
|
+
*/
|
|
279
|
+
estimateColdStartLatency(fallbackProvider) {
|
|
280
|
+
const fallbackHealth = this.health.get(fallbackProvider);
|
|
281
|
+
if (!fallbackHealth)
|
|
282
|
+
return 1000; // conservative default
|
|
283
|
+
const baseLatency = fallbackHealth.latency || 500;
|
|
284
|
+
// Cold start typically 1.5-3x warm latency depending on provider
|
|
285
|
+
// Add TLS + DNS overhead (typically 50-200ms)
|
|
286
|
+
const coldStartMultiplier = 2.0;
|
|
287
|
+
const tlsOverhead = 100;
|
|
288
|
+
return baseLatency * coldStartMultiplier + tlsOverhead;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Should we rotate away from this provider due to rate-limit depletion?
|
|
292
|
+
*
|
|
293
|
+
* Implements Charnov's Marginal Value Theorem (1976):
|
|
294
|
+
* g'(t*) = g(t*) / (t* + τ)
|
|
295
|
+
*
|
|
296
|
+
* where:
|
|
297
|
+
* g(t*) = cumulative successful tokens used so far in this window
|
|
298
|
+
* g'(t*) = marginal rate = remaining tokens / time remaining in window
|
|
299
|
+
* τ = cold-start latency for the fallback provider
|
|
300
|
+
*
|
|
301
|
+
* LEAVE when marginal rate ≤ average rate (including switch cost).
|
|
302
|
+
* STAY when marginal rate > average rate (still worth staying).
|
|
303
|
+
*
|
|
304
|
+
* @param provider - current provider to evaluate
|
|
305
|
+
* @param fallbackProvider - candidate fallback provider
|
|
306
|
+
* @returns true if rotation is recommended (marginal rate ≤ break-even rate)
|
|
307
|
+
*/
|
|
308
|
+
shouldRotateForRateLimit(provider, fallbackProvider) {
|
|
309
|
+
const health = this.health.get(provider);
|
|
310
|
+
if (!health)
|
|
311
|
+
return false;
|
|
312
|
+
const now = Date.now();
|
|
313
|
+
const windowElapsed = now - health.rateLimitWindowStart;
|
|
314
|
+
// If window hasn't started or is fresh, don't rotate
|
|
315
|
+
if (health.rateLimitWindowStart === 0 || windowElapsed < 100)
|
|
316
|
+
return false;
|
|
317
|
+
// If already depleted (tokens used ≥ limit), recommend rotation
|
|
318
|
+
if (health.tokensUsedThisWindow >= health.rateLimitTokens)
|
|
319
|
+
return true;
|
|
320
|
+
// Remaining token budget in current window
|
|
321
|
+
const remainingBudget = Math.max(0, health.rateLimitTokens - health.tokensUsedThisWindow);
|
|
322
|
+
const remainingTimeMs = Math.max(1, health.rateLimitWindowMs - windowElapsed);
|
|
323
|
+
// Marginal rate: tokens per ms we can still consume this window
|
|
324
|
+
// High marginal rate = plenty of budget left = stay
|
|
325
|
+
// Low marginal rate = running out = consider leaving
|
|
326
|
+
const marginalRate = remainingBudget / remainingTimeMs;
|
|
327
|
+
// Cumulative successful tokens so far
|
|
328
|
+
const g_t = health.tokensUsedThisWindow;
|
|
329
|
+
// Cold-start cost for switching to fallback
|
|
330
|
+
const tau = this.estimateColdStartLatency(fallbackProvider);
|
|
331
|
+
// Break-even rate: the rate at which staying = switching
|
|
332
|
+
// From MVT: g'(t*) = g(t*) / (t* + τ)
|
|
333
|
+
// In our terms: marginal_rate = cumulative_rate * (t* / (t* + τ))
|
|
334
|
+
// But here we use: avg_rate_including_switch = g_t / (windowElapsed + τ)
|
|
335
|
+
// This is the rate INCLUDING the cost of switching (we lose τ ms of this window)
|
|
336
|
+
const avgRateIncludingSwitch = g_t / (windowElapsed + tau);
|
|
337
|
+
// MVT says: LEAVE when marginal_rate ≤ avg_rate_including_switch
|
|
338
|
+
// (the marginal gain from staying ≤ the average gain achievable including switch cost)
|
|
339
|
+
// STAY when marginal_rate > avg_rate_including_switch
|
|
340
|
+
// (we can still get more from this window than the switch costs us)
|
|
341
|
+
const ROTATION_THRESHOLD_FACTOR = 1.0; // 1.0 = exact MVT; >1 = leave earlier, <1 = stay longer
|
|
342
|
+
if (marginalRate <= avgRateIncludingSwitch * ROTATION_THRESHOLD_FACTOR) {
|
|
343
|
+
return true; // MVT says: leave this patch
|
|
344
|
+
}
|
|
345
|
+
return false; // MVT says: stay in this patch
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Get the marginal rate for a provider (tokens/ms remaining in window).
|
|
349
|
+
* Useful for monitoring and debugging MVT decisions.
|
|
350
|
+
*/
|
|
351
|
+
getMarginalRate(provider) {
|
|
352
|
+
const health = this.health.get(provider);
|
|
353
|
+
if (!health || health.rateLimitWindowStart === 0)
|
|
354
|
+
return null;
|
|
355
|
+
const now = Date.now();
|
|
356
|
+
const windowElapsed = now - health.rateLimitWindowStart;
|
|
357
|
+
const remainingBudget = Math.max(0, health.rateLimitTokens - health.tokensUsedThisWindow);
|
|
358
|
+
const remainingTimeMs = Math.max(1, health.rateLimitWindowMs - windowElapsed);
|
|
359
|
+
const marginalRate = remainingBudget / remainingTimeMs;
|
|
360
|
+
const utilizationPct = (health.tokensUsedThisWindow / health.rateLimitTokens) * 100;
|
|
361
|
+
return { marginalRate, remainingBudget, remainingTimeMs, utilizationPct };
|
|
362
|
+
}
|
|
231
363
|
/**
|
|
232
364
|
* Mark provider as disabled (manual circuit breaker)
|
|
233
365
|
*/
|
|
@@ -310,6 +442,13 @@ class ProviderHealthManager extends events_1.EventEmitter {
|
|
|
310
442
|
isHealthy: true,
|
|
311
443
|
cooldownUntil: 0,
|
|
312
444
|
healthScore: 1.0,
|
|
445
|
+
// === MVT RATE-LIMIT DEFAULTS ===
|
|
446
|
+
// Conservative defaults: 1M tokens/min (most free tier providers)
|
|
447
|
+
tokensUsedThisWindow: 0,
|
|
448
|
+
rateLimitWindowStart: now,
|
|
449
|
+
rateLimitTokens: 1_000_000,
|
|
450
|
+
rateLimitWindowMs: 60_000,
|
|
451
|
+
avgTokensPerRequest: 500, // conservative default estimate
|
|
313
452
|
});
|
|
314
453
|
this.metrics.set(provider, []);
|
|
315
454
|
}
|
|
@@ -368,7 +507,54 @@ class ProviderHealthManager extends events_1.EventEmitter {
|
|
|
368
507
|
}
|
|
369
508
|
exports.ProviderHealthManager = ProviderHealthManager;
|
|
370
509
|
// ============================================================
|
|
371
|
-
//
|
|
510
|
+
// ============================================================
|
|
511
|
+
// EXPORTS
|
|
372
512
|
// ============================================================
|
|
373
513
|
exports.default = ProviderHealthManager;
|
|
514
|
+
/** Singleton instance for use across the app without DI */
|
|
515
|
+
exports.globalHealthManager = new ProviderHealthManager();
|
|
516
|
+
/**
|
|
517
|
+
* Stateless MVT rate-limit rotation helper.
|
|
518
|
+
* Call this after routeQuery returns to check if the selected provider
|
|
519
|
+
* should be rotated away from due to rate-limit depletion.
|
|
520
|
+
*
|
|
521
|
+
* Uses Charnov (1976): g'(t*) = g(t*) / (t* + τ)
|
|
522
|
+
* Leave when marginal rate ≤ avg rate including switch cost.
|
|
523
|
+
*
|
|
524
|
+
* @param providerHealth - current provider health state (from healthManager.getHealth())
|
|
525
|
+
* @param fallbackProviderLatencyMs - estimated cold-start latency for fallback
|
|
526
|
+
* @param estimatedTokensThisCall - estimated tokens for this request
|
|
527
|
+
* @returns true if MVT recommends rotation
|
|
528
|
+
*/
|
|
529
|
+
function mvtShouldRotate(providerHealth, fallbackProviderLatencyMs, estimatedTokensThisCall = 500) {
|
|
530
|
+
const now = Date.now();
|
|
531
|
+
// No window started yet — stay
|
|
532
|
+
if (providerHealth.rateLimitWindowStart === 0)
|
|
533
|
+
return false;
|
|
534
|
+
const windowElapsed = now - providerHealth.rateLimitWindowStart;
|
|
535
|
+
// Window is fresh — stay
|
|
536
|
+
if (windowElapsed < 100)
|
|
537
|
+
return false;
|
|
538
|
+
// Already depleted — rotate immediately
|
|
539
|
+
if (providerHealth.tokensUsedThisWindow >= providerHealth.rateLimitTokens)
|
|
540
|
+
return true;
|
|
541
|
+
// Remaining budget after this call
|
|
542
|
+
const budgetAfter = providerHealth.rateLimitTokens - providerHealth.tokensUsedThisWindow - estimatedTokensThisCall;
|
|
543
|
+
// If this call would exceed the limit, recommend rotation
|
|
544
|
+
if (budgetAfter < 0)
|
|
545
|
+
return true;
|
|
546
|
+
const remainingTimeMs = Math.max(1, providerHealth.rateLimitWindowMs - windowElapsed);
|
|
547
|
+
// Marginal rate: tokens/ms we can still consume this window after this call
|
|
548
|
+
const marginalRate = budgetAfter / remainingTimeMs;
|
|
549
|
+
// Cumulative tokens used so far (proxy for g(t*))
|
|
550
|
+
const g_t = providerHealth.tokensUsedThisWindow;
|
|
551
|
+
// τ = cold-start latency for fallback
|
|
552
|
+
const tau = fallbackProviderLatencyMs;
|
|
553
|
+
// Break-even rate: avg rate including switch cost
|
|
554
|
+
// From MVT: g'(t*) = g(t*) / (t* + τ)
|
|
555
|
+
// Our marginal rate should exceed this to justify staying
|
|
556
|
+
const avgRateIncludingSwitch = g_t / (windowElapsed + tau);
|
|
557
|
+
// Leave when marginal ≤ break-even (MVT optimality condition)
|
|
558
|
+
return marginalRate <= avgRateIncludingSwitch;
|
|
559
|
+
}
|
|
374
560
|
//# sourceMappingURL=providerHealth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providerHealth.js","sourceRoot":"","sources":["../../src/routing/providerHealth.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"providerHealth.js","sourceRoot":"","sources":["../../src/routing/providerHealth.ts"],"names":[],"mappings":"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"}
|
|
@@ -113,4 +113,3 @@ export declare class ProviderRetryHandler {
|
|
|
113
113
|
export declare function createRetryHandler(customConfigs?: ProviderRetryConfig): ProviderRetryHandler;
|
|
114
114
|
export declare function getDefaultRetryHandler(): ProviderRetryHandler;
|
|
115
115
|
export { DEFAULT_RETRY_CONFIG, PROVIDER_CONTEXT_LIMITS, };
|
|
116
|
-
//# sourceMappingURL=providerRetry.d.ts.map
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ShadowSampler — Value-Proportional Shadow Verification
|
|
3
|
+
*
|
|
4
|
+
* Implements Optimal Defense Theory (Rhoades 1979; McKey 1974; Zangerl & Bazzaz 1992)
|
|
5
|
+
* from plant ecological economics:
|
|
6
|
+
*
|
|
7
|
+
* "A plant allocates defensive compounds (defense cost) in proportion to
|
|
8
|
+
* tissue value, attack probability, and the marginal cost of defense."
|
|
9
|
+
*
|
|
10
|
+
* Mapped to A3M routing:
|
|
11
|
+
* - Tissue value → query stakes / expected cost of wrong answer
|
|
12
|
+
* - Attack probability → probability that the primary provider fails/misbehaves
|
|
13
|
+
* - Defense cost → cost of the shadow verification call
|
|
14
|
+
* - Marginal return → expected reduction in error rate from verification
|
|
15
|
+
*
|
|
16
|
+
* Instead of binary always-on (wasteful) or always-off (risky), ODT says:
|
|
17
|
+
* Sample shadow verification PROPORTIONALLY to expected value of verification.
|
|
18
|
+
*
|
|
19
|
+
* The sampling probability is:
|
|
20
|
+
* P(shadow) = f(expected_error_cost_reduction, query_risk)
|
|
21
|
+
*
|
|
22
|
+
* This is NOT the Zahavi "shared expert" (which always runs on 100% of queries).
|
|
23
|
+
* ODT shadow runs probabilistically — only on queries where the expected
|
|
24
|
+
* verification benefit exceeds the verification cost.
|
|
25
|
+
*
|
|
26
|
+
* Usage:
|
|
27
|
+
* const sampler = new ShadowSampler();
|
|
28
|
+
* const decision = await sampler.routeWithShadow(query, { strategy: 'auto' });
|
|
29
|
+
* // decision.hasShadow === true iff we sampled a shadow provider
|
|
30
|
+
* // decision.primaryResult and decision.shadowResult are compared automatically
|
|
31
|
+
*/
|
|
32
|
+
import { extractQueryFeatures, RouteDecision } from './advancedRouter';
|
|
33
|
+
export interface ShadowSamplerConfig {
|
|
34
|
+
/**
|
|
35
|
+
* Minimum query stakes (estimated cost of wrong answer) to consider shadow.
|
|
36
|
+
* Below this, P(shadow) = 0 regardless of other factors.
|
|
37
|
+
* In dollars — what a wrong answer costs you.
|
|
38
|
+
* Default: $0.01 (1 cent — roughly equivalent to a simple API call cost)
|
|
39
|
+
*/
|
|
40
|
+
minQueryStake?: number;
|
|
41
|
+
/**
|
|
42
|
+
* Maximum probability of shadow verification.
|
|
43
|
+
* Set to 1.0 for always-on (Zahavi-style, expensive).
|
|
44
|
+
* Default: 0.15 (15% — ODT-proportional sampling)
|
|
45
|
+
*/
|
|
46
|
+
maxShadowProbability?: number;
|
|
47
|
+
/**
|
|
48
|
+
* Risk threshold (from QueryFeatures.risk_profile) above which
|
|
49
|
+
* shadow probability scales up linearly.
|
|
50
|
+
* 0.0 = no risk scaling (all queries get same P(shadow))
|
|
51
|
+
* 0.5 = medium risk scales P(shadow) by 50%
|
|
52
|
+
* 1.0 = high risk scales P(shadow) by 100%
|
|
53
|
+
*/
|
|
54
|
+
riskScalingFactor?: number;
|
|
55
|
+
/**
|
|
56
|
+
* Cost scaling factor — if query is expensive (large output),
|
|
57
|
+
* shadow is more worthwhile (higher P(shadow)).
|
|
58
|
+
* 0.0 = no cost scaling.
|
|
59
|
+
* Default: 0.3 (expensive queries get moderate boost in P(shadow))
|
|
60
|
+
*/
|
|
61
|
+
costScalingFactor?: number;
|
|
62
|
+
/**
|
|
63
|
+
* Provider to use as shadow (cheapest reliable provider).
|
|
64
|
+
* If not specified, auto-selected from available providers.
|
|
65
|
+
*/
|
|
66
|
+
shadowProvider?: string;
|
|
67
|
+
/**
|
|
68
|
+
* Always use this shadow provider (overrides auto-selection).
|
|
69
|
+
*/
|
|
70
|
+
forceShadowProvider?: boolean;
|
|
71
|
+
/**
|
|
72
|
+
* If true, use complexity as a signal for verification value.
|
|
73
|
+
* Complex queries (code, math, reasoning) benefit more from verification.
|
|
74
|
+
* Default: true
|
|
75
|
+
*/
|
|
76
|
+
useComplexitySignal?: boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Debug mode: always shadow regardless of sampling.
|
|
79
|
+
* Default: false
|
|
80
|
+
*/
|
|
81
|
+
forceShadow?: boolean;
|
|
82
|
+
}
|
|
83
|
+
export interface ShadowDecision extends RouteDecision {
|
|
84
|
+
/** Whether a shadow provider was sampled for this query */
|
|
85
|
+
hasShadow: boolean;
|
|
86
|
+
/** The sampled shadow provider (null if no shadow) */
|
|
87
|
+
shadowProvider: string | null;
|
|
88
|
+
/** Shadow sampling probability that was used */
|
|
89
|
+
shadowProbability: number;
|
|
90
|
+
/** The query features that triggered shadow decision */
|
|
91
|
+
features: ReturnType<typeof extractQueryFeatures>;
|
|
92
|
+
/** ODT rationale for the shadow decision */
|
|
93
|
+
shadowReasoning: string;
|
|
94
|
+
}
|
|
95
|
+
export interface ShadowedResponse {
|
|
96
|
+
primary: string;
|
|
97
|
+
shadow: string | null;
|
|
98
|
+
winner: 'primary' | 'shadow' | 'tie' | 'no-shadow';
|
|
99
|
+
confidenceDelta: number;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Optimal Defense Theory Shadow Sampler
|
|
103
|
+
*
|
|
104
|
+
* Allocates shadow verification proportionally to query value and risk.
|
|
105
|
+
*
|
|
106
|
+
* The ODT sampling probability:
|
|
107
|
+
* P_shadow = min(maxP, baseP + risk_adj + cost_adj + complexity_adj)
|
|
108
|
+
*
|
|
109
|
+
* where:
|
|
110
|
+
* baseP = baseline verification rate (ODT " constitutive defense")
|
|
111
|
+
* risk_adj = risk_profile scaling (ODT "induced defense")
|
|
112
|
+
* cost_adj = output cost scaling (value of correct answer)
|
|
113
|
+
* complexity_adj = query complexity signal
|
|
114
|
+
*/
|
|
115
|
+
export declare class ShadowSampler {
|
|
116
|
+
private config;
|
|
117
|
+
private _shadowProvider;
|
|
118
|
+
private _shadowCount;
|
|
119
|
+
private _totalCount;
|
|
120
|
+
constructor(config?: ShadowSamplerConfig);
|
|
121
|
+
/**
|
|
122
|
+
* Auto-select the cheapest available provider as the shadow.
|
|
123
|
+
* Excludes the primary provider to ensure diversity.
|
|
124
|
+
*/
|
|
125
|
+
private selectShadowProvider;
|
|
126
|
+
/**
|
|
127
|
+
* Estimate the query "stakes" — the expected cost of a wrong answer.
|
|
128
|
+
*
|
|
129
|
+
* ODT maps this to "tissue value": how much is this asset worth protecting?
|
|
130
|
+
* In routing terms: if this query fails, how much does it cost?
|
|
131
|
+
*
|
|
132
|
+
* We approximate this as:
|
|
133
|
+
* stake ≈ estimated_output_tokens × cost_per_token × criticality_multiplier
|
|
134
|
+
*
|
|
135
|
+
* where criticality is derived from query complexity and risk_profile.
|
|
136
|
+
*/
|
|
137
|
+
private estimateQueryStake;
|
|
138
|
+
/**
|
|
139
|
+
* Compute the ODT sampling probability for this query.
|
|
140
|
+
*
|
|
141
|
+
* ODT principle: defense (shadow) allocation ∝ expected benefit of defense.
|
|
142
|
+
* Expected benefit = P(failure) × cost_of_failure
|
|
143
|
+
*
|
|
144
|
+
* So P(shadow) scales with:
|
|
145
|
+
* 1. Query stake (expected cost of wrong answer)
|
|
146
|
+
* 2. Risk profile (probability of primary failure)
|
|
147
|
+
* 3. Output cost (verification ROI — cheaper outputs need less verification)
|
|
148
|
+
* 4. Complexity (complex queries benefit more from verification)
|
|
149
|
+
*/
|
|
150
|
+
private computeShadowProbability;
|
|
151
|
+
/**
|
|
152
|
+
* Route a query, with optional ODT-proportional shadow verification.
|
|
153
|
+
*
|
|
154
|
+
* @param prompt - The user query
|
|
155
|
+
* @param options - Routing options (same as routeQuery)
|
|
156
|
+
* @returns ShadowDecision with shadow metadata
|
|
157
|
+
*/
|
|
158
|
+
routeWithShadow(prompt: string, options?: {
|
|
159
|
+
available_models?: string[];
|
|
160
|
+
budget_multiplier?: number;
|
|
161
|
+
}): ShadowDecision;
|
|
162
|
+
/**
|
|
163
|
+
* Compare primary and shadow outputs.
|
|
164
|
+
* Returns the "better" answer and confidence delta.
|
|
165
|
+
*
|
|
166
|
+
* For production use: this would call both providers in parallel
|
|
167
|
+
* and compare outputs. For now, returns a stub that signals
|
|
168
|
+
* the caller should handle comparison.
|
|
169
|
+
*/
|
|
170
|
+
compareOutputs(primaryAnswer: string, shadowAnswer: string | null): Promise<ShadowedResponse>;
|
|
171
|
+
/**
|
|
172
|
+
* Get sampling statistics for monitoring.
|
|
173
|
+
*/
|
|
174
|
+
getStats(): {
|
|
175
|
+
shadowCount: number;
|
|
176
|
+
totalCount: number;
|
|
177
|
+
shadowRate: number;
|
|
178
|
+
};
|
|
179
|
+
/**
|
|
180
|
+
* Reset statistics counters.
|
|
181
|
+
*/
|
|
182
|
+
resetStats(): void;
|
|
183
|
+
/**
|
|
184
|
+
* Update configuration at runtime.
|
|
185
|
+
*/
|
|
186
|
+
configure(config: Partial<ShadowSamplerConfig>): void;
|
|
187
|
+
}
|