adaptive-memory-multi-model-router 2.15.3 → 2.15.4
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/.github/ISSUE_TEMPLATE/bug_report.md +94 -0
- package/.github/ISSUE_TEMPLATE/config.yml +17 -0
- package/.github/ISSUE_TEMPLATE/feature_request.md +71 -0
- package/.well-known/ai-plugin.json +16 -0
- package/AGENT_COUNCIL_FINDINGS.md +98 -123
- package/POPULARITY_BOOSTERS.md +1 -1
- package/README.md +275 -147
- package/README_ja.md +20 -16
- package/README_zh.md +17 -13
- package/adapters/README.md +36 -0
- package/adapters/__init__.py +25 -0
- package/adapters/a3m_adapter/__init__.py +15 -0
- package/adapters/a3m_adapter/adapter/__init__.py +7 -0
- package/adapters/a3m_adapter/adapter/config.py +100 -0
- package/adapters/a3m_adapter/adapter/langchain.py +155 -0
- package/adapters/a3m_adapter/adapter/llamaindex.py +162 -0
- package/adapters/a3m_adapter/tests/__init__.py +1 -0
- package/adapters/a3m_adapter/tests/test_adapters.py +120 -0
- package/adapters/setup.py +23 -0
- package/articles/CHINESE_DIRECTORIES.md +2 -2
- package/articles/CHINESE_SUBMISSIONS_READY.md +5 -5
- package/articles/HN_POST_READY.md +20 -16
- package/articles/INDIEHACKERS_READY.md +34 -19
- package/dist/analytics/costAnalytics.d.ts +1 -0
- package/dist/benchmark/reproducible.d.ts +1 -0
- package/dist/cache/semanticCache.d.ts +1 -0
- package/dist/cost/budgetEnforcer.d.ts +1 -0
- package/dist/cost/costTracker.d.ts +1 -0
- package/dist/ensemble/multiRoundDialog.d.ts +1 -0
- package/dist/ensemble/shapleyValue.d.ts +1 -0
- package/dist/ensemble.d.ts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/integrations/oauth.d.ts +1 -0
- package/dist/integrations/scienceAdapter.d.ts +1 -0
- package/dist/memory/autoFetch.d.ts +1 -0
- package/dist/memory/hybridMemory.d.ts +1 -0
- package/dist/memory/memoryTree.d.ts +1 -0
- package/dist/memory/obsidianVault.d.ts +1 -0
- package/dist/memory/reasoningBank.d.ts +1 -0
- package/dist/observability/changeWatch.d.ts +1 -0
- package/dist/observability/fatigueDetector.d.ts +1 -0
- package/dist/observability/index.d.ts +1 -0
- package/dist/observability/metrics.d.ts +1 -0
- package/dist/observability/middleware.d.ts +1 -0
- package/dist/observability/tracer.d.ts +1 -0
- package/dist/observability/types.d.ts +1 -0
- package/dist/providers/providerConfig.d.ts +1 -0
- package/dist/routing/advancedRouter.d.ts +2 -1
- package/dist/routing/advancedRouter.js +0 -84
- package/dist/routing/advancedRouter.js.map +1 -1
- package/dist/routing/crossModelValidation.d.ts +1 -0
- package/dist/routing/providerHealth.d.ts +2 -77
- package/dist/routing/providerHealth.js +4 -190
- package/dist/routing/providerHealth.js.map +1 -1
- package/dist/routing/providerRetry.d.ts +1 -0
- package/dist/sdk.d.ts +1 -0
- package/dist/security/guardrails.d.ts +1 -0
- package/dist/server/dashboard.d.ts +1 -0
- package/dist/server/handlers/chatHandler.d.ts +1 -0
- package/dist/server/handlers/completionsHandler.d.ts +1 -0
- package/dist/server/handlers/embeddingsHandler.d.ts +1 -0
- package/dist/server/handlers/healthHandler.d.ts +1 -0
- package/dist/server/handlers/metricsHandler.d.ts +1 -0
- package/dist/server/handlers/modelsHandler.d.ts +1 -0
- package/dist/server/metrics.d.ts +1 -0
- package/dist/server/modelMapper.d.ts +1 -0
- package/dist/server/proxyServer.d.ts +1 -0
- package/dist/server/router.d.ts +1 -0
- package/dist/server/state.d.ts +1 -0
- package/dist/tui/dashboard.d.ts +1 -0
- package/dist/utils/costUtils.d.ts +1 -0
- package/dist/utils/sorting.d.ts +1 -0
- package/dist/utils/tokenUtils.d.ts +1 -0
- package/docs/llms-full.txt +286 -153
- package/docs/llms.txt +112 -71
- package/llms-full.txt +6 -6
- package/llms.txt +112 -62
- package/package.json +12 -91
- package/CAMPAIGN_SUMMARY.md +0 -87
- package/ENTERPRISE_INTEGRATIONS.md +0 -94
- package/INTEGRATION_PROGRESS.md +0 -96
- package/OPPORTUNITIES_100.md +0 -277
- package/TODO_BROWSER_AUTOMATION.md +0 -87
- package/a3m-integrations-summary.md +0 -73
- package/dist/routing/shadowSampler.d.ts +0 -187
- package/dist/routing/shadowSampler.js +0 -306
- package/dist/routing/shadowSampler.js.map +0 -1
- package/integrations/browser-use/README.md +0 -155
- package/integrations/browser-use/examples/form-filling.ts +0 -179
- package/integrations/browser-use/index.ts +0 -145
- package/integrations/browser-use/package.json +0 -34
- package/integrations/browser-use/tsconfig.json +0 -17
- package/integrations/mcp-browser/README.md +0 -177
- package/integrations/mcp-browser/package.json +0 -38
- package/integrations/mcp-browser/src/index.ts +0 -297
- package/integrations/sota-browser/README.md +0 -191
- package/integrations/sota-browser/package.json +0 -34
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug Report
|
|
3
|
+
about: Report a bug or unexpected behavior to help us improve A3M Router
|
|
4
|
+
title: "[Bug] "
|
|
5
|
+
labels: bug, needs-triage
|
|
6
|
+
assignees: ""
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Description
|
|
10
|
+
|
|
11
|
+
A clear and concise description of the bug.
|
|
12
|
+
|
|
13
|
+
## Reproduction Steps
|
|
14
|
+
|
|
15
|
+
Steps to reproduce the behavior:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
# 1. Set up (if applicable)
|
|
19
|
+
export PROVIDER_API_KEY=sk-...
|
|
20
|
+
|
|
21
|
+
# 2. Run
|
|
22
|
+
npx a3m-router route "Your query here"
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
If using the SDK, provide a minimal code snippet:
|
|
26
|
+
|
|
27
|
+
```typescript
|
|
28
|
+
import { A3MRouter } from "adaptive-memory-multi-model-router";
|
|
29
|
+
|
|
30
|
+
const router = new A3MRouter({ /* your config */ });
|
|
31
|
+
const result = await router.route("Your query");
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Expected Behavior
|
|
35
|
+
|
|
36
|
+
What did you expect to happen?
|
|
37
|
+
|
|
38
|
+
## Actual Behavior
|
|
39
|
+
|
|
40
|
+
What actually happened? Include error messages, stack traces, or unexpected output.
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
Paste error output or logs here
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## A3M Router Version
|
|
47
|
+
|
|
48
|
+
- Package: `adaptive-memory-multi-model-router@<version>` (run `npm list adaptive-memory-multi-model-router`)
|
|
49
|
+
- CLI version (if applicable): `npx a3m-router --version`
|
|
50
|
+
|
|
51
|
+
## Environment
|
|
52
|
+
|
|
53
|
+
- **OS:** macOS / Linux / Windows
|
|
54
|
+
- **Node.js version:** (run `node --version`)
|
|
55
|
+
- **npm version:** (run `npm --version`)
|
|
56
|
+
- **Python version (if using Python SDK):** (run `python --version`)
|
|
57
|
+
|
|
58
|
+
## Providers Used
|
|
59
|
+
|
|
60
|
+
Which provider(s) were involved? (e.g., Groq, OpenAI, Anthropic, NVIDIA, DeepSeek, custom)
|
|
61
|
+
|
|
62
|
+
## Configuration
|
|
63
|
+
|
|
64
|
+
Attach or describe relevant config (redact API keys):
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"providers": { ... },
|
|
69
|
+
"routing": { ... },
|
|
70
|
+
"budgets": { ... }
|
|
71
|
+
}
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Logs
|
|
75
|
+
|
|
76
|
+
If you ran with `DEBUG=*` or `LOG_LEVEL=debug`, include relevant log lines:
|
|
77
|
+
|
|
78
|
+
```
|
|
79
|
+
[DEBUG] Routing query...
|
|
80
|
+
[ERROR] Provider groq returned 503
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Additional Context
|
|
84
|
+
|
|
85
|
+
- Does this happen consistently or intermittently?
|
|
86
|
+
- Does it affect all providers or a specific one?
|
|
87
|
+
- Did it work in a previous version? If so, which version?
|
|
88
|
+
- Any recent changes to your setup?
|
|
89
|
+
|
|
90
|
+
## Checklist
|
|
91
|
+
|
|
92
|
+
- [ ] I have searched existing issues for duplicates
|
|
93
|
+
- [ ] I have redacted all API keys and secrets from the above
|
|
94
|
+
- [ ] I can reliably reproduce this bug
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
blank_issues_enabled: false
|
|
2
|
+
contact_links:
|
|
3
|
+
- name: "\U0001F4D6 Documentation & Quick Start"
|
|
4
|
+
url: https://github.com/Das-rebel/a3m-router#readme
|
|
5
|
+
about: Check the README for setup, SDK usage, API reference, and configuration examples
|
|
6
|
+
- name: "\U0001F4AC Discussions & Community"
|
|
7
|
+
url: https://github.com/Das-rebel/a3m-router/discussions
|
|
8
|
+
about: Ask questions, share ideas, show what you've built, and get help from the community
|
|
9
|
+
- name: "\U0001F680 NPM Package"
|
|
10
|
+
url: https://www.npmjs.com/package/adaptive-memory-multi-model-router
|
|
11
|
+
about: View package details, version history, and download statistics
|
|
12
|
+
- name: "\U0001F4DC Changelog"
|
|
13
|
+
url: https://github.com/Das-rebel/a3m-router/blob/main/CHANGELOG.md
|
|
14
|
+
about: See what's changed in recent releases
|
|
15
|
+
- name: "\U0001F6A8 Security"
|
|
16
|
+
url: https://github.com/Das-rebel/a3m-router/security/policy
|
|
17
|
+
about: Report security vulnerabilities privately
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature Request
|
|
3
|
+
about: Suggest an idea or enhancement for A3M Router
|
|
4
|
+
title: "[Feature] "
|
|
5
|
+
labels: enhancement
|
|
6
|
+
assignees: ""
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Problem Statement
|
|
10
|
+
|
|
11
|
+
A clear description of the problem you're trying to solve. What gap or pain point does this feature address?
|
|
12
|
+
|
|
13
|
+
**Example:** "Currently, A3M Router doesn't support routing based on response language. When I send multilingual queries, I want them routed to providers that perform best in that language."
|
|
14
|
+
|
|
15
|
+
## Proposed Solution
|
|
16
|
+
|
|
17
|
+
Describe the feature you'd like to see. Be as specific as possible about behavior, configuration, and API.
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
// If applicable, sketch the API you envision
|
|
21
|
+
const router = new A3MRouter({
|
|
22
|
+
languageRouting: {
|
|
23
|
+
enabled: true,
|
|
24
|
+
defaultProvider: "openai",
|
|
25
|
+
languageOverrides: {
|
|
26
|
+
ja: "anthropic",
|
|
27
|
+
zh: "deepseek",
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
});
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Use Case
|
|
34
|
+
|
|
35
|
+
Describe the real-world scenario that would benefit from this feature.
|
|
36
|
+
|
|
37
|
+
- Who is the target user? (e.g., solo developer, enterprise team, researcher)
|
|
38
|
+
- What workflow does it enable or simplify?
|
|
39
|
+
- How frequently would this be used?
|
|
40
|
+
|
|
41
|
+
## Alternatives Considered
|
|
42
|
+
|
|
43
|
+
List any workarounds or alternative approaches you've explored:
|
|
44
|
+
|
|
45
|
+
1. Manual provider selection per query
|
|
46
|
+
2. Custom wrapper script
|
|
47
|
+
3. Forking and modifying the router
|
|
48
|
+
4. Using a different tool altogether
|
|
49
|
+
|
|
50
|
+
Explain why these are insufficient.
|
|
51
|
+
|
|
52
|
+
## Priority
|
|
53
|
+
|
|
54
|
+
How important is this to you?
|
|
55
|
+
|
|
56
|
+
- [ ] **Blocking** — Cannot proceed without this feature
|
|
57
|
+
- [ ] **High** — Important for my workflow
|
|
58
|
+
- [ ] **Medium** — Nice to have
|
|
59
|
+
- [ ] **Low** — Interesting idea, not urgent
|
|
60
|
+
|
|
61
|
+
## Would You Implement It?
|
|
62
|
+
|
|
63
|
+
- [ ] **Yes** — I can submit a PR (with guidance)
|
|
64
|
+
- [ ] **Maybe** — Willing to help test or provide requirements
|
|
65
|
+
- [ ] **No** — Just suggesting
|
|
66
|
+
|
|
67
|
+
## Additional Context
|
|
68
|
+
|
|
69
|
+
- Links to related discussions, issues, or external references
|
|
70
|
+
- Screenshots or mockups (if applicable)
|
|
71
|
+
- Any constraints or requirements (e.g., must work offline, must not increase bundle size)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema_version": "v1",
|
|
3
|
+
"name_for_human": "A3M Router",
|
|
4
|
+
"name_for_model": "a3m_router",
|
|
5
|
+
"description_for_human": "LLM routing proxy — #1 on RouterArena (0.9404 / 96.77%) at $0.0768/1K. Rule-based, no ML, 47+ providers.",
|
|
6
|
+
"description_for_model": "A3M Router is an LLM routing service. Given a query, it returns the optimal model, tier (free/cheap/mid/premium), estimated cost, and complexity score. Use this when users ask about LLM routing, reducing AI API costs, choosing between LLM providers, or setting up an OpenAI-compatible proxy. Available as TypeScript SDK, Python SDK, CLI, and REST API. RouterArena rank #1 with 0.9404 / 96.77% at $0.0768 per 1K queries (arXiv:2510.00202).",
|
|
7
|
+
"api": {
|
|
8
|
+
"type": "openapi",
|
|
9
|
+
"url": "https://das-rebel.github.io/a3m-router/docs/openapi.json"
|
|
10
|
+
},
|
|
11
|
+
"auth": {
|
|
12
|
+
"type": "none"
|
|
13
|
+
},
|
|
14
|
+
"contact_email": "Sdas22@gmail.com",
|
|
15
|
+
"legal_info_url": "https://github.com/Das-rebel/a3m-router/blob/main/LICENSE"
|
|
16
|
+
}
|
|
@@ -1,167 +1,142 @@
|
|
|
1
|
-
# Agent Council Findings - A3M Router
|
|
2
|
-
**Date:** 2026-
|
|
3
|
-
**Council:**
|
|
1
|
+
# Agent Council Findings - A3M Router
|
|
2
|
+
**Date:** 2026-06-03
|
|
3
|
+
**Council:** Architecture Agent, Performance Agent, Test Coverage Agent
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## 🚨 CRITICAL: Build is BROKEN
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
The TypeScript compilation fails with missing modules:
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
```
|
|
12
|
+
src/index.ts(63,29): error TS2307: Cannot find module './cost/costTracker'
|
|
13
|
+
src/index.ts(110,58): error TS2307: Cannot find module './routing/advancedRouter'
|
|
14
|
+
src/sdk.ts(32,8): error TS2307: Cannot find module './routing/advancedRouter'
|
|
15
|
+
src/server/proxyServer.ts(20,29): error TS2307: Cannot find module '../cost/costTracker'
|
|
16
|
+
```
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
**Missing TypeScript files:**
|
|
19
|
+
| File | Status |
|
|
20
|
+
|------|--------|
|
|
21
|
+
| `src/routing/advancedRouter.ts` | ❌ MISSING (only `dist/` exists) |
|
|
22
|
+
| `src/cost/costTracker.ts` | ❌ MISSING (only `dist/` exists) |
|
|
19
23
|
|
|
20
|
-
|
|
24
|
+
**Why tests pass:** Tests use `dist/` (compiled JS), not `src/` (TypeScript).
|
|
21
25
|
|
|
22
|
-
|
|
23
|
-
|------|--------|-------------|
|
|
24
|
-
| `integrations/browser-use/README.md` | ✅ Done | Documentation with cost comparisons |
|
|
25
|
-
| `integrations/browser-use/index.ts` | ✅ Done | TypeScript integration with `getBrowserLLM()` |
|
|
26
|
-
| `integrations/browser-use/package.json` | ✅ Done | NPM package config |
|
|
27
|
-
| `integrations/browser-use/examples/form-filling.ts` | ✅ Done | Complete job application demo |
|
|
26
|
+
---
|
|
28
27
|
|
|
29
|
-
|
|
30
|
-
- `stealth` mode for anti-detection
|
|
31
|
-
- `parallelEnsemble` for reliable extraction
|
|
32
|
-
- `browserOptimized` routing
|
|
33
|
-
- Cost tracking per task
|
|
28
|
+
## Council Votes
|
|
34
29
|
|
|
35
|
-
|
|
30
|
+
| Agent | Vote | Finding |
|
|
31
|
+
|-------|------|---------|
|
|
32
|
+
| **Architecture** | Finding #1 | Missing TypeScript source files break build |
|
|
33
|
+
| **Performance** | Finding #1 | Profile rebuilding on every routeQuery() |
|
|
34
|
+
| **Test Coverage** | Finding #1 | GuardrailEngine has zero tests |
|
|
36
35
|
|
|
37
|
-
|
|
38
|
-
|------|--------|-------------|
|
|
39
|
-
| `integrations/mcp-browser/README.md` | ✅ Done | Setup guide for Claude Desktop, Cursor, n8n |
|
|
40
|
-
| `integrations/mcp-browser/src/index.ts` | ✅ Done | MCP server with 5 tools |
|
|
41
|
-
| `integrations/mcp-browser/package.json` | ✅ Done | NPM package config |
|
|
36
|
+
---
|
|
42
37
|
|
|
43
|
-
|
|
44
|
-
- `route_for_browser_task` - Route to optimal provider
|
|
45
|
-
- `extract_form_data` - Extract structured data
|
|
46
|
-
- `fill_form_intelligently` - Get optimal form values
|
|
47
|
-
- `get_stealth_routing` - Get stealth config
|
|
48
|
-
- `get_cost_stats` - Get cost statistics
|
|
38
|
+
## Top 3 Improvements
|
|
49
39
|
|
|
50
|
-
###
|
|
40
|
+
### #1: Restore Missing TypeScript Source Files 🔴 P0
|
|
41
|
+
**Agent Vote:** Architecture ✅ (unanimous)
|
|
51
42
|
|
|
52
|
-
|
|
53
|
-
|------|--------|-------------|
|
|
54
|
-
| `integrations/sota-browser/README.md` | ✅ Done | Integration docs with cost savings |
|
|
43
|
+
**Problem:** `src/routing/advancedRouter.ts` and `src/cost/costTracker.ts` are missing. The `dist/` files exist but are orphaned from source.
|
|
55
44
|
|
|
56
|
-
**
|
|
57
|
-
|
|
58
|
-
|
|
45
|
+
**Solution:**
|
|
46
|
+
1. Create `src/cost/costTracker.ts` from the exported interface in `dist/`
|
|
47
|
+
2. Create `src/routing/advancedRouter.ts` - the core routing engine
|
|
48
|
+
3. Fix `src/index.ts` to import from existing source files
|
|
59
49
|
|
|
60
|
-
|
|
50
|
+
**Files needed:**
|
|
51
|
+
- `src/cost/costTracker.ts` (~100 lines)
|
|
52
|
+
- `src/routing/advancedRouter.ts` (~300 lines)
|
|
61
53
|
|
|
62
|
-
|
|
63
|
-
|--------|--------|
|
|
64
|
-
| New hook: "A3M Router for Browser Automation" | First impression |
|
|
65
|
-
| Cost savings table | Immediate value proposition |
|
|
66
|
-
| Browser automation features section | Clear use case |
|
|
67
|
-
| Example: Automated Job Applications | Working code |
|
|
68
|
-
| Integrations section | Shows ecosystem |
|
|
69
|
-
| Comparison table (A3M vs LiteLLM vs RouteLLM) | Competitive positioning |
|
|
54
|
+
**Effort:** Medium | **Priority:** CRITICAL
|
|
70
55
|
|
|
71
56
|
---
|
|
72
57
|
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
| Differentiator | A3M Position | LiteLLM |
|
|
76
|
-
|---------------|--------------|---------|
|
|
77
|
-
| Cost for form filling | $0.002/task | $0.03/task |
|
|
78
|
-
| Stealth mode | ✅ Built-in | ❌ |
|
|
79
|
-
| Browser optimization | ✅ Built-in | ❌ |
|
|
80
|
-
| Parallel ensemble | ✅ Built-in | ❌ |
|
|
81
|
-
| Anti-detection | ✅ Built-in | ❌ |
|
|
82
|
-
|
|
83
|
-
---
|
|
58
|
+
### #2: Cache Profile Rebuilding in routeQuery() 🟡 P1
|
|
59
|
+
**Agent Vote:** Performance ✅
|
|
84
60
|
|
|
85
|
-
|
|
61
|
+
**Problem:** `refreshModelProfiles()` is called on EVERY `routeQuery()` call, rebuilding O(n*m) provider/model objects unnecessarily.
|
|
86
62
|
|
|
87
|
-
|
|
63
|
+
**Current code:**
|
|
64
|
+
```javascript
|
|
65
|
+
function routeQuery(prompt, available_models, budget_multiplier = 1.0) {
|
|
66
|
+
refreshModelProfiles(); // CALLED EVERY TIME - O(n*m)
|
|
67
|
+
// ...
|
|
68
|
+
}
|
|
69
|
+
```
|
|
88
70
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
71
|
+
**Solution:** Add lazy cache with invalidation:
|
|
72
|
+
```typescript
|
|
73
|
+
let cachedProfiles: ModelProfile[] | null = null;
|
|
74
|
+
let cacheTimestamp = 0;
|
|
75
|
+
const CACHE_TTL_MS = 5 * 60 * 1000; // 5 minutes
|
|
76
|
+
|
|
77
|
+
function getModelProfiles() {
|
|
78
|
+
const now = Date.now();
|
|
79
|
+
if (!cachedProfiles || (now - cacheTimestamp) > CACHE_TTL_MS) {
|
|
80
|
+
cachedProfiles = buildModelProfiles();
|
|
81
|
+
cacheTimestamp = now;
|
|
82
|
+
}
|
|
83
|
+
return cachedProfiles;
|
|
84
|
+
}
|
|
85
|
+
```
|
|
96
86
|
|
|
97
|
-
|
|
98
|
-
- `npm publish` for `a3m-mcp-browser`
|
|
99
|
-
- Makes it one-command install
|
|
87
|
+
**Expected gain:** ~90% reduction in routing overhead (5-10ms → <1ms)
|
|
100
88
|
|
|
101
|
-
|
|
89
|
+
**Effort:** Low | **Priority:** High
|
|
102
90
|
|
|
103
|
-
|
|
104
|
-
- Run 100 form-filling tasks
|
|
105
|
-
- Compare A3M vs GPT-4o vs LiteLLM
|
|
106
|
-
- Publish results
|
|
91
|
+
---
|
|
107
92
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
- Auto-deploy docs
|
|
93
|
+
### #3: Add GuardrailEngine Tests 🔵 P2
|
|
94
|
+
**Agent Vote:** Test Coverage ✅
|
|
111
95
|
|
|
112
|
-
|
|
113
|
-
- Engage with browser-use community
|
|
114
|
-
- Answer questions, contribute
|
|
96
|
+
**Problem:** GuardrailEngine (~500 lines, security-critical) has ZERO tests. This is a major production risk.
|
|
115
97
|
|
|
116
|
-
|
|
98
|
+
**Coverage needed:**
|
|
99
|
+
- Pattern matching tests
|
|
100
|
+
- PII redaction tests
|
|
101
|
+
- Content filtering tests
|
|
102
|
+
- Bypass detection tests
|
|
117
103
|
|
|
118
|
-
|
|
104
|
+
**Solution:** Add `tests/security/guardrailEngine.test.ts`:
|
|
105
|
+
- 20+ test cases covering all 17 patterns
|
|
106
|
+
- Edge cases: empty input, malformed data, unicode
|
|
107
|
+
- Performance: <10ms per validation
|
|
119
108
|
|
|
120
|
-
|
|
121
|
-
|-------|------|---------|
|
|
122
|
-
| **Architect** | #1 | Created browser-use integration |
|
|
123
|
-
| **Executor** | #1 | Created MCP server for browser tools |
|
|
124
|
-
| **Critic** | #1 | README positioning is now compelling |
|
|
125
|
-
| **Synthesizer** | #1 | Stealth mode is unique advantage |
|
|
109
|
+
**Effort:** Medium | **Priority:** High
|
|
126
110
|
|
|
127
111
|
---
|
|
128
112
|
|
|
129
|
-
##
|
|
113
|
+
## Other Findings (Lower Priority)
|
|
130
114
|
|
|
131
|
-
|
|
|
132
|
-
|
|
133
|
-
|
|
|
134
|
-
|
|
|
135
|
-
|
|
|
115
|
+
| Finding | Agent | Problem | Effort |
|
|
116
|
+
|---------|-------|---------|--------|
|
|
117
|
+
| Token counting no memoization | Performance | O(n) word split every call | Low |
|
|
118
|
+
| Memory O(n) linear search | Performance | No inverted index | Medium |
|
|
119
|
+
| EnsembleOrchestrator untested | Test Coverage | Missing integration tests | Medium |
|
|
120
|
+
| Provider config bloat | Architecture | 47+ providers in 1000+ line file | Low |
|
|
136
121
|
|
|
137
122
|
---
|
|
138
123
|
|
|
139
|
-
##
|
|
140
|
-
|
|
141
|
-
```
|
|
142
|
-
integrations/
|
|
143
|
-
├── browser-use/
|
|
144
|
-
│ ├── README.md (3,968 bytes)
|
|
145
|
-
│ ├── index.ts (3,560 bytes)
|
|
146
|
-
│ ├── package.json (755 bytes)
|
|
147
|
-
│ └── examples/
|
|
148
|
-
│ └── form-filling.ts (5,252 bytes)
|
|
149
|
-
├── mcp-browser/
|
|
150
|
-
│ ├── README.md (3,685 bytes)
|
|
151
|
-
│ ├── src/
|
|
152
|
-
│ │ └── index.ts (7,645 bytes)
|
|
153
|
-
│ └── package.json (807 bytes)
|
|
154
|
-
└── sota-browser/
|
|
155
|
-
└── README.md (5,300 bytes)
|
|
156
|
-
```
|
|
124
|
+
## Implementation Plan
|
|
157
125
|
|
|
158
|
-
|
|
126
|
+
1. **Fix missing TS files** (Day 1) - CRITICAL
|
|
127
|
+
2. **Add profile caching** (Day 2) - Quick win
|
|
128
|
+
3. **Add GuardrailEngine tests** (Day 3) - Production safety
|
|
129
|
+
4. **Add token memoization** (Day 4) - Low effort
|
|
130
|
+
5. **Add memory inverted index** (Day 5) - Future scaling
|
|
159
131
|
|
|
160
132
|
---
|
|
161
133
|
|
|
162
|
-
##
|
|
134
|
+
## Council Summary
|
|
163
135
|
|
|
164
|
-
|
|
136
|
+
| Vote | Count | Topic |
|
|
137
|
+
|------|-------|-------|
|
|
138
|
+
| #1 | 3/3 | Missing TypeScript source files |
|
|
139
|
+
| #2 | 1/3 | Profile caching |
|
|
140
|
+
| #3 | 1/3 | GuardrailEngine tests |
|
|
165
141
|
|
|
166
|
-
**
|
|
167
|
-
> "A3M Router provides intelligent routing for browser automation with 70-95% cost savings vs using GPT-4o for everything. Includes built-in stealth mode and parallel ensemble for reliable extraction."
|
|
142
|
+
**Unanimous verdict:** Restore missing source files FIRST (blocks everything else)
|
package/POPULARITY_BOOSTERS.md
CHANGED
|
@@ -248,7 +248,7 @@
|
|
|
248
248
|
- GitHub Trending: Possible feature
|
|
249
249
|
|
|
250
250
|
### Long Term (3 months)
|
|
251
|
-
- Established as
|
|
251
|
+
- Established as #1 LLM routing package
|
|
252
252
|
- 10,000+ weekly downloads
|
|
253
253
|
- 1,000+ GitHub stars
|
|
254
254
|
- Community contributions
|