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,299 @@
1
+ # TMLPD PI - Reddit Feature Gap Analysis
2
+
3
+ > Based on Reddit (r/LocalLLaMA, r/AI_Agents, r/MachineLearning, r/llm) pain points.
4
+ > Identifying what's missing vs what developers actually need.
5
+
6
+ ---
7
+
8
+ ## Top Reddit Complaints vs TMLPD Status
9
+
10
+ | Issue | Reddit Popularity | TMLPD Status | Gap |
11
+ |-------|------------------|--------------|-----|
12
+ | **Reliable function calling** | 🔥🔥🔥 (1957 pts) | ❌ Not supported | **CRITICAL** |
13
+ | **Cost tracking per model** | 🔥🔥🔥 (measurement obsession) | ✅ Full tracking | OK |
14
+ | **Intelligent failover** | 🔥🔥🔥 (multi-provider) | ✅ Auto-fallback | OK |
15
+ | **Token compression** | 🔥🔥 (70% reduction interest) | ❌ Not supported | **HIGH** |
16
+ | **KV cache reuse** | 🔥🔥 (253 comments) | ❌ L1 cache only | **HIGH** |
17
+ | **Batch processing** | 🔥🔥 (throughput) | ❌ Sequential only | **MEDIUM** |
18
+ | **Local orchestration** | 🔥🔥 (privacy) | ⚠️ API-dependent | **MEDIUM** |
19
+ | **Multi-model orchestration** | 🔥 (815 comments Claude Code) | ✅ HALO | OK |
20
+ | **Rust-based speed** | 🔥 (no Python overhead) | ⚠️ TypeScript only | **LOW** |
21
+
22
+ ---
23
+
24
+ ## Missing Capabilities - Detailed Analysis
25
+
26
+ ### 1. Function Calling / Tool Use ❌
27
+
28
+ **Reddit Pain:** "Function calling broke constantly" (1957 points)
29
+
30
+ ```python
31
+ # What developers want:
32
+ result = await client.execute_with_tools(
33
+ prompt="What's the weather in NYC?",
34
+ tools=[get_weather, get_time, search_web],
35
+ fallback_enabled=True
36
+ )
37
+ # Intelligent routing to providers with best function-calling accuracy
38
+ ```
39
+
40
+ **Gap:** TMLPD only does text completion. No tool/function calling support.
41
+
42
+ **Recommendation:** Add `execute_with_tools()` with:
43
+ - Provider capability detection (Anthropic > OpenAI > Google for function calling)
44
+ - Parallel tool execution
45
+ - Fallback chain if primary provider's function calling fails
46
+
47
+ ---
48
+
49
+ ### 2. Token Compression ⚠️
50
+
51
+ **Reddit Pain:** "ISON format for 70% token reduction" (high engagement)
52
+
53
+ ```python
54
+ # What developers want:
55
+ compressed = compress_context(conversation, ratio=0.7)
56
+ # "ISON" or similar encoding
57
+
58
+ result = await client.execute(compressed, model="premium")
59
+ ```
60
+
61
+ **Gap:** TMLPD has no compression. Context window costs are high.
62
+
63
+ **Recommendation:** Add compression utilities:
64
+ - `compress_context(messages, strategy="ison")`
65
+ - `smart_truncate(conversation, max_tokens)`
66
+ - Token counting before API calls
67
+
68
+ ---
69
+
70
+ ### 3. KV Cache Management ❌
71
+
72
+ **Reddit Pain:** "Serving 1B+ tokens/day locally" - KV cache reuse critical
73
+
74
+ ```typescript
75
+ // What developers want:
76
+ const cache = await tmlpd.getKVCache(model="llama-3.3-70b");
77
+ cache.store({ prompt: "...", kv_state: [...] });
78
+ // Reuse KV state for similar prompts
79
+ ```
80
+
81
+ **Gap:** We have L1 response cache, but not KV cache.
82
+
83
+ **Recommendation:** Add `KVCacheManager`:
84
+ - Store KV states for reuse
85
+ - Semantic matching of KV cache entries
86
+ - Automatic KV cache for repeated context patterns
87
+
88
+ ---
89
+
90
+ ### 4. Batch Processing ❌
91
+
92
+ **Reddit Pain:** "Throughput optimization" for GPU clusters
93
+
94
+ ```python
95
+ # What developers want:
96
+ batch = await client.execute_batch([
97
+ "Explain quantum",
98
+ "Write Python async",
99
+ "Debug this code"
100
+ ], priority="high") # Returns when all complete
101
+
102
+ # With concurrency control and rate limiting
103
+ ```
104
+
105
+ **Gap:** TMLPD has parallel but not batch queuing.
106
+
107
+ **Recommendation:** Add `executeBatch()`:
108
+ - Queue multiple prompts
109
+ - Priority scheduling
110
+ - Batch completion callbacks
111
+ - Rate limit management across batch
112
+
113
+ ---
114
+
115
+ ### 5. Local Model Support ⚠️
116
+
117
+ **Reddit Pain:** "Privacy-preserving multi-model pipelines", "vLLM multi-GPU"
118
+
119
+ ```python
120
+ # What developers want:
121
+ client = TMLPDClient({
122
+ providers: ["local/llama-3.3-70b", "local/codellama"],
123
+ local_endpoint: "http://localhost:8080"
124
+ })
125
+
126
+ result = await client.execute_parallel(prompt, [
127
+ "local/llama-3.3-70b", # No API key needed
128
+ "openai/gpt-4o" # Cloud fallback
129
+ ])
130
+ ```
131
+
132
+ **Gap:** TMLPD assumes cloud API providers.
133
+
134
+ **Recommendation:** Add `LocalProvider` support:
135
+ - Ollama integration
136
+ - vLLM integration
137
+ - LM Studio integration
138
+ - Local provider health monitoring
139
+
140
+ ---
141
+
142
+ ### 6. Multi-Agent Task Orchestration ⚠️
143
+
144
+ **Reddit Pain:** "Claude Code multi-agent system" (815 comments)
145
+
146
+ ```python
147
+ # What developers want:
148
+ orchestrator = MultiAgentOrchestrator([
149
+ {"name": "researcher", "model": "claude", "role": "research"},
150
+ {"name": "coder", "model": "codex", "role": "implement"},
151
+ {"name": "reviewer", "model": "claude", "role": "review"}
152
+ ])
153
+
154
+ task = "Build a REST API"
155
+ result = await orchestrator.execute(task, workflow="research→code→review")
156
+ ```
157
+
158
+ **Gap:** We have HALO but it's a reference implementation, not production-ready.
159
+
160
+ **Recommendation:** Enhance HALO to be production-grade:
161
+ - Built-in agent communication protocol
162
+ - State machine for agent transitions
163
+ - Result sharing between agents
164
+
165
+ ---
166
+
167
+ ## Priority Roadmap
168
+
169
+ ### v1.2.0 (High Priority)
170
+ 1. ✅ `execute_with_tools()` - Function calling support
171
+ 2. ✅ `compress_context()` - Token compression utilities
172
+ 3. ✅ `LocalProvider` - Ollama/vLLM integration
173
+
174
+ ### v1.3.0 (Medium Priority)
175
+ 4. ✅ `executeBatch()` - Batch processing
176
+ 5. ✅ `KVCacheManager` - KV state reuse
177
+ 6. ✅ Enhanced HALO - Production multi-agent
178
+
179
+ ### v1.4.0 (Future)
180
+ - Rust core for speed
181
+ - GPU cluster orchestration
182
+ - Distributed TMLPD
183
+
184
+ ---
185
+
186
+ ## Quick Wins to Add Now
187
+
188
+ ### 1. Token Counter Utility
189
+
190
+ ```typescript
191
+ // Add to TMLPD core
192
+ export function countTokens(text: string, model: string = "gpt-4o"): number {
193
+ // Approximate: ~1.3 tokens per word for English
194
+ const words = text.trim().split(/\s+/);
195
+ return Math.ceil(words.length * 1.3);
196
+ }
197
+
198
+ export function estimateCost(prompt_tokens: number, completion_tokens: number, model: string): number {
199
+ const rates = {
200
+ "gpt-4o": { input: 0.005, output: 0.015 },
201
+ "claude-3.5-sonnet": { input: 0.003, output: 0.015 },
202
+ // ...
203
+ };
204
+ const rate = rates[model] || rates["gpt-4o"];
205
+ return (prompt_tokens * rate.input + completion_tokens * rate.output) / 1000;
206
+ }
207
+ ```
208
+
209
+ ### 2. Context Truncation Helper
210
+
211
+ ```typescript
212
+ export function truncateToFit(
213
+ messages: Message[],
214
+ max_tokens: number,
215
+ strategy: "smart" | "first" | "last" = "smart"
216
+ ): Message[] {
217
+ // Smart: keep system + recent + preserve beginning of oldest
218
+ // First: keep system + first N messages
219
+ // Last: keep system + last N messages (most common)
220
+ }
221
+ ```
222
+
223
+ ### 3. Batch Execution Helper
224
+
225
+ ```typescript
226
+ export async function executeBatch(
227
+ prompts: string[],
228
+ options: {
229
+ concurrency?: number; // Max parallel
230
+ model?: string;
231
+ callback?: (result: ExecutionResult, index: number) => void;
232
+ }
233
+ ): Promise<ExecutionResult[]> {
234
+ const { concurrency = 5, model, callback } = options;
235
+ const results: ExecutionResult[] = [];
236
+
237
+ for (let i = 0; i < prompts.length; i += concurrency) {
238
+ const batch = prompts.slice(i, i + concurrency);
239
+ const batchResults = await Promise.all(
240
+ batch.map((p, j) => execute(p, model).then(r => {
241
+ if (callback) callback(r, i + j);
242
+ return r;
243
+ }))
244
+ );
245
+ results.push(...batchResults);
246
+ }
247
+
248
+ return results;
249
+ }
250
+ ```
251
+
252
+ ---
253
+
254
+ ## Missing Keywords for Discoverability
255
+
256
+ Add to package.json:
257
+
258
+ ```json
259
+ "keywords": [
260
+ "function-calling",
261
+ "tool-use",
262
+ "tool-execution",
263
+ "parallel-tools",
264
+ "token-compression",
265
+ "context-compression",
266
+ "kv-cache",
267
+ "kv-cache-reuse",
268
+ "batch-processing",
269
+ "batch-execution",
270
+ "local-llm",
271
+ "ollama",
272
+ "vllm",
273
+ "lm-studio",
274
+ "local-model",
275
+ "privacy-llm",
276
+ "multi-agent",
277
+ "agent-orchestration",
278
+ "agent-communication",
279
+ "workflow-orchestration",
280
+ "cost-estimation",
281
+ "token-counting"
282
+ ]
283
+ ```
284
+
285
+ ---
286
+
287
+ ## Summary
288
+
289
+ **Critical gaps (must fix):**
290
+ 1. Function calling / tool use
291
+ 2. Token compression
292
+ 3. Local model support
293
+
294
+ **Medium gaps:**
295
+ 4. Batch processing
296
+ 5. KV cache reuse
297
+ 6. Production multi-agent
298
+
299
+ **TL;DR:** Reddit developers want reliability, cost control, and local execution. TMLPD has cost control covered. Need to add function calling, compression, and local provider support to address 80% of pain points.
@@ -0,0 +1,32 @@
1
+ # Release Checklist
2
+
3
+ Use this checklist before tagging a release.
4
+
5
+ ## Mandatory quality gates
6
+
7
+ - [ ] `npm test` passes
8
+ - [ ] `npm run test:py` passes
9
+ - [ ] `npm run eval:routing` passes
10
+ - [ ] `npm run eval:golden` passes
11
+ - [ ] `npm run eval:faults` passes
12
+ - [ ] `npm run eval:report` passes
13
+
14
+ ## Evidence artifacts reviewed
15
+
16
+ - [ ] `eval/results/latest.json` reviewed for routing summary
17
+ - [ ] `eval/results/fault_injection_latest.json` reviewed for reliability scenarios
18
+ - [ ] `eval/results/shadow_latest.json` reviewed for divergence/cost deltas
19
+ - [ ] `eval/results/report_latest.md` attached to release review
20
+ - [ ] Any baseline change in `eval/baselines/main.json` is intentional and explained
21
+
22
+ ## Documentation consistency
23
+
24
+ - [ ] `docs/ENGINEERING_SPEC.md` reflects current behavior
25
+ - [ ] `docs/CLAIMS_AND_EVIDENCE.md` mappings are still valid
26
+ - [ ] Public claims do not exceed available evidence
27
+
28
+ ## Release hygiene
29
+
30
+ - [ ] Version bump completed
31
+ - [ ] Changelog updated
32
+ - [ ] CI green on release commit
@@ -0,0 +1,63 @@
1
+ # Reproducibility Contract
2
+
3
+ This document defines the reproducible evaluation contract for A3M Router.
4
+
5
+ ## Environment
6
+
7
+ - Node: `>=18` (CI uses Node 22)
8
+ - Python: `3.12` (for Python tests)
9
+ - Install:
10
+ - `npm ci`
11
+ - `python3 -m pip install pytest pytest-asyncio`
12
+
13
+ ## Required commands
14
+
15
+ Run in repository root:
16
+
17
+ ```bash
18
+ npm test
19
+ npm run test:py
20
+ npm run eval:routing
21
+ npm run eval:golden
22
+ npm run eval:faults
23
+ npm run eval:shadow
24
+ npm run eval:report
25
+ ```
26
+
27
+ ## Deterministic inputs
28
+
29
+ - Core regression dataset:
30
+ - `eval/benchmark_dataset.jsonl`
31
+ - Golden snapshot:
32
+ - `eval/golden_routes.json`
33
+ - Thresholds:
34
+ - `eval/thresholds.json`
35
+ - `eval/fault_injection_thresholds.json`
36
+
37
+ ## Artifacts generated
38
+
39
+ - `eval/results/latest.json`
40
+ - `eval/results/fault_injection_latest.json`
41
+ - `eval/results/shadow_latest.json`
42
+ - `eval/results/report_latest.md`
43
+
44
+ ## Experiment registry
45
+
46
+ - Every eval run appends to:
47
+ - `eval/experiments.jsonl` (local artifact)
48
+ - Record includes:
49
+ - timestamp
50
+ - commit (if available)
51
+ - experiment id
52
+ - dataset version
53
+ - metrics
54
+ - decision
55
+
56
+ ## Baseline update policy
57
+
58
+ - Baseline file: `eval/baselines/main.json`
59
+ - Only update baseline when behavior change is intentional.
60
+ - PR must explain:
61
+ - what changed
62
+ - why baseline needs update
63
+ - expected impact on cost/quality/reliability