mozart-router 0.1.0

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 (238) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +250 -0
  3. package/dist/adapters/cursor.d.ts +10 -0
  4. package/dist/adapters/cursor.d.ts.map +1 -0
  5. package/dist/adapters/cursor.js +39 -0
  6. package/dist/adapters/cursor.js.map +1 -0
  7. package/dist/adapters/generic.d.ts +24 -0
  8. package/dist/adapters/generic.d.ts.map +1 -0
  9. package/dist/adapters/generic.js +192 -0
  10. package/dist/adapters/generic.js.map +1 -0
  11. package/dist/adapters/hermes.d.ts +10 -0
  12. package/dist/adapters/hermes.d.ts.map +1 -0
  13. package/dist/adapters/hermes.js +170 -0
  14. package/dist/adapters/hermes.js.map +1 -0
  15. package/dist/adapters/index.d.ts +13 -0
  16. package/dist/adapters/index.d.ts.map +1 -0
  17. package/dist/adapters/index.js +27 -0
  18. package/dist/adapters/index.js.map +1 -0
  19. package/dist/adapters/litellm.d.ts +15 -0
  20. package/dist/adapters/litellm.d.ts.map +1 -0
  21. package/dist/adapters/litellm.js +238 -0
  22. package/dist/adapters/litellm.js.map +1 -0
  23. package/dist/adapters/lmstudio.d.ts +12 -0
  24. package/dist/adapters/lmstudio.d.ts.map +1 -0
  25. package/dist/adapters/lmstudio.js +128 -0
  26. package/dist/adapters/lmstudio.js.map +1 -0
  27. package/dist/adapters/nim.d.ts +12 -0
  28. package/dist/adapters/nim.d.ts.map +1 -0
  29. package/dist/adapters/nim.js +163 -0
  30. package/dist/adapters/nim.js.map +1 -0
  31. package/dist/adapters/ollama.d.ts +12 -0
  32. package/dist/adapters/ollama.d.ts.map +1 -0
  33. package/dist/adapters/ollama.js +243 -0
  34. package/dist/adapters/ollama.js.map +1 -0
  35. package/dist/adapters/openclaw.d.ts +10 -0
  36. package/dist/adapters/openclaw.d.ts.map +1 -0
  37. package/dist/adapters/openclaw.js +197 -0
  38. package/dist/adapters/openclaw.js.map +1 -0
  39. package/dist/adapters/opencode.d.ts +10 -0
  40. package/dist/adapters/opencode.d.ts.map +1 -0
  41. package/dist/adapters/opencode.js +180 -0
  42. package/dist/adapters/opencode.js.map +1 -0
  43. package/dist/adapters/openrouter.d.ts +13 -0
  44. package/dist/adapters/openrouter.d.ts.map +1 -0
  45. package/dist/adapters/openrouter.js +173 -0
  46. package/dist/adapters/openrouter.js.map +1 -0
  47. package/dist/adapters/vllm.d.ts +12 -0
  48. package/dist/adapters/vllm.d.ts.map +1 -0
  49. package/dist/adapters/vllm.js +129 -0
  50. package/dist/adapters/vllm.js.map +1 -0
  51. package/dist/api/dashboard.d.ts +3 -0
  52. package/dist/api/dashboard.d.ts.map +1 -0
  53. package/dist/api/dashboard.js +98 -0
  54. package/dist/api/dashboard.js.map +1 -0
  55. package/dist/api/mcp.d.ts +32 -0
  56. package/dist/api/mcp.d.ts.map +1 -0
  57. package/dist/api/mcp.js +215 -0
  58. package/dist/api/mcp.js.map +1 -0
  59. package/dist/api/middleware.d.ts +20 -0
  60. package/dist/api/middleware.d.ts.map +1 -0
  61. package/dist/api/middleware.js +239 -0
  62. package/dist/api/middleware.js.map +1 -0
  63. package/dist/api/server.d.ts +26 -0
  64. package/dist/api/server.d.ts.map +1 -0
  65. package/dist/api/server.js +294 -0
  66. package/dist/api/server.js.map +1 -0
  67. package/dist/api/streaming.d.ts +19 -0
  68. package/dist/api/streaming.d.ts.map +1 -0
  69. package/dist/api/streaming.js +274 -0
  70. package/dist/api/streaming.js.map +1 -0
  71. package/dist/cli/config-init.d.ts +2 -0
  72. package/dist/cli/config-init.d.ts.map +1 -0
  73. package/dist/cli/config-init.js +73 -0
  74. package/dist/cli/config-init.js.map +1 -0
  75. package/dist/cli/main.d.ts +3 -0
  76. package/dist/cli/main.d.ts.map +1 -0
  77. package/dist/cli/main.js +618 -0
  78. package/dist/cli/main.js.map +1 -0
  79. package/dist/context/advanced-optimizer.d.ts +12 -0
  80. package/dist/context/advanced-optimizer.d.ts.map +1 -0
  81. package/dist/context/advanced-optimizer.js +64 -0
  82. package/dist/context/advanced-optimizer.js.map +1 -0
  83. package/dist/context/optimizer.d.ts +7 -0
  84. package/dist/context/optimizer.d.ts.map +1 -0
  85. package/dist/context/optimizer.js +101 -0
  86. package/dist/context/optimizer.js.map +1 -0
  87. package/dist/core/cache.d.ts +39 -0
  88. package/dist/core/cache.d.ts.map +1 -0
  89. package/dist/core/cache.js +90 -0
  90. package/dist/core/cache.js.map +1 -0
  91. package/dist/core/health.d.ts +32 -0
  92. package/dist/core/health.d.ts.map +1 -0
  93. package/dist/core/health.js +92 -0
  94. package/dist/core/health.js.map +1 -0
  95. package/dist/core/inventory.d.ts +28 -0
  96. package/dist/core/inventory.d.ts.map +1 -0
  97. package/dist/core/inventory.js +106 -0
  98. package/dist/core/inventory.js.map +1 -0
  99. package/dist/core/metrics.d.ts +48 -0
  100. package/dist/core/metrics.d.ts.map +1 -0
  101. package/dist/core/metrics.js +115 -0
  102. package/dist/core/metrics.js.map +1 -0
  103. package/dist/core/mozart.d.ts +39 -0
  104. package/dist/core/mozart.d.ts.map +1 -0
  105. package/dist/core/mozart.js +156 -0
  106. package/dist/core/mozart.js.map +1 -0
  107. package/dist/core/persistence.d.ts +13 -0
  108. package/dist/core/persistence.d.ts.map +1 -0
  109. package/dist/core/persistence.js +119 -0
  110. package/dist/core/persistence.js.map +1 -0
  111. package/dist/core/plugins.d.ts +18 -0
  112. package/dist/core/plugins.d.ts.map +1 -0
  113. package/dist/core/plugins.js +110 -0
  114. package/dist/core/plugins.js.map +1 -0
  115. package/dist/core/reliability.d.ts +23 -0
  116. package/dist/core/reliability.d.ts.map +1 -0
  117. package/dist/core/reliability.js +70 -0
  118. package/dist/core/reliability.js.map +1 -0
  119. package/dist/core/session.d.ts +17 -0
  120. package/dist/core/session.d.ts.map +1 -0
  121. package/dist/core/session.js +67 -0
  122. package/dist/core/session.js.map +1 -0
  123. package/dist/cost/dynamic-pricing.d.ts +24 -0
  124. package/dist/cost/dynamic-pricing.d.ts.map +1 -0
  125. package/dist/cost/dynamic-pricing.js +71 -0
  126. package/dist/cost/dynamic-pricing.js.map +1 -0
  127. package/dist/cost/estimator.d.ts +8 -0
  128. package/dist/cost/estimator.d.ts.map +1 -0
  129. package/dist/cost/estimator.js +48 -0
  130. package/dist/cost/estimator.js.map +1 -0
  131. package/dist/explain/engine.d.ts +6 -0
  132. package/dist/explain/engine.d.ts.map +1 -0
  133. package/dist/explain/engine.js +59 -0
  134. package/dist/explain/engine.js.map +1 -0
  135. package/dist/index.d.ts +59 -0
  136. package/dist/index.d.ts.map +1 -0
  137. package/dist/index.js +112 -0
  138. package/dist/index.js.map +1 -0
  139. package/dist/logs/logger.d.ts +35 -0
  140. package/dist/logs/logger.d.ts.map +1 -0
  141. package/dist/logs/logger.js +73 -0
  142. package/dist/logs/logger.js.map +1 -0
  143. package/dist/logs/redactor.d.ts +6 -0
  144. package/dist/logs/redactor.d.ts.map +1 -0
  145. package/dist/logs/redactor.js +54 -0
  146. package/dist/logs/redactor.js.map +1 -0
  147. package/dist/policy/engine.d.ts +9 -0
  148. package/dist/policy/engine.d.ts.map +1 -0
  149. package/dist/policy/engine.js +55 -0
  150. package/dist/policy/engine.js.map +1 -0
  151. package/dist/policy/loader.d.ts +3 -0
  152. package/dist/policy/loader.d.ts.map +1 -0
  153. package/dist/policy/loader.js +27 -0
  154. package/dist/policy/loader.js.map +1 -0
  155. package/dist/policy/profiles.d.ts +11 -0
  156. package/dist/policy/profiles.d.ts.map +1 -0
  157. package/dist/policy/profiles.js +263 -0
  158. package/dist/policy/profiles.js.map +1 -0
  159. package/dist/policy/yaml-loader.d.ts +10 -0
  160. package/dist/policy/yaml-loader.d.ts.map +1 -0
  161. package/dist/policy/yaml-loader.js +160 -0
  162. package/dist/policy/yaml-loader.js.map +1 -0
  163. package/dist/privacy/guard.d.ts +8 -0
  164. package/dist/privacy/guard.d.ts.map +1 -0
  165. package/dist/privacy/guard.js +125 -0
  166. package/dist/privacy/guard.js.map +1 -0
  167. package/dist/routing/circuit-breaker.d.ts +23 -0
  168. package/dist/routing/circuit-breaker.d.ts.map +1 -0
  169. package/dist/routing/circuit-breaker.js +74 -0
  170. package/dist/routing/circuit-breaker.js.map +1 -0
  171. package/dist/routing/classifier.d.ts +5 -0
  172. package/dist/routing/classifier.d.ts.map +1 -0
  173. package/dist/routing/classifier.js +102 -0
  174. package/dist/routing/classifier.js.map +1 -0
  175. package/dist/routing/fallback.d.ts +27 -0
  176. package/dist/routing/fallback.d.ts.map +1 -0
  177. package/dist/routing/fallback.js +66 -0
  178. package/dist/routing/fallback.js.map +1 -0
  179. package/dist/routing/multistage.d.ts +49 -0
  180. package/dist/routing/multistage.d.ts.map +1 -0
  181. package/dist/routing/multistage.js +108 -0
  182. package/dist/routing/multistage.js.map +1 -0
  183. package/dist/routing/router.d.ts +22 -0
  184. package/dist/routing/router.d.ts.map +1 -0
  185. package/dist/routing/router.js +123 -0
  186. package/dist/routing/router.js.map +1 -0
  187. package/dist/routing/scorer.d.ts +8 -0
  188. package/dist/routing/scorer.d.ts.map +1 -0
  189. package/dist/routing/scorer.js +131 -0
  190. package/dist/routing/scorer.js.map +1 -0
  191. package/dist/skills/definitions.d.ts +10 -0
  192. package/dist/skills/definitions.d.ts.map +1 -0
  193. package/dist/skills/definitions.js +112 -0
  194. package/dist/skills/definitions.js.map +1 -0
  195. package/dist/skills/index.d.ts +3 -0
  196. package/dist/skills/index.d.ts.map +1 -0
  197. package/dist/skills/index.js +14 -0
  198. package/dist/skills/index.js.map +1 -0
  199. package/dist/types/index.d.ts +298 -0
  200. package/dist/types/index.d.ts.map +1 -0
  201. package/dist/types/index.js +34 -0
  202. package/dist/types/index.js.map +1 -0
  203. package/dist/utils/canrunit.d.ts +26 -0
  204. package/dist/utils/canrunit.d.ts.map +1 -0
  205. package/dist/utils/canrunit.js +69 -0
  206. package/dist/utils/canrunit.js.map +1 -0
  207. package/dist/utils/dealsforge.d.ts +6 -0
  208. package/dist/utils/dealsforge.d.ts.map +1 -0
  209. package/dist/utils/dealsforge.js +105 -0
  210. package/dist/utils/dealsforge.js.map +1 -0
  211. package/docs/ADAPTERS.md +129 -0
  212. package/docs/ARCHITECTURE.md +113 -0
  213. package/docs/DELEGATED_EXECUTION.md +62 -0
  214. package/docs/FEATURE_MATRIX.md +113 -0
  215. package/docs/GATEWAY_FIRST_PRINCIPLES.md +66 -0
  216. package/docs/INTEGRATIONS.md +94 -0
  217. package/docs/LIMITATIONS.md +43 -0
  218. package/docs/RECOMMEND_ONLY_MODE.md +82 -0
  219. package/docs/ROADMAP.md +70 -0
  220. package/docs/SECURITY.md +74 -0
  221. package/docs/SKILLS_AND_TOOLS.md +141 -0
  222. package/examples/community-adapter/TEMPLATE.md +157 -0
  223. package/examples/generic-tools/README.md +29 -0
  224. package/examples/generic-tools/mozart-tools.json +86 -0
  225. package/examples/hermes/README.md +29 -0
  226. package/examples/hermes/mozart-tool.json +48 -0
  227. package/examples/litellm/README.md +21 -0
  228. package/examples/litellm/config.yaml +39 -0
  229. package/examples/ollama/README.md +37 -0
  230. package/examples/ollama/usage.ts +59 -0
  231. package/examples/openclaw/README.md +26 -0
  232. package/examples/openclaw/mozart-skill.yaml +80 -0
  233. package/examples/opencode/README.md +30 -0
  234. package/examples/opencode/SKILL.md +47 -0
  235. package/examples/opencode/mozart-skill.json +64 -0
  236. package/examples/openrouter/README.md +21 -0
  237. package/examples/openrouter/config.json +14 -0
  238. package/package.json +53 -0
