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.
Files changed (104) hide show
  1. package/AGENT_COUNCIL_FINDINGS.md +123 -98
  2. package/ARCHITECTURE.md +1 -1
  3. package/CAMPAIGN_SUMMARY.md +87 -0
  4. package/ENTERPRISE_INTEGRATIONS.md +94 -0
  5. package/INTEGRATION_PROGRESS.md +96 -0
  6. package/OPPORTUNITIES_100.md +277 -0
  7. package/POPULARITY_BOOSTERS.md +1 -1
  8. package/README.md +143 -173
  9. package/README_ja.md +16 -20
  10. package/README_zh.md +13 -17
  11. package/TODO_BROWSER_AUTOMATION.md +87 -0
  12. package/a3m-integrations-summary.md +73 -0
  13. package/articles/CHINESE_DIRECTORIES.md +2 -2
  14. package/articles/CHINESE_SUBMISSIONS_READY.md +5 -5
  15. package/articles/HN_POST_READY.md +16 -20
  16. package/articles/HN_SHOW_SEO.md +49 -0
  17. package/articles/INDIEHACKERS_READY.md +19 -34
  18. package/articles/PRODUCTHUNT_READY.md +47 -67
  19. package/articles/REDDIT_SEO_2026.md +50 -0
  20. package/demo/IMPROVED_PROMPTS.md +3 -3
  21. package/demo/VEO3_PROMPTS.md +2 -2
  22. package/demo/VIDEO_PRODUCTION_GUIDE.md +3 -3
  23. package/dist/analytics/costAnalytics.d.ts +0 -1
  24. package/dist/benchmark/reproducible.d.ts +0 -1
  25. package/dist/cache/semanticCache.d.ts +0 -1
  26. package/dist/cost/budgetEnforcer.d.ts +0 -1
  27. package/dist/cost/costTracker.d.ts +0 -1
  28. package/dist/ensemble/multiRoundDialog.d.ts +0 -1
  29. package/dist/ensemble/shapleyValue.d.ts +0 -1
  30. package/dist/ensemble.d.ts +0 -1
  31. package/dist/index.d.ts +0 -1
  32. package/dist/integrations/oauth.d.ts +0 -1
  33. package/dist/integrations/scienceAdapter.d.ts +0 -1
  34. package/dist/memory/autoFetch.d.ts +0 -1
  35. package/dist/memory/hybridMemory.d.ts +0 -1
  36. package/dist/memory/memoryTree.d.ts +0 -1
  37. package/dist/memory/obsidianVault.d.ts +0 -1
  38. package/dist/memory/reasoningBank.d.ts +0 -1
  39. package/dist/observability/changeWatch.d.ts +0 -1
  40. package/dist/observability/fatigueDetector.d.ts +0 -1
  41. package/dist/observability/index.d.ts +0 -1
  42. package/dist/observability/metrics.d.ts +0 -1
  43. package/dist/observability/middleware.d.ts +0 -1
  44. package/dist/observability/tracer.d.ts +0 -1
  45. package/dist/observability/types.d.ts +0 -1
  46. package/dist/providers/providerConfig.d.ts +0 -1
  47. package/dist/routing/advancedRouter.d.ts +1 -2
  48. package/dist/routing/advancedRouter.js +84 -0
  49. package/dist/routing/advancedRouter.js.map +1 -1
  50. package/dist/routing/crossModelValidation.d.ts +0 -1
  51. package/dist/routing/providerHealth.d.ts +77 -2
  52. package/dist/routing/providerHealth.js +190 -4
  53. package/dist/routing/providerHealth.js.map +1 -1
  54. package/dist/routing/providerRetry.d.ts +0 -1
  55. package/dist/routing/shadowSampler.d.ts +187 -0
  56. package/dist/routing/shadowSampler.js +306 -0
  57. package/dist/routing/shadowSampler.js.map +1 -0
  58. package/dist/sdk.d.ts +0 -1
  59. package/dist/security/guardrails.d.ts +0 -1
  60. package/dist/server/dashboard.d.ts +0 -1
  61. package/dist/server/handlers/chatHandler.d.ts +0 -1
  62. package/dist/server/handlers/completionsHandler.d.ts +0 -1
  63. package/dist/server/handlers/embeddingsHandler.d.ts +0 -1
  64. package/dist/server/handlers/healthHandler.d.ts +0 -1
  65. package/dist/server/handlers/metricsHandler.d.ts +0 -1
  66. package/dist/server/handlers/modelsHandler.d.ts +0 -1
  67. package/dist/server/metrics.d.ts +0 -1
  68. package/dist/server/modelMapper.d.ts +0 -1
  69. package/dist/server/proxyServer.d.ts +0 -1
  70. package/dist/server/router.d.ts +0 -1
  71. package/dist/server/state.d.ts +0 -1
  72. package/dist/tui/dashboard.d.ts +0 -1
  73. package/dist/utils/costUtils.d.ts +0 -1
  74. package/dist/utils/sorting.d.ts +0 -1
  75. package/dist/utils/tokenUtils.d.ts +0 -1
  76. package/docs/comparison-litellm.md +10 -18
  77. package/docs/index.html +29 -34
  78. package/docs/llms-full.txt +6 -6
  79. package/docs/llms.txt +21 -23
  80. package/docs-site/index.html +19 -19
  81. package/integrations/browser-use/README.md +155 -0
  82. package/integrations/browser-use/examples/form-filling.ts +179 -0
  83. package/integrations/browser-use/index.ts +145 -0
  84. package/integrations/browser-use/package.json +34 -0
  85. package/integrations/browser-use/tsconfig.json +17 -0
  86. package/integrations/mcp-browser/README.md +177 -0
  87. package/integrations/mcp-browser/package.json +38 -0
  88. package/integrations/mcp-browser/src/index.ts +297 -0
  89. package/integrations/sota-browser/README.md +191 -0
  90. package/integrations/sota-browser/package.json +34 -0
  91. package/llms-full.txt +6 -6
  92. package/llms.txt +22 -33
  93. package/mcp-server/package.json +0 -6
  94. package/mcp-server/tsconfig.json +2 -3
  95. package/package.json +3 -3
  96. package/sitemap.xml +15 -9
  97. package/src/routing/advancedRouter.ts +101 -0
  98. package/src/routing/providerHealth.ts +234 -4
  99. package/src/routing/shadowSampler.ts +427 -0
  100. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -94
  101. package/.github/ISSUE_TEMPLATE/checklist.md +0 -35
  102. package/.github/ISSUE_TEMPLATE/config.yml +0 -17
  103. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -71
  104. 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
- // Update health state
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
- // Exports
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
+ }