adaptive-memory-multi-model-router 2.13.4 → 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.
Files changed (75) hide show
  1. package/.github/ISSUE_TEMPLATE/config.yml +2 -2
  2. package/.well-known/ai-plugin.json +1 -1
  3. package/CONTRIBUTING.md +1 -1
  4. package/LAUNCH-PAIN-DRIVEN.md +3 -3
  5. package/LAUNCH.md +7 -7
  6. package/POPULARITY_BOOSTERS.md +6 -6
  7. package/README.md +40 -38
  8. package/README_ja.md +1 -1
  9. package/README_zh.md +1 -1
  10. package/SUBMISSIONS.md +2 -2
  11. package/articles/DEVTO_COST_GUIDE.md +2 -2
  12. package/articles/DEVTO_FINAL.md +6 -6
  13. package/articles/DEVTO_MULTI_PROVIDER.md +4 -4
  14. package/articles/DEVTO_V2_ANNOUNCEMENT.md +2 -2
  15. package/articles/DEVTO_VIRAL_GROWTH.md +5 -5
  16. package/articles/FRESH_devto.md +1 -1
  17. package/articles/FRESH_hackernews.md +1 -1
  18. package/articles/FRESH_reddit_ml.md +1 -1
  19. package/articles/FRESH_reddit_node.md +2 -2
  20. package/articles/FRESH_reddit_sideproject.md +2 -2
  21. package/articles/FRESH_reddit_webdev.md +2 -2
  22. package/articles/HN_10X_BETTER.md +2 -2
  23. package/articles/HN_CHINESE_STYLE.md +5 -5
  24. package/articles/HN_FINAL.md +1 -1
  25. package/articles/HN_POSTED_VERSION.md +1 -1
  26. package/articles/PAIN-DRIVEN-devto-v2.md +2 -2
  27. package/articles/PAIN-DRIVEN-devto-v3.md +2 -2
  28. package/articles/PAIN-DRIVEN-devto.md +2 -2
  29. package/articles/PAIN-DRIVEN-hackernews-v2.md +2 -2
  30. package/articles/PAIN-DRIVEN-hackernews-v3.md +3 -3
  31. package/articles/PAIN-DRIVEN-hackernews.md +2 -2
  32. package/articles/PAIN-DRIVEN-reddit-v2.md +2 -2
  33. package/articles/PAIN-DRIVEN-reddit-v3.md +2 -2
  34. package/articles/PAIN-DRIVEN-reddit.md +2 -2
  35. package/articles/PAIN-DRIVEN-twitter-v2.md +2 -2
  36. package/articles/PAIN-DRIVEN-twitter-v3.md +2 -2
  37. package/articles/PAIN-DRIVEN-twitter.md +2 -2
  38. package/articles/REDDIT_FINAL.md +2 -2
  39. package/articles/TWITTER_FINAL.md +1 -1
  40. package/articles/ai-discoverability-llm-routing.md +1 -1
  41. package/articles/devto-llm-routing.md +2 -2
  42. package/articles/hackernews-show-hn.md +1 -1
  43. package/articles/hashnode-llm-cost-optimization.md +1 -1
  44. package/articles/medium-building-llm-router.md +1 -1
  45. package/articles/reddit-ml.md +1 -1
  46. package/articles/twitter-thread-cost-savings.md +1 -1
  47. package/articles/youtube-tutorial-script.md +1 -1
  48. package/demo.html +1 -1
  49. package/dist/cli/setupWizard.js +1 -1
  50. package/dist/cli/setupWizard.js.map +1 -1
  51. package/dist/cli.js +1 -1
  52. package/dist/geo/generativeEngineOptimization.js +1 -1
  53. package/dist/tui/dashboard.d.ts +3 -9
  54. package/dist/tui/dashboard.js +170 -236
  55. package/dist/tui/dashboard.js.map +1 -1
  56. package/docs/HN_CHECKLIST.md +2 -2
  57. package/docs/HN_SUBMISSION_FINAL.md +2 -2
  58. package/docs/HN_SUBMISSION_V3.md +3 -3
  59. package/docs/SEO_AUDIT.md +1 -1
  60. package/docs/UPDATE_TOPICS.md +1 -1
  61. package/docs/demo-auto.html +1 -1
  62. package/docs/demo.html +1 -1
  63. package/docs/index.html +1 -1
  64. package/docs/openapi.json +1 -1
  65. package/docs-site/index.html +7 -7
  66. package/index.html +4 -4
  67. package/llms-full.txt +1 -1
  68. package/llms.txt +1 -1
  69. package/package.json +5 -5
  70. package/playground/README.md +4 -4
  71. package/public/robots.txt +1 -1
  72. package/python/pyproject.toml +1 -1
  73. package/src/cli/setupWizard.ts +1 -1
  74. package/src/tui/dashboard.ts +180 -252
  75. package/tmlpd-pi-extension/README.md +1 -1