@@ -0,0 +1,47 @@
1
+ ---
2
+ name: mozart-router
3
+ description: Route AI tasks to the best available model based on cost, context, latency, privacy and reliability. Gateways execute — Mozart decides.
4
+ license: MIT
5
+ compatibility: opencode
6
+ metadata:
7
+ audience: ai-builders
8
+ category: orchestration
9
+ ---
10
+
11
+ # Mozart Router — OpenCode Skill
12
+
13
+ ## What I do
14
+ - Detect your configured AI providers and models
15
+ - Classify each task and select the optimal model/provider
16
+ - Estimate cost and tokens before execution
17
+ - Scan for secrets and block cloud leaks
18
+ - Explain every routing decision
19
+ - Fall back gracefully when providers fail
20
+
21
+ ## When to use me
22
+ Use this skill when the agent needs to:
23
+ - Choose between multiple available models
24
+ - Estimate the cost of an LLM call before making it
25
+ - Check if context contains secrets before sending to a cloud model
26
+ - Optimize context to reduce token usage
27
+ - Get a fallback plan in case a model fails
28
+
29
+ ## How to use
30
+ Call the Mozart MCP server or SDK:
31
+
32
+ ```typescript
33
+ import { Mozart } from 'mozart-router';
34
+ const mozart = new Mozart();
35
+ await mozart.detectAll();
36
+ const route = await mozart.recommend('your task here');
37
+ ```
38
+
39
+ ## Integration modes
40
+ - **MCP Server**: `npx mozart-router mcp`
41
+ - **CLI**: `npx mozart-router doctor`
42
+ - **SDK**: `import { Mozart } from 'mozart-router'`
43
+ - **HTTP API**: `npx mozart-router start --port=4444`
44
+
45
+ Gateways execute. Mozart decides.
46
+ Do not rebuild what the gateway already does.
47
+ Detect it, understand it, orchestrate it.
@@ -0,0 +1,64 @@
1
+ {
2
+ "name": "mozart.route_model",
3
+ "description": "Choose the best available model/provider/gateway for a task",
4
+ "version": "0.1.0",
5
+ "type": "skill",
6
+ "integration": {
7
+ "provider": "mozart-router",
8
+ "method": "sdk",
9
+ "package": "mozart-router"
10
+ },
11
+ "input": {
12
+ "task": {
13
+ "type": "string",
14
+ "description": "The task to route",
15
+ "required": true
16
+ },
17
+ "context_size": {
18
+ "type": "number",
19
+ "description": "Estimated context size in tokens"
20
+ },
21
+ "privacy_mode": {
22
+ "type": "string",
23
+ "description": "Privacy level",
24
+ "enum": ["open", "balanced", "privacy_first", "local_only"],
25
+ "default": "balanced"
26
+ },
27
+ "budget_mode": {
28
+ "type": "string",
29
+ "description": "Budget preference",
30
+ "enum": ["lowest", "balanced", "quality"],
31
+ "default": "balanced"
32
+ }
33
+ },
34
+ "output": {
35
+ "selected_gateway": {
36
+ "type": "string",
37
+ "description": "Selected gateway"
38
+ },
39
+ "selected_provider": {
40
+ "type": "string",
41
+ "description": "Selected provider"
42
+ },
43
+ "selected_model": {
44
+ "type": "string",
45
+ "description": "Selected model"
46
+ },
47
+ "confidence": {
48
+ "type": "number",
49
+ "description": "Confidence score (0-1)"
50
+ },
51
+ "estimated_cost": {
52
+ "type": "number",
53
+ "description": "Estimated cost in USD"
54
+ },
55
+ "explanation": {
56
+ "type": "array",
57
+ "description": "Human-readable explanation"
58
+ }
59
+ },
60
+ "usage": {
61
+ "import": "import { Mozart } from 'mozart-router'",
62
+ "example": "const mozart = new Mozart();\nconst route = await mozart.recommend(task);"
63
+ }
64
+ }
@@ -0,0 +1,21 @@
1
+ # OpenRouter + Mozart
2
+
3
+ This directory contains an example OpenRouter configuration reference.
4
+
5
+ ## Files
6
+
7
+ - `config.json` — Example OpenRouter config
8
+
9
+ ## Integration
10
+
11
+ Mozart detects OpenRouter via the `OPENROUTER_API_KEY` environment variable. When configured, Mozart adds OpenRouter to its inventory and can route tasks to models available through OpenRouter.
12
+
13
+ 1. Set your API key (already managed by your existing setup)
14
+ 2. Mozart detects it and builds an inventory
15
+ 3. Route tasks via Mozart's recommendation engine
16
+
17
+ ## Status
18
+
19
+ OpenRouter integration is **real** — environment variable detection and curated model inventory work. Real-time model list from the API is not yet implemented to avoid unnecessary network calls.
20
+
21
+ This integration is community-maintained. OpenRouter is its own service (https://openrouter.ai).
@@ -0,0 +1,14 @@
1
+ {
2
+ "providers": {
3
+ "openrouter": {
4
+ "base_url": "https://openrouter.ai/api/v1",
5
+ "auth": "Bearer ${OPENROUTER_API_KEY}"
6
+ }
7
+ },
8
+ "preferences": {
9
+ "default_model": "auto",
10
+ "fallback_enabled": true,
11
+ "max_cost_per_call": 0.5
12
+ },
13
+ "mozart_note": "Mozart detects OpenRouter via OPENROUTER_API_KEY env var. No additional configuration needed."
14
+ }
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "mozart-router",
3
+ "version": "0.1.0",
4
+ "description": "Local orchestration and routing layer for AI agents — gateway-first, agent-first, integration-first.",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "bin": {
8
+ "mozart-router": "./dist/cli/main.js"
9
+ },
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "test": "vitest run",
13
+ "test:watch": "vitest",
14
+ "lint": "tsc --noEmit",
15
+ "mozart": "node dist/cli/main.js",
16
+ "dev": "tsx src/cli/main.ts"
17
+ },
18
+ "keywords": [
19
+ "ai",
20
+ "orchestration",
21
+ "routing",
22
+ "gateway",
23
+ "agent",
24
+ "llm",
25
+ "local"
26
+ ],
27
+ "license": "MIT",
28
+ "author": "Ucav",
29
+ "repository": {
30
+ "type": "git",
31
+ "url": "https://github.com/ucav/mozart-router.git"
32
+ },
33
+ "devDependencies": {
34
+ "@types/node": "^20.11.0",
35
+ "typescript": "^5.3.3",
36
+ "vitest": "^1.2.0"
37
+ },
38
+ "dependencies": {
39
+ "yaml": "^2.3.4"
40
+ },
41
+ "optionalDependencies": {
42
+ "tsx": "^4.7.0"
43
+ },
44
+ "engines": {
45
+ "node": ">=18"
46
+ },
47
+ "files": [
48
+ "dist",
49
+ "docs",
50
+ "examples",
51
+ "README.md"
52
+ ]
53
+ }