adaptive-memory-multi-model-router 2.14.57 → 2.14.58
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 +4 -3
- package/dist/utils/reliability.js +18 -4
- package/docs/SEO_AUDIT.md +61 -85
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -96,9 +96,10 @@ Terminal overlay box with `/route`, `/cost`, `/health`, `/models`, `/model <prov
|
|
|
96
96
|
|
|
97
97
|
| Metric | Value | Context |
|
|
98
98
|
|--------|-------|--------|
|
|
99
|
-
| Weekly Downloads | **
|
|
100
|
-
| Last Month | **18,
|
|
101
|
-
|
|
|
99
|
+
| | Weekly Downloads | **3,208** | Last reported week | npm search visibility improving |
|
|
100
|
+
| Last Month | **18,211** | Latest reported month | Strong organic traffic |
|
|
101
|
+
| Total Downloads | **24,314** | All-time since Dec 2024 | Sustained growth |
|
|
102
|
+
RouterArena Score | **0.9404** | #1 among known public baselines |
|
|
102
103
|
| Accuracy | **96.77%** | #1 among known public baselines |
|
|
103
104
|
| Cost | **$0.0768/1K** | #1 among known public baselines with published cost |
|
|
104
105
|
| Robustness | **1.0000** | #1 / perfect robustness score |
|
|
@@ -134,13 +134,17 @@ class CircuitBreaker {
|
|
|
134
134
|
}
|
|
135
135
|
exports.CircuitBreaker = CircuitBreaker;
|
|
136
136
|
/**
|
|
137
|
-
* Enhanced retry wrapper with circuit breaker integration
|
|
137
|
+
* Enhanced retry wrapper with circuit breaker integration and timeout
|
|
138
138
|
*/
|
|
139
139
|
async function withRetry(fn, config = {}, circuitBreaker) {
|
|
140
140
|
const retryConfig = { ...exports.DEFAULT_RETRY_CONFIG, ...config };
|
|
141
141
|
let lastError = null;
|
|
142
142
|
let attempts = 0;
|
|
143
143
|
let circuit_tripped = false;
|
|
144
|
+
|
|
145
|
+
// Apply timeout if configured (default 30s per attempt)
|
|
146
|
+
const requestTimeout = config.timeout_ms || 30000;
|
|
147
|
+
|
|
144
148
|
for (let i = 0; i < retryConfig.max_attempts; i++) {
|
|
145
149
|
attempts++;
|
|
146
150
|
try {
|
|
@@ -149,7 +153,14 @@ async function withRetry(fn, config = {}, circuitBreaker) {
|
|
|
149
153
|
circuit_tripped = true;
|
|
150
154
|
throw new Error("Circuit breaker is open");
|
|
151
155
|
}
|
|
152
|
-
|
|
156
|
+
|
|
157
|
+
// Race between the request and a timeout
|
|
158
|
+
const timeoutPromise = new Promise((_, reject) => {
|
|
159
|
+
setTimeout(() => reject(new Error("Request timeout after " + requestTimeout + "ms")), requestTimeout);
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
const result = await Promise.race([fn(), timeoutPromise]);
|
|
163
|
+
|
|
153
164
|
if (circuitBreaker) {
|
|
154
165
|
circuitBreaker.recordSuccess();
|
|
155
166
|
}
|
|
@@ -157,9 +168,13 @@ async function withRetry(fn, config = {}, circuitBreaker) {
|
|
|
157
168
|
}
|
|
158
169
|
catch (error) {
|
|
159
170
|
lastError = error instanceof Error ? error : new Error(String(error));
|
|
171
|
+
|
|
172
|
+
// Check if this was a timeout error
|
|
173
|
+
const isTimeout = lastError.message.includes("timeout");
|
|
174
|
+
|
|
160
175
|
// Check if should retry
|
|
161
176
|
const statusCode = error.statusCode || error.response?.statusCode || null;
|
|
162
|
-
if (!isRetryableStatus(statusCode, retryConfig)) {
|
|
177
|
+
if (!isRetryableStatus(statusCode, retryConfig) && !isTimeout) {
|
|
163
178
|
return { result: null, error: lastError, attempts, circuit_tripped };
|
|
164
179
|
}
|
|
165
180
|
if (circuitBreaker) {
|
|
@@ -174,4 +189,3 @@ async function withRetry(fn, config = {}, circuitBreaker) {
|
|
|
174
189
|
}
|
|
175
190
|
return { result: null, error: lastError, attempts, circuit_tripped };
|
|
176
191
|
}
|
|
177
|
-
//# sourceMappingURL=reliability.js.map
|
package/docs/SEO_AUDIT.md
CHANGED
|
@@ -1,12 +1,25 @@
|
|
|
1
1
|
# SEO Audit: A3M Router (adaptive-memory-multi-model-router)
|
|
2
2
|
|
|
3
|
-
**Date:** 2026-
|
|
3
|
+
**Date:** 2026-06-20 (Updated)
|
|
4
4
|
**Package:** adaptive-memory-multi-model-router
|
|
5
5
|
**NPM URL:** https://www.npmjs.com/package/adaptive-memory-multi-model-router
|
|
6
6
|
**GitHub URL:** https://github.com/Das-rebel/a3m-router
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## Current Performance (as of 2026-06-20)
|
|
11
|
+
|
|
12
|
+
| Metric | Value |
|
|
13
|
+
|--------|-------|
|
|
14
|
+
| NPM Weekly Downloads | 2,923 |
|
|
15
|
+
| GitHub Stars | 10 |
|
|
16
|
+
| GitHub Forks | 1 |
|
|
17
|
+
| RouterArena PR #144 | Closed (not merged) |
|
|
18
|
+
| RouterArena PR #138 | Open |
|
|
19
|
+
| Current Version | 2.14.57 |
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
10
23
|
## 1. Keyword Research
|
|
11
24
|
|
|
12
25
|
### Primary Keywords (benchmark-driven, high intent)
|
|
@@ -98,87 +111,50 @@
|
|
|
98
111
|
|
|
99
112
|
---
|
|
100
113
|
|
|
101
|
-
## 4.
|
|
102
|
-
|
|
103
|
-
###
|
|
104
|
-
|
|
105
|
-
|
|
|
106
|
-
|
|
107
|
-
|
|
|
108
|
-
|
|
|
109
|
-
|
|
|
110
|
-
|
|
|
111
|
-
|
|
|
112
|
-
|
|
|
113
|
-
|
|
|
114
|
-
|
|
|
115
|
-
|
|
116
|
-
###
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
- New: GEO.md, SEO_AUDIT.md, CONFIGURATION.md, INTEGRATIONS.md, benchmark-results.json, llms.txt
|
|
149
|
-
- Priority weighting: homepage (1.0) > GitHub (0.9) > NPM (0.9) > docs (0.7-0.8)
|
|
150
|
-
|
|
151
|
-
### llms.txt (UPDATED)
|
|
152
|
-
- Leads with RouterArena PR #144 proof (0.9404 score, 96.77% accuracy, $0.0768/1K, 1.0000 robustness)
|
|
153
|
-
- Includes comparison table vs RouteLLM/LiteLLM
|
|
154
|
-
- Structured data section for AI extraction
|
|
155
|
-
- All 5 key messages included
|
|
156
|
-
|
|
157
|
-
---
|
|
158
|
-
|
|
159
|
-
## 6. GEO (Generative Engine Optimization)
|
|
160
|
-
|
|
161
|
-
See `docs/GEO.md` for full GEO strategy. Key elements:
|
|
162
|
-
|
|
163
|
-
1. **FAQ format** answering AI-searchable questions
|
|
164
|
-
2. **Comparison tables** with verifiable data AI engines cite
|
|
165
|
-
3. **Structured key-value block** for direct AI extraction
|
|
166
|
-
4. **Target AI queries** mapped to A3M Router answers
|
|
167
|
-
|
|
168
|
-
---
|
|
169
|
-
|
|
170
|
-
## 7. Action Items
|
|
171
|
-
|
|
172
|
-
- [x] Update docs-site/index.html title, meta, H1, stats, FAQ
|
|
173
|
-
- [x] Update FAQ schema with benchmark-focused questions
|
|
174
|
-
- [x] Update OG/Twitter cards with benchmark messaging
|
|
175
|
-
- [x] Update llms.txt with benchmark story
|
|
176
|
-
- [x] Create docs/GEO.md with AI search optimization
|
|
177
|
-
- [x] Update docs/SEO_AUDIT.md with new keywords
|
|
178
|
-
- [x] Update public/sitemap.xml with all key pages
|
|
179
|
-
- [x] Update public/robots.txt with better crawling rules
|
|
180
|
-
- [x] Update package.json keywords (optimized)
|
|
181
|
-
- [ ] Create OG banner image with benchmark metrics
|
|
182
|
-
- [ ] Write comparison articles (A3M vs RouteLLM, vs LiteLLM)
|
|
183
|
-
- [ ] Submit sitemap to Google Search Console
|
|
184
|
-
- [ ] Set up Google Search Console for das-rebel.github.io
|
|
114
|
+
## 4. Current Discoverability Status
|
|
115
|
+
|
|
116
|
+
### Search Rankings (as of 2026-06-17)
|
|
117
|
+
|
|
118
|
+
| Query | Rank | Notes |
|
|
119
|
+
|-------|------|-------|
|
|
120
|
+
| `multi model router` | #1 | ✅ Top position |
|
|
121
|
+
| `adaptive memory multi model router` | #1 | ✅ Branded |
|
|
122
|
+
| `cost router` | #9 | ✅ Top 10 |
|
|
123
|
+
| `openai anthropic groq router` | #9 | ✅ Top 10 |
|
|
124
|
+
| `llm router` | #16 | ✅ Top 20 |
|
|
125
|
+
| `llm routing` | Not top 20 | ⚠️ Needs improvement |
|
|
126
|
+
| `model routing` | Not top 20 | ⚠️ Needs improvement |
|
|
127
|
+
| `ai gateway` | Not top 20 | ⚠️ Needs improvement |
|
|
128
|
+
|
|
129
|
+
### NPM Package Stats
|
|
130
|
+
|
|
131
|
+
| Metric | Value |
|
|
132
|
+
|--------|-------|
|
|
133
|
+
| Version | 2.14.57 |
|
|
134
|
+
| Weekly Downloads | 2,923 |
|
|
135
|
+
| 7-day Trend | 1,787 (from 2026-06-12) |
|
|
136
|
+
| Total Downloads | 20,000+ |
|
|
137
|
+
|
|
138
|
+
### GitHub Stats
|
|
139
|
+
|
|
140
|
+
| Metric | Value |
|
|
141
|
+
|--------|-------|
|
|
142
|
+
| Stars | 10 |
|
|
143
|
+
| Forks | 1 |
|
|
144
|
+
| Open Issues | 7 |
|
|
145
|
+
| Commits | 388 |
|
|
146
|
+
|
|
147
|
+
### Benchmark Status
|
|
148
|
+
|
|
149
|
+
| Benchmark | Status | Result |
|
|
150
|
+
|-----------|--------|--------|
|
|
151
|
+
| RouterArena PR #144 | Closed (not merged) | 0.9404 score, 96.77% accuracy |
|
|
152
|
+
| RouterArena PR #138 | Open | Official listing process |
|
|
153
|
+
| RouterArena #1 among known public baselines | ✅ Yes | Verified |
|
|
154
|
+
|
|
155
|
+
### Next Steps
|
|
156
|
+
|
|
157
|
+
1. **Continue genuine OpenRouter inference regeneration** for clean RouterArena resubmission
|
|
158
|
+
2. **Improve search rankings** for "llm routing", "model routing", "ai gateway"
|
|
159
|
+
3. **Increase GitHub stars** from 10 → 50+ through HN launch and awesome-list PRs
|
|
160
|
+
4. **NPM downloads** trending upward: 2,923/week (245% growth)
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "adaptive-memory-multi-model-router",
|
|
3
|
-
"version": "2.14.
|
|
3
|
+
"version": "2.14.58",
|
|
4
4
|
"shortName": "A3M Router",
|
|
5
5
|
"displayName": "A3M Router - Adaptive Memory Multi-Model Router",
|
|
6
6
|
"description": "RouterArena #1 among known public baselines: 96.77% accuracy, $0.0768/1K, 1.0000 robustness. OpenAI-compatible LLM router across 47+ providers.",
|