adaptive-memory-multi-model-router 2.14.49 → 2.14.51

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 (603) hide show
  1. package/.dockerignore +82 -0
  2. package/.env.example +303 -0
  3. package/.github/DISCUSSIONS_WELCOME.md +27 -0
  4. package/.github/DISCUSSION_TEMPLATE.yml +5 -0
  5. package/.github/FUNDING.yml +2 -0
  6. package/.github/ISSUE_TEMPLATE/bug_report.md +94 -0
  7. package/.github/ISSUE_TEMPLATE/config.yml +17 -0
  8. package/.github/ISSUE_TEMPLATE/feature_request.md +71 -0
  9. package/.github/PULL_REQUEST_TEMPLATE.md +71 -0
  10. package/.github/dependabot.yml +9 -0
  11. package/.github/workflows/auto-publish.yml +51 -0
  12. package/.github/workflows/ci.yml +263 -0
  13. package/.github/workflows/codeql.yml +38 -0
  14. package/.github/workflows/npm-publish.yml +20 -0
  15. package/.github/workflows/pages.yml +37 -0
  16. package/.github/workflows/stale.yml +54 -0
  17. package/.publish-tick +1 -0
  18. package/.well-known/ai-plugin.json +16 -0
  19. package/AGENT_COUNCIL_FINDINGS.md +142 -0
  20. package/ARCHITECTURE.md +346 -0
  21. package/AUDIT_REPORT.md +28 -0
  22. package/CODE_OF_CONDUCT.md +128 -0
  23. package/CONTRIBUTING.md +50 -0
  24. package/CONTRIBUTORS.md +20 -0
  25. package/Dockerfile +53 -0
  26. package/Dockerfile.proxy +33 -0
  27. package/HEALTH_REPORT.md +118 -0
  28. package/IMPROVEMENT_PLAN.md +107 -0
  29. package/LANDING.md +43 -0
  30. package/LAUNCH-PAIN-DRIVEN.md +339 -0
  31. package/LAUNCH.md +337 -0
  32. package/LAUNCH_CHECKLIST.md +141 -0
  33. package/LAUNCH_SNAPSHOT.md +260 -0
  34. package/MANIFESTO.md +41 -0
  35. package/POPULARITY_BOOSTERS.md +285 -0
  36. package/PR_STATUS_REPORT.md +148 -0
  37. package/README.md +10 -0
  38. package/REDESIGN.md +95 -0
  39. package/RUNKIT.md +83 -0
  40. package/SECURITY.md +29 -0
  41. package/SUBMISSIONS.md +43 -0
  42. package/_schema.html +53 -0
  43. package/ai-plugin.json +16 -0
  44. package/articles/AI_AGENT_LLM_ROUTING.md +150 -0
  45. package/articles/CHINESE_DIRECTORIES.md +100 -0
  46. package/articles/CHINESE_SUBMISSIONS_READY.md +322 -0
  47. package/articles/COMPETITOR_ALERTS.md +31 -0
  48. package/articles/COMPLETE_POSTING_DIRECTORY.md +147 -0
  49. package/articles/CONTENT_STRUCTURE.md +292 -0
  50. package/articles/DEVTO_COST_GUIDE.md +473 -0
  51. package/articles/DEVTO_FINAL.md +416 -0
  52. package/articles/DEVTO_MULTI_PROVIDER.md +542 -0
  53. package/articles/DEVTO_READY.md +255 -0
  54. package/articles/DEVTO_V2_ANNOUNCEMENT.md +160 -0
  55. package/articles/DEVTO_VIRAL_GROWTH.md +280 -0
  56. package/articles/FRESH_devto.md +460 -0
  57. package/articles/FRESH_devto_2026_05.md +73 -0
  58. package/articles/FRESH_hackernews.md +14 -0
  59. package/articles/FRESH_reddit_ml.md +90 -0
  60. package/articles/FRESH_reddit_node.md +198 -0
  61. package/articles/FRESH_reddit_sideproject.md +72 -0
  62. package/articles/FRESH_reddit_webdev.md +130 -0
  63. package/articles/FROM_ZERO_TO_10K.md +107 -0
  64. package/articles/HN_10X_BETTER.md +430 -0
  65. package/articles/HN_ACCOUNT_GUIDE.md +21 -0
  66. package/articles/HN_CHINESE_STYLE.md +308 -0
  67. package/articles/HN_FINAL.md +148 -0
  68. package/articles/HN_POSTED_VERSION.md +56 -0
  69. package/articles/HN_POST_READY.md +137 -0
  70. package/articles/HN_RESEARCH.md +364 -0
  71. package/articles/HN_SHOW_routerarena.md +17 -0
  72. package/articles/HN_TIMING_GUIDE.md +52 -0
  73. package/articles/INDIEHACKERS_POST.md +52 -0
  74. package/articles/INDIEHACKERS_READY.md +120 -0
  75. package/articles/LLM_BENCHMARK_DEEP_DIVE.md +153 -0
  76. package/articles/MASTER_POSTING_DIRECTORY.md +189 -0
  77. package/articles/NEWSLETTER_SEND_NOW.md +259 -0
  78. package/articles/NEWSLETTER_SUBMISSIONS.md +112 -0
  79. package/articles/PAIN-DRIVEN-devto-v2.md +308 -0
  80. package/articles/PAIN-DRIVEN-devto-v3.md +268 -0
  81. package/articles/PAIN-DRIVEN-devto.md +242 -0
  82. package/articles/PAIN-DRIVEN-hackernews-v2.md +138 -0
  83. package/articles/PAIN-DRIVEN-hackernews-v3.md +151 -0
  84. package/articles/PAIN-DRIVEN-hackernews.md +131 -0
  85. package/articles/PAIN-DRIVEN-reddit-v2.md +301 -0
  86. package/articles/PAIN-DRIVEN-reddit-v3.md +236 -0
  87. package/articles/PAIN-DRIVEN-reddit.md +218 -0
  88. package/articles/PAIN-DRIVEN-twitter-v2.md +110 -0
  89. package/articles/PAIN-DRIVEN-twitter-v3.md +121 -0
  90. package/articles/PAIN-DRIVEN-twitter.md +120 -0
  91. package/articles/PORTKEY_VS_A3M.md +147 -0
  92. package/articles/POSTING_KIT_2026_05.md +67 -0
  93. package/articles/PRESS_KIT_routerarena.md +77 -0
  94. package/articles/PRODUCTHUNT_LISTING.md +48 -0
  95. package/articles/PRODUCTHUNT_READY.md +106 -0
  96. package/articles/PR_PLAN_vault.md +125 -0
  97. package/articles/REDDIT_FINAL.md +232 -0
  98. package/articles/REDDIT_POST.md +67 -0
  99. package/articles/REDDIT_SUBMISSION_READY.md +348 -0
  100. package/articles/ROUTERARENA_LEADER.md +45 -0
  101. package/articles/SHOW_HN_FINAL.md +29 -0
  102. package/articles/TWEETS_10K_DOWNLOADS.md +47 -0
  103. package/articles/TWEETS_BENCHMARK_FIRST.md +46 -0
  104. package/articles/TWEETS_MCP_PLAY.md +51 -0
  105. package/articles/TWEETS_SEQUENTIAL_BROKEN.md +49 -0
  106. package/articles/TWEETS_WHY_BUILD.md +54 -0
  107. package/articles/TWEETS_routerarena_leader.md +53 -0
  108. package/articles/TWEET_STORM_READY.md +165 -0
  109. package/articles/TWITTER_FINAL.md +167 -0
  110. package/articles/WHY_10X_BETTER.md +261 -0
  111. package/articles/WHY_CHINESE_STYLE_BETTER.md +323 -0
  112. package/articles/ai-discoverability-llm-routing.md +210 -0
  113. package/articles/devto-llm-routing.md +138 -0
  114. package/articles/hackernews-show-hn.md +54 -0
  115. package/articles/hashnode-llm-cost-optimization.md +125 -0
  116. package/articles/hn_show_2026_05.md +11 -0
  117. package/articles/medium-building-llm-router.md +205 -0
  118. package/articles/reddit-ml.md +76 -0
  119. package/articles/twitter-thread-cost-savings.md +50 -0
  120. package/articles/youtube-tutorial-script.md +262 -0
  121. package/assets/a3m_3blue1brown.mp4 +0 -0
  122. package/assets/banner.svg +109 -0
  123. package/assets/chart-cost-v2.svg +91 -0
  124. package/assets/chart-cost-v3.svg +143 -0
  125. package/assets/chart-features-v2.svg +132 -0
  126. package/assets/chart-features-v3.svg +211 -0
  127. package/assets/chart-growth-v2.svg +122 -0
  128. package/assets/chart-growth-v3.svg +189 -0
  129. package/assets/cost-comparison.svg +134 -0
  130. package/assets/cost-simple.svg +64 -0
  131. package/assets/demo-hn.gif +0 -0
  132. package/assets/feature-matrix.svg +136 -0
  133. package/assets/growth-chart-animated.svg +76 -0
  134. package/assets/growth-chart.svg +82 -0
  135. package/assets/growth-simple.svg +69 -0
  136. package/assets/hero-diagram.svg +81 -0
  137. package/assets/logo-new.svg +21 -0
  138. package/assets/logo.svg +68 -0
  139. package/assets/provider-comparison.svg +121 -0
  140. package/assets/social-preview-new.svg +100 -0
  141. package/assets/social-preview.svg +194 -0
  142. package/assets/social-v2.svg +130 -0
  143. package/assets/social-v3.svg +212 -0
  144. package/benchmark-provider-results.json +245 -0
  145. package/benchmark-results.json +54 -0
  146. package/council-votes/architecture-vote.md +121 -0
  147. package/council-votes/coverage-vote.md +93 -0
  148. package/data/adaptive-benchmark.json +92 -0
  149. package/data/benchmark-results.json +47 -0
  150. package/data/labeled-benchmark.json +88 -0
  151. package/demo/3blue1brown_video.py +285 -0
  152. package/demo/3blue1brown_video_v2.py +310 -0
  153. package/demo/IMPROVED_PROMPTS.md +229 -0
  154. package/demo/VEO3_PROMPTS.md +269 -0
  155. package/demo/VIDEO_PRODUCTION_GUIDE.md +333 -0
  156. package/demo/a3m_3blue1brown.mp4 +0 -0
  157. package/demo/asciinema-demo.sh +195 -0
  158. package/demo/demo-hn.tape +74 -0
  159. package/demo/demo-script.md +53 -0
  160. package/demo/demo-script.sh +62 -0
  161. package/demo/demo.svg +75 -0
  162. package/demo/frame1_ai_data_center.png +0 -0
  163. package/demo/frame1_sunset_video.mp4 +0 -0
  164. package/demo/frame2_cost_comparison.png +0 -0
  165. package/demo/frame2_cost_comparison_fallback.png +0 -0
  166. package/demo/frame3_parallel_execution.png +0 -0
  167. package/demo/frame3_parallel_execution_fallback.png +0 -0
  168. package/demo/frame4_providers.png +0 -0
  169. package/demo/frame4_providers_fallback.png +0 -0
  170. package/demo/frame5_endcard.png +0 -0
  171. package/demo/frame5_endcard_fallback.png +0 -0
  172. package/demo/new_frame1_hook.png +0 -0
  173. package/demo/new_frame2_proof.png +0 -0
  174. package/demo/new_frame3_wow.png +0 -0
  175. package/demo/new_frame4_social.png +0 -0
  176. package/demo/new_frame5_cta.png +0 -0
  177. package/demo/package.json +13 -0
  178. package/demo/product-video-final.mp4 +0 -0
  179. package/demo/product-video-hype-v1.mp4 +0 -0
  180. package/demo/product-video-v1.mp4 +0 -0
  181. package/demo/public/index.html +762 -0
  182. package/demo/recording.cast +55 -0
  183. package/demo/server.js +405 -0
  184. package/demo-new.tape +71 -0
  185. package/demo-real.sh +198 -0
  186. package/demo-simple.tape +205 -0
  187. package/demo.html +520 -0
  188. package/demo.sh +85 -0
  189. package/demo.tape +259 -0
  190. package/dist/analytics/costAnalytics.d.ts.map +1 -0
  191. package/dist/analytics/costAnalytics.js.map +1 -0
  192. package/dist/benchmark/comprehensive.js.map +1 -0
  193. package/dist/benchmark/reproducible.d.ts.map +1 -0
  194. package/dist/benchmark/reproducible.js.map +1 -0
  195. package/dist/cache/prefixCache.d.ts.map +1 -0
  196. package/dist/cache/prefixCache.js.map +1 -0
  197. package/dist/cache/responseCache.d.ts.map +1 -0
  198. package/dist/cache/responseCache.js.map +1 -0
  199. package/dist/cache/semanticCache.d.ts.map +1 -0
  200. package/dist/cache/semanticCache.js.map +1 -0
  201. package/dist/cli/setupWizard.d.ts.map +1 -0
  202. package/dist/cli/setupWizard.js.map +1 -0
  203. package/dist/cost/budgetEnforcer.d.ts.map +1 -0
  204. package/dist/cost/budgetEnforcer.js.map +1 -0
  205. package/dist/cost/costTracker.d.ts.map +1 -0
  206. package/dist/cost/costTracker.js.map +1 -0
  207. package/dist/ensemble/multiRoundDialog.js.map +1 -0
  208. package/dist/ensemble/shapleyValue.js.map +1 -0
  209. package/dist/integrations/langchainAdapter.d.ts.map +1 -0
  210. package/dist/integrations/langchainAdapter.js.map +1 -0
  211. package/dist/integrations/oauth.d.ts.map +1 -0
  212. package/dist/integrations/oauth.js.map +1 -0
  213. package/dist/integrations/scienceAdapter.js.map +1 -0
  214. package/dist/memory/autoFetch.d.ts.map +1 -0
  215. package/dist/memory/autoFetch.js.map +1 -0
  216. package/dist/memory/episodicMemory.d.ts.map +1 -0
  217. package/dist/memory/episodicMemory.js.map +1 -0
  218. package/dist/memory/hybridMemory.js.map +1 -0
  219. package/dist/memory/memoryTree.d.ts.map +1 -0
  220. package/dist/memory/memoryTree.js.map +1 -0
  221. package/dist/memory/obsidianVault.d.ts.map +1 -0
  222. package/dist/memory/obsidianVault.js.map +1 -0
  223. package/dist/memory/reasoningBank.js.map +1 -0
  224. package/dist/observability/changeWatch.d.ts.map +1 -0
  225. package/dist/observability/changeWatch.js.map +1 -0
  226. package/dist/observability/fatigueDetector.d.ts.map +1 -0
  227. package/dist/observability/fatigueDetector.js.map +1 -0
  228. package/dist/observability/index.d.ts.map +1 -0
  229. package/dist/observability/index.js.map +1 -0
  230. package/dist/observability/metrics.d.ts.map +1 -0
  231. package/dist/observability/metrics.js.map +1 -0
  232. package/dist/observability/middleware.d.ts.map +1 -0
  233. package/dist/observability/middleware.js.map +1 -0
  234. package/dist/observability/tracer.d.ts.map +1 -0
  235. package/dist/observability/tracer.js.map +1 -0
  236. package/dist/observability/types.d.ts.map +1 -0
  237. package/dist/observability/types.js.map +1 -0
  238. package/dist/orchestration/haloOrchestrator.d.ts.map +1 -0
  239. package/dist/orchestration/haloOrchestrator.js.map +1 -0
  240. package/dist/orchestration/mctsWorkflow.d.ts.map +1 -0
  241. package/dist/orchestration/mctsWorkflow.js.map +1 -0
  242. package/dist/providers/localProvider.d.ts.map +1 -0
  243. package/dist/providers/localProvider.js.map +1 -0
  244. package/dist/providers/providerConfig.d.ts.map +1 -0
  245. package/dist/providers/providerConfig.js.map +1 -0
  246. package/dist/providers/registry.d.ts.map +1 -0
  247. package/dist/providers/registry.js.map +1 -0
  248. package/dist/routing/advancedRouter.d.ts.map +1 -0
  249. package/dist/routing/advancedRouter.js +1 -1
  250. package/dist/routing/advancedRouter.js.map +1 -0
  251. package/dist/routing/crossModelValidation.d.ts.map +1 -0
  252. package/dist/routing/crossModelValidation.js.map +1 -0
  253. package/dist/routing/providerHealth.d.ts.map +1 -0
  254. package/dist/routing/providerHealth.js.map +1 -0
  255. package/dist/routing/providerRetry.d.ts.map +1 -0
  256. package/dist/routing/providerRetry.js.map +1 -0
  257. package/dist/scripts/banner.js +29 -0
  258. package/dist/security/guardrails.d.ts.map +1 -0
  259. package/dist/security/guardrails.js.map +1 -0
  260. package/dist/server/dashboard.d.ts.map +1 -0
  261. package/dist/server/dashboard.js.map +1 -0
  262. package/dist/server/modelMapper.d.ts.map +1 -0
  263. package/dist/server/modelMapper.js.map +1 -0
  264. package/dist/server/proxyServer.d.ts.map +1 -0
  265. package/dist/server/proxyServer.js.map +1 -0
  266. package/dist/skills/__tests__/skill_manager.test.d.ts +2 -0
  267. package/dist/skills/__tests__/skill_manager.test.d.ts.map +1 -0
  268. package/dist/skills/__tests__/skill_manager.test.js +268 -0
  269. package/dist/skills/__tests__/skill_manager.test.js.map +1 -0
  270. package/dist/tools/tmlpdTools.d.ts.map +1 -0
  271. package/dist/tools/tmlpdTools.js.map +1 -0
  272. package/dist/tui/dashboard.d.ts.map +1 -0
  273. package/dist/tui/dashboard.js.map +1 -0
  274. package/dist/tui/index.d.ts.map +1 -0
  275. package/dist/tui/index.js.map +1 -0
  276. package/dist/utils/batchProcessor.d.ts.map +1 -0
  277. package/dist/utils/batchProcessor.js.map +1 -0
  278. package/dist/utils/compression.d.ts.map +1 -0
  279. package/dist/utils/compression.js.map +1 -0
  280. package/dist/utils/costUtils.d.ts.map +1 -0
  281. package/dist/utils/costUtils.js.map +1 -0
  282. package/dist/utils/reliability.d.ts.map +1 -0
  283. package/dist/utils/reliability.js.map +1 -0
  284. package/dist/utils/sorting.d.ts.map +1 -0
  285. package/dist/utils/sorting.js.map +1 -0
  286. package/dist/utils/speculativeDecoding.d.ts.map +1 -0
  287. package/dist/utils/speculativeDecoding.js.map +1 -0
  288. package/dist/utils/tokenUtils.d.ts.map +1 -0
  289. package/dist/utils/tokenUtils.js.map +1 -0
  290. package/docs/.nojekyll +0 -0
  291. package/docs/ANALYSIS_PRINCIPLES.md +162 -0
  292. package/docs/API.md +855 -0
  293. package/docs/ARCHITECTURAL-IMPROVEMENTS-2025.md +1391 -0
  294. package/docs/ARCHITECTURAL-IMPROVEMENTS-REVISED-2025.md +1051 -0
  295. package/docs/BENCHMARK.md +170 -0
  296. package/docs/CHINESE_PROVIDER_RELIABILITY.md +37 -0
  297. package/docs/CITATIONS.md +74 -0
  298. package/docs/CLAIMS_AND_EVIDENCE.md +58 -0
  299. package/docs/CONFIGURATION.md +476 -0
  300. package/docs/COUNCIL_DECISION.json +816 -0
  301. package/docs/COUNCIL_SUMMARY.md +319 -0
  302. package/docs/COUNCIL_V2.2_DECISION.md +416 -0
  303. package/docs/ENGINEERING_SPEC.md +55 -0
  304. package/docs/FACTORY_RESET.md +34 -0
  305. package/docs/GEO.md +66 -0
  306. package/docs/GEO_OPTIMIZATION.md +30 -0
  307. package/docs/GEO_ROOT_CAUSE.md +136 -0
  308. package/docs/GEO_STATUS.md +85 -0
  309. package/docs/GEO_TEST_RESULTS.md +176 -0
  310. package/docs/HN_CHECKLIST.md +38 -0
  311. package/docs/HN_FOUNDER_COMMENT.md +17 -0
  312. package/docs/HN_SUBMISSION_FINAL.md +180 -0
  313. package/docs/HN_SUBMISSION_V3.md +56 -0
  314. package/docs/IMPROVEMENT_ROADMAP.md +515 -0
  315. package/docs/INTEGRATIONS.md +420 -0
  316. package/docs/LANGCHAIN_INTEGRATION.md +147 -0
  317. package/docs/LLM_COUNCIL_DECISION.md +508 -0
  318. package/docs/MIDDLEWARE_CHAIN.md +35 -0
  319. package/docs/PROMO_CHECKLIST.md +200 -0
  320. package/docs/QUICKSTART.md +271 -0
  321. package/docs/QUICK_START.md +43 -0
  322. package/docs/QUICK_START_VISIBILITY.md +782 -0
  323. package/docs/REDDIT_GAP_ANALYSIS.md +299 -0
  324. package/docs/RELEASE_CHECKLIST.md +32 -0
  325. package/docs/REPRODUCIBILITY.md +63 -0
  326. package/docs/RESEARCH_BACKED_IMPROVEMENTS.md +1180 -0
  327. package/docs/ROUTING_RUBRIC.md +197 -0
  328. package/docs/SEO_AUDIT.md +186 -0
  329. package/docs/SOCIAL_LISTENING.md +219 -0
  330. package/docs/TMLPD_QNA.md +751 -0
  331. package/docs/TMLPD_V2.1_COMPLETE.md +763 -0
  332. package/docs/TMLPD_V2.2_RESEARCH_ROADMAP.md +754 -0
  333. package/docs/UPDATE_TOPICS.md +15 -0
  334. package/docs/USE_CASES.md +59 -0
  335. package/docs/V2.2_IMPLEMENTATION_COMPLETE.md +446 -0
  336. package/docs/V2_IMPLEMENTATION_GUIDE.md +388 -0
  337. package/docs/VERCEL_AI_SDK.md +209 -0
  338. package/docs/VISIBILITY_ADOPTION_PLAN.md +1005 -0
  339. package/docs/_config.yml +49 -0
  340. package/docs/ai-plugin.json +16 -0
  341. package/docs/api.html +513 -0
  342. package/docs/architecture-diagram.md +40 -0
  343. package/docs/benchmark-chart.png +0 -0
  344. package/docs/benchmark.html +387 -0
  345. package/docs/blog/routerarena-number-one.html +73 -0
  346. package/docs/cli-cheatsheet.md +339 -0
  347. package/docs/compare.md +109 -0
  348. package/docs/comparison-litellm.md +88 -0
  349. package/docs/comparison.md +108 -0
  350. package/docs/cost-chart-ascii.md +42 -0
  351. package/docs/cost-comparison-chart.svg +88 -0
  352. package/docs/curl-examples.md +247 -0
  353. package/docs/demo-auto.html +264 -0
  354. package/docs/demo.html +416 -0
  355. package/docs/geo/GENERATIVE_ENGINE_OPTIMIZATION.md +232 -0
  356. package/docs/index.html +507 -0
  357. package/docs/launch-content/LAUNCH_EXECUTION_CHECKLIST.md +421 -0
  358. package/docs/launch-content/README.md +457 -0
  359. package/docs/launch-content/assets/cost_comparison_100_tasks.png +0 -0
  360. package/docs/launch-content/assets/cumulative_savings.png +0 -0
  361. package/docs/launch-content/assets/parallel_speedup.png +0 -0
  362. package/docs/launch-content/assets/provider_pricing_comparison.png +0 -0
  363. package/docs/launch-content/assets/task_breakdown_comparison.png +0 -0
  364. package/docs/launch-content/generate_charts.py +313 -0
  365. package/docs/launch-content/hn_show_post.md +139 -0
  366. package/docs/launch-content/partner_outreach_templates.md +745 -0
  367. package/docs/launch-content/reddit_posts.md +467 -0
  368. package/docs/launch-content/twitter_thread.txt +460 -0
  369. package/{llms.txt.bak → docs/llms.txt} +6 -6
  370. package/docs/npm-downloads-chart.svg +43 -0
  371. package/docs/openapi.json +139 -0
  372. package/docs/openapi.yaml +1318 -0
  373. package/docs/quick-start.html +366 -0
  374. package/docs/robots.txt +52 -0
  375. package/docs/sitemap.xml +57 -0
  376. package/docs/styles.css +682 -0
  377. package/docs/well-known/ai-plugin.json +16 -0
  378. package/docs/wellknown/ai-plugin.json +16 -0
  379. package/docs-site/assets/og-banner.svg +194 -0
  380. package/docs-site/index.html +632 -0
  381. package/eval/README.md +46 -0
  382. package/eval/baselines/main.json +12 -0
  383. package/eval/benchmark_dataset.jsonl +16 -0
  384. package/eval/check_golden_routes.js +64 -0
  385. package/eval/datasets/catalog.json +33 -0
  386. package/eval/datasets/slices/cn_provider_reliability_v1.jsonl +3 -0
  387. package/eval/datasets/slices/cost_pressure_v1.jsonl +3 -0
  388. package/eval/datasets/slices/safety_guardrails_v1.jsonl +3 -0
  389. package/eval/evals.json +199 -0
  390. package/eval/fault_injection_thresholds.json +3 -0
  391. package/eval/generate_report.js +128 -0
  392. package/eval/golden_routes.json +114 -0
  393. package/eval/lib/experiment_registry.js +24 -0
  394. package/eval/run_eval.js +197 -0
  395. package/eval/run_fault_injection.js +201 -0
  396. package/eval/run_shadow_eval.js +85 -0
  397. package/eval/thresholds.json +9 -0
  398. package/examples/QUICKSTART.md +183 -0
  399. package/examples/README.md +61 -0
  400. package/examples/a3m-sdk.js +124 -0
  401. package/examples/basic-route.js +54 -0
  402. package/examples/chat-loop.js +202 -0
  403. package/examples/classify-then-route.js +102 -0
  404. package/examples/cost-compare.js +120 -0
  405. package/examples/ensemble.js +160 -0
  406. package/examples/whatsapp-telegram-bridge-demo.js +302 -0
  407. package/examples/whatsapp-telegram-bridge.js +269 -0
  408. package/hf-space/README.md +23 -0
  409. package/hf-space/app.py +240 -0
  410. package/hf-space/requirements.txt +1 -0
  411. package/huggingface_space/README.md +35 -0
  412. package/huggingface_space/app.py +126 -0
  413. package/huggingface_space/create_space.py +208 -0
  414. package/huggingface_space/requirements.txt +1 -0
  415. package/mcp-server/README.md +188 -0
  416. package/mcp-server/package.json +29 -0
  417. package/mcp-server/src/index.ts +744 -0
  418. package/mcp-server/tsconfig.json +19 -0
  419. package/openclaw-alexa-bridge/ALL_REMAINING_FIXES_PLAN.md +313 -0
  420. package/openclaw-alexa-bridge/REMAINING_FIXES_SUMMARY.md +277 -0
  421. package/openclaw-alexa-bridge/src/alexa_handler_no_tmlpd.js +1234 -0
  422. package/openclaw-alexa-bridge/test_fixes.js +77 -0
  423. package/package.json +73 -270
  424. package/playground/README.md +51 -0
  425. package/playground/codesandbox.json +12 -0
  426. package/playground/index.js +39 -0
  427. package/proxy/README.md +227 -0
  428. package/proxy/package-lock.json +831 -0
  429. package/proxy/package.json +17 -0
  430. package/proxy/rate-limit.js +145 -0
  431. package/proxy/rate-limit.test.js +311 -0
  432. package/proxy/server.js +970 -0
  433. package/python/README.md +102 -0
  434. package/python/a3m/__init__.py +6 -0
  435. package/python/a3m/client.py +190 -0
  436. package/python/a3m/models.py +40 -0
  437. package/python/a3m/sync_client.py +61 -0
  438. package/python/examples.py +53 -0
  439. package/python/integrations.py +330 -0
  440. package/python/pyproject.toml +23 -0
  441. package/python/setup.py +28 -0
  442. package/python/tmlpd.py +369 -0
  443. package/qna/REDDIT_GAP_ANALYSIS.md +299 -0
  444. package/qna/TMLPD_QNA.md +751 -0
  445. package/research/FINDING_001_safety.md +28 -0
  446. package/research/FINDING_002_error_diversity.md +32 -0
  447. package/research/FINDING_003_confidence_weighted_voting.md +32 -0
  448. package/research/FINDING_004_cross_model_semantic_detection.md +37 -0
  449. package/research/FINDING_005_knowledge_gap_orthogonality.md +34 -0
  450. package/research/HALLUCINATION_RESEARCH.md +27 -0
  451. package/research/PUBLISH_LOG.md +3 -0
  452. package/research/ensemble-voting.md +324 -0
  453. package/research/loss-functions.md +545 -0
  454. package/research-log.md +49 -0
  455. package/scripts/banner.js +29 -0
  456. package/scripts/benchmark-local-routerarena.ts +176 -0
  457. package/scripts/benchmark.js +145 -0
  458. package/scripts/benchmark.sh +61 -0
  459. package/scripts/compare-providers.sh +230 -0
  460. package/scripts/content-planner.js +25 -0
  461. package/scripts/create-labeled-benchmark.ts +105 -0
  462. package/scripts/cross_post.py +443 -0
  463. package/scripts/local-router-benchmark.ts +154 -0
  464. package/scripts/post-all.sh +41 -0
  465. package/scripts/publish_fcc.py +106 -0
  466. package/scripts/push-to-gitee.sh +25 -0
  467. package/scripts/routerarena_ensemble.js +144 -0
  468. package/scripts/routing-benchmark-v2.js +373 -0
  469. package/scripts/routing-benchmark-v3.js +118 -0
  470. package/scripts/routing-benchmark.js +462 -0
  471. package/scripts/run-labeled-benchmark.mjs +104 -0
  472. package/scripts/run-mmlu-benchmark.js +176 -0
  473. package/scripts/run-provider-benchmark.js +244 -0
  474. package/scripts/update-npm-badges.js +158 -0
  475. package/skill/SKILL.md +238 -0
  476. package/src/__tests__/integration/tmpld_integration.test.py +540 -0
  477. package/src/routing/advancedRouter.ts +1 -1
  478. package/src/skills/__tests__/skill_manager.test.ts +328 -0
  479. package/submissions/benchmarks/ALL_PLATFORMS_SUBMISSION.md +94 -0
  480. package/submissions/benchmarks/LLMROUTERBENCH_SUBMISSION.md +121 -0
  481. package/submissions/benchmarks/MMRBENCH_SUBMISSION.md +94 -0
  482. package/submissions/benchmarks/ROUTERARENA_UPDATE.md +83 -0
  483. package/submissions/benchmarks/ROUTERBENCH_SUBMISSION.md +225 -0
  484. package/test-council/1-structure-tests.test.js +353 -0
  485. package/test-council/1-structure-tests.test.ts +353 -0
  486. package/test-council/2-edge-case-tests.test.ts +361 -0
  487. package/test-council/3-performance-tests.test.ts +669 -0
  488. package/test-council/4-integration-tests.test.ts +391 -0
  489. package/test-council/5-agent-council-eval.test.ts +413 -0
  490. package/test-council/AGENT_COUNCIL_ARCHITECTURE.md +349 -0
  491. package/test-council/TEST_COUNCIL_REPORT.md +201 -0
  492. package/test-council/agents/edge-case-agent.ts +363 -0
  493. package/test-council/agents/performance-agent.ts +426 -0
  494. package/test-council/agents/structure-agent.ts +227 -0
  495. package/test-council/council.md +183 -0
  496. package/tests/__mocks__/tokenUtils.ts +8 -0
  497. package/tests/memory/episodicMemory.test.ts +227 -0
  498. package/tests/package-lock.json +1628 -0
  499. package/tests/package.json +18 -0
  500. package/tests/routing/ensembleVoting.test.ts +236 -0
  501. package/tests/routing/providerRetry.test.ts +360 -0
  502. package/tests/routing/queryTypePresets.test.ts +208 -0
  503. package/tests/security/guardrailEngine.test.ts +700 -0
  504. package/tests/tsconfig.json +21 -0
  505. package/tests/vitest.config.ts +18 -0
  506. package/tmlpd-pi-extension/README.md +66 -0
  507. package/tmlpd-pi-extension/dist/cache/prefixCache.d.ts +114 -0
  508. package/tmlpd-pi-extension/dist/cache/prefixCache.d.ts.map +1 -0
  509. package/tmlpd-pi-extension/dist/cache/prefixCache.js +285 -0
  510. package/tmlpd-pi-extension/dist/cache/prefixCache.js.map +1 -0
  511. package/tmlpd-pi-extension/dist/cache/responseCache.d.ts +58 -0
  512. package/tmlpd-pi-extension/dist/cache/responseCache.d.ts.map +1 -0
  513. package/tmlpd-pi-extension/dist/cache/responseCache.js +153 -0
  514. package/tmlpd-pi-extension/dist/cache/responseCache.js.map +1 -0
  515. package/tmlpd-pi-extension/dist/cli.js +59 -0
  516. package/tmlpd-pi-extension/dist/cost/costTracker.d.ts +95 -0
  517. package/tmlpd-pi-extension/dist/cost/costTracker.d.ts.map +1 -0
  518. package/tmlpd-pi-extension/dist/cost/costTracker.js +240 -0
  519. package/tmlpd-pi-extension/dist/cost/costTracker.js.map +1 -0
  520. package/tmlpd-pi-extension/dist/index.d.ts +723 -0
  521. package/tmlpd-pi-extension/dist/index.d.ts.map +1 -0
  522. package/tmlpd-pi-extension/dist/index.js +239 -0
  523. package/tmlpd-pi-extension/dist/index.js.map +1 -0
  524. package/tmlpd-pi-extension/dist/memory/episodicMemory.d.ts +82 -0
  525. package/tmlpd-pi-extension/dist/memory/episodicMemory.d.ts.map +1 -0
  526. package/tmlpd-pi-extension/dist/memory/episodicMemory.js +145 -0
  527. package/tmlpd-pi-extension/dist/memory/episodicMemory.js.map +1 -0
  528. package/tmlpd-pi-extension/dist/orchestration/haloOrchestrator.d.ts +102 -0
  529. package/tmlpd-pi-extension/dist/orchestration/haloOrchestrator.d.ts.map +1 -0
  530. package/tmlpd-pi-extension/dist/orchestration/haloOrchestrator.js +207 -0
  531. package/tmlpd-pi-extension/dist/orchestration/haloOrchestrator.js.map +1 -0
  532. package/tmlpd-pi-extension/dist/orchestration/mctsWorkflow.d.ts +85 -0
  533. package/tmlpd-pi-extension/dist/orchestration/mctsWorkflow.d.ts.map +1 -0
  534. package/tmlpd-pi-extension/dist/orchestration/mctsWorkflow.js +210 -0
  535. package/tmlpd-pi-extension/dist/orchestration/mctsWorkflow.js.map +1 -0
  536. package/tmlpd-pi-extension/dist/providers/localProvider.d.ts +102 -0
  537. package/tmlpd-pi-extension/dist/providers/localProvider.d.ts.map +1 -0
  538. package/tmlpd-pi-extension/dist/providers/localProvider.js +338 -0
  539. package/tmlpd-pi-extension/dist/providers/localProvider.js.map +1 -0
  540. package/tmlpd-pi-extension/dist/providers/registry.d.ts +55 -0
  541. package/tmlpd-pi-extension/dist/providers/registry.d.ts.map +1 -0
  542. package/tmlpd-pi-extension/dist/providers/registry.js +138 -0
  543. package/tmlpd-pi-extension/dist/providers/registry.js.map +1 -0
  544. package/tmlpd-pi-extension/dist/routing/advancedRouter.d.ts +68 -0
  545. package/tmlpd-pi-extension/dist/routing/advancedRouter.d.ts.map +1 -0
  546. package/tmlpd-pi-extension/dist/routing/advancedRouter.js +332 -0
  547. package/tmlpd-pi-extension/dist/routing/advancedRouter.js.map +1 -0
  548. package/tmlpd-pi-extension/dist/tools/tmlpdTools.d.ts +101 -0
  549. package/tmlpd-pi-extension/dist/tools/tmlpdTools.d.ts.map +1 -0
  550. package/tmlpd-pi-extension/dist/tools/tmlpdTools.js +368 -0
  551. package/tmlpd-pi-extension/dist/tools/tmlpdTools.js.map +1 -0
  552. package/tmlpd-pi-extension/dist/utils/batchProcessor.d.ts +96 -0
  553. package/tmlpd-pi-extension/dist/utils/batchProcessor.d.ts.map +1 -0
  554. package/tmlpd-pi-extension/dist/utils/batchProcessor.js +170 -0
  555. package/tmlpd-pi-extension/dist/utils/batchProcessor.js.map +1 -0
  556. package/tmlpd-pi-extension/dist/utils/compression.d.ts +61 -0
  557. package/tmlpd-pi-extension/dist/utils/compression.d.ts.map +1 -0
  558. package/tmlpd-pi-extension/dist/utils/compression.js +281 -0
  559. package/tmlpd-pi-extension/dist/utils/compression.js.map +1 -0
  560. package/tmlpd-pi-extension/dist/utils/reliability.d.ts +74 -0
  561. package/tmlpd-pi-extension/dist/utils/reliability.d.ts.map +1 -0
  562. package/tmlpd-pi-extension/dist/utils/reliability.js +177 -0
  563. package/tmlpd-pi-extension/dist/utils/reliability.js.map +1 -0
  564. package/tmlpd-pi-extension/dist/utils/speculativeDecoding.d.ts +117 -0
  565. package/tmlpd-pi-extension/dist/utils/speculativeDecoding.d.ts.map +1 -0
  566. package/tmlpd-pi-extension/dist/utils/speculativeDecoding.js +246 -0
  567. package/tmlpd-pi-extension/dist/utils/speculativeDecoding.js.map +1 -0
  568. package/tmlpd-pi-extension/dist/utils/tokenUtils.d.ts +50 -0
  569. package/tmlpd-pi-extension/dist/utils/tokenUtils.d.ts.map +1 -0
  570. package/tmlpd-pi-extension/dist/utils/tokenUtils.js +124 -0
  571. package/tmlpd-pi-extension/dist/utils/tokenUtils.js.map +1 -0
  572. package/tmlpd-pi-extension/examples/QUICKSTART.md +183 -0
  573. package/tmlpd-pi-extension/package-lock.json +79 -0
  574. package/tmlpd-pi-extension/package.json +172 -0
  575. package/tmlpd-pi-extension/python/examples.py +53 -0
  576. package/tmlpd-pi-extension/python/integrations.py +330 -0
  577. package/tmlpd-pi-extension/python/setup.py +28 -0
  578. package/tmlpd-pi-extension/python/tmlpd.py +369 -0
  579. package/tmlpd-pi-extension/qna/REDDIT_GAP_ANALYSIS.md +299 -0
  580. package/tmlpd-pi-extension/qna/TMLPD_QNA.md +751 -0
  581. package/tmlpd-pi-extension/skill/SKILL.md +238 -0
  582. package/tmlpd-pi-extension/src/cache/responseCache.ts +147 -0
  583. package/tmlpd-pi-extension/src/cost/costTracker.ts +302 -0
  584. package/tmlpd-pi-extension/src/index.ts +232 -0
  585. package/tmlpd-pi-extension/src/memory/episodicMemory.ts +257 -0
  586. package/tmlpd-pi-extension/src/orchestration/haloOrchestrator.ts +266 -0
  587. package/tmlpd-pi-extension/src/orchestration/mctsWorkflow.ts +262 -0
  588. package/tmlpd-pi-extension/src/providers/localProvider.ts +406 -0
  589. package/tmlpd-pi-extension/src/providers/registry.ts +164 -0
  590. package/tmlpd-pi-extension/src/routing/ensembleVoting.ts +159 -0
  591. package/tmlpd-pi-extension/src/routing/queryTypePresets.ts +136 -0
  592. package/tmlpd-pi-extension/src/tools/tmlpdTools.ts +433 -0
  593. package/tmlpd-pi-extension/src/utils/batchProcessor.ts +232 -0
  594. package/tmlpd-pi-extension/src/utils/compression.ts +325 -0
  595. package/tmlpd-pi-extension/src/utils/reliability.ts +221 -0
  596. package/tmlpd-pi-extension/src/utils/tokenUtils.ts +145 -0
  597. package/tmlpd-pi-extension/tsconfig.json +18 -0
  598. package/tsconfig.build.json +29 -0
  599. package/tsconfig.json +18 -0
  600. package/README.md.bak +0 -1185
  601. package/src/routing/advancedRouter.ts.bak +0 -650
  602. package/test.js.bak +0 -376
  603. /package/{llms-full.txt.bak → docs/llms-full.txt} +0 -0