@@ -1,16 +1,10 @@
1
1
  #!/usr/bin/env node
2
2
  "use strict";
3
3
  /**
4
- * A3M Router TUI v2 Conversational PI-style interface
4
+ * A3M Router TUI — Clean PI-style conversational interface
5
5
  *
6
- * Commands:
7
- * /route <query> — Route a prompt through cheapest capable model
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 THEME
52
- // ═══════════════════════════════════════════════════════════════
53
- const C = {
44
+ // ═══════════════════════════════════════════════════
45
+ // TOKYO NIGHT — same as PI's vibe
46
+ // ═══════════════════════════════════════════════════
47
+ const T = {
54
48
  bg: '#1a1b26',
55
49
  surface: '#24283b',
56
- border: '#3b4261',
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
- const messages = [];
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
- // LAYOUT
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: C.bright, bg: C.surface },
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
- // Chat area (middle - all remaining space except bottom 3)
92
- const chatBox = blessed.box({
93
- top: 1, left: 0, width: '100%', height: '100%-4',
94
- style: { fg: C.white, bg: C.bg },
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: 1, right: 1, top: 0, bottom: 0 },
87
+ padding: { left: 2, right: 2, top: 1, bottom: 0 },
101
88
  });
102
- // Input line
103
- const inputBox = blessed.textbox({
104
- bottom: 2, left: 0, width: '100%', height: 2,
105
- label: ' / ',
106
- border: { type: 'line', fg: C.purple },
107
- style: { fg: C.bright, bg: C.surface },
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
- // Status bar
113
- const statusBar = blessed.box({
114
- bottom: 0, left: 0, width: '100%', height: 1,
115
- style: { fg: C.dim, bg: C.surface },
116
- tags: true,
117
- });
118
- // ═══════════════════════════════════════════════════════════════
119
- // HELPERS
120
- // ═══════════════════════════════════════════════════════════════
121
- function badge(text, color) {
122
- return `{${color}-fg}[${text}]{/}`;
123
- }
124
- function dim(s) { return `{#565f89-fg}${s}{/}`; }
125
- function addMsg(role, text, model, latency, cost) {
126
- messages.push({ role, text, model, latency, cost });
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 maxVisible = screen.height - 6;
136
- for (const m of messages.slice(-maxVisible)) {
137
- if (m.role === 'user') {
138
- out += `\n{bold}{#7dcfff-fg}▸ You{/} ${dim(new Date().toLocaleTimeString())}\n`;
139
- out += ` ${m.text}\n`;
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
- const badges = [];
143
- if (m.model)
144
- badges.push(badge(m.model, C.green));
145
- if (m.latency)
146
- badges.push(badge(`${m.latency}ms`, C.yellow));
147
- if (m.cost !== undefined)
148
- badges.push(badge(`$${m.cost.toFixed(6)}`, C.orange));
149
- out += `\n{bold}{#bb9af7-fg}⚡ A3M{/} ${badges.join(' ')} ${dim(new Date().toLocaleTimeString())}\n`;
150
- out += ` ${m.text}\n`;
151
- out += `${dim('─'.repeat(50))}\n`;
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 (out === '') {
135
+ if (lines.length === 0) {
155
136
  out = [
156
- '',
157
- ` {bold}{#bb9af7-fg}⚡ A3M Router{/} — {#565f89-fg}One prompt in. The right model out.{/}`,
158
- '',
159
- ` {#565f89-fg}Type a query to auto-route through the cheapest capable model.`,
160
- '',
161
- ` {bold}Commands:{/}`,
162
- ` {#7aa2f7-fg}/route <query>{/} ${dim('Route a prompt (or just type your query)')}`,
163
- ` {#7aa2f7-fg}/cost{/} ${dim('Cost breakdown by provider')}`,
164
- ` {#7aa2f7-fg}/health{/} ${dim('Provider health check')}`,
165
- ` {#7aa2f7-fg}/providers{/} ${dim('List all active providers')}`,
166
- ` {#7aa2f7-fg}/clear{/} ${dim('Clear chat')}`,
167
- ` {#7aa2f7-fg}/help{/} ${dim('Show this')}`,
168
- '',
169
- ` {#565f89-fg}───────────────────────────────────────────────`,
170
- ` ${dim('⚡ 4 req │ 💰 $0.000087 │ 🖥 4 providers │ 💎 99.5%')}`,
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
- chatBox.setContent(out);
175
- chatBox.setScrollPerc(100);
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 HANDLERS
186
- // ═══════════════════════════════════════════════════════════════
187
- function handleCommand(input) {
160
+ // ═══════════════════════════════════════════════════
161
+ // COMMAND HANDLER
162
+ // ═══════════════════════════════════════════════════
163
+ function handle(input) {
188
164
  const cmd = input.trim();
189
165
  if (!cmd)
190
166
  return;
191
- if (cmd.startsWith('/')) {
192
- // Add user command
193
- addMsg('user', cmd);
194
- if (cmd === '/q' || cmd === '/exit') {
195
- process.exit(0);
196
- }
197
- else if (cmd === '/help') {
198
- addMsg('a3m', [
199
- `{bold}A3M Router Commands:{/}`,
200
- ``,
201
- ` {#7aa2f7-fg}/route <query>{/} ${dim('Route a prompt through cheapest capable model')}`,
202
- ` {#7aa2f7-fg}/cost{/} ${dim('Cost breakdown by provider')}`,
203
- ` {#7aa2f7-fg}/health{/} ${dim('Provider health check with latency')}`,
204
- ` {#7aa2f7-fg}/providers{/} ${dim('List all 47+ active providers with tiers')}`,
205
- ` {#7aa2f7-fg}/clear{/} ${dim('Clear chat history')}`,
206
- ` {#7aa2f7-fg}/help{/} ${dim('Show this help')}`,
207
- ` {#7aa2f7-fg}/exit{/} or {#f7768e-fg}/q{/} ${dim('Quit')}`,
208
- ``,
209
- `${dim('You can also just type a query directly — it will auto-route.')}`,
210
- ].join('\n'), undefined, 0, 0);
211
- }
212
- else if (cmd === '/clear') {
213
- messages.length = 0;
214
- chatBox.setContent('');
215
- renderChat();
216
- }
217
- else if (cmd === '/cost') {
218
- addMsg('a3m', [
219
- `{bold}Cost Breakdown:{/}`,
220
- ``,
221
- ` {#9ece6a-fg}nvidia: {/} $0.000078 ${dim('(free tier)')}`,
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
- else if (cmd.startsWith('/route ') || cmd.startsWith('/r ')) {
261
- const query = cmd.replace(/^\/r(oute)?\s*/, '');
262
- const latency = Math.floor(Math.random() * 150) + 40;
263
- const cost = Math.random() * 0.0001;
264
- const models = ['nvidia/llama-3.1-8b', 'deepseek/v4-flash', 'groq/8b-instant'];
265
- const model = models[Math.floor(Math.random() * 3)];
266
- addMsg('a3m', [
267
- `{dim}Routing:} ${query.slice(0, 60)}...`,
268
- ``,
269
- `{#9ece6a-fg}→ ${model}{/} ${dim(`(auto-selected, ${latency}ms)`)}`,
270
- ``,
271
- `This is a simulated response. In production, A3M proxies`,
272
- `to the actual model and returns the real response.`,
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
- addMsg('a3m', `{dim}Unknown command: ${cmd}. Type /help for commands.{/}`, undefined, 0, 0);
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
- addMsg('user', cmd);
284
- const latency = Math.floor(Math.random() * 120) + 35;
285
- const cost = Math.random() * 0.00008;
286
- const models = ['nvidia/llama-3.1-8b', 'deepseek/v4-flash'];
287
- const model = Math.random() > 0.5 ? models[0] : models[1];
288
- addMsg('a3m', [
289
- `{dim}Auto-routed to {/}{#9ece6a-fg}${model}{/}`,
290
- ``,
291
- `{dim}Response:{/} ${cmd}`,
292
- `{dim}(Simulated — proxies to live model in production){/}`,
293
- ].join('\n'), model, latency, cost);
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
- renderStatus();
246
+ render();
296
247
  }
297
- // ═══════════════════════════════════════════════════════════════
248
+ // ═══════════════════════════════════════════════════
298
249
  // KEY BINDINGS
299
- // ═══════════════════════════════════════════════════════════════
300
- screen.key(['q', 'C-c'], () => process.exit(0));
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
- inputBox.cancel();
253
+ prompt.clearValue();
308
254
  screen.render();
309
255
  });
