adaptive-memory-multi-model-router 2.15.5 → 2.16.1

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 (206) hide show
  1. package/.github/workflows/auto-submit-sitemap.yml +41 -0
  2. package/.github/workflows/mcp-pypi-publish.yml +34 -0
  3. package/.github/workflows/pypi-publish.yml +61 -17
  4. package/.github/workflows/tmlpd-publish.yml +23 -0
  5. package/README.md +181 -207
  6. package/RELEASE_v2.16.0.md +149 -0
  7. package/TECHNICAL_README.md +253 -0
  8. package/discoverability-diagnosis.md +280 -0
  9. package/dist/analytics/costAnalytics.d.ts.map +1 -1
  10. package/dist/benchmark/reproducible.d.ts.map +1 -1
  11. package/dist/cache/semanticCache.d.ts.map +1 -1
  12. package/dist/cli/setupWizard.d.ts +257 -50
  13. package/dist/cli/setupWizard.d.ts.map +1 -1
  14. package/dist/cli/setupWizard.js +419 -109
  15. package/dist/cli/setupWizard.js.map +1 -1
  16. package/dist/cli/tui.js +96 -67
  17. package/dist/cli.js +9 -0
  18. package/dist/cost/budgetEnforcer.d.ts.map +1 -1
  19. package/dist/cost/costTracker.d.ts.map +1 -1
  20. package/dist/ensemble/multiRoundDialog.d.ts.map +1 -1
  21. package/dist/ensemble/shapleyValue.d.ts.map +1 -1
  22. package/dist/ensemble.d.ts +1 -1
  23. package/dist/ensemble.js +141 -0
  24. package/dist/integrations/langchainAdapter.d.ts.map +1 -1
  25. package/dist/integrations/langchainAdapter.js +3 -3
  26. package/dist/integrations/langchainAdapter.js.map +1 -1
  27. package/dist/integrations/oauth.d.ts.map +1 -1
  28. package/dist/integrations/scienceAdapter.d.ts.map +1 -1
  29. package/dist/memory/autoFetch.d.ts.map +1 -1
  30. package/dist/memory/hybridMemory.d.ts.map +1 -1
  31. package/dist/memory/memoryTree.d.ts.map +1 -1
  32. package/dist/memory/obsidianVault.d.ts.map +1 -1
  33. package/dist/memory/reasoningBank.d.ts.map +1 -1
  34. package/dist/observability/metrics.d.ts.map +1 -1
  35. package/dist/observability/tracer.d.ts.map +1 -1
  36. package/dist/providers/providerConfig.d.ts.map +1 -1
  37. package/dist/providers/providerConfig.js +32 -17
  38. package/dist/providers/providerConfig.js.map +1 -1
  39. package/dist/routing/advancedRouter.d.ts.map +1 -1
  40. package/dist/routing/advancedRouter.js +106 -14
  41. package/dist/routing/advancedRouter.js.map +1 -1
  42. package/dist/routing/providerHealth.d.ts.map +1 -1
  43. package/dist/routing/providerRetry.d.ts.map +1 -1
  44. package/dist/routing/shadowSampler.js.map +1 -1
  45. package/dist/security/guardrails.d.ts.map +1 -1
  46. package/dist/server/handlers/chatHandler.d.ts.map +1 -1
  47. package/dist/server/handlers/completionsHandler.d.ts.map +1 -1
  48. package/dist/server/handlers/embeddingsHandler.d.ts.map +1 -1
  49. package/dist/server/handlers/healthHandler.d.ts.map +1 -1
  50. package/dist/server/handlers/metricsHandler.d.ts.map +1 -1
  51. package/dist/server/handlers/modelsHandler.d.ts.map +1 -1
  52. package/dist/server/metrics.d.ts.map +1 -1
  53. package/dist/server/proxyServer.d.ts.map +1 -1
  54. package/dist/server/router.d.ts.map +1 -1
  55. package/dist/server/state.d.ts.map +1 -1
  56. package/dist/skills/__tests__/skill_manager.test.js +5 -265
  57. package/dist/skills/__tests__/skill_manager.test.js.map +1 -1
  58. package/dist/utils/tokenUtils.d.ts.map +1 -1
  59. package/docs/ARTICLE_Biology_Inspired_Routing.md +208 -0
  60. package/docs/ARTICLE_Master.md +78 -0
  61. package/docs/ARTICLE_Master_CN.md +78 -0
  62. package/docs/ARTICLE_OpenRouter_Stripe.md +140 -0
  63. package/docs/DEVPTO_ARTICLE.md +84 -0
  64. package/docs/HUMAN_STYLE_GUIDE.md +75 -0
  65. package/docs/IMPRINT_PLAN.md +88 -0
  66. package/docs/OPENROUTER_ALTERNATIVE.md +184 -0
  67. package/docs/SOCIAL_CAMPAIGN.md +316 -0
  68. package/docs/anthropic.html +45 -0
  69. package/docs/best-llm-routers-2025.html +157 -0
  70. package/docs/cerebras.html +43 -0
  71. package/docs/cli-cheatsheet.md +286 -212
  72. package/docs/deepseek.html +44 -0
  73. package/docs/google.html +47 -0
  74. package/docs/groq.html +44 -0
  75. package/docs/mistral.html +43 -0
  76. package/docs/ollama.html +50 -0
  77. package/docs/openai.html +57 -0
  78. package/docs/sitemap.xml +69 -57
  79. package/docs-site/blog/best-llm-routers-2025.html +157 -0
  80. package/docs-site/index.html +59 -0
  81. package/docs-site/providers/anthropic.html +45 -0
  82. package/docs-site/providers/cerebras.html +43 -0
  83. package/docs-site/providers/deepseek.html +44 -0
  84. package/docs-site/providers/google.html +47 -0
  85. package/docs-site/providers/groq.html +44 -0
  86. package/docs-site/providers/index.html +41 -0
  87. package/docs-site/providers/mistral.html +43 -0
  88. package/docs-site/providers/ollama.html +50 -0
  89. package/docs-site/providers/openai.html +57 -0
  90. package/docs-site/sitemap.xml +69 -0
  91. package/package.json +36 -124
  92. package/python/README.md +33 -106
  93. package/python/mcp-server/a3m_mcp/__init__.py +20 -10
  94. package/python/mcp-server/a3m_mcp/server.py +172 -306
  95. package/python/pyproject.toml +6 -3
  96. package/scripts/submit-sitemap.sh +52 -0
  97. package/src/__types__/registry.d.ts +14 -0
  98. package/src/cli/setupWizard.ts +443 -112
  99. package/src/cli/tui.ts +159 -0
  100. package/src/ensemble.ts +154 -1
  101. package/src/integrations/langchainAdapter.ts +2 -2
  102. package/src/providers/providerConfig.ts +32 -17
  103. package/src/providers/registry.js +27 -0
  104. package/src/routing/advancedRouter.ts +99 -14
  105. package/src/routing/shadowSampler.ts +1 -1
  106. package/test-install/package.json +12 -0
  107. package/tests/tsconfig.json +0 -1
  108. package/tmlpd-pi-extension/README.md +105 -44
  109. package/tmlpd-pi-extension/docs/demo.svg +33 -0
  110. package/tmlpd-pi-extension/package.json +35 -106
  111. package/tmlpd-pi-extension/src/tokenOptimization/contextStratifier.ts +163 -0
  112. package/tmlpd-pi-extension/src/tokenOptimization/fetchOnceLocal.ts +136 -0
  113. package/tmlpd-pi-extension/src/tokenOptimization/index.ts +197 -0
  114. package/tmlpd-pi-extension/src/tokenOptimization/interAgentCompression.ts +157 -0
  115. package/tmlpd-pi-extension/src/tokenOptimization/schemaContract.ts +101 -0
  116. package/tmlpd-pi-extension/src/tokenOptimization/semanticCache.ts +248 -0
  117. package/tmlpd-pi-extension/src/tokenOptimization/tokenAwareFallback.ts +192 -0
  118. package/tmlpd-pi-extension/test/verify.js +21 -0
  119. package/tsconfig.build.json +2 -0
  120. package/packages/a3m-vercel-ai/dist/a3m-language-model.d.ts +0 -12
  121. package/packages/a3m-vercel-ai/dist/a3m-language-model.d.ts.map +0 -1
  122. package/packages/a3m-vercel-ai/dist/a3m-language-model.js +0 -289
  123. package/packages/a3m-vercel-ai/dist/a3m-language-model.js.map +0 -1
  124. package/packages/a3m-vercel-ai/dist/index.d.ts +0 -82
  125. package/packages/a3m-vercel-ai/dist/index.d.ts.map +0 -1
  126. package/packages/a3m-vercel-ai/dist/index.js +0 -79
  127. package/packages/a3m-vercel-ai/dist/index.js.map +0 -1
  128. package/packages/a3m-vercel-ai/dist/types.d.ts +0 -97
  129. package/packages/a3m-vercel-ai/dist/types.d.ts.map +0 -1
  130. package/packages/a3m-vercel-ai/dist/types.js +0 -5
  131. package/packages/a3m-vercel-ai/dist/types.js.map +0 -1
  132. package/python/a3m_router.egg-info/PKG-INFO +0 -172
  133. package/python/a3m_router.egg-info/SOURCES.txt +0 -17
  134. package/python/a3m_router.egg-info/dependency_links.txt +0 -1
  135. package/python/a3m_router.egg-info/requires.txt +0 -24
  136. package/python/a3m_router.egg-info/top_level.txt +0 -1
  137. package/python/dist/a3m_router-2.2.1-py3-none-any.whl +0 -0
  138. package/python/dist/a3m_router-2.2.1.tar.gz +0 -0
  139. package/python/dist/a3m_router-2.2.2-py3-none-any.whl +0 -0
  140. package/python/dist/a3m_router-2.2.2.tar.gz +0 -0
  141. package/src/skills/__tests__/skill_manager.test.ts +0 -328
  142. package/tmlpd-pi-extension/dist/cache/prefixCache.d.ts +0 -114
  143. package/tmlpd-pi-extension/dist/cache/prefixCache.d.ts.map +0 -1
  144. package/tmlpd-pi-extension/dist/cache/prefixCache.js +0 -285
  145. package/tmlpd-pi-extension/dist/cache/prefixCache.js.map +0 -1
  146. package/tmlpd-pi-extension/dist/cache/responseCache.d.ts +0 -58
  147. package/tmlpd-pi-extension/dist/cache/responseCache.d.ts.map +0 -1
  148. package/tmlpd-pi-extension/dist/cache/responseCache.js +0 -153
  149. package/tmlpd-pi-extension/dist/cache/responseCache.js.map +0 -1
  150. package/tmlpd-pi-extension/dist/cli.js +0 -59
  151. package/tmlpd-pi-extension/dist/cost/costTracker.d.ts +0 -95
  152. package/tmlpd-pi-extension/dist/cost/costTracker.d.ts.map +0 -1
  153. package/tmlpd-pi-extension/dist/cost/costTracker.js +0 -240
  154. package/tmlpd-pi-extension/dist/cost/costTracker.js.map +0 -1
  155. package/tmlpd-pi-extension/dist/index.d.ts +0 -723
  156. package/tmlpd-pi-extension/dist/index.d.ts.map +0 -1
  157. package/tmlpd-pi-extension/dist/index.js +0 -239
  158. package/tmlpd-pi-extension/dist/index.js.map +0 -1
  159. package/tmlpd-pi-extension/dist/memory/episodicMemory.d.ts +0 -82
  160. package/tmlpd-pi-extension/dist/memory/episodicMemory.d.ts.map +0 -1
  161. package/tmlpd-pi-extension/dist/memory/episodicMemory.js +0 -145
  162. package/tmlpd-pi-extension/dist/memory/episodicMemory.js.map +0 -1
  163. package/tmlpd-pi-extension/dist/orchestration/haloOrchestrator.d.ts +0 -102
  164. package/tmlpd-pi-extension/dist/orchestration/haloOrchestrator.d.ts.map +0 -1
  165. package/tmlpd-pi-extension/dist/orchestration/haloOrchestrator.js +0 -207
  166. package/tmlpd-pi-extension/dist/orchestration/haloOrchestrator.js.map +0 -1
  167. package/tmlpd-pi-extension/dist/orchestration/mctsWorkflow.d.ts +0 -85
  168. package/tmlpd-pi-extension/dist/orchestration/mctsWorkflow.d.ts.map +0 -1
  169. package/tmlpd-pi-extension/dist/orchestration/mctsWorkflow.js +0 -210
  170. package/tmlpd-pi-extension/dist/orchestration/mctsWorkflow.js.map +0 -1
  171. package/tmlpd-pi-extension/dist/providers/localProvider.d.ts +0 -102
  172. package/tmlpd-pi-extension/dist/providers/localProvider.d.ts.map +0 -1
  173. package/tmlpd-pi-extension/dist/providers/localProvider.js +0 -338
  174. package/tmlpd-pi-extension/dist/providers/localProvider.js.map +0 -1
  175. package/tmlpd-pi-extension/dist/providers/registry.d.ts +0 -55
  176. package/tmlpd-pi-extension/dist/providers/registry.d.ts.map +0 -1
  177. package/tmlpd-pi-extension/dist/providers/registry.js +0 -138
  178. package/tmlpd-pi-extension/dist/providers/registry.js.map +0 -1
  179. package/tmlpd-pi-extension/dist/routing/advancedRouter.d.ts +0 -68
  180. package/tmlpd-pi-extension/dist/routing/advancedRouter.d.ts.map +0 -1
  181. package/tmlpd-pi-extension/dist/routing/advancedRouter.js +0 -332
  182. package/tmlpd-pi-extension/dist/routing/advancedRouter.js.map +0 -1
  183. package/tmlpd-pi-extension/dist/tools/tmlpdTools.d.ts +0 -101
  184. package/tmlpd-pi-extension/dist/tools/tmlpdTools.d.ts.map +0 -1
  185. package/tmlpd-pi-extension/dist/tools/tmlpdTools.js +0 -368
  186. package/tmlpd-pi-extension/dist/tools/tmlpdTools.js.map +0 -1
  187. package/tmlpd-pi-extension/dist/utils/batchProcessor.d.ts +0 -96
  188. package/tmlpd-pi-extension/dist/utils/batchProcessor.d.ts.map +0 -1
  189. package/tmlpd-pi-extension/dist/utils/batchProcessor.js +0 -170
  190. package/tmlpd-pi-extension/dist/utils/batchProcessor.js.map +0 -1
  191. package/tmlpd-pi-extension/dist/utils/compression.d.ts +0 -61
  192. package/tmlpd-pi-extension/dist/utils/compression.d.ts.map +0 -1
  193. package/tmlpd-pi-extension/dist/utils/compression.js +0 -281
  194. package/tmlpd-pi-extension/dist/utils/compression.js.map +0 -1
  195. package/tmlpd-pi-extension/dist/utils/reliability.d.ts +0 -74
  196. package/tmlpd-pi-extension/dist/utils/reliability.d.ts.map +0 -1
  197. package/tmlpd-pi-extension/dist/utils/reliability.js +0 -177
  198. package/tmlpd-pi-extension/dist/utils/reliability.js.map +0 -1
  199. package/tmlpd-pi-extension/dist/utils/speculativeDecoding.d.ts +0 -117
  200. package/tmlpd-pi-extension/dist/utils/speculativeDecoding.d.ts.map +0 -1
  201. package/tmlpd-pi-extension/dist/utils/speculativeDecoding.js +0 -246
  202. package/tmlpd-pi-extension/dist/utils/speculativeDecoding.js.map +0 -1
  203. package/tmlpd-pi-extension/dist/utils/tokenUtils.d.ts +0 -50
  204. package/tmlpd-pi-extension/dist/utils/tokenUtils.d.ts.map +0 -1
  205. package/tmlpd-pi-extension/dist/utils/tokenUtils.js +0 -124
  206. package/tmlpd-pi-extension/dist/utils/tokenUtils.js.map +0 -1