@@ -0,0 +1,420 @@
1
+ # A3M Router - Integration Guide
2
+
3
+ ## Overview
4
+
5
+ A3M Router includes **116 integrations** across multiple categories:
6
+
7
+ | Category | Count | Examples |
8
+ |----------|-------|----------|
9
+ | Project Management | 15+ | Asana, Trello, Linear, ClickUp, Monday |
10
+ | CRM & Support | 8+ | HubSpot, Salesforce, Zendesk, Intercom |
11
+ | Marketing | 6+ | Mailchimp, SendGrid, Segment |
12
+ | Analytics | 6+ | Mixpanel, Amplitude, PostHog, Datadog |
13
+ | Communication | 10+ | Slack, Teams, Twilio, Zoom |
14
+ | AI & Vector DBs | 8+ | Pinecone, Weaviate, Qdrant, Chroma |
15
+ | Storage | 5+ | S3, GCS, Azure Blob, Dropbox |
16
+ | Payments | 5+ | Stripe, Square, Braintree, Shopify |
17
+ | Social | 4+ | Twitter, Instagram, LinkedIn |
18
+ | IoT | 5+ | Hue, Wemo, Sonos |
19
+ | DevOps | 10+ | Jenkins, GitLab, Bitbucket, Vercel |
20
+
21
+ ---
22
+
23
+ ## Quick Start
24
+
25
+ ```javascript
26
+ import { createIntegration } from 'adaptive-memory-multi-model-router/integrations';
27
+
28
+ // GitHub
29
+ const github = createIntegration('github', { apiKey: 'your-token' });
30
+ await github.createIssue('owner', 'repo', 'Bug fix', 'Description');
31
+
32
+ // Slack
33
+ const slack = createIntegration('slack', { webhookUrl: 'https://hooks.slack.com/...' });
34
+ await slack.sendMessage('#alerts', 'Build complete!');
35
+ ```
36
+
37
+ ---
38
+
39
+ ## Project Management Integrations
40
+
41
+ ### Asana
42
+
43
+ ```javascript
44
+ import { AsanaIntegration } from 'adaptive-memory-multi-model-router/integrations/asana';
45
+
46
+ const asana = new AsanaIntegration(process.env.ASANA_API_KEY);
47
+
48
+ // Create task
49
+ await asana.createTask(
50
+ workspaceId = '123456',
51
+ projectId = '789012',
52
+ name = 'Implement feature',
53
+ notes = 'Description here'
54
+ );
55
+
56
+ // Get tasks
57
+ const tasks = await asana.getTasks(projectId);
58
+ ```
59
+
60
+ ### Trello
61
+
62
+ ```javascript
63
+ import { TrelloIntegration } from 'adaptive-memory-multi-model-router/integrations/trello';
64
+
65
+ const trello = new TrelloIntegration(
66
+ process.env.TRELLO_API_KEY,
67
+ process.env.TRELLO_TOKEN
68
+ );
69
+
70
+ await trello.createCard(boardId, listId, 'New Card', 'Description');
71
+ ```
72
+
73
+ ### Linear
74
+
75
+ ```javascript
76
+ import { LinearIntegration } from 'adaptive-memory-multi-model-router/integrations/linear';
77
+
78
+ const linear = new LinearIntegration(process.env.LINEAR_API_KEY);
79
+
80
+ await linear.createIssue('Fix bug', 'team-id');
81
+ const teams = await linear.getTeams();
82
+ ```
83
+
84
+ ### Monday
85
+
86
+ ```javascript
87
+ import { MondayIntegration } from 'adaptive-memory-multi-model-router/integrations/monday';
88
+
89
+ const monday = new MondayIntegration(process.env.MONDAY_API_KEY);
90
+
91
+ const boards = await monday.getBoards();
92
+ await monday.createItem(boardId, 'New Item');
93
+ ```
94
+
95
+ ---
96
+
97
+ ## CRM & Customer Support
98
+
99
+ ### HubSpot
100
+
101
+ ```javascript
102
+ import { HubSpotIntegration } from 'adaptive-memory-multi-model-router/integrations/hubspot';
103
+
104
+ const hubspot = new HubSpotIntegration(process.env.HUBSPOT_API_KEY);
105
+
106
+ const contacts = await hubspot.getContacts(100);
107
+ await hubspot.createContact('customer@example.com', { firstName: 'John' });
108
+ await hubspot.createDeal('New Deal', { amount: 5000 });
109
+ ```
110
+
111
+ ### Salesforce
112
+
113
+ ```javascript
114
+ import { SalesforceIntegration } from 'adaptive-memory-multi-model-router/integrations/salesforce';
115
+
116
+ const sf = new SalesforceIntegration(
117
+ 'https://your-instance.salesforce.com',
118
+ process.env.SF_ACCESS_TOKEN
119
+ );
120
+
121
+ const contacts = await sf.query("SELECT Id, Name FROM Contact LIMIT 10");
122
+ await sf.createRecord('Contact', { Email: 'test@example.com', LastName: 'Test' });
123
+ ```
124
+
125
+ ### Zendesk
126
+
127
+ ```javascript
128
+ import { ZendeskIntegration } from 'adaptive-memory-multi-model-router/integrations/zendesk';
129
+
130
+ const zendesk = new ZendeskIntegration(
131
+ 'your-company',
132
+ 'agent@example.com',
133
+ process.env.ZENDESK_API_TOKEN
134
+ );
135
+
136
+ const tickets = await zendesk.getTickets();
137
+ await zendesk.createTicket('Help needed', 'Description of the issue');
138
+ ```
139
+
140
+ ---
141
+
142
+ ## Communication
143
+
144
+ ### Slack
145
+
146
+ ```javascript
147
+ import { SlackIntegration } from 'adaptive-memory-multi-model-router/integrations/slack';
148
+
149
+ const slack = new SlackIntegration(process.env.SLACK_WEBHOOK_URL);
150
+
151
+ await slack.sendMessage('#dev-team', 'Deployment complete! 🚀');
152
+ await slack.sendMessage('#alerts', { text: 'High latency detected', icon_emoji: ':warning:' });
153
+ ```
154
+
155
+ ### Twilio
156
+
157
+ ```javascript
158
+ import { TwilioIntegration } from 'adaptive-memory-multi-model-router/integrations/twilio';
159
+
160
+ const twilio = new TwilioIntegration(
161
+ process.env.TWILIO_ACCOUNT_SID,
162
+ process.env.TWILIO_AUTH_TOKEN
163
+ );
164
+
165
+ await twilio.sendMessage('+1234567890', 'Your code is ready!');
166
+ ```
167
+
168
+ ### Zoom
169
+
170
+ ```javascript
171
+ import { ZoomIntegration } from 'adaptive-memory-multi-model-router/integrations/zoom';
172
+
173
+ const zoom = new ZoomIntegration(
174
+ process.env.ZOOM_API_KEY,
175
+ process.env.ZOOM_API_SECRET
176
+ );
177
+
178
+ const meeting = await zoom.createMeeting('Team Standup', 30);
179
+ console.log('Join URL:', meeting.join_url);
180
+ ```
181
+
182
+ ---
183
+
184
+ ## AI & Vector Databases
185
+
186
+ ### Pinecone
187
+
188
+ ```javascript
189
+ import { PineconeIntegration } from 'adaptive-memory-multi-model-router/integrations/pinecone';
190
+
191
+ const pinecone = new PineconeIntegration(
192
+ process.env.PINECONE_API_KEY,
193
+ 'us-west-2'
194
+ );
195
+
196
+ await pinecone.createIndex('my-index', 1536);
197
+ await pinecone.upsertVectors('my-index', [
198
+ { id: 'vec1', vector: [...], metadata: { text: 'hello' } }
199
+ ]);
200
+
201
+ const results = await pinecone.query('my-index', vector, 10);
202
+ ```
203
+
204
+ ### Weaviate
205
+
206
+ ```javascript
207
+ import { WeaviateIntegration } from 'adaptive-memory-multi-model-router/integrations/weaviate';
208
+
209
+ const weaviate = new WeaviateIntegration(
210
+ 'http://localhost:8080',
211
+ process.env.WEAVIATE_API_KEY
212
+ );
213
+
214
+ await weaviate.createObject('Article', { title: 'Hello', content: 'World' });
215
+ const articles = await weaviate.getObjects('Article');
216
+ ```
217
+
218
+ ---
219
+
220
+ ## Storage
221
+
222
+ ### S3
223
+
224
+ ```javascript
225
+ import { S3Integration } from 'adaptive-memory-multi-model-router/integrations/s3';
226
+
227
+ const s3 = new S3Integration(
228
+ process.env.AWS_ACCESS_KEY_ID,
229
+ process.env.AWS_SECRET_ACCESS_KEY,
230
+ 'us-east-1'
231
+ );
232
+
233
+ await s3.putObject('my-bucket', 'path/to/file.txt', 'Hello World');
234
+ const data = await s3.getObject('my-bucket', 'path/to/file.txt');
235
+ ```
236
+
237
+ ### Dropbox
238
+
239
+ ```javascript
240
+ import { DropboxIntegration } from 'adaptive-memory-multi-model-router/integrations/dropbox';
241
+
242
+ const dropbox = new DropboxIntegration(process.env.DROPBOX_ACCESS_TOKEN);
243
+
244
+ await dropbox.uploadFile('/path/to/file.txt', 'File content');
245
+ const content = await dropbox.downloadFile('/path/to/file.txt');
246
+ ```
247
+
248
+ ---
249
+
250
+ ## Payments
251
+
252
+ ### Stripe
253
+
254
+ ```javascript
255
+ import { StripeIntegration } from 'adaptive-memory-multi-model-router/integrations/stripe';
256
+
257
+ const stripe = new StripeIntegration(process.env.STRIPE_API_KEY);
258
+
259
+ const charge = await stripe.createCharge(1999, 'usd', 'cus_123');
260
+ const charges = await stripe.getCharges(10);
261
+ ```
262
+
263
+ ### Shopify
264
+
265
+ ```javascript
266
+ import { ShopifyIntegration } from 'adaptive-memory-multi-model-router/integrations/shopify';
267
+
268
+ const shopify = new ShopifyIntegration(
269
+ 'my-store.myshopify.com',
270
+ process.env.SHOPIFY_ACCESS_TOKEN
271
+ );
272
+
273
+ const products = await shopify.getProducts(50);
274
+ const order = await shopify.createOrder([
275
+ { variant_id: 123, quantity: 2 }
276
+ ]);
277
+ ```
278
+
279
+ ---
280
+
281
+ ## Analytics & Monitoring
282
+
283
+ ### Mixpanel
284
+
285
+ ```javascript
286
+ import { MixpanelIntegration } from 'adaptive-memory-multi-model-router/integrations/mixpanel';
287
+
288
+ const mixpanel = new MixpanelIntegration(process.env.MIXPANEL_TOKEN);
289
+
290
+ await mixpanel.track('Purchase', {
291
+ userId: 'user-123',
292
+ value: 99.99,
293
+ item: 'Premium Plan'
294
+ });
295
+ ```
296
+
297
+ ### Datadog
298
+
299
+ ```javascript
300
+ import { DataDogIntegration } from 'adaptive-memory-multi-model-router/integrations/datadog';
301
+
302
+ const datadog = new DataDogIntegration(
303
+ process.env.DD_API_KEY,
304
+ process.env.DD_APP_KEY
305
+ );
306
+
307
+ await datadog.postMetric('app.latency', 150);
308
+ const metrics = await datadog.getMetrics('app.latency');
309
+ ```
310
+
311
+ ---
312
+
313
+ ## DevOps
314
+
315
+ ### GitHub
316
+
317
+ ```javascript
318
+ import { GitHubIntegration } from 'adaptive-memory-multi-model-router/integrations/github';
319
+
320
+ const github = new GitHubIntegration(process.env.GITHUB_TOKEN);
321
+
322
+ const repo = await github.getRepo('owner', 'repo');
323
+ await github.createIssue('owner', 'repo', 'Bug', 'Description');
324
+ await github.createPR('owner', 'repo', 'Feature', 'feature-branch', 'main');
325
+ ```
326
+
327
+ ### GitLab
328
+
329
+ ```javascript
330
+ import { GitLabIntegration } from 'adaptive-memory-multi-model-router/integrations/gitlab';
331
+
332
+ const gitlab = new GitLabIntegration(process.env.GITLAB_TOKEN);
333
+
334
+ const projects = await gitlab.getProjects();
335
+ await gitlab.createMR('project-id', 'feature-branch', 'main');
336
+ ```
337
+
338
+ ### Jenkins
339
+
340
+ ```javascript
341
+ import { JenkinsIntegration } from 'adaptive-memory-multi-model-router/integrations/jenkins';
342
+
343
+ const jenkins = new JenkinsIntegration(
344
+ 'https://jenkins.example.com',
345
+ 'admin',
346
+ process.env.JENKINS_API_TOKEN
347
+ );
348
+
349
+ const jobs = await jenkins.getJobs();
350
+ await jenkins.buildJob('my-job');
351
+ ```
352
+
353
+ ---
354
+
355
+ ## Using OAuth Manager
356
+
357
+ ```javascript
358
+ import { OAuthManager } from 'adaptive-memory-multi-model-router/oauth';
359
+
360
+ const oauth = new OAuthManager();
361
+
362
+ // Configure OAuth for Slack
363
+ oauth.configure('slack', {
364
+ clientId: process.env.SLACK_CLIENT_ID,
365
+ clientSecret: process.env.SLACK_CLIENT_SECRET,
366
+ redirectUri: 'https://myapp.com/callback/slack'
367
+ });
368
+
369
+ // Get authorization URL
370
+ const authUrl = oauth.getAuthUrl('slack');
371
+
372
+ // In your callback handler
373
+ const tokens = await oauth.handleCallback('slack', code, state);
374
+
375
+ // Make authenticated requests
376
+ oauth.apiRequest('slack', '/chat.postMessage', {
377
+ method: 'POST',
378
+ body: JSON.stringify({ channel: '#general', text: 'Hello!' })
379
+ });
380
+ ```
381
+
382
+ ---
383
+
384
+ ## Error Handling
385
+
386
+ ```javascript
387
+ import { createIntegration } from 'adaptive-memory-multi-model-router/integrations';
388
+
389
+ const github = createIntegration('github', { apiKey: 'invalid' });
390
+
391
+ try {
392
+ await github.createIssue('owner', 'repo', 'Title', 'Body');
393
+ } catch (error) {
394
+ console.error('GitHub API Error:', error.message);
395
+ // Handle: retry, fallback, or alert
396
+ }
397
+ ```
398
+
399
+ ---
400
+
401
+ ## Integration Factory
402
+
403
+ Use `createIntegration` for quick setup:
404
+
405
+ ```javascript
406
+ import { createIntegration } from 'adaptive-memory-multi-model-router/integrations';
407
+
408
+ // All integrations available via string name
409
+ const integration = createIntegration('stripe', { apiKey: 'sk_...' });
410
+ const integration2 = createIntegration('slack', { webhookUrl: 'https://...' });
411
+ const integration3 = createIntegration('pinecone', { apiKey: '...', environment: 'us-west-2' });
412
+
413
+ // Supported integration names:
414
+ // github, slack, telegram, notion, linear, jira, gmail, discord, airtable,
415
+ // google-calendar, asana, trello, stripe, shopify, intercom, sendgrid,
416
+ // mailchimp, hubspot, salesforce, zendesk, mixpanel, amplitude, segment,
417
+ // posthog, datadog, newrelic, sentry, grafana, pagerduty, aws-s3, gcs,
418
+ // azureblob, dropbox, jenkins, gitlab, bitbucket, vercel, netlify, pinecone,
419
+ // weaviate, qdrant, chromadb, and 70+ more!
420
+ ```
@@ -0,0 +1,147 @@
1
+ # LangChain Provider Integration for A3M Router
2
+
3
+ This document outlines how to integrate A3M Router with LangChain as a custom LLM provider.
4
+
5
+ ## Option 1: OpenAI-Compatible API (Recommended)
6
+
7
+ A3M Router is OpenAI-compatible, so you can use it with LangChain's OpenAI integration:
8
+
9
+ ```python
10
+ from langchain_openai import OpenAI
11
+ from langchain.chains import LLMChain
12
+ from langchain.prompts import PromptTemplate
13
+
14
+ # Configure A3M Router as OpenAI-compatible endpoint
15
+ llm = OpenAI(
16
+ model="auto", # A3M will route automatically
17
+ openai_api_base="http://localhost:8787/v1", # A3M Router
18
+ openai_api_key="your-api-key", # Required by A3M but not used for routing
19
+ )
20
+
21
+ # Simple usage
22
+ chain = LLMChain(
23
+ llm=llm,
24
+ prompt=PromptTemplate.from_template("Explain {topic} in {style}.")
25
+ )
26
+
27
+ result = chain.run(topic="quantum computing", style="a haiku")
28
+ print(result)
29
+ ```
30
+
31
+ ## Option 2: Custom LangChain Callback Integration
32
+
33
+ For more control over routing decisions:
34
+
35
+ ```python
36
+ from langchain.callbacks.base import BaseCallbackHandler
37
+ from langchain_openai import OpenAI
38
+ from typing import Any, Dict, List
39
+ import requests
40
+
41
+ class A3MRouterCallback(BaseCallbackHandler):
42
+ """Callback that logs A3M routing decisions"""
43
+
44
+ def __init__(self):
45
+ self.routing_history = []
46
+
47
+ def on_llm_start(self, serialized: Dict, prompts: List[str], **kwargs):
48
+ query = prompts[0] if prompts else ""
49
+ # Get routing decision before LLM call
50
+ response = requests.post(
51
+ "http://localhost:8787/v1/route",
52
+ json={"query": query}
53
+ )
54
+ if response.ok:
55
+ decision = response.json()
56
+ self.routing_history.append(decision)
57
+ print(f"🔀 Routed to: {decision.get('model')} "
58
+ f"(${decision.get('cost')})")
59
+
60
+ # Use with LangChain
61
+ llm = OpenAI(
62
+ model="auto",
63
+ openai_api_base="http://localhost:8787/v1",
64
+ callbacks=[A3MRouterCallback()]
65
+ )
66
+ ```
67
+
68
+ ## Option 3: A3M Router as LangChain Tool
69
+
70
+ Use A3M's routing as a tool in LangChain agents:
71
+
72
+ ```python
73
+ from langchain.agents import initialize_agent, AgentType
74
+ from langchain.tools import Tool
75
+ from langchain_openai import OpenAI
76
+ import requests
77
+
78
+ def get_routing_decision(query: str) -> str:
79
+ """Get A3M routing decision for a query"""
80
+ response = requests.post(
81
+ "http://localhost:8787/v1/route",
82
+ json={"query": query}
83
+ )
84
+ if response.ok:
85
+ data = response.json()
86
+ return f"Model: {data.get('model')}, Tier: {data.get('tier')}, Cost: ${data.get('cost')}"
87
+ return "Error: A3M Router not available"
88
+
89
+ routing_tool = Tool(
90
+ name="A3M Router",
91
+ func=get_routing_decision,
92
+ description="Useful for determining the best LLM for a task"
93
+ )
94
+
95
+ # Create agent with routing tool
96
+ llm = OpenAI(temperature=0)
97
+ agent = initialize_agent(
98
+ tools=[routing_tool],
99
+ llm=llm,
100
+ agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
101
+ verbose=True
102
+ )
103
+
104
+ agent.run("What model should I use for a Python debugging task?")
105
+ ```
106
+
107
+ ## Installation
108
+
109
+ ```bash
110
+ pip install langchain langchain-openai requests
111
+ ```
112
+
113
+ ## Environment Setup
114
+
115
+ ```bash
116
+ export OPENAI_API_KEY="your-key" # Required for LangChain
117
+ # A3M Router runs separately at localhost:8787
118
+ ```
119
+
120
+ ## A3M Router + LangChain Flow
121
+
122
+ ```
123
+ User Query → LangChain Agent → A3M Router (/v1/route)
124
+
125
+ Optimal Model Selected
126
+
127
+ Provider API (Groq, DeepSeek, etc.)
128
+
129
+ Response Returned
130
+ ```
131
+
132
+ ## Cost Tracking
133
+
134
+ A3M Router automatically tracks costs. In LangChain:
135
+
136
+ ```python
137
+ from langchain.callbacks import get_openai_callback
138
+
139
+ with get_openai_callback() as cb:
140
+ chain.run("Explain quantum computing")
141
+ print(f"Total tokens: {cb.total_tokens}")
142
+ print(f"Total cost: ${cb.total_cost}")
143
+ ```
144
+
145
+ ---
146
+
147
+ For more info: https://github.com/Das-rebel/a3m-router