310
- inputBox.key('enter', () => {
311
- const value = inputBox.getValue().trim();
312
- inputBox.clearValue();
313
- inputBox.focus();
314
- handleCommand(value);
256
+ prompt.key('enter', () => {
257
+ const val = prompt.getValue().trim();
258
+ prompt.clearValue();
259
+ handle(val);
315
260
  });
316
- inputBox.on('cancel', () => {
317
- inputBox.clearValue();
318
- });
319
- // ═══════════════════════════════════════════════════════════════
261
+ // ═══════════════════════════════════════════════════
320
262
  // STARTUP
321
- // ═══════════════════════════════════════════════════════════════
263
+ // ═══════════════════════════════════════════════════
322
264
  screen.append(header);
323
- screen.append(chatBox);
324
- screen.append(inputBox);
325
- screen.append(statusBar);
326
- renderChat();
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":"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"}
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/tui/dashboard.ts"],"names":[],"mappings":"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"}
@@ -15,7 +15,7 @@
15
15
  - [ ] 8:00 AM EST — Open HN submit page
16
16
  - [ ] 8:20 AM EST — Fill form:
17
17
  - [ ] Title: "Show HN: A3M Router — 99.5% routing accuracy without ML. 30x more efficient than BERT."
18
- - [ ] URL: https://github.com/Das-rebel/adaptive-memory-multi-model-router
18
+ - [ ] URL: https://github.com/Das-rebel/a3m-router
19
19
  - [ ] Text: (paste from /tmp/HN_SUBMISSION_FINAL_v3.md)
20
20
  - [ ] 8:30 AM EST — HIT SUBMIT
21
21
  - [ ] 8:31 AM EST — Post founder comment immediately
@@ -35,4 +35,4 @@
35
35
  - HN upvotes (target: 100+ for front page, 500+ for top 10)
36
36
  - GitHub stars (target: +50 within 24h if front page)
37
37
  - npm downloads (target: 2,000+ within 24h)
38
- - GitHub traffic (check at https://github.com/Das-rebel/adaptive-memory-multi-model-router/traffic)
38
+ - GitHub traffic (check at https://github.com/Das-rebel/a3m-router/traffic)
@@ -21,7 +21,7 @@ Show HN: A3M Router — the only LLM router besides RouteLLM with published benc
21
21
 
22
22
  ## Submission Text
23
23
 
24
- **URL**: https://github.com/Das-rebel/adaptive-memory-multi-model-router
24
+ **URL**: https://github.com/Das-rebel/a3m-router
25
25
 
26
26
  **Text** (HN "text" field):
27
27
 
@@ -57,7 +57,7 @@ Growth (zero marketing):
57
57
 
58
58
  The question: if keyword matching gets you 97% of GPU-trained BERT accuracy for LLM routing, is the GPU worth it?
59
59
 
60
- Repo: https://github.com/Das-rebel/adaptive-memory-multi-model-router
60
+ Repo: https://github.com/Das-rebel/a3m-router
61
61
  npm: https://www.npmjs.com/package/adaptive-memory-multi-model-router
62
62
 
63
63
  RouteLLM paper: arXiv:2404.06035
@@ -1,6 +1,6 @@
1
1
  # Show HN: A3M Router — 99.5% routing accuracy without ML. 30x more efficient than BERT.
2
2
 
3
- **URL**: https://github.com/Das-rebel/adaptive-memory-multi-model-router
3
+ **URL**: https://github.com/Das-rebel/a3m-router
4
4
 
5
5
  ---
6
6
 
@@ -49,8 +49,8 @@ Total: 4,224 downloads (self-sustaining npm discovery)
49
49
 
50
50
  The question: if keyword matching gets you 97% of GPU-trained BERT accuracy for LLM routing, is the GPU worth it?
51
51
 
52
- **Repo**: https://github.com/Das-rebel/adaptive-memory-multi-model-router
52
+ **Repo**: https://github.com/Das-rebel/a3m-router
53
53
  **npm**: https://www.npmjs.com/package/adaptive-memory-multi-model-router
54
- **Benchmarks**: https://github.com/Das-rebel/adaptive-memory-multi-model-router/blob/main/benchmark-results.json
54
+ **Benchmarks**: https://github.com/Das-rebel/a3m-router/blob/main/benchmark-results.json
55
55
 
56
56
  Caveat: benchmarks are self-run. I'd love to see independent replication.