@@ -1,79 +0,0 @@
1
- /**
2
- * @a3m/vercel-ai - A3M Router Provider for Vercel AI SDK
3
- *
4
- * Drop-in replacement that routes to the cheapest capable provider
5
- * with parallel execution, caching, and automatic fallback.
6
- *
7
- * @example
8
- * ```typescript
9
- * import { createA3MProvider } from '@a3m/vercel-ai';
10
- * import { generateText } from 'ai';
11
- *
12
- * const a3m = createA3MProvider();
13
- *
14
- * const { text } = await generateText({
15
- * model: a3m('auto'),
16
- * prompt: 'What is the capital of France?',
17
- * });
18
- * ```
19
- */
20
- export { createA3MLanguageModel } from './a3m-language-model';
21
- import { createA3MLanguageModel } from './a3m-language-model';
22
- /**
23
- * Create an A3M Router provider for Vercel AI SDK
24
- */
25
- export function createA3MProvider(config = {}) {
26
- const languageModel = createA3MLanguageModel(config);
27
- const provider = Object.assign((modelId) => {
28
- // Return the language model - A3M handles model selection internally
29
- return languageModel;
30
- }, {
31
- name: 'a3m',
32
- // Allow accessing config for introspection
33
- __config: config,
34
- });
35
- return provider;
36
- }
37
- /**
38
- * Example usage with Next.js App Router
39
- *
40
- * ```typescript
41
- * // app/api/chat/route.ts
42
- * import { createA3MProvider } from '@a3m/vercel-ai';
43
- * import { generateText } from 'ai';
44
- *
45
- * const a3m = createA3MProvider({
46
- * parallelEnsemble: true,
47
- * });
48
- *
49
- * export async function POST(req: Request) {
50
- * const { messages } = await req.json();
51
- *
52
- * const result = await generateText({
53
- * model: a3m('auto'),
54
- * messages,
55
- * });
56
- *
57
- * return Response.json(result);
58
- * }
59
- * ```
60
- */
61
- /**
62
- * Example usage with streaming
63
- *
64
- * ```typescript
65
- * import { createA3MProvider } from '@a3m/vercel-ai';
66
- * import { streamText } from 'ai';
67
- *
68
- * const a3m = createA3MProvider();
69
- *
70
- * const result = await streamText({
71
- * model: a3m('auto'),
72
- * prompt: 'Write a story about a robot...',
73
- * });
74
- *
75
- * // Stream to response
76
- * return result.toDataStreamResponse();
77
- * ```
78
- */
79
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAI9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAe9D;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAA0B,EAAE;IAC5D,MAAM,aAAa,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAErD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAC5B,CAAC,OAAe,EAAE,EAAE;QAClB,qEAAqE;QACrE,OAAO,aAAa,CAAC;IACvB,CAAC,EACD;QACE,IAAI,EAAE,KAAc;QACpB,2CAA2C;QAC3C,QAAQ,EAAE,MAAM;KACjB,CACF,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH;;;;;;;;;;;;;;;;;GAiBG"}
@@ -1,97 +0,0 @@
1
- /**
2
- * A3M Router configuration for Vercel AI SDK
3
- */
4
- export interface A3MRouterConfig {
5
- /**
6
- * A3M Router endpoint
7
- * @default 'http://localhost:8787'
8
- */
9
- baseURL?: string;
10
- /**
11
- * API key for A3M Router
12
- * @default 'not-needed' for local
13
- */
14
- apiKey?: string;
15
- /**
16
- * Enable parallel ensemble execution
17
- * Runs multiple providers and picks the best result
18
- * @default false
19
- */
20
- parallelEnsemble?: boolean;
21
- /**
22
- * Number of providers to run in parallel when parallelEnsemble is true
23
- * @default 3
24
- */
25
- parallelCount?: number;
26
- /**
27
- * Enable stealth mode (anti-detection for browser automation)
28
- * @default false
29
- */
30
- stealth?: boolean;
31
- /**
32
- * Cache configuration
33
- */
34
- cache?: {
35
- enabled?: boolean;
36
- ttl?: number;
37
- };
38
- /**
39
- * Provider configuration
40
- * Maps provider names to their API keys
41
- */
42
- providers?: Record<string, {
43
- apiKey: string;
44
- /** Override the base URL for this provider */
45
- baseURL?: string;
46
- }>;
47
- /**
48
- * Cost limits per provider
49
- */
50
- budgetLimits?: Record<string, {
51
- maxCostPerRequest?: number;
52
- maxRequestsPerMinute?: number;
53
- }>;
54
- }
55
- /**
56
- * A3M Router response from /route or /generate
57
- */
58
- export interface A3MRouteResponse {
59
- /** The generated content */
60
- content: string;
61
- /** The provider that was selected */
62
- provider: string;
63
- /** The model that was used */
64
- model: string;
65
- /** Cost in USD */
66
- cost: number;
67
- /** Latency in ms */
68
- latencyMs: number;
69
- /** Token usage */
70
- usage?: {
71
- promptTokens: number;
72
- completionTokens: number;
73
- totalTokens: number;
74
- };
75
- /** Confidence score (0-1) */
76
- confidence?: number;
77
- /** Finish reason */
78
- finishReason?: 'stop' | 'length' | 'error';
79
- }
80
- /**
81
- * A3M Router streaming response chunk
82
- */
83
- export interface A3MStreamChunk {
84
- /** The delta content */
85
- delta: string;
86
- /** Provider that responded */
87
- provider: string;
88
- /** Whether this is the final chunk */
89
- done: boolean;
90
- /** Token usage (only on final chunk) */
91
- usage?: {
92
- promptTokens: number;
93
- completionTokens: number;
94
- totalTokens: number;
95
- };
96
- }
97
- //# sourceMappingURL=types.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAE3B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IAEF;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QACzB,MAAM,EAAE,MAAM,CAAC;QACf,8CAA8C;QAC9C,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IAEH;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAC5B,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4BAA4B;IAC5B,OAAO,EAAE,MAAM,CAAC;IAEhB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAC;IAEjB,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IAEd,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IAEb,oBAAoB;IACpB,SAAS,EAAE,MAAM,CAAC;IAElB,kBAAkB;IAClB,KAAK,CAAC,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF,6BAA6B;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IAEd,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IAEjB,sCAAsC;IACtC,IAAI,EAAE,OAAO,CAAC;IAEd,wCAAwC;IACxC,KAAK,CAAC,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH"}
@@ -1,5 +0,0 @@
1
- /**
2
- * A3M Router configuration for Vercel AI SDK
3
- */
4
- export {};
5
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
@@ -1,172 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: a3m-router
3
- Version: 2.2.2
4
- Summary: Auto-selects cheapest capable LLM from 47+ providers — 70-95% cost savings
5
- License: MIT
6
- Project-URL: Homepage, https://github.com/Das-rebel/a3m-router
7
- Project-URL: Documentation, https://das-rebel.github.io/a3m-router
8
- Project-URL: Repository, https://github.com/Das-rebel/a3m-router
9
- Project-URL: Changelog, https://github.com/Das-rebel/a3m-router/releases
10
- Keywords: llm,routing,openai,proxy,ai-gateway,routellm,litellm,multi-llm,model-selection,cost-optimization,langchain,llamaindex,rag,vector-search,embeddings,parallel,ensemble,router
11
- Classifier: Development Status :: 4 - Beta
12
- Classifier: Intended Audience :: Developers
13
- Classifier: License :: OSI Approved :: MIT License
14
- Classifier: Operating System :: OS Independent
15
- Classifier: Programming Language :: Python :: 3
16
- Classifier: Programming Language :: Python :: 3.8
17
- Classifier: Programming Language :: Python :: 3.9
18
- Classifier: Programming Language :: Python :: 3.10
19
- Classifier: Programming Language :: Python :: 3.11
20
- Classifier: Programming Language :: Python :: 3.12
21
- Classifier: Topic :: Software Development :: Libraries :: Python Modules
22
- Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
23
- Requires-Python: >=3.8
24
- Description-Content-Type: text/markdown
25
- Requires-Dist: httpx>=0.24.0
26
- Provides-Extra: langchain
27
- Requires-Dist: langchain>=0.1.0; extra == "langchain"
28
- Provides-Extra: llamaindex
29
- Requires-Dist: llamaindex>=0.9.0; extra == "llamaindex"
30
- Provides-Extra: qdrant
31
- Requires-Dist: qdrant-client>=1.7.0; extra == "qdrant"
32
- Provides-Extra: weaviate
33
- Requires-Dist: weaviate-client>=4.0.0; extra == "weaviate"
34
- Provides-Extra: adapters
35
- Requires-Dist: langchain>=0.1.0; extra == "adapters"
36
- Requires-Dist: llamaindex>=0.9.0; extra == "adapters"
37
- Requires-Dist: qdrant-client>=1.7.0; extra == "adapters"
38
- Requires-Dist: weaviate-client>=4.0.0; extra == "adapters"
39
- Provides-Extra: dev
40
- Requires-Dist: pytest>=7.4.0; extra == "dev"
41
- Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
42
- Requires-Dist: black>=23.0.0; extra == "dev"
43
-
44
- # A3M Router Python SDK
45
-
46
- **Intelligent LLM routing — auto-selects the cheapest capable model from 47+ providers.**
47
-
48
- Routes queries to the best model for your needs — whether it's Groq for simple Q&A ($0.001/1K) or GPT-4o for complex reasoning ($0.15/1K).
49
-
50
- ## Installation
51
-
52
- ```bash
53
- pip install a3m-router
54
- ```
55
-
56
- ## Quick Start
57
-
58
- ```python
59
- from a3m import A3MRouter
60
-
61
- router = A3MRouter(base_url="http://localhost:8787")
62
-
63
- # Auto-routes to optimal provider
64
- response = await router.chat("What is 2+2?")
65
- # → Routes to Groq, costs ~$0.000001
66
-
67
- # See routing decision before executing
68
- decision = await router.route("Explain quantum computing")
69
- print(f"Model: {decision.model}")
70
- print(f"Tier: {decision.tier}")
71
- print(f"Cost: ${decision.cost:.6f}")
72
-
73
- # Stream responses
74
- async for token in router.stream_chat("Tell me a story"):
75
- print(token, end="", flush=True)
76
- ```
77
-
78
- ## Key Features
79
-
80
- - **Auto-routing**: Picks the right model based on query complexity, budget, and requirements
81
- - **Cost savings**: 70-95% cheaper than always using premium models
82
- - **47+ providers**: Groq, DeepSeek, GPT-4o, Claude, Mistral, and more
83
- - **Framework adapters**: Drop-in for LangChain, LlamaIndex, Qdrant, Weaviate
84
- - **Health monitoring**: Check provider status and availability
85
- - **Cost analytics**: Track spending and savings
86
-
87
- ## Framework Adapters
88
-
89
- | Adapter | Use Case | Install |
90
- |---------|----------|---------|
91
- | **LangChain** | Chain-based AI workflows | `pip install a3m-router[langchain]` |
92
- | **LlamaIndex** | RAG and document QA | `pip install a3m-router[llamaindex]` |
93
- | **Qdrant** | Vector search + RAG | `pip install a3m-router[qdrant]` |
94
- | **Weaviate** | Vector search + RAG | `pip install a3m-router[weaviate]` |
95
-
96
- All adapters:
97
- ```bash
98
- pip install a3m-router[all]
99
- ```
100
-
101
- ## Routing Tiers
102
-
103
- | Tier | Providers | Cost | When Used |
104
- |------|-----------|------|-----------|
105
- | **free** | Ollama, vLLM | $0 | Local inference |
106
- | **cheap** | Groq, DeepSeek | ~$0.001/1K | Simple Q&A, short code |
107
- | **mid** | GPT-4o-mini, Claude-haiku | ~$0.01/1K | Standard tasks |
108
- | **premium** | GPT-4o, Claude-sonnet | ~$0.15/1K | Complex reasoning |
109
-
110
- ## API Reference
111
-
112
- ### A3MRouter
113
-
114
- ```python
115
- router = A3MRouter(
116
- base_url="http://localhost:8787", # A3M Router server URL
117
- timeout=30.0, # Request timeout
118
- )
119
- ```
120
-
121
- | Method | Description |
122
- |--------|-------------|
123
- | `chat(message)` | Send chat message with auto-routing |
124
- | `route(query)` | Get routing decision (no execution) |
125
- | `route_batch(queries)` | Route multiple queries |
126
- | `stream_chat(message)` | Stream response tokens |
127
- | `models()` | List all available models |
128
- | `health()` | Provider health status |
129
- | `cost_report()` | Cost analytics |
130
-
131
- ### LangChain Example
132
-
133
- ```python
134
- from a3m import LangChainAdapter
135
- from langchain.schema import HumanMessage
136
-
137
- llm = LangChainAdapter(base_url="http://localhost:8787")
138
- response = llm([HumanMessage(content="What is RAG?")])
139
- ```
140
-
141
- ### LlamaIndex Example
142
-
143
- ```python
144
- from a3m import LlamaIndexAdapter
145
-
146
- llm = LlamaIndexAdapter()
147
- response = llm.complete("Explain transformers")
148
- ```
149
-
150
- ## Server Setup
151
-
152
- Start the A3M Router server:
153
-
154
- ```bash
155
- # Via npm
156
- npx a3m-router serve
157
-
158
- # Via Docker
159
- docker-compose up -d
160
- ```
161
-
162
- Server runs on `http://localhost:8787` by default.
163
-
164
- ## Links
165
-
166
- - **GitHub**: https://github.com/Das-rebel/a3m-router
167
- - **npm Package**: https://www.npmjs.com/package/adaptive-memory-multi-model-router
168
- - **Documentation**: https://das-rebel.github.io/a3m-router
169
-
170
- ## License
171
-
172
- MIT
@@ -1,17 +0,0 @@
1
- README.md
2
- pyproject.toml
3
- setup.py
4
- a3m/__init__.py
5
- a3m/client.py
6
- a3m/models.py
7
- a3m/sync_client.py
8
- a3m/adapters/__init__.py
9
- a3m/adapters/langchain.py
10
- a3m/adapters/llamaindex.py
11
- a3m/adapters/qdrant.py
12
- a3m/adapters/weaviate.py
13
- a3m_router.egg-info/PKG-INFO
14
- a3m_router.egg-info/SOURCES.txt
15
- a3m_router.egg-info/dependency_links.txt
16
- a3m_router.egg-info/requires.txt
17
- a3m_router.egg-info/top_level.txt
@@ -1,24 +0,0 @@
1
- httpx>=0.24.0
2
-
3
- [adapters]
4
- langchain>=0.1.0
5
- llamaindex>=0.9.0
6
- qdrant-client>=1.7.0
7
- weaviate-client>=4.0.0
8
-
9
- [dev]
10
- pytest>=7.4.0
11
- pytest-asyncio>=0.21.0
12
- black>=23.0.0
13
-
14
- [langchain]
15
- langchain>=0.1.0
16
-
17
- [llamaindex]
18
- llamaindex>=0.9.0
19
-
20
- [qdrant]
21
- qdrant-client>=1.7.0
22
-
23
- [weaviate]
24
- weaviate-client>=4.0.0
@@ -1 +0,0 @@
1
- a3m
Binary file
Binary file