adaptive-memory-multi-model-router 2.0.0 → 2.0.1
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/articles/DEVTO_V2_ANNOUNCEMENT.md +160 -0
- package/dist/index.d.ts +28 -1
- package/dist/index.js +75 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +95 -2
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "A3M Router v2.0: Now an OpenAI-Compatible AI Gateway with 39 Providers 🚀"
|
|
3
|
+
published: true
|
|
4
|
+
description: "Drop-in OpenAI proxy, LangChain adapter, guardrails, semantic cache, cost analytics, and 39 LLM providers — all in one npm package"
|
|
5
|
+
tags: node, javascript, ai, webdev
|
|
6
|
+
canonical_url: https://github.com/Das-rebel/adaptive-memory-multi-model-router
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
We just shipped A3M Router v2.0.0 — the biggest update since launch.
|
|
10
|
+
|
|
11
|
+
**What started as a simple routing library is now a full AI Gateway.**
|
|
12
|
+
|
|
13
|
+
## What's New
|
|
14
|
+
|
|
15
|
+
### 1. OpenAI-Compatible Proxy Server
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npx a3m-router serve
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
That's it. You now have an OpenAI-compatible API proxy running on `localhost:8787`.
|
|
22
|
+
|
|
23
|
+
```python
|
|
24
|
+
# Drop-in replacement — just change the base URL
|
|
25
|
+
from openai import OpenAI
|
|
26
|
+
|
|
27
|
+
client = OpenAI(
|
|
28
|
+
base_url="http://localhost:8787/v1",
|
|
29
|
+
api_key="not-needed" # A3M Router handles provider keys
|
|
30
|
+
)
|
|
31
|
+
|
|
32
|
+
response = client.chat.completions.create(
|
|
33
|
+
model="auto", # Intelligent routing
|
|
34
|
+
messages=[{"role": "user", "content": "Hello"}]
|
|
35
|
+
)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Any OpenAI SDK works without code changes.** Python, Node, LangChain, LlamaIndex — just point `base_url` to A3M Router.
|
|
39
|
+
|
|
40
|
+
### 2. Real-Time Dashboard
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
http://localhost:8787/
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Live dashboard showing:
|
|
47
|
+
- Request volume and costs
|
|
48
|
+
- Provider status (online/offline)
|
|
49
|
+
- Request log with routing decisions
|
|
50
|
+
- Cost breakdown by provider
|
|
51
|
+
|
|
52
|
+
### 3. LangChain Adapter
|
|
53
|
+
|
|
54
|
+
```javascript
|
|
55
|
+
import { A3MChatModel } from 'adaptive-memory-multi-model-router/langchain';
|
|
56
|
+
|
|
57
|
+
const model = new A3MChatModel({ modelName: 'auto' });
|
|
58
|
+
const response = await model.invoke([new HumanMessage("Hello")]);
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
Drop-in replacement for `ChatOpenAI`. Supports streaming, tool calling, and structured output.
|
|
62
|
+
|
|
63
|
+
### 4. Guardrails Engine
|
|
64
|
+
|
|
65
|
+
```javascript
|
|
66
|
+
import { GuardrailEngine } from 'adaptive-memory-multi-model-router';
|
|
67
|
+
|
|
68
|
+
const guardrail = new GuardrailEngine({
|
|
69
|
+
promptInjection: true,
|
|
70
|
+
piiDetection: true,
|
|
71
|
+
contentFilter: true
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
const result = await guardrail.checkInput(userInput);
|
|
75
|
+
if (result.blocked) {
|
|
76
|
+
// Prompt injection or PII detected
|
|
77
|
+
console.log(result.reason);
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Built-in detection for:
|
|
82
|
+
- Prompt injection attempts
|
|
83
|
+
- PII (emails, phones, SSNs, credit cards, API keys)
|
|
84
|
+
- Harmful content
|
|
85
|
+
- Language detection for routing
|
|
86
|
+
|
|
87
|
+
### 5. Semantic Cache
|
|
88
|
+
|
|
89
|
+
```javascript
|
|
90
|
+
import { SemanticCache } from 'adaptive-memory-multi-model-router';
|
|
91
|
+
|
|
92
|
+
const cache = new SemanticCache({ similarityThreshold: 0.92 });
|
|
93
|
+
|
|
94
|
+
// First query: miss, calls provider
|
|
95
|
+
const result1 = await cache.get("What is Python?");
|
|
96
|
+
|
|
97
|
+
// Semantically similar: HIT (no API call!)
|
|
98
|
+
const result2 = await cache.get("Tell me about Python");
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Catches semantically similar queries using n-gram similarity. No embedding API needed.
|
|
102
|
+
|
|
103
|
+
### 6. Cost Analytics
|
|
104
|
+
|
|
105
|
+
```javascript
|
|
106
|
+
import { CostAnalytics } from 'adaptive-memory-multi-model-router';
|
|
107
|
+
|
|
108
|
+
const analytics = new CostAnalytics();
|
|
109
|
+
analytics.record({ provider: 'groq', cost: 0.001, latency: 420 });
|
|
110
|
+
|
|
111
|
+
const savings = analytics.getSavings('openai');
|
|
112
|
+
// Total saved: $X, XX% cheaper, projected monthly savings: $Y
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### 7. 39 Providers (was 12)
|
|
116
|
+
|
|
117
|
+
New providers added:
|
|
118
|
+
- **Local**: Ollama, LM Studio, vLLM
|
|
119
|
+
- **Cheap/Fast**: DeepInfra, Together AI, Fireworks, Anyscale, Novita, SambaNova
|
|
120
|
+
- **Mid-tier**: Cohere, Perplexity, AI21
|
|
121
|
+
- **Asian**: DeepSeek, Moonshot, Qwen, Zhipu, Yi
|
|
122
|
+
- **Enterprise**: Azure OpenAI, AWS Bedrock, Google Vertex
|
|
123
|
+
|
|
124
|
+
## Quick Start
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# Install
|
|
128
|
+
npm install adaptive-memory-multi-model-router
|
|
129
|
+
|
|
130
|
+
# Start the gateway
|
|
131
|
+
npx a3m-router serve
|
|
132
|
+
|
|
133
|
+
# Or use as a library
|
|
134
|
+
node -e "const { createA3MRouter } = require('adaptive-memory-multi-model-router'); ..."
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
## The Numbers
|
|
138
|
+
|
|
139
|
+
| Metric | v1.9.5 | v2.0.0 |
|
|
140
|
+
|--------|--------|--------|
|
|
141
|
+
| Providers | 12 | 39 |
|
|
142
|
+
| Exports | 13 | 17 |
|
|
143
|
+
| Proxy server | ❌ | ✅ |
|
|
144
|
+
| Dashboard | ❌ | ✅ |
|
|
145
|
+
| LangChain | ❌ | ✅ |
|
|
146
|
+
| Guardrails | Basic | Full engine |
|
|
147
|
+
| Semantic cache | ❌ | ✅ |
|
|
148
|
+
| Cost analytics | Basic | Full analytics |
|
|
149
|
+
|
|
150
|
+
## Links
|
|
151
|
+
|
|
152
|
+
- **GitHub**: https://github.com/Das-rebel/adaptive-memory-multi-model-router
|
|
153
|
+
- **NPM**: https://www.npmjs.com/package/adaptive-memory-multi-model-router
|
|
154
|
+
- **872+ weekly downloads**
|
|
155
|
+
|
|
156
|
+
MIT license. Open source. No vendor lock-in.
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
*Built because I was tired of marketing claims. Sharing the data so you don't have to benchmark yourself.*
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,31 @@
|
|
|
1
|
+
export { routeQuery, routeBatch, recommendForTask, extractQueryFeatures, MODEL_PROFILES, updateModelProfile, getProviderHealth, } from './routing/advancedRouter';
|
|
2
|
+
export { DEFAULT_PROVIDERS, getAvailableProviders, registerProvider, deregisterProvider, updateProvider, healthCheck, checkAllProviders, findCheapestAvailableProvider, findFastestAvailableProvider, loadConfig, saveConfig, } from './providers/providerConfig';
|
|
3
|
+
export type { ProviderTier, ProviderFormat, ProviderType, ProviderCost, ProviderDefinition, } from './providers/providerConfig';
|
|
4
|
+
export { CostTracker } from './cost/costTracker';
|
|
5
|
+
export { MemoryTree } from './memory/memoryTree';
|
|
6
|
+
export type { MemoryChunk, TreeNode } from './memory/memoryTree';
|
|
7
|
+
export { countTokens, estimateTokens } from './utils/tokenUtils';
|
|
8
|
+
export { MODEL_COSTS } from './utils/tokenUtils';
|
|
1
9
|
export { SemanticCache } from './cache/semanticCache';
|
|
2
10
|
export { GuardrailEngine } from './security/guardrails';
|
|
3
11
|
export { CostAnalytics } from './analytics/costAnalytics';
|
|
4
|
-
export {
|
|
12
|
+
export { createProxyServer } from './server/proxyServer';
|
|
13
|
+
import { getAvailableProviders, healthCheck } from './providers/providerConfig';
|
|
14
|
+
import { MemoryTree } from './memory/memoryTree';
|
|
15
|
+
export interface A3MRouterOptions {
|
|
16
|
+
defaultProvider?: string;
|
|
17
|
+
enableCache?: boolean;
|
|
18
|
+
enableGuardrails?: boolean;
|
|
19
|
+
costLimit?: number;
|
|
20
|
+
}
|
|
21
|
+
export declare function createA3MRouter(options?: A3MRouterOptions): {
|
|
22
|
+
route: any;
|
|
23
|
+
routeBatch: any;
|
|
24
|
+
recommendForTask: any;
|
|
25
|
+
getAvailableProviders: typeof getAvailableProviders;
|
|
26
|
+
healthCheck: typeof healthCheck;
|
|
27
|
+
costTracker: any;
|
|
28
|
+
memoryTree: MemoryTree;
|
|
29
|
+
options: A3MRouterOptions;
|
|
30
|
+
};
|
|
31
|
+
export default createA3MRouter;
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,56 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
// A3M Router - Main Entry Point
|
|
3
|
+
// Version: 2.0.0
|
|
2
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
|
|
5
|
+
exports.createProxyServer = exports.CostAnalytics = exports.GuardrailEngine = exports.SemanticCache = exports.MODEL_COSTS = exports.estimateTokens = exports.countTokens = exports.MemoryTree = exports.CostTracker = exports.saveConfig = exports.loadConfig = exports.findFastestAvailableProvider = exports.findCheapestAvailableProvider = exports.checkAllProviders = exports.healthCheck = exports.updateProvider = exports.deregisterProvider = exports.registerProvider = exports.getAvailableProviders = exports.DEFAULT_PROVIDERS = exports.getProviderHealth = exports.updateModelProfile = exports.MODEL_PROFILES = exports.extractQueryFeatures = exports.recommendForTask = exports.routeBatch = exports.routeQuery = void 0;
|
|
6
|
+
exports.createA3MRouter = createA3MRouter;
|
|
7
|
+
// ============================================================
|
|
8
|
+
// ROUTING ENGINE
|
|
9
|
+
// ============================================================
|
|
10
|
+
var advancedRouter_1 = require("./routing/advancedRouter");
|
|
11
|
+
Object.defineProperty(exports, "routeQuery", { enumerable: true, get: function () { return advancedRouter_1.routeQuery; } });
|
|
12
|
+
Object.defineProperty(exports, "routeBatch", { enumerable: true, get: function () { return advancedRouter_1.routeBatch; } });
|
|
13
|
+
Object.defineProperty(exports, "recommendForTask", { enumerable: true, get: function () { return advancedRouter_1.recommendForTask; } });
|
|
14
|
+
Object.defineProperty(exports, "extractQueryFeatures", { enumerable: true, get: function () { return advancedRouter_1.extractQueryFeatures; } });
|
|
15
|
+
Object.defineProperty(exports, "MODEL_PROFILES", { enumerable: true, get: function () { return advancedRouter_1.MODEL_PROFILES; } });
|
|
16
|
+
Object.defineProperty(exports, "updateModelProfile", { enumerable: true, get: function () { return advancedRouter_1.updateModelProfile; } });
|
|
17
|
+
Object.defineProperty(exports, "getProviderHealth", { enumerable: true, get: function () { return advancedRouter_1.getProviderHealth; } });
|
|
18
|
+
// ============================================================
|
|
19
|
+
// PROVIDERS
|
|
20
|
+
// ============================================================
|
|
21
|
+
var providerConfig_1 = require("./providers/providerConfig");
|
|
22
|
+
Object.defineProperty(exports, "DEFAULT_PROVIDERS", { enumerable: true, get: function () { return providerConfig_1.DEFAULT_PROVIDERS; } });
|
|
23
|
+
Object.defineProperty(exports, "getAvailableProviders", { enumerable: true, get: function () { return providerConfig_1.getAvailableProviders; } });
|
|
24
|
+
Object.defineProperty(exports, "registerProvider", { enumerable: true, get: function () { return providerConfig_1.registerProvider; } });
|
|
25
|
+
Object.defineProperty(exports, "deregisterProvider", { enumerable: true, get: function () { return providerConfig_1.deregisterProvider; } });
|
|
26
|
+
Object.defineProperty(exports, "updateProvider", { enumerable: true, get: function () { return providerConfig_1.updateProvider; } });
|
|
27
|
+
Object.defineProperty(exports, "healthCheck", { enumerable: true, get: function () { return providerConfig_1.healthCheck; } });
|
|
28
|
+
Object.defineProperty(exports, "checkAllProviders", { enumerable: true, get: function () { return providerConfig_1.checkAllProviders; } });
|
|
29
|
+
Object.defineProperty(exports, "findCheapestAvailableProvider", { enumerable: true, get: function () { return providerConfig_1.findCheapestAvailableProvider; } });
|
|
30
|
+
Object.defineProperty(exports, "findFastestAvailableProvider", { enumerable: true, get: function () { return providerConfig_1.findFastestAvailableProvider; } });
|
|
31
|
+
Object.defineProperty(exports, "loadConfig", { enumerable: true, get: function () { return providerConfig_1.loadConfig; } });
|
|
32
|
+
Object.defineProperty(exports, "saveConfig", { enumerable: true, get: function () { return providerConfig_1.saveConfig; } });
|
|
33
|
+
// ============================================================
|
|
34
|
+
// COST TRACKING
|
|
35
|
+
// ============================================================
|
|
36
|
+
var costTracker_1 = require("./cost/costTracker");
|
|
37
|
+
Object.defineProperty(exports, "CostTracker", { enumerable: true, get: function () { return costTracker_1.CostTracker; } });
|
|
38
|
+
// ============================================================
|
|
39
|
+
// MEMORY
|
|
40
|
+
// ============================================================
|
|
41
|
+
var memoryTree_1 = require("./memory/memoryTree");
|
|
42
|
+
Object.defineProperty(exports, "MemoryTree", { enumerable: true, get: function () { return memoryTree_1.MemoryTree; } });
|
|
43
|
+
// ============================================================
|
|
44
|
+
// UTILITIES
|
|
45
|
+
// ============================================================
|
|
46
|
+
var tokenUtils_1 = require("./utils/tokenUtils");
|
|
47
|
+
Object.defineProperty(exports, "countTokens", { enumerable: true, get: function () { return tokenUtils_1.countTokens; } });
|
|
48
|
+
Object.defineProperty(exports, "estimateTokens", { enumerable: true, get: function () { return tokenUtils_1.estimateTokens; } });
|
|
49
|
+
var tokenUtils_2 = require("./utils/tokenUtils");
|
|
50
|
+
Object.defineProperty(exports, "MODEL_COSTS", { enumerable: true, get: function () { return tokenUtils_2.MODEL_COSTS; } });
|
|
51
|
+
// ============================================================
|
|
52
|
+
// v2.0.0 FEATURES
|
|
53
|
+
// ============================================================
|
|
5
54
|
var semanticCache_1 = require("./cache/semanticCache");
|
|
6
55
|
Object.defineProperty(exports, "SemanticCache", { enumerable: true, get: function () { return semanticCache_1.SemanticCache; } });
|
|
7
56
|
var guardrails_1 = require("./security/guardrails");
|
|
@@ -9,5 +58,28 @@ Object.defineProperty(exports, "GuardrailEngine", { enumerable: true, get: funct
|
|
|
9
58
|
var costAnalytics_1 = require("./analytics/costAnalytics");
|
|
10
59
|
Object.defineProperty(exports, "CostAnalytics", { enumerable: true, get: function () { return costAnalytics_1.CostAnalytics; } });
|
|
11
60
|
var proxyServer_1 = require("./server/proxyServer");
|
|
12
|
-
Object.defineProperty(exports, "
|
|
61
|
+
Object.defineProperty(exports, "createProxyServer", { enumerable: true, get: function () { return proxyServer_1.createProxyServer; } });
|
|
62
|
+
// ============================================================
|
|
63
|
+
// CONVENIENCE: Create a router instance
|
|
64
|
+
// ============================================================
|
|
65
|
+
const advancedRouter_2 = require("./routing/advancedRouter");
|
|
66
|
+
const providerConfig_2 = require("./providers/providerConfig");
|
|
67
|
+
const costTracker_2 = require("./cost/costTracker");
|
|
68
|
+
const memoryTree_2 = require("./memory/memoryTree");
|
|
69
|
+
function createA3MRouter(options) {
|
|
70
|
+
const costTracker = new costTracker_2.CostTracker();
|
|
71
|
+
const memoryTree = new memoryTree_2.MemoryTree();
|
|
72
|
+
return {
|
|
73
|
+
route: advancedRouter_2.routeQuery,
|
|
74
|
+
routeBatch: advancedRouter_2.routeBatch,
|
|
75
|
+
recommendForTask: advancedRouter_2.recommendForTask,
|
|
76
|
+
getAvailableProviders: providerConfig_2.getAvailableProviders,
|
|
77
|
+
healthCheck: providerConfig_2.healthCheck,
|
|
78
|
+
costTracker,
|
|
79
|
+
memoryTree,
|
|
80
|
+
options: options || {},
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
// Default export
|
|
84
|
+
exports.default = createA3MRouter;
|
|
13
85
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,gCAAgC;AAChC,iBAAiB;;;AAgFjB,0CAcC;AA5FD,+DAA+D;AAC/D,iBAAiB;AACjB,+DAA+D;AAC/D,2DAQkC;AAPhC,4GAAA,UAAU,OAAA;AACV,4GAAA,UAAU,OAAA;AACV,kHAAA,gBAAgB,OAAA;AAChB,sHAAA,oBAAoB,OAAA;AACpB,gHAAA,cAAc,OAAA;AACd,oHAAA,kBAAkB,OAAA;AAClB,mHAAA,iBAAiB,OAAA;AAGnB,+DAA+D;AAC/D,YAAY;AACZ,+DAA+D;AAC/D,6DAYoC;AAXlC,mHAAA,iBAAiB,OAAA;AACjB,uHAAA,qBAAqB,OAAA;AACrB,kHAAA,gBAAgB,OAAA;AAChB,oHAAA,kBAAkB,OAAA;AAClB,gHAAA,cAAc,OAAA;AACd,6GAAA,WAAW,OAAA;AACX,mHAAA,iBAAiB,OAAA;AACjB,+HAAA,6BAA6B,OAAA;AAC7B,8HAAA,4BAA4B,OAAA;AAC5B,4GAAA,UAAU,OAAA;AACV,4GAAA,UAAU,OAAA;AAWZ,+DAA+D;AAC/D,gBAAgB;AAChB,+DAA+D;AAC/D,kDAAiD;AAAxC,0GAAA,WAAW,OAAA;AAEpB,+DAA+D;AAC/D,SAAS;AACT,+DAA+D;AAC/D,kDAAiD;AAAxC,wGAAA,UAAU,OAAA;AAGnB,+DAA+D;AAC/D,YAAY;AACZ,+DAA+D;AAC/D,iDAAiE;AAAxD,yGAAA,WAAW,OAAA;AAAE,4GAAA,cAAc,OAAA;AACpC,iDAAiD;AAAxC,yGAAA,WAAW,OAAA;AAEpB,+DAA+D;AAC/D,kBAAkB;AAClB,+DAA+D;AAC/D,uDAAsD;AAA7C,8GAAA,aAAa,OAAA;AACtB,oDAAwD;AAA/C,6GAAA,eAAe,OAAA;AACxB,2DAA0D;AAAjD,8GAAA,aAAa,OAAA;AACtB,oDAAyD;AAAhD,gHAAA,iBAAiB,OAAA;AAE1B,+DAA+D;AAC/D,wCAAwC;AACxC,+DAA+D;AAC/D,6DAAoF;AACpF,+DAAgF;AAChF,oDAAiD;AACjD,oDAAiD;AASjD,SAAgB,eAAe,CAAC,OAA0B;IACxD,MAAM,WAAW,GAAG,IAAI,yBAAW,EAAE,CAAC;IACtC,MAAM,UAAU,GAAG,IAAI,uBAAU,EAAE,CAAC;IAEpC,OAAO;QACL,KAAK,EAAE,2BAAU;QACjB,UAAU,EAAV,2BAAU;QACV,gBAAgB,EAAhB,iCAAgB;QAChB,qBAAqB,EAArB,sCAAqB;QACrB,WAAW,EAAX,4BAAW;QACX,WAAW;QACX,UAAU;QACV,OAAO,EAAE,OAAO,IAAI,EAAE;KACvB,CAAC;AACJ,CAAC;AAED,iBAAiB;AACjB,kBAAe,eAAe,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "adaptive-memory-multi-model-router",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.1",
|
|
4
4
|
"shortName": "A3M Router",
|
|
5
5
|
"displayName": "A3M Router - Adaptive Memory Multi-Model Router",
|
|
6
6
|
"description": "\ud83d\udd00 Intelligent LLM routing engine with OpenAI-compatible proxy, LangChain adapter, guardrails, semantic cache, cost analytics, and 40+ providers",
|
package/src/index.ts
CHANGED
|
@@ -1,6 +1,99 @@
|
|
|
1
|
+
// A3M Router - Main Entry Point
|
|
2
|
+
// Version: 2.0.0
|
|
1
3
|
|
|
2
|
-
//
|
|
4
|
+
// ============================================================
|
|
5
|
+
// ROUTING ENGINE
|
|
6
|
+
// ============================================================
|
|
7
|
+
export {
|
|
8
|
+
routeQuery,
|
|
9
|
+
routeBatch,
|
|
10
|
+
recommendForTask,
|
|
11
|
+
extractQueryFeatures,
|
|
12
|
+
MODEL_PROFILES,
|
|
13
|
+
updateModelProfile,
|
|
14
|
+
getProviderHealth,
|
|
15
|
+
} from './routing/advancedRouter';
|
|
16
|
+
|
|
17
|
+
// ============================================================
|
|
18
|
+
// PROVIDERS
|
|
19
|
+
// ============================================================
|
|
20
|
+
export {
|
|
21
|
+
DEFAULT_PROVIDERS,
|
|
22
|
+
getAvailableProviders,
|
|
23
|
+
registerProvider,
|
|
24
|
+
deregisterProvider,
|
|
25
|
+
updateProvider,
|
|
26
|
+
healthCheck,
|
|
27
|
+
checkAllProviders,
|
|
28
|
+
findCheapestAvailableProvider,
|
|
29
|
+
findFastestAvailableProvider,
|
|
30
|
+
loadConfig,
|
|
31
|
+
saveConfig,
|
|
32
|
+
} from './providers/providerConfig';
|
|
33
|
+
|
|
34
|
+
export type {
|
|
35
|
+
ProviderTier,
|
|
36
|
+
ProviderFormat,
|
|
37
|
+
ProviderType,
|
|
38
|
+
ProviderCost,
|
|
39
|
+
ProviderDefinition,
|
|
40
|
+
} from './providers/providerConfig';
|
|
41
|
+
|
|
42
|
+
// ============================================================
|
|
43
|
+
// COST TRACKING
|
|
44
|
+
// ============================================================
|
|
45
|
+
export { CostTracker } from './cost/costTracker';
|
|
46
|
+
|
|
47
|
+
// ============================================================
|
|
48
|
+
// MEMORY
|
|
49
|
+
// ============================================================
|
|
50
|
+
export { MemoryTree } from './memory/memoryTree';
|
|
51
|
+
export type { MemoryChunk, TreeNode } from './memory/memoryTree';
|
|
52
|
+
|
|
53
|
+
// ============================================================
|
|
54
|
+
// UTILITIES
|
|
55
|
+
// ============================================================
|
|
56
|
+
export { countTokens, estimateTokens } from './utils/tokenUtils';
|
|
57
|
+
export { MODEL_COSTS } from './utils/tokenUtils';
|
|
58
|
+
|
|
59
|
+
// ============================================================
|
|
60
|
+
// v2.0.0 FEATURES
|
|
61
|
+
// ============================================================
|
|
3
62
|
export { SemanticCache } from './cache/semanticCache';
|
|
4
63
|
export { GuardrailEngine } from './security/guardrails';
|
|
5
64
|
export { CostAnalytics } from './analytics/costAnalytics';
|
|
6
|
-
export {
|
|
65
|
+
export { createProxyServer } from './server/proxyServer';
|
|
66
|
+
|
|
67
|
+
// ============================================================
|
|
68
|
+
// CONVENIENCE: Create a router instance
|
|
69
|
+
// ============================================================
|
|
70
|
+
import { routeQuery, routeBatch, recommendForTask } from './routing/advancedRouter';
|
|
71
|
+
import { getAvailableProviders, healthCheck } from './providers/providerConfig';
|
|
72
|
+
import { CostTracker } from './cost/costTracker';
|
|
73
|
+
import { MemoryTree } from './memory/memoryTree';
|
|
74
|
+
|
|
75
|
+
export interface A3MRouterOptions {
|
|
76
|
+
defaultProvider?: string;
|
|
77
|
+
enableCache?: boolean;
|
|
78
|
+
enableGuardrails?: boolean;
|
|
79
|
+
costLimit?: number;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export function createA3MRouter(options?: A3MRouterOptions) {
|
|
83
|
+
const costTracker = new CostTracker();
|
|
84
|
+
const memoryTree = new MemoryTree();
|
|
85
|
+
|
|
86
|
+
return {
|
|
87
|
+
route: routeQuery,
|
|
88
|
+
routeBatch,
|
|
89
|
+
recommendForTask,
|
|
90
|
+
getAvailableProviders,
|
|
91
|
+
healthCheck,
|
|
92
|
+
costTracker,
|
|
93
|
+
memoryTree,
|
|
94
|
+
options: options || {},
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
// Default export
|
|
99
|
+
export default createA3MRouter;
|