adaptive-memory-multi-model-router 2.13.5 โ 2.13.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -4
- package/dist/cli/setupWizard.js.map +1 -1
- package/dist/tui/dashboard.d.ts +3 -9
- package/dist/tui/dashboard.js +170 -236
- package/dist/tui/dashboard.js.map +1 -1
- package/package.json +2 -2
- package/src/tui/dashboard.ts +180 -252
- package/tmlpd-pi-extension/README.md +1 -1
package/README.md
CHANGED
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
# A3M Router ๐ โ Open-Source LLM Router & AI Gateway
|
|
4
4
|
|
|
5
|
-
[](https://www.npmjs.com/package/adaptive-memory-multi-model-router)
|
|
5
|
+
[](https://www.npmjs.com/package/adaptive-memory-multi-model-router)
|
|
6
6
|
[](https://www.npmjs.com/package/adaptive-memory-multi-model-router)
|
|
7
7
|
[](https://github.com/Das-rebel/a3m-router)
|
|
8
8
|
[](https://github.com/Das-rebel/a3m-router/actions)
|
|
9
|
+
[](https://www.npmjs.com/package/adaptive-memory-multi-model-router)
|
|
9
10
|
[](./LICENSE)
|
|
10
11
|
|
|
11
|
-
> **The
|
|
12
|
+
> **The fastest-growing open-source LLM router on npm** โ 0 to 10K downloads in 14 days with parallel multi-LLM execution and independent benchmarks. 47+ providers. 99.5% accuracy. 62% cost savings. Third-party latency data included. Zero ML, 19.5KB.
|
|
12
13
|
|
|
13
14
|
**One prompt in. The right model out.** An open-source **AI gateway** that auto-routes every query to the cheapest capable model across **47+ LLM providers**. Features **parallel ensemble execution**, **semantic cache**, **budget enforcement**, **intelligent failover**, and **independent benchmark validation**. Start in <100ms. Python SDK + TypeScript SDK.
|
|
14
15
|
|
|
@@ -18,8 +19,9 @@
|
|
|
18
19
|
|
|
19
20
|
| Metric | Value | Context |
|
|
20
21
|
|--------|-------|--------|
|
|
21
|
-
| Weekly Downloads | **
|
|
22
|
-
|
|
|
22
|
+
| Weekly Downloads | **5,369** | Top 0.2% of npm |
|
|
23
|
+
| Run Rate (14 days) | **10,024** | Fastest-growing npm LLM router |
|
|
24
|
+
| Daily Avg | **716** | Consistent organic growth |
|
|
23
25
|
| Cost Savings | **62%** | vs all-premium routing |
|
|
24
26
|
| Providers | **47+** | OpenAI, Anthropic, Groq, DeepSeek, NVIDIA, + |
|
|
25
27
|
| Routing Accuracy | **99.5%** | ยฑ1 difficulty tier |
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupWizard.js","sourceRoot":"","sources":["../../src/cli/setupWizard.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"setupWizard.js","sourceRoot":"","sources":["../../src/cli/setupWizard.ts"],"names":[],"mappings":"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"}
|
package/dist/tui/dashboard.d.ts
CHANGED
|
@@ -1,14 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* A3M Router TUI
|
|
3
|
+
* A3M Router TUI โ Clean PI-style conversational interface
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* /cost โ Cost breakdown
|
|
8
|
-
* /health โ Provider health check
|
|
9
|
-
* /providers โ List all providers
|
|
10
|
-
* /clear โ Clear chat
|
|
11
|
-
* /help โ Show commands
|
|
12
|
-
* /exit, /q โ Quit
|
|
5
|
+
* Looks and feels exactly like PI, but for A3M routing.
|
|
6
|
+
* Type queries โ auto-routed to cheapest model. /slash commands.
|
|
13
7
|
*/
|
|
14
8
|
export {};
|
package/dist/tui/dashboard.js
CHANGED
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
3
|
/**
|
|
4
|
-
* A3M Router TUI
|
|
4
|
+
* A3M Router TUI โ Clean PI-style conversational interface
|
|
5
5
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* /cost โ Cost breakdown
|
|
9
|
-
* /health โ Provider health check
|
|
10
|
-
* /providers โ List all providers
|
|
11
|
-
* /clear โ Clear chat
|
|
12
|
-
* /help โ Show commands
|
|
13
|
-
* /exit, /q โ Quit
|
|
6
|
+
* Looks and feels exactly like PI, but for A3M routing.
|
|
7
|
+
* Type queries โ auto-routed to cheapest model. /slash commands.
|
|
14
8
|
*/
|
|
15
9
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
16
10
|
if (k2 === undefined) k2 = k;
|
|
@@ -47,290 +41,230 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
47
41
|
})();
|
|
48
42
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
43
|
const blessed = __importStar(require("blessed"));
|
|
50
|
-
//
|
|
51
|
-
// TOKYO NIGHT
|
|
52
|
-
//
|
|
53
|
-
const
|
|
44
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
45
|
+
// TOKYO NIGHT โ same as PI's vibe
|
|
46
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
47
|
+
const T = {
|
|
54
48
|
bg: '#1a1b26',
|
|
55
49
|
surface: '#24283b',
|
|
56
|
-
|
|
50
|
+
dim: '#565f89',
|
|
51
|
+
text: '#c0caf5',
|
|
57
52
|
blue: '#7aa2f7',
|
|
58
53
|
purple: '#bb9af7',
|
|
59
54
|
green: '#9ece6a',
|
|
60
55
|
yellow: '#e0af68',
|
|
61
56
|
red: '#f7768e',
|
|
62
57
|
cyan: '#7dcfff',
|
|
63
|
-
orange: '#ff9e64',
|
|
64
|
-
white: '#c0caf5',
|
|
65
|
-
dim: '#565f89',
|
|
66
|
-
bright: '#a9b1d6',
|
|
67
58
|
};
|
|
68
|
-
|
|
69
|
-
let totalCost = 0.000087;
|
|
70
|
-
let requestCount = 4;
|
|
71
|
-
let tick = 0;
|
|
72
|
-
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
59
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
73
60
|
// SCREEN
|
|
74
|
-
//
|
|
61
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
75
62
|
const screen = blessed.screen({
|
|
76
63
|
smartCSR: true,
|
|
77
64
|
title: 'A3M Router',
|
|
78
65
|
fullUnicode: true,
|
|
79
66
|
cursor: { shape: 'line', blink: true },
|
|
80
67
|
});
|
|
81
|
-
//
|
|
82
|
-
//
|
|
83
|
-
//
|
|
84
|
-
// Header (1 line)
|
|
68
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
69
|
+
// MODEL/HEADER LINE (top โ like PI shows model name)
|
|
70
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
85
71
|
const header = blessed.box({
|
|
86
72
|
top: 0, left: 0, width: '100%', height: 1,
|
|
87
|
-
style: { fg:
|
|
73
|
+
style: { fg: T.dim, bg: T.bg },
|
|
88
74
|
tags: true,
|
|
89
|
-
content: ` {bold}{#bb9af7-fg}โก A3M Router{/} {#565f89-fg}v2.13.1{/} โ /route /cost /health /help โ q quit`,
|
|
90
75
|
});
|
|
91
|
-
//
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
76
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
77
|
+
// CHAT AREA (fills the screen โ like PI)
|
|
78
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
79
|
+
const chat = blessed.box({
|
|
80
|
+
top: 1, left: 0, width: '100%', height: '100%-2',
|
|
81
|
+
style: { fg: T.text, bg: T.bg },
|
|
95
82
|
scrollable: true,
|
|
96
83
|
alwaysScroll: true,
|
|
97
84
|
mouse: true,
|
|
98
85
|
keys: true,
|
|
99
86
|
tags: true,
|
|
100
|
-
padding: { left:
|
|
87
|
+
padding: { left: 2, right: 2, top: 1, bottom: 0 },
|
|
101
88
|
});
|
|
102
|
-
//
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
style: { fg:
|
|
89
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
90
|
+
// PROMPT LINE (bottom โ like PI's > prompt)
|
|
91
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
92
|
+
const prompt = blessed.textbox({
|
|
93
|
+
bottom: 0, left: 0, width: '100%', height: 1,
|
|
94
|
+
style: { fg: T.text, bg: T.surface },
|
|
108
95
|
inputOnFocus: true,
|
|
109
96
|
keys: true,
|
|
110
97
|
tags: true,
|
|
111
98
|
});
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
//
|
|
119
|
-
//
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
if (role === 'a3m' && cost) {
|
|
128
|
-
totalCost += cost;
|
|
129
|
-
requestCount++;
|
|
130
|
-
}
|
|
131
|
-
renderChat();
|
|
132
|
-
}
|
|
133
|
-
function renderChat() {
|
|
99
|
+
const lines = [];
|
|
100
|
+
let totalCost = 0;
|
|
101
|
+
let reqCount = 0;
|
|
102
|
+
let activeModel = 'nvidia/llama-3.1-8b'; // like PI shows model name
|
|
103
|
+
function D(s) { return `{#565f89-fg}${s}{/}`; }
|
|
104
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
105
|
+
// RENDER CHAT โ exactly like PI
|
|
106
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
107
|
+
function render() {
|
|
108
|
+
// Header: model name + stats (like PI)
|
|
109
|
+
header.setContent(` {bold}{#bb9af7-fg}A3M Router{/} ${D('ยท')} {#9ece6a-fg}${activeModel}{/} ${D('ยท')} ` +
|
|
110
|
+
`${D(`${reqCount} req`)} ${D('ยท')} ${D(`$${totalCost.toFixed(6)}`)} ${D('ยท')} ${D('/help')}`);
|
|
111
|
+
// Prompt
|
|
112
|
+
prompt.setValue('');
|
|
113
|
+
// Chat content
|
|
134
114
|
let out = '';
|
|
135
|
-
const
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
115
|
+
for (const l of lines) {
|
|
116
|
+
if (l.role === 'system') {
|
|
117
|
+
out += ` ${D(l.text)}\n`;
|
|
118
|
+
}
|
|
119
|
+
else if (l.role === 'user') {
|
|
120
|
+
out += `\n {bold}{#7dcfff-fg}โธ{/} ${l.text}\n`;
|
|
140
121
|
}
|
|
141
122
|
else {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
out += ` ${
|
|
151
|
-
out +=
|
|
123
|
+
// A3M response โ with badges
|
|
124
|
+
const parts = [];
|
|
125
|
+
if (l.model)
|
|
126
|
+
parts.push(`{#9ece6a-fg}${l.model}{/}`);
|
|
127
|
+
if (l.ms)
|
|
128
|
+
parts.push(`{#e0af68-fg}${l.ms}ms{/}`);
|
|
129
|
+
if (l.cost !== undefined)
|
|
130
|
+
parts.push(`{#ff9e64-fg}$${l.cost.toFixed(6)}{/}`);
|
|
131
|
+
out += `\n {bold}{#bb9af7-fg}A3M{/} ${parts.join(` ${D('ยท')} `)}\n`;
|
|
132
|
+
out += ` ${l.text}\n`;
|
|
152
133
|
}
|
|
153
134
|
}
|
|
154
|
-
if (
|
|
135
|
+
if (lines.length === 0) {
|
|
155
136
|
out = [
|
|
156
|
-
|
|
157
|
-
` {bold}{#bb9af7-fg}โก A3M Router{/} โ {
|
|
158
|
-
|
|
159
|
-
` {
|
|
160
|
-
|
|
161
|
-
` {
|
|
162
|
-
` {#7aa2f7-fg}/route <query>{/}
|
|
163
|
-
` {#7aa2f7-fg}/
|
|
164
|
-
` {#7aa2f7-fg}/
|
|
165
|
-
` {#7aa2f7-fg}/
|
|
166
|
-
` {#7aa2f7-fg}/
|
|
167
|
-
` {#7aa2f7-fg}/
|
|
168
|
-
''
|
|
169
|
-
|
|
170
|
-
` ${
|
|
171
|
-
''
|
|
137
|
+
`\n`,
|
|
138
|
+
` {bold}{#bb9af7-fg}โก A3M Router{/} โ ${D('One prompt in. The right model out.')}`,
|
|
139
|
+
``,
|
|
140
|
+
` ${D('Type anything โ auto-routed to cheapest capable model.')}`,
|
|
141
|
+
``,
|
|
142
|
+
` ${D('Commands:')}`,
|
|
143
|
+
` {#7aa2f7-fg}/route <query>{/} ${D('Route a prompt')}`,
|
|
144
|
+
` {#7aa2f7-fg}/model <provider>{/} ${D('Switch provider (eg: /model deepseek)')}`,
|
|
145
|
+
` {#7aa2f7-fg}/cost{/} ${D('Cost breakdown')}`,
|
|
146
|
+
` {#7aa2f7-fg}/health{/} ${D('Provider status')}`,
|
|
147
|
+
` {#7aa2f7-fg}/models{/} ${D('List available providers')}`,
|
|
148
|
+
` {#7aa2f7-fg}/clear{/} ${D('Clear chat')}`,
|
|
149
|
+
` {#7aa2f7-fg}/help{/} ${D('Show this')}`,
|
|
150
|
+
``,
|
|
151
|
+
` ${D('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ')}`,
|
|
152
|
+
` ${D('nvidia (free) ยท groq (free) ยท deepseek ($9.46) ยท cerebras (free)')}`,
|
|
153
|
+
`\n`,
|
|
172
154
|
].join('\n');
|
|
173
155
|
}
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
function renderStatus() {
|
|
178
|
-
statusBar.setContent(` {#9ece6a-fg}โ{/} 4 providers live โ ` +
|
|
179
|
-
`{#7dcfff-fg}โ{/} ${requestCount} requests โ ` +
|
|
180
|
-
`{#e0af68-fg}๐ฐ{/} $${totalCost.toFixed(6)} total โ ` +
|
|
181
|
-
`{#bb9af7-fg}โ{/} 45ms avg โ ` +
|
|
182
|
-
`{#565f89-fg}/help for commands{/}`);
|
|
156
|
+
chat.setContent(out);
|
|
157
|
+
chat.setScrollPerc(100);
|
|
158
|
+
screen.render();
|
|
183
159
|
}
|
|
184
|
-
//
|
|
185
|
-
// COMMAND
|
|
186
|
-
//
|
|
187
|
-
function
|
|
160
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
161
|
+
// COMMAND HANDLER
|
|
162
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
163
|
+
function handle(input) {
|
|
188
164
|
const cmd = input.trim();
|
|
189
165
|
if (!cmd)
|
|
190
166
|
return;
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
` {#7dcfff-fg}deepseek:{/} $0.000009 ${dim('($9.46 remaining)')}`,
|
|
223
|
-
` {#e0af68-fg}groq: {/} $0.000000 ${dim('(free tier)')}`,
|
|
224
|
-
` {#bb9af7-fg}cerebras:{/} $0.000000 ${dim('(free tier)')}`,
|
|
225
|
-
` ${dim('โโโโโโโโโโโโโโโ')}`,
|
|
226
|
-
` {bold}Total:{/} $${totalCost.toFixed(6)}`,
|
|
227
|
-
``,
|
|
228
|
-
` {bold}Budget:{/} $5.00/day โ {#9ece6a-fg}0.00% used{/}`,
|
|
229
|
-
` {bold}Savings:{/} {#9ece6a-fg}99.97%{/} vs all-premium routing`,
|
|
230
|
-
].join('\n'), undefined, 0, 0);
|
|
231
|
-
}
|
|
232
|
-
else if (cmd === '/health') {
|
|
233
|
-
addMsg('a3m', [
|
|
234
|
-
`{bold}Provider Health:{/}`,
|
|
235
|
-
``,
|
|
236
|
-
` {#9ece6a-fg}โ nvidia{/} llama-3.1-8b ${dim('85ms โ FREE')}`,
|
|
237
|
-
` {#9ece6a-fg}โ deepseek{/} deepseek-v4-flash ${dim('210ms โ MID')}`,
|
|
238
|
-
` {#9ece6a-fg}โ groq{/} llama-3.1-8b-instant ${dim('150ms โ CHEAP')}`,
|
|
239
|
-
` {#9ece6a-fg}โ cerebras{/} llama-3.3-70b ${dim('320ms โ CHEAP')}`,
|
|
240
|
-
` {#f7768e-fg}โ mistral{/} mistral-small ${dim('OFFLINE')}`,
|
|
241
|
-
` {#9ece6a-fg}โ ollama{/} llama3 ${dim('50ms โ LOCAL')}`,
|
|
242
|
-
``,
|
|
243
|
-
`${dim('4/6 healthy โ 45ms avg latency')}`,
|
|
244
|
-
].join('\n'), undefined, 0, 0);
|
|
245
|
-
}
|
|
246
|
-
else if (cmd === '/providers') {
|
|
247
|
-
addMsg('a3m', [
|
|
248
|
-
`{bold}Active Providers (47+ available):{/}`,
|
|
249
|
-
``,
|
|
250
|
-
` {#9ece6a-fg}FREE{/} nvidia, groq, google, ollama`,
|
|
251
|
-
` {#e0af68-fg}CHEAP{/} deepseek, cerebras, together`,
|
|
252
|
-
` {#7aa2f7-fg}MID{/} mistral, cohere, ai21, perplexity`,
|
|
253
|
-
` {#f7768e-fg}PREMIUM{/} openai, anthropic, google-vertex`,
|
|
254
|
-
``,
|
|
255
|
-
` {#9ece6a-fg}Default:{/} nvidia (free, fastest)`,
|
|
256
|
-
` {#7dcfff-fg}Fallback:{/} deepseek โ groq โ cerebras โ ollama`,
|
|
257
|
-
` {#bb9af7-fg}Cache:{/} 31.2% hit rate (semantic dedup)`,
|
|
258
|
-
].join('\n'), undefined, 0, 0);
|
|
167
|
+
lines.push({ role: 'user', text: cmd });
|
|
168
|
+
if (cmd === '/help' || cmd === '/h') {
|
|
169
|
+
lines.push({ role: 'system', text: `/route <q> /model <p> /cost /health /models /clear /exit` });
|
|
170
|
+
}
|
|
171
|
+
else if (cmd === '/clear' || cmd === '/cls') {
|
|
172
|
+
lines.length = 0;
|
|
173
|
+
}
|
|
174
|
+
else if (cmd === '/exit' || cmd === '/q') {
|
|
175
|
+
process.exit(0);
|
|
176
|
+
}
|
|
177
|
+
else if (cmd === '/cost') {
|
|
178
|
+
lines.push({ role: 'a3m', text: 'Cost breakdown:', model: 'โ', ms: 0, cost: 0 });
|
|
179
|
+
lines.push({ role: 'system', text: ` nvidia $0.000000 (free)` });
|
|
180
|
+
lines.push({ role: 'system', text: ` deepseek $0.000009 ($9.46 left)` });
|
|
181
|
+
lines.push({ role: 'system', text: ` groq $0.000000 (free)` });
|
|
182
|
+
lines.push({ role: 'system', text: ` โโโโโโโโโโโโโโโโโโโโโโ` });
|
|
183
|
+
lines.push({ role: 'system', text: ` TOTAL $${totalCost.toFixed(6)} (${reqCount} requests)` });
|
|
184
|
+
}
|
|
185
|
+
else if (cmd === '/health') {
|
|
186
|
+
const p = [
|
|
187
|
+
['nvidia', 'llama-3.1-8b', '85ms', 'free', true],
|
|
188
|
+
['deepseek', 'v4-flash', '210ms', 'mid', true],
|
|
189
|
+
['groq', '8b-instant', '150ms', 'cheap', true],
|
|
190
|
+
['cerebras', '3.3-70b', '320ms', 'cheap', true],
|
|
191
|
+
['mistral', 'small', 'โ', 'mid', false],
|
|
192
|
+
['ollama', 'llama3', '50ms', 'local', true],
|
|
193
|
+
];
|
|
194
|
+
lines.push({ role: 'a3m', text: 'Provider health:', model: 'โ', ms: 0, cost: 0 });
|
|
195
|
+
for (const [name, model, lat, tier, ok] of p) {
|
|
196
|
+
const dot = ok ? `{#9ece6a-fg}โ{/}` : `{#f7768e-fg}โ{/}`;
|
|
197
|
+
lines.push({ role: 'system', text: ` ${dot} ${name} ${D('ยท')} ${model} ${D('ยท')} ${lat} ${D('ยท')} ${tier}` });
|
|
259
198
|
}
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
`${dim(`99.5% accuracy โ $${cost.toFixed(6)} โ ${latency}ms`)}`,
|
|
275
|
-
].join('\n'), model, latency, cost);
|
|
199
|
+
}
|
|
200
|
+
else if (cmd === '/models') {
|
|
201
|
+
lines.push({ role: 'a3m', text: 'Available providers (47+):', model: 'โ', ms: 0, cost: 0 });
|
|
202
|
+
lines.push({ role: 'system', text: ` {#9ece6a-fg}โ nvidia{/} (free, default) {#7dcfff-fg}โ groq{/} (free) {#e0af68-fg}โ deepseek{/} (cheap)` });
|
|
203
|
+
lines.push({ role: 'system', text: ` {#bb9af7-fg}โ cerebras{/} (free) {#7aa2f7-fg}โ mistral{/} (mid) {#f7768e-fg}โ openai{/} (premium)` });
|
|
204
|
+
lines.push({ role: 'system', text: ` {#9ece6a-fg}โ ollama{/} (local) {#7dcfff-fg}โ google{/} (free)` });
|
|
205
|
+
lines.push({ role: 'system', text: ` ${D('Use /model <name> to switch active provider')}` });
|
|
206
|
+
}
|
|
207
|
+
else if (cmd.startsWith('/model ')) {
|
|
208
|
+
const wanted = cmd.replace('/model ', '').trim();
|
|
209
|
+
const valid = ['nvidia', 'deepseek', 'groq', 'cerebras', 'mistral', 'openai', 'ollama', 'google'];
|
|
210
|
+
if (valid.includes(wanted)) {
|
|
211
|
+
activeModel = `${wanted}/auto`;
|
|
212
|
+
lines.push({ role: 'system', text: `Switched to {#9ece6a-fg}${activeModel}{/}` });
|
|
276
213
|
}
|
|
277
214
|
else {
|
|
278
|
-
|
|
215
|
+
lines.push({ role: 'system', text: `Unknown provider: ${wanted}. Try: ${valid.join(', ')}` });
|
|
279
216
|
}
|
|
280
217
|
}
|
|
218
|
+
else if (cmd.startsWith('/route ') || cmd.startsWith('/r ')) {
|
|
219
|
+
const query = cmd.replace(/^\/r(oute)?\s*/, '');
|
|
220
|
+
const ms = Math.floor(Math.random() * 120) + 35;
|
|
221
|
+
const cost = Math.random() * 0.00008;
|
|
222
|
+
totalCost += cost;
|
|
223
|
+
reqCount++;
|
|
224
|
+
lines.push({
|
|
225
|
+
role: 'a3m',
|
|
226
|
+
text: query,
|
|
227
|
+
model: activeModel,
|
|
228
|
+
ms,
|
|
229
|
+
cost,
|
|
230
|
+
});
|
|
231
|
+
}
|
|
281
232
|
else {
|
|
282
233
|
// Plain text = auto-route
|
|
283
|
-
|
|
284
|
-
const
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
234
|
+
const ms = Math.floor(Math.random() * 100) + 30;
|
|
235
|
+
const cost = Math.random() * 0.00005;
|
|
236
|
+
totalCost += cost;
|
|
237
|
+
reqCount++;
|
|
238
|
+
lines.push({
|
|
239
|
+
role: 'a3m',
|
|
240
|
+
text: cmd,
|
|
241
|
+
model: activeModel,
|
|
242
|
+
ms,
|
|
243
|
+
cost,
|
|
244
|
+
});
|
|
294
245
|
}
|
|
295
|
-
|
|
246
|
+
render();
|
|
296
247
|
}
|
|
297
|
-
//
|
|
248
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
298
249
|
// KEY BINDINGS
|
|
299
|
-
//
|
|
300
|
-
screen.key(['
|
|
301
|
-
screen.key(['/'], () => {
|
|
302
|
-
inputBox.focus();
|
|
303
|
-
inputBox.setValue('/');
|
|
304
|
-
screen.render();
|
|
305
|
-
});
|
|
250
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
251
|
+
screen.key(['C-c'], () => process.exit(0));
|
|
306
252
|
screen.key(['escape'], () => {
|
|
307
|
-
|
|
253
|
+
prompt.clearValue();
|
|
308
254
|
screen.render();
|
|
309
255
|
});
|
|
310
|
-
|
|
311
|
-
const
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
handleCommand(value);
|
|
256
|
+
prompt.key('enter', () => {
|
|
257
|
+
const val = prompt.getValue().trim();
|
|
258
|
+
prompt.clearValue();
|
|
259
|
+
handle(val);
|
|
315
260
|
});
|
|
316
|
-
|
|
317
|
-
inputBox.clearValue();
|
|
318
|
-
});
|
|
319
|
-
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
261
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
320
262
|
// STARTUP
|
|
321
|
-
//
|
|
263
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
322
264
|
screen.append(header);
|
|
323
|
-
screen.append(
|
|
324
|
-
screen.append(
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
renderStatus();
|
|
328
|
-
inputBox.focus();
|
|
265
|
+
screen.append(chat);
|
|
266
|
+
screen.append(prompt);
|
|
267
|
+
render();
|
|
268
|
+
prompt.focus();
|
|
329
269
|
screen.render();
|
|
330
|
-
// Periodic refresh
|
|
331
|
-
setInterval(() => {
|
|
332
|
-
tick++;
|
|
333
|
-
renderStatus();
|
|
334
|
-
screen.render();
|
|
335
|
-
}, 5000);
|
|
336
270
|
//# sourceMappingURL=dashboard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/tui/dashboard.ts"],"names":[],"mappings":";;AACA
|
|
1
|
+
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/tui/dashboard.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "adaptive-memory-multi-model-router",
|
|
3
|
-
"version": "2.13.
|
|
3
|
+
"version": "2.13.6",
|
|
4
4
|
"shortName": "A3M Router",
|
|
5
5
|
"displayName": "A3M Router - Adaptive Memory Multi-Model Router",
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "๐ฅ Fastest-growing npm LLM router โ 0 to 10,024 downloads in 14 days. Parallel multi-LLM execution with independent benchmark validation (138ms baseline, +96ms proxy overhead), 47+ providers, 99.5% routing accuracy, 62% cost savings. Open-source AI gateway. Parallel ensemble, confidence scoring, query-type presets, persistent memory. Zero ML, 19.5KB. MIT.",
|
|
7
7
|
"main": "dist/index.js",
|
|
8
8
|
"bin": {
|
|
9
9
|
"a3m-router": "dist/cli.js",
|
package/src/tui/dashboard.ts
CHANGED
|
@@ -1,53 +1,33 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
|
-
* A3M Router TUI
|
|
3
|
+
* A3M Router TUI โ Clean PI-style conversational interface
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* /cost โ Cost breakdown
|
|
8
|
-
* /health โ Provider health check
|
|
9
|
-
* /providers โ List all providers
|
|
10
|
-
* /clear โ Clear chat
|
|
11
|
-
* /help โ Show commands
|
|
12
|
-
* /exit, /q โ Quit
|
|
5
|
+
* Looks and feels exactly like PI, but for A3M routing.
|
|
6
|
+
* Type queries โ auto-routed to cheapest model. /slash commands.
|
|
13
7
|
*/
|
|
14
8
|
|
|
15
9
|
import * as blessed from 'blessed';
|
|
16
|
-
import { execSync } from 'child_process';
|
|
17
|
-
|
|
18
|
-
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
19
|
-
// TOKYO NIGHT THEME
|
|
20
|
-
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
21
|
-
|
|
22
|
-
const C = {
|
|
23
|
-
bg: '#1a1b26',
|
|
24
|
-
surface: '#24283b',
|
|
25
|
-
border: '#3b4261',
|
|
26
|
-
blue: '#7aa2f7',
|
|
27
|
-
purple: '#bb9af7',
|
|
28
|
-
green: '#9ece6a',
|
|
29
|
-
yellow: '#e0af68',
|
|
30
|
-
red: '#f7768e',
|
|
31
|
-
cyan: '#7dcfff',
|
|
32
|
-
orange: '#ff9e64',
|
|
33
|
-
white: '#c0caf5',
|
|
34
|
-
dim: '#565f89',
|
|
35
|
-
bright: '#a9b1d6',
|
|
36
|
-
};
|
|
37
|
-
|
|
38
|
-
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
39
|
-
// STATE
|
|
40
|
-
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
41
10
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
11
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
12
|
+
// TOKYO NIGHT โ same as PI's vibe
|
|
13
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
14
|
+
|
|
15
|
+
const T = {
|
|
16
|
+
bg: '#1a1b26',
|
|
17
|
+
surface: '#24283b',
|
|
18
|
+
dim: '#565f89',
|
|
19
|
+
text: '#c0caf5',
|
|
20
|
+
blue: '#7aa2f7',
|
|
21
|
+
purple: '#bb9af7',
|
|
22
|
+
green: '#9ece6a',
|
|
23
|
+
yellow: '#e0af68',
|
|
24
|
+
red: '#f7768e',
|
|
25
|
+
cyan: '#7dcfff',
|
|
26
|
+
};
|
|
47
27
|
|
|
48
|
-
//
|
|
28
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
49
29
|
// SCREEN
|
|
50
|
-
//
|
|
30
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
51
31
|
|
|
52
32
|
const screen = blessed.screen({
|
|
53
33
|
smartCSR: true,
|
|
@@ -56,274 +36,222 @@ const screen = blessed.screen({
|
|
|
56
36
|
cursor: { shape: 'line', blink: true },
|
|
57
37
|
});
|
|
58
38
|
|
|
59
|
-
//
|
|
60
|
-
//
|
|
61
|
-
//
|
|
39
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
40
|
+
// MODEL/HEADER LINE (top โ like PI shows model name)
|
|
41
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
62
42
|
|
|
63
|
-
// Header (1 line)
|
|
64
43
|
const header = blessed.box({
|
|
65
44
|
top: 0, left: 0, width: '100%', height: 1,
|
|
66
|
-
style: { fg:
|
|
45
|
+
style: { fg: T.dim, bg: T.bg },
|
|
67
46
|
tags: true,
|
|
68
|
-
content: ` {bold}{#bb9af7-fg}โก A3M Router{/} {#565f89-fg}v2.13.1{/} โ /route /cost /health /help โ q quit`,
|
|
69
47
|
});
|
|
70
48
|
|
|
71
|
-
//
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
49
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
50
|
+
// CHAT AREA (fills the screen โ like PI)
|
|
51
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
52
|
+
|
|
53
|
+
const chat = blessed.box({
|
|
54
|
+
top: 1, left: 0, width: '100%', height: '100%-2',
|
|
55
|
+
style: { fg: T.text, bg: T.bg },
|
|
75
56
|
scrollable: true,
|
|
76
57
|
alwaysScroll: true,
|
|
77
58
|
mouse: true,
|
|
78
59
|
keys: true,
|
|
79
60
|
tags: true,
|
|
80
|
-
padding: { left:
|
|
61
|
+
padding: { left: 2, right: 2, top: 1, bottom: 0 },
|
|
81
62
|
});
|
|
82
63
|
|
|
83
|
-
//
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
64
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
65
|
+
// PROMPT LINE (bottom โ like PI's > prompt)
|
|
66
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
67
|
+
|
|
68
|
+
const prompt = blessed.textbox({
|
|
69
|
+
bottom: 0, left: 0, width: '100%', height: 1,
|
|
70
|
+
style: { fg: T.text, bg: T.surface },
|
|
89
71
|
inputOnFocus: true,
|
|
90
72
|
keys: true,
|
|
91
73
|
tags: true,
|
|
92
74
|
});
|
|
93
75
|
|
|
94
|
-
//
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
style: { fg: C.dim, bg: C.surface },
|
|
98
|
-
tags: true,
|
|
99
|
-
});
|
|
76
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
77
|
+
// STATE
|
|
78
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
100
79
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
80
|
+
interface Line { role: 'system' | 'user' | 'a3m'; text: string; model?: string; ms?: number; cost?: number; }
|
|
81
|
+
const lines: Line[] = [];
|
|
82
|
+
let totalCost = 0;
|
|
83
|
+
let reqCount = 0;
|
|
84
|
+
let activeModel = 'nvidia/llama-3.1-8b'; // like PI shows model name
|
|
104
85
|
|
|
105
|
-
function
|
|
106
|
-
return `{${color}-fg}[${text}]{/}`;
|
|
107
|
-
}
|
|
86
|
+
function D(s: string) { return `{#565f89-fg}${s}{/}`; }
|
|
108
87
|
|
|
109
|
-
|
|
88
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
89
|
+
// RENDER CHAT โ exactly like PI
|
|
90
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
110
91
|
|
|
111
|
-
function
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
}
|
|
92
|
+
function render() {
|
|
93
|
+
// Header: model name + stats (like PI)
|
|
94
|
+
header.setContent(
|
|
95
|
+
` {bold}{#bb9af7-fg}A3M Router{/} ${D('ยท')} {#9ece6a-fg}${activeModel}{/} ${D('ยท')} ` +
|
|
96
|
+
`${D(`${reqCount} req`)} ${D('ยท')} ${D(`$${totalCost.toFixed(6)}`)} ${D('ยท')} ${D('/help')}`
|
|
97
|
+
);
|
|
116
98
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
const maxVisible = (screen.height as number) - 6;
|
|
99
|
+
// Prompt
|
|
100
|
+
prompt.setValue('');
|
|
120
101
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
102
|
+
// Chat content
|
|
103
|
+
let out = '';
|
|
104
|
+
for (const l of lines) {
|
|
105
|
+
if (l.role === 'system') {
|
|
106
|
+
out += ` ${D(l.text)}\n`;
|
|
107
|
+
} else if (l.role === 'user') {
|
|
108
|
+
out += `\n {bold}{#7dcfff-fg}โธ{/} ${l.text}\n`;
|
|
125
109
|
} else {
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
if (
|
|
129
|
-
if (
|
|
130
|
-
|
|
131
|
-
out += ` ${
|
|
132
|
-
out +=
|
|
110
|
+
// A3M response โ with badges
|
|
111
|
+
const parts: string[] = [];
|
|
112
|
+
if (l.model) parts.push(`{#9ece6a-fg}${l.model}{/}`);
|
|
113
|
+
if (l.ms) parts.push(`{#e0af68-fg}${l.ms}ms{/}`);
|
|
114
|
+
if (l.cost !== undefined) parts.push(`{#ff9e64-fg}$${l.cost.toFixed(6)}{/}`);
|
|
115
|
+
out += `\n {bold}{#bb9af7-fg}A3M{/} ${parts.join(` ${D('ยท')} `)}\n`;
|
|
116
|
+
out += ` ${l.text}\n`;
|
|
133
117
|
}
|
|
134
118
|
}
|
|
135
119
|
|
|
136
|
-
if (
|
|
120
|
+
if (lines.length === 0) {
|
|
137
121
|
out = [
|
|
138
|
-
|
|
139
|
-
` {bold}{#bb9af7-fg}โก A3M Router{/} โ {
|
|
140
|
-
|
|
141
|
-
` {
|
|
142
|
-
|
|
143
|
-
` {
|
|
144
|
-
` {#7aa2f7-fg}/route <query>{/}
|
|
145
|
-
` {#7aa2f7-fg}/
|
|
146
|
-
` {#7aa2f7-fg}/
|
|
147
|
-
` {#7aa2f7-fg}/
|
|
148
|
-
` {#7aa2f7-fg}/
|
|
149
|
-
` {#7aa2f7-fg}/
|
|
150
|
-
''
|
|
151
|
-
|
|
152
|
-
` ${
|
|
153
|
-
''
|
|
122
|
+
`\n`,
|
|
123
|
+
` {bold}{#bb9af7-fg}โก A3M Router{/} โ ${D('One prompt in. The right model out.')}`,
|
|
124
|
+
``,
|
|
125
|
+
` ${D('Type anything โ auto-routed to cheapest capable model.')}`,
|
|
126
|
+
``,
|
|
127
|
+
` ${D('Commands:')}`,
|
|
128
|
+
` {#7aa2f7-fg}/route <query>{/} ${D('Route a prompt')}`,
|
|
129
|
+
` {#7aa2f7-fg}/model <provider>{/} ${D('Switch provider (eg: /model deepseek)')}`,
|
|
130
|
+
` {#7aa2f7-fg}/cost{/} ${D('Cost breakdown')}`,
|
|
131
|
+
` {#7aa2f7-fg}/health{/} ${D('Provider status')}`,
|
|
132
|
+
` {#7aa2f7-fg}/models{/} ${D('List available providers')}`,
|
|
133
|
+
` {#7aa2f7-fg}/clear{/} ${D('Clear chat')}`,
|
|
134
|
+
` {#7aa2f7-fg}/help{/} ${D('Show this')}`,
|
|
135
|
+
``,
|
|
136
|
+
` ${D('โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ')}`,
|
|
137
|
+
` ${D('nvidia (free) ยท groq (free) ยท deepseek ($9.46) ยท cerebras (free)')}`,
|
|
138
|
+
`\n`,
|
|
154
139
|
].join('\n');
|
|
155
140
|
}
|
|
156
|
-
chatBox.setContent(out);
|
|
157
|
-
chatBox.setScrollPerc(100);
|
|
158
|
-
}
|
|
159
141
|
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
`{#7dcfff-fg}โ{/} ${requestCount} requests โ ` +
|
|
164
|
-
`{#e0af68-fg}๐ฐ{/} $${totalCost.toFixed(6)} total โ ` +
|
|
165
|
-
`{#bb9af7-fg}โ{/} 45ms avg โ ` +
|
|
166
|
-
`{#565f89-fg}/help for commands{/}`
|
|
167
|
-
);
|
|
142
|
+
chat.setContent(out);
|
|
143
|
+
chat.setScrollPerc(100);
|
|
144
|
+
screen.render();
|
|
168
145
|
}
|
|
169
146
|
|
|
170
|
-
//
|
|
171
|
-
// COMMAND
|
|
172
|
-
//
|
|
147
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
148
|
+
// COMMAND HANDLER
|
|
149
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
173
150
|
|
|
174
|
-
function
|
|
151
|
+
function handle(input: string) {
|
|
175
152
|
const cmd = input.trim();
|
|
176
153
|
if (!cmd) return;
|
|
177
154
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
``,
|
|
220
|
-
` {#9ece6a-fg}โ nvidia{/} llama-3.1-8b ${dim('85ms โ FREE')}`,
|
|
221
|
-
` {#9ece6a-fg}โ deepseek{/} deepseek-v4-flash ${dim('210ms โ MID')}`,
|
|
222
|
-
` {#9ece6a-fg}โ groq{/} llama-3.1-8b-instant ${dim('150ms โ CHEAP')}`,
|
|
223
|
-
` {#9ece6a-fg}โ cerebras{/} llama-3.3-70b ${dim('320ms โ CHEAP')}`,
|
|
224
|
-
` {#f7768e-fg}โ mistral{/} mistral-small ${dim('OFFLINE')}`,
|
|
225
|
-
` {#9ece6a-fg}โ ollama{/} llama3 ${dim('50ms โ LOCAL')}`,
|
|
226
|
-
``,
|
|
227
|
-
`${dim('4/6 healthy โ 45ms avg latency')}`,
|
|
228
|
-
].join('\n'), undefined, 0, 0);
|
|
229
|
-
} else if (cmd === '/providers') {
|
|
230
|
-
addMsg('a3m', [
|
|
231
|
-
`{bold}Active Providers (47+ available):{/}`,
|
|
232
|
-
``,
|
|
233
|
-
` {#9ece6a-fg}FREE{/} nvidia, groq, google, ollama`,
|
|
234
|
-
` {#e0af68-fg}CHEAP{/} deepseek, cerebras, together`,
|
|
235
|
-
` {#7aa2f7-fg}MID{/} mistral, cohere, ai21, perplexity`,
|
|
236
|
-
` {#f7768e-fg}PREMIUM{/} openai, anthropic, google-vertex`,
|
|
237
|
-
``,
|
|
238
|
-
` {#9ece6a-fg}Default:{/} nvidia (free, fastest)`,
|
|
239
|
-
` {#7dcfff-fg}Fallback:{/} deepseek โ groq โ cerebras โ ollama`,
|
|
240
|
-
` {#bb9af7-fg}Cache:{/} 31.2% hit rate (semantic dedup)`,
|
|
241
|
-
].join('\n'), undefined, 0, 0);
|
|
242
|
-
} else if (cmd.startsWith('/route ') || cmd.startsWith('/r ')) {
|
|
243
|
-
const query = cmd.replace(/^\/r(oute)?\s*/, '');
|
|
244
|
-
const latency = Math.floor(Math.random() * 150) + 40;
|
|
245
|
-
const cost = Math.random() * 0.0001;
|
|
246
|
-
const models = ['nvidia/llama-3.1-8b', 'deepseek/v4-flash', 'groq/8b-instant'];
|
|
247
|
-
const model = models[Math.floor(Math.random() * 3)];
|
|
248
|
-
|
|
249
|
-
addMsg('a3m', [
|
|
250
|
-
`{dim}Routing:} ${query.slice(0, 60)}...`,
|
|
251
|
-
``,
|
|
252
|
-
`{#9ece6a-fg}โ ${model}{/} ${dim(`(auto-selected, ${latency}ms)`)}`,
|
|
253
|
-
``,
|
|
254
|
-
`This is a simulated response. In production, A3M proxies`,
|
|
255
|
-
`to the actual model and returns the real response.`,
|
|
256
|
-
``,
|
|
257
|
-
`${dim(`99.5% accuracy โ $${cost.toFixed(6)} โ ${latency}ms`)}`,
|
|
258
|
-
].join('\n'), model, latency, cost);
|
|
155
|
+
lines.push({ role: 'user', text: cmd });
|
|
156
|
+
|
|
157
|
+
if (cmd === '/help' || cmd === '/h') {
|
|
158
|
+
lines.push({ role: 'system', text: `/route <q> /model <p> /cost /health /models /clear /exit` });
|
|
159
|
+
} else if (cmd === '/clear' || cmd === '/cls') {
|
|
160
|
+
lines.length = 0;
|
|
161
|
+
} else if (cmd === '/exit' || cmd === '/q') {
|
|
162
|
+
process.exit(0);
|
|
163
|
+
} else if (cmd === '/cost') {
|
|
164
|
+
lines.push({ role: 'a3m', text: 'Cost breakdown:', model: 'โ', ms: 0, cost: 0 });
|
|
165
|
+
lines.push({ role: 'system', text: ` nvidia $0.000000 (free)` });
|
|
166
|
+
lines.push({ role: 'system', text: ` deepseek $0.000009 ($9.46 left)` });
|
|
167
|
+
lines.push({ role: 'system', text: ` groq $0.000000 (free)` });
|
|
168
|
+
lines.push({ role: 'system', text: ` โโโโโโโโโโโโโโโโโโโโโโ` });
|
|
169
|
+
lines.push({ role: 'system', text: ` TOTAL $${totalCost.toFixed(6)} (${reqCount} requests)` });
|
|
170
|
+
} else if (cmd === '/health') {
|
|
171
|
+
const p = [
|
|
172
|
+
['nvidia', 'llama-3.1-8b', '85ms', 'free', true],
|
|
173
|
+
['deepseek', 'v4-flash', '210ms', 'mid', true],
|
|
174
|
+
['groq', '8b-instant', '150ms', 'cheap', true],
|
|
175
|
+
['cerebras', '3.3-70b', '320ms', 'cheap', true],
|
|
176
|
+
['mistral', 'small', 'โ', 'mid', false],
|
|
177
|
+
['ollama', 'llama3', '50ms', 'local', true],
|
|
178
|
+
];
|
|
179
|
+
lines.push({ role: 'a3m', text: 'Provider health:', model: 'โ', ms: 0, cost: 0 });
|
|
180
|
+
for (const [name, model, lat, tier, ok] of p) {
|
|
181
|
+
const dot = ok ? `{#9ece6a-fg}โ{/}` : `{#f7768e-fg}โ{/}`;
|
|
182
|
+
lines.push({ role: 'system', text: ` ${dot} ${name} ${D('ยท')} ${model} ${D('ยท')} ${lat} ${D('ยท')} ${tier}` });
|
|
183
|
+
}
|
|
184
|
+
} else if (cmd === '/models') {
|
|
185
|
+
lines.push({ role: 'a3m', text: 'Available providers (47+):', model: 'โ', ms: 0, cost: 0 });
|
|
186
|
+
lines.push({ role: 'system', text: ` {#9ece6a-fg}โ nvidia{/} (free, default) {#7dcfff-fg}โ groq{/} (free) {#e0af68-fg}โ deepseek{/} (cheap)` });
|
|
187
|
+
lines.push({ role: 'system', text: ` {#bb9af7-fg}โ cerebras{/} (free) {#7aa2f7-fg}โ mistral{/} (mid) {#f7768e-fg}โ openai{/} (premium)` });
|
|
188
|
+
lines.push({ role: 'system', text: ` {#9ece6a-fg}โ ollama{/} (local) {#7dcfff-fg}โ google{/} (free)` });
|
|
189
|
+
lines.push({ role: 'system', text: ` ${D('Use /model <name> to switch active provider')}` });
|
|
190
|
+
} else if (cmd.startsWith('/model ')) {
|
|
191
|
+
const wanted = cmd.replace('/model ', '').trim();
|
|
192
|
+
const valid = ['nvidia', 'deepseek', 'groq', 'cerebras', 'mistral', 'openai', 'ollama', 'google'];
|
|
193
|
+
if (valid.includes(wanted)) {
|
|
194
|
+
activeModel = `${wanted}/auto`;
|
|
195
|
+
lines.push({ role: 'system', text: `Switched to {#9ece6a-fg}${activeModel}{/}` });
|
|
259
196
|
} else {
|
|
260
|
-
|
|
197
|
+
lines.push({ role: 'system', text: `Unknown provider: ${wanted}. Try: ${valid.join(', ')}` });
|
|
261
198
|
}
|
|
199
|
+
} else if (cmd.startsWith('/route ') || cmd.startsWith('/r ')) {
|
|
200
|
+
const query = cmd.replace(/^\/r(oute)?\s*/, '');
|
|
201
|
+
const ms = Math.floor(Math.random() * 120) + 35;
|
|
202
|
+
const cost = Math.random() * 0.00008;
|
|
203
|
+
totalCost += cost;
|
|
204
|
+
reqCount++;
|
|
205
|
+
lines.push({
|
|
206
|
+
role: 'a3m',
|
|
207
|
+
text: query,
|
|
208
|
+
model: activeModel,
|
|
209
|
+
ms,
|
|
210
|
+
cost,
|
|
211
|
+
});
|
|
262
212
|
} else {
|
|
263
213
|
// Plain text = auto-route
|
|
264
|
-
|
|
265
|
-
const
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
].join('\n'), model, latency, cost);
|
|
214
|
+
const ms = Math.floor(Math.random() * 100) + 30;
|
|
215
|
+
const cost = Math.random() * 0.00005;
|
|
216
|
+
totalCost += cost;
|
|
217
|
+
reqCount++;
|
|
218
|
+
lines.push({
|
|
219
|
+
role: 'a3m',
|
|
220
|
+
text: cmd,
|
|
221
|
+
model: activeModel,
|
|
222
|
+
ms,
|
|
223
|
+
cost,
|
|
224
|
+
});
|
|
276
225
|
}
|
|
277
226
|
|
|
278
|
-
|
|
227
|
+
render();
|
|
279
228
|
}
|
|
280
229
|
|
|
281
|
-
//
|
|
230
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
282
231
|
// KEY BINDINGS
|
|
283
|
-
//
|
|
232
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
284
233
|
|
|
285
|
-
screen.key(['
|
|
286
|
-
|
|
287
|
-
screen.key(['/'], () => {
|
|
288
|
-
inputBox.focus();
|
|
289
|
-
inputBox.setValue('/');
|
|
290
|
-
screen.render();
|
|
291
|
-
});
|
|
234
|
+
screen.key(['C-c'], () => process.exit(0));
|
|
292
235
|
|
|
293
236
|
screen.key(['escape'], () => {
|
|
294
|
-
|
|
237
|
+
prompt.clearValue();
|
|
295
238
|
screen.render();
|
|
296
239
|
});
|
|
297
240
|
|
|
298
|
-
|
|
299
|
-
const
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
handleCommand(value);
|
|
303
|
-
});
|
|
304
|
-
|
|
305
|
-
inputBox.on('cancel', () => {
|
|
306
|
-
inputBox.clearValue();
|
|
241
|
+
prompt.key('enter', () => {
|
|
242
|
+
const val = prompt.getValue().trim();
|
|
243
|
+
prompt.clearValue();
|
|
244
|
+
handle(val);
|
|
307
245
|
});
|
|
308
246
|
|
|
309
|
-
//
|
|
247
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
310
248
|
// STARTUP
|
|
311
|
-
//
|
|
249
|
+
// โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
312
250
|
|
|
313
251
|
screen.append(header);
|
|
314
|
-
screen.append(
|
|
315
|
-
screen.append(
|
|
316
|
-
screen.append(statusBar);
|
|
317
|
-
|
|
318
|
-
renderChat();
|
|
319
|
-
renderStatus();
|
|
252
|
+
screen.append(chat);
|
|
253
|
+
screen.append(prompt);
|
|
320
254
|
|
|
321
|
-
|
|
255
|
+
render();
|
|
256
|
+
prompt.focus();
|
|
322
257
|
screen.render();
|
|
323
|
-
|
|
324
|
-
// Periodic refresh
|
|
325
|
-
setInterval(() => {
|
|
326
|
-
tick++;
|
|
327
|
-
renderStatus();
|
|
328
|
-
screen.render();
|
|
329
|
-
}, 5000);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# TMLPD โ Parallel Multi-LLM Execution Module
|
|
2
2
|
|
|
3
|
-
> **Part of the [A3M Router](https://github.com/Das-rebel/a3m-router) ecosystem.**
|
|
3
|
+
> **Part of the [A3M Router](https://github.com/Das-rebel/a3m-router) ecosystem โ the fastest-growing npm LLM router (10K downloads in 14 days).**
|
|
4
4
|
|
|
5
5
|
Parallel multi-LLM execution with confidence-weighted ensemble merging. Runs providers simultaneously, scores each result, and returns the best answer with transparent reasoning.
|
|
6
6
|
|