adaptive-memory-multi-model-router 2.14.17 → 2.14.18

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 (34) hide show
  1. package/AGENT_COUNCIL_FINDINGS.md +142 -0
  2. package/LAUNCH_CHECKLIST.md +141 -0
  3. package/README.md.bak +836 -0
  4. package/articles/CHINESE_SUBMISSIONS_READY.md +322 -0
  5. package/articles/DEVTO_READY.md +255 -0
  6. package/articles/HN_POST_READY.md +137 -0
  7. package/articles/INDIEHACKERS_READY.md +120 -0
  8. package/articles/NEWSLETTER_SEND_NOW.md +259 -0
  9. package/articles/PRODUCTHUNT_READY.md +106 -0
  10. package/articles/REDDIT_SUBMISSION_READY.md +348 -0
  11. package/articles/TWEET_STORM_READY.md +165 -0
  12. package/council-votes/architecture-vote.md +121 -0
  13. package/council-votes/coverage-vote.md +93 -0
  14. package/dist/cost/costTracker.d.ts +109 -44
  15. package/dist/cost/costTracker.js +321 -98
  16. package/dist/cost/costTracker.js.map +1 -1
  17. package/dist/index.d.ts +6 -4
  18. package/dist/routing/advancedRouter.d.ts +38 -43
  19. package/dist/routing/advancedRouter.js +394 -408
  20. package/dist/routing/advancedRouter.js.map +1 -1
  21. package/dist/routing/providers/providerConfig.d.ts +49 -0
  22. package/dist/routing/providers/providerConfig.js +883 -0
  23. package/dist/routing/routing/advancedRouter.d.ts +62 -0
  24. package/dist/routing/routing/advancedRouter.js +447 -0
  25. package/dist/routing/utils/tokenUtils.d.ts +52 -0
  26. package/dist/routing/utils/tokenUtils.js +129 -0
  27. package/dist/server/proxyServer.d.ts +1 -1
  28. package/package.json +1 -1
  29. package/research-log.md +49 -0
  30. package/src/cost/costTracker.ts +576 -0
  31. package/src/routing/advancedRouter.ts +536 -0
  32. package/test-council/AGENT_COUNCIL_ARCHITECTURE.md +349 -0
  33. package/tests/security/guardrailEngine.test.ts +700 -0
  34. package/research/PUBLISH_LOG.md +0 -3
@@ -1,44 +1,314 @@
1
1
  "use strict";
2
2
  /**
3
- * TMLPD Cost Tracker
3
+ * A3M Router - Budget Enforcer + Cost Tracker
4
4
  *
5
- * Tracks real-time spending across all providers.
6
- * Supports per-model budgets, spending alerts, and cost analysis.
5
+ * Hard budget enforcement for API key spend management:
6
+ * - Track spend per API key with monthly reset
7
+ * - Check budget before each request
8
+ * - Emit alerts at configurable thresholds (50%, 80%, 100%)
9
+ * - Support hard cap (reject requests) or soft cap (warn only)
10
+ * - In-memory storage (Redis backup can be added later)
11
+ *
12
+ * Plus legacy CostTracker for backward compatibility.
7
13
  */
8
14
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.CostTracker = void 0;
10
- // Cost per 1M tokens for known models (USD)
11
- const MODEL_COSTS = {
12
- // Anthropic
13
- "claude-3-5-sonnet-20241022": { input: 3.0, output: 15.0 },
14
- "claude-3-opus-20240229": { input: 15.0, output: 75.0 },
15
- "claude-3-sonnet-20240229": { input: 3.0, output: 15.0 },
16
- "claude-3-haiku-20240307": { input: 0.25, output: 1.25 },
17
- // OpenAI
18
- "gpt-4o": { input: 2.5, output: 10.0 },
19
- "gpt-4-turbo": { input: 10.0, output: 30.0 },
20
- "gpt-4": { input: 30.0, output: 60.0 },
21
- "gpt-3.5-turbo": { input: 0.5, output: 1.5 },
22
- // Google
23
- "gemini-1.5-pro": { input: 1.25, output: 5.0 },
24
- "gemini-1.5-flash": { input: 0.075, output: 0.3 },
25
- // Groq
26
- "llama-3.3-70b-versatile": { input: 0.59, output: 0.79 },
27
- "llama-3.1-8b-instant": { input: 0.05, output: 0.08 },
28
- // Cerebras
29
- "llama-3.3-70b": { input: 0.1, output: 0.1 },
30
- // Mistral
31
- "mistral-large-latest": { input: 2.0, output: 6.0 },
32
- "mistral-small-latest": { input: 0.2, output: 0.6 },
33
- // xAI
34
- "grok-2": { input: 2.0, output: 8.0 },
35
- "grok-2-mini": { input: 0.2, output: 0.8 },
36
- // OpenRouter (varies by model)
37
- "openai/gpt-4o": { input: 2.5, output: 10.0 },
38
- "anthropic/claude-3.5-sonnet": { input: 3.0, output: 15.0 },
39
- // ZAI (default estimate)
40
- "glm-5": { input: 0.1, output: 0.3 },
41
- "glm-4": { input: 0.1, output: 0.3 },
15
+ exports.CostTracker = exports.BudgetExceededError = exports.BudgetEnforcer = void 0;
16
+ exports.createBudgetEnforcer = createBudgetEnforcer;
17
+ const events_1 = require("events");
18
+ // ---------------------------------------------------------------------------
19
+ // BudgetEnforcer
20
+ // ---------------------------------------------------------------------------
21
+ class BudgetEnforcer extends events_1.EventEmitter {
22
+ budgets = new Map();
23
+ spend = new Map();
24
+ // Default alert thresholds: 50%, 80%, 100%
25
+ static DEFAULT_THRESHOLDS = [0.5, 0.8, 1.0];
26
+ constructor() {
27
+ super();
28
+ }
29
+ // ---- Configuration ----
30
+ /**
31
+ * Set budget for an API key
32
+ */
33
+ setBudget(apiKey, monthlyLimit, options) {
34
+ const config = {
35
+ apiKey,
36
+ monthlyLimit,
37
+ alertThresholds: options?.alertThresholds ?? BudgetEnforcer.DEFAULT_THRESHOLDS,
38
+ hardCap: options?.hardCap ?? false,
39
+ };
40
+ this.budgets.set(apiKey, config);
41
+ // Initialize spend record if not exists
42
+ if (!this.spend.has(apiKey)) {
43
+ this.spend.set(apiKey, {
44
+ apiKey,
45
+ spent: 0,
46
+ budget: monthlyLimit,
47
+ remaining: monthlyLimit,
48
+ resetDate: this.getNextResetDate(),
49
+ alertEmitted: new Set(),
50
+ });
51
+ }
52
+ }
53
+ /**
54
+ * Get current budget config for an API key
55
+ */
56
+ getBudgetConfig(apiKey) {
57
+ return this.budgets.get(apiKey);
58
+ }
59
+ /**
60
+ * Remove budget config (stops tracking)
61
+ */
62
+ removeBudget(apiKey) {
63
+ this.budgets.delete(apiKey);
64
+ this.spend.delete(apiKey);
65
+ }
66
+ // ---- Budget Checking ----
67
+ /**
68
+ * Check if a request is allowed within budget
69
+ */
70
+ checkBudget(apiKey, additionalCost) {
71
+ // Auto-initialize if no budget set (permissive default)
72
+ if (!this.budgets.has(apiKey)) {
73
+ return {
74
+ allowed: true,
75
+ remaining: Infinity,
76
+ };
77
+ }
78
+ // Check for reset
79
+ this.checkAndReset(apiKey);
80
+ const record = this.spend.get(apiKey);
81
+ const config = this.budgets.get(apiKey);
82
+ const projectedSpend = record.spent + additionalCost;
83
+ // Check if would exceed budget
84
+ if (projectedSpend > record.budget) {
85
+ if (config.hardCap) {
86
+ return {
87
+ allowed: false,
88
+ reason: `Budget exceeded. Spent: ${record.spent} cents, Budget: ${record.budget} cents, Additional: ${additionalCost} cents`,
89
+ remaining: record.remaining,
90
+ };
91
+ }
92
+ // Soft cap: allow but warn
93
+ this.emit('budget:warning', {
94
+ apiKey,
95
+ threshold: 1.0,
96
+ spent: record.spent,
97
+ budget: record.budget,
98
+ remaining: record.remaining,
99
+ message: `Soft cap: Budget would be exceeded by ${projectedSpend - record.budget} cents`,
100
+ });
101
+ }
102
+ return {
103
+ allowed: true,
104
+ remaining: record.remaining - additionalCost,
105
+ };
106
+ }
107
+ // ---- Spend Recording ----
108
+ /**
109
+ * Record spend for an API key
110
+ */
111
+ recordSpend(apiKey, cost) {
112
+ // Auto-initialize if no budget set
113
+ if (!this.budgets.has(apiKey)) {
114
+ return; // No budget to track
115
+ }
116
+ // Check for reset
117
+ this.checkAndReset(apiKey);
118
+ const record = this.spend.get(apiKey);
119
+ const config = this.budgets.get(apiKey);
120
+ const previousSpent = record.spent;
121
+ record.spent += cost;
122
+ record.remaining = record.budget - record.spent;
123
+ // Check thresholds
124
+ const utilization = record.spent / record.budget;
125
+ for (const threshold of config.alertThresholds ?? BudgetEnforcer.DEFAULT_THRESHOLDS) {
126
+ const thresholdKey = Math.round(threshold * 1000);
127
+ if (!record.alertEmitted.has(thresholdKey)) {
128
+ const previousUtilization = previousSpent / record.budget;
129
+ if (utilization >= threshold && previousUtilization < threshold) {
130
+ record.alertEmitted.add(thresholdKey);
131
+ this.emit('budget:warning', {
132
+ apiKey,
133
+ threshold,
134
+ spent: record.spent,
135
+ budget: record.budget,
136
+ remaining: record.remaining,
137
+ message: `Budget ${Math.round(threshold * 100)}% threshold reached`,
138
+ });
139
+ }
140
+ }
141
+ }
142
+ // Fire 100% event if budget exceeded (for hard cap tracking)
143
+ if (record.spent >= record.budget && previousSpent < record.budget) {
144
+ this.emit('budget:exceeded', {
145
+ apiKey,
146
+ spent: record.spent,
147
+ budget: record.budget,
148
+ remaining: 0,
149
+ });
150
+ }
151
+ }
152
+ // ---- Spend Queries ----
153
+ /**
154
+ * Get current spend record for an API key
155
+ */
156
+ getSpend(apiKey) {
157
+ if (!this.spend.has(apiKey)) {
158
+ return undefined;
159
+ }
160
+ const record = { ...this.spend.get(apiKey) };
161
+ // Convert Set to Array for serialization
162
+ record.alertEmitted = Array.from(record.alertEmitted);
163
+ return record;
164
+ }
165
+ /**
166
+ * Get all spend records
167
+ */
168
+ getAllSpend() {
169
+ return Array.from(this.spend.values()).map((record) => {
170
+ const copy = { ...record };
171
+ copy.alertEmitted = Array.from(record.alertEmitted);
172
+ return copy;
173
+ });
174
+ }
175
+ // ---- Budget Management ----
176
+ /**
177
+ * Reset budget for an API key (manual reset)
178
+ */
179
+ resetBudget(apiKey) {
180
+ if (!this.spend.has(apiKey)) {
181
+ return;
182
+ }
183
+ const record = this.spend.get(apiKey);
184
+ record.spent = 0;
185
+ record.remaining = record.budget;
186
+ record.resetDate = this.getNextResetDate();
187
+ record.alertEmitted.clear();
188
+ }
189
+ /**
190
+ * Reset all budgets
191
+ */
192
+ resetAll() {
193
+ for (const record of this.spend.values()) {
194
+ record.spent = 0;
195
+ record.remaining = record.budget;
196
+ record.resetDate = this.getNextResetDate();
197
+ record.alertEmitted.clear();
198
+ }
199
+ }
200
+ /**
201
+ * Update monthly limit for an API key
202
+ */
203
+ updateLimit(apiKey, monthlyLimit) {
204
+ if (!this.budgets.has(apiKey)) {
205
+ this.setBudget(apiKey, monthlyLimit);
206
+ return;
207
+ }
208
+ const config = this.budgets.get(apiKey);
209
+ config.monthlyLimit = monthlyLimit;
210
+ const record = this.spend.get(apiKey);
211
+ record.budget = monthlyLimit;
212
+ record.remaining = monthlyLimit - record.spent;
213
+ // Re-check if any thresholds are now exceeded
214
+ const utilization = record.spent / record.budget;
215
+ for (const threshold of config.alertThresholds ?? BudgetEnforcer.DEFAULT_THRESHOLDS) {
216
+ const thresholdKey = Math.round(threshold * 1000);
217
+ if (utilization >= threshold) {
218
+ record.alertEmitted.add(thresholdKey);
219
+ }
220
+ else {
221
+ record.alertEmitted.delete(thresholdKey);
222
+ }
223
+ }
224
+ }
225
+ // ---- Internal Helpers ----
226
+ /**
227
+ * Check if reset is needed and perform it
228
+ */
229
+ checkAndReset(apiKey) {
230
+ const record = this.spend.get(apiKey);
231
+ if (this.isResetDue(record.resetDate)) {
232
+ record.spent = 0;
233
+ record.remaining = record.budget;
234
+ record.resetDate = this.getNextResetDate();
235
+ record.alertEmitted.clear();
236
+ }
237
+ }
238
+ /**
239
+ * Check if monthly reset is due
240
+ */
241
+ isResetDue(resetDate) {
242
+ const now = new Date();
243
+ return now >= resetDate;
244
+ }
245
+ /**
246
+ * Get next monthly reset date
247
+ */
248
+ getNextResetDate() {
249
+ const now = new Date();
250
+ return new Date(now.getFullYear(), now.getMonth() + 1, 1);
251
+ }
252
+ /**
253
+ * Get days until next reset
254
+ */
255
+ getDaysUntilReset(apiKey) {
256
+ const record = this.spend.get(apiKey);
257
+ if (!record)
258
+ return undefined;
259
+ const now = Date.now();
260
+ const resetMs = record.resetDate.getTime();
261
+ return Math.max(0, Math.ceil((resetMs - now) / (1000 * 60 * 60 * 24)));
262
+ }
263
+ }
264
+ exports.BudgetEnforcer = BudgetEnforcer;
265
+ // ---------------------------------------------------------------------------
266
+ // Convenience Factory
267
+ // ---------------------------------------------------------------------------
268
+ function createBudgetEnforcer() {
269
+ return new BudgetEnforcer();
270
+ }
271
+ // ---------------------------------------------------------------------------
272
+ // Error Class for Hard Cap Violations
273
+ // ---------------------------------------------------------------------------
274
+ class BudgetExceededError extends Error {
275
+ apiKey;
276
+ spent;
277
+ budget;
278
+ remaining;
279
+ constructor(apiKey, spent, budget) {
280
+ const message = `Budget exceeded for API key ${apiKey}. Spent: ${spent} cents, Budget: ${budget} cents`;
281
+ super(message);
282
+ this.name = 'BudgetExceededError';
283
+ this.apiKey = apiKey;
284
+ this.spent = spent;
285
+ this.budget = budget;
286
+ this.remaining = budget - spent;
287
+ }
288
+ }
289
+ exports.BudgetExceededError = BudgetExceededError;
290
+ const LEGACY_MODEL_COSTS = {
291
+ 'claude-3-5-sonnet-20241022': { input: 3.0, output: 15.0 },
292
+ 'claude-3-opus-20240229': { input: 15.0, output: 75.0 },
293
+ 'claude-3-sonnet-20240229': { input: 3.0, output: 15.0 },
294
+ 'claude-3-haiku-20240307': { input: 0.25, output: 1.25 },
295
+ 'gpt-4o': { input: 2.5, output: 10.0 },
296
+ 'gpt-4-turbo': { input: 10.0, output: 30.0 },
297
+ 'gpt-4': { input: 30.0, output: 60.0 },
298
+ 'gpt-3.5-turbo': { input: 0.5, output: 1.5 },
299
+ 'gemini-1.5-pro': { input: 1.25, output: 5.0 },
300
+ 'gemini-1.5-flash': { input: 0.075, output: 0.3 },
301
+ 'llama-3.3-70b-versatile': { input: 0.59, output: 0.79 },
302
+ 'llama-3.1-8b-instant': { input: 0.05, output: 0.08 },
303
+ 'llama-3.3-70b': { input: 0.1, output: 0.1 },
304
+ 'mistral-large-latest': { input: 2.0, output: 6.0 },
305
+ 'mistral-small-latest': { input: 0.2, output: 0.6 },
306
+ 'grok-2': { input: 2.0, output: 8.0 },
307
+ 'grok-2-mini': { input: 0.2, output: 0.8 },
308
+ 'openai/gpt-4o': { input: 2.5, output: 10.0 },
309
+ 'anthropic/claude-3.5-sonnet': { input: 3.0, output: 15.0 },
310
+ 'glm-5': { input: 0.1, output: 0.3 },
311
+ 'glm-4': { input: 0.1, output: 0.3 },
42
312
  };
43
313
  class CostTracker {
44
314
  history = [];
@@ -53,23 +323,17 @@ class CostTracker {
53
323
  this.daily_reset = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1).getTime();
54
324
  this.monthly_reset = new Date(now.getFullYear(), now.getMonth() + 1, 1).getTime();
55
325
  }
56
- /**
57
- * Calculate cost for a model based on tokens
58
- */
59
326
  calculateCost(model, input_tokens, output_tokens) {
60
- const model_key = model.split("/").pop() || model;
61
- const rates = MODEL_COSTS[model_key] || { input: 1.0, output: 5.0 }; // Default estimate
327
+ const model_key = model.split('/').pop() || model;
328
+ const rates = LEGACY_MODEL_COSTS[model_key] || { input: 1.0, output: 5.0 };
62
329
  const input_cost = (input_tokens / 1_000_000) * rates.input;
63
330
  const output_cost = (output_tokens / 1_000_000) * rates.output;
64
331
  return {
65
- input: Math.round(input_cost * 1000000) / 1000000, // 6 decimal precision
332
+ input: Math.round(input_cost * 1000000) / 1000000,
66
333
  output: Math.round(output_cost * 1000000) / 1000000,
67
334
  total: Math.round((input_cost + output_cost) * 1000000) / 1000000,
68
335
  };
69
336
  }
70
- /**
71
- * Record a request's cost
72
- */
73
337
  record(provider, model, input_tokens, output_tokens) {
74
338
  const costs = this.calculateCost(model, input_tokens, output_tokens);
75
339
  const snapshot = {
@@ -86,60 +350,36 @@ class CostTracker {
86
350
  this.checkBudgets(snapshot);
87
351
  return snapshot;
88
352
  }
89
- /**
90
- * Check budgets and trigger alerts
91
- */
92
353
  checkBudgets(snapshot) {
93
354
  const summary = this.getSummary();
94
- const today = new Date().toISOString().split("T")[0];
355
+ const today = new Date().toISOString().split('T')[0];
95
356
  const month = today.substring(0, 7);
96
- // Check daily budget
97
357
  if (this.budgets.daily_limit) {
98
358
  const daily_cost = summary.daily_costs[today] || 0;
99
- if (daily_cost >= this.budgets.daily_limit * 0.9) { // Alert at 90%
100
- this.emitAlert({
101
- type: "daily",
102
- threshold: this.budgets.daily_limit,
103
- current: daily_cost,
104
- });
359
+ if (daily_cost >= this.budgets.daily_limit * 0.9) {
360
+ this.emitAlert({ type: 'daily', threshold: this.budgets.daily_limit, current: daily_cost });
105
361
  }
106
362
  }
107
- // Check monthly budget
108
363
  if (this.budgets.monthly_limit) {
109
364
  const monthly_cost = summary.monthly_costs[month] || 0;
110
365
  if (monthly_cost >= this.budgets.monthly_limit * 0.9) {
111
- this.emitAlert({
112
- type: "monthly",
113
- threshold: this.budgets.monthly_limit,
114
- current: monthly_cost,
115
- });
366
+ this.emitAlert({ type: 'monthly', threshold: this.budgets.monthly_limit, current: monthly_cost });
116
367
  }
117
368
  }
118
- // Check per-model budgets
119
369
  if (this.budgets.per_model_limits) {
120
370
  const model_limit = this.budgets.per_model_limits[snapshot.model];
121
371
  if (model_limit) {
122
372
  const model_cost = summary.by_model[snapshot.model] || 0;
123
373
  if (model_cost >= model_limit * 0.9) {
124
- this.emitAlert({
125
- type: "model",
126
- threshold: model_limit,
127
- current: model_cost,
128
- model: snapshot.model,
129
- });
374
+ this.emitAlert({ type: 'model', threshold: model_limit, current: model_cost, model: snapshot.model });
130
375
  }
131
376
  }
132
377
  }
133
378
  }
134
- /**
135
- * Emit an alert via callback
136
- */
137
379
  emitAlert(alert) {
138
- // Avoid duplicate alerts for same threshold
139
380
  const recent = this.alerts.find((a) => a.type === alert.type &&
140
381
  a.threshold === alert.threshold &&
141
- Date.now() - a._emitted_at < 3600000 // 1 hour cooldown
142
- );
382
+ Date.now() - a._emitted_at < 3600000);
143
383
  if (recent)
144
384
  return;
145
385
  alert._emitted_at = Date.now();
@@ -148,20 +388,11 @@ class CostTracker {
148
388
  this.alerts_callback(alert);
149
389
  }
150
390
  }
151
- /**
152
- * Register alert callback
153
- */
154
391
  onAlert(callback) {
155
392
  this.alerts_callback = callback;
156
393
  }
157
- /**
158
- * Get comprehensive cost summary
159
- */
160
394
  getSummary() {
161
395
  const nowMs = Date.now();
162
- const today = new Date().toISOString().split("T")[0];
163
- const month = today.substring(0, 7);
164
- // Reset if new day/month
165
396
  const nowDate = new Date(nowMs);
166
397
  if (nowMs >= this.daily_reset) {
167
398
  this.daily_reset = new Date(nowDate.getFullYear(), nowDate.getMonth(), nowDate.getDate() + 1).getTime();
@@ -182,7 +413,7 @@ class CostTracker {
182
413
  total_output_tokens += entry.output_tokens;
183
414
  by_provider[entry.provider] = (by_provider[entry.provider] || 0) + entry.total_cost;
184
415
  by_model[entry.model] = (by_model[entry.model] || 0) + entry.total_cost;
185
- const entry_date = new Date(entry.timestamp).toISOString().split("T")[0];
416
+ const entry_date = new Date(entry.timestamp).toISOString().split('T')[0];
186
417
  const entry_month = entry_date.substring(0, 7);
187
418
  daily_costs[entry_date] = (daily_costs[entry_date] || 0) + entry.total_cost;
188
419
  monthly_costs[entry_month] = (monthly_costs[entry_month] || 0) + entry.total_cost;
@@ -200,12 +431,9 @@ class CostTracker {
200
431
  : 0,
201
432
  };
202
433
  }
203
- /**
204
- * Get remaining budget
205
- */
206
434
  getRemainingBudget() {
207
435
  const summary = this.getSummary();
208
- const today = new Date().toISOString().split("T")[0];
436
+ const today = new Date().toISOString().split('T')[0];
209
437
  const month = today.substring(0, 7);
210
438
  return {
211
439
  daily: this.budgets.daily_limit
@@ -222,22 +450,17 @@ class CostTracker {
222
450
  : {},
223
451
  };
224
452
  }
225
- /**
226
- * Reset cost history
227
- */
228
453
  reset() {
229
454
  this.history = [];
230
455
  this.alerts = [];
231
456
  }
232
- /**
233
- * Export cost data for analysis
234
- */
235
457
  export() {
236
458
  return [...this.history];
237
459
  }
460
+ // Alias for getSummary (backward compat)
461
+ getStatus() {
462
+ return this.getSummary();
463
+ }
238
464
  }
239
- // Alias for convenience
240
- CostTracker.prototype.getStatus = CostTracker.prototype.getSummary;
241
-
242
465
  exports.CostTracker = CostTracker;
243
466
  //# sourceMappingURL=costTracker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"costTracker.js","sourceRoot":"","sources":["../../src/cost/costTracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"costTracker.js","sourceRoot":"","sources":["../../src/cost/costTracker.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -16,7 +16,9 @@ export { createProxyServer } from './server/proxyServer';
16
16
  export { Tracer, getTracer, createTracer, MetricsCollector, getMetrics, createMetricsCollector, observabilityMiddleware, observabilityPlugin, budgetAlertMiddleware, } from './observability';
17
17
  export type { Span, Metric, RouteTrace, ObservabilityEvent } from './observability';
18
18
  export { EnsembleOrchestrator, EnsembleStrategy, EnsembleResponse } from './ensemble';
19
+ import { routeQuery, routeBatch, recommendForTask } from './routing/advancedRouter';
19
20
  import { getAvailableProviders, healthCheck } from './providers/providerConfig';
21
+ import { CostTracker } from './cost/costTracker';
20
22
  import { MemoryTree } from './memory/memoryTree';
21
23
  import { EnsembleOrchestrator } from './ensemble';
22
24
  export interface A3MRouterOptions {
@@ -26,12 +28,12 @@ export interface A3MRouterOptions {
26
28
  costLimit?: number;
27
29
  }
28
30
  export declare function createA3MRouter(options?: A3MRouterOptions): {
29
- route: any;
30
- routeBatch: any;
31
- recommendForTask: any;
31
+ route: typeof routeQuery;
32
+ routeBatch: typeof routeBatch;
33
+ recommendForTask: typeof recommendForTask;
32
34
  getAvailableProviders: typeof getAvailableProviders;
33
35
  healthCheck: typeof healthCheck;
34
- costTracker: any;
36
+ costTracker: CostTracker;
35
37
  memoryTree: MemoryTree;
36
38
  ensemble: EnsembleOrchestrator;
37
39
  options: A3MRouterOptions;