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

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 (605) 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/ci.yml +263 -0
  12. package/.github/workflows/codeql.yml +38 -0
  13. package/.github/workflows/npm-publish.yml +20 -0
  14. package/.github/workflows/pages.yml +37 -0
  15. package/.github/workflows/stale.yml +54 -0
  16. package/.publish-tick +1 -0
  17. package/.well-known/ai-plugin.json +16 -0
  18. package/AGENT_COUNCIL_FINDINGS.md +142 -0
  19. package/ARCHITECTURE.md +346 -0
  20. package/AUDIT_REPORT.md +28 -0
  21. package/CODE_OF_CONDUCT.md +128 -0
  22. package/CONTRIBUTING.md +50 -0
  23. package/CONTRIBUTORS.md +20 -0
  24. package/Dockerfile +53 -0
  25. package/Dockerfile.proxy +33 -0
  26. package/HEALTH_REPORT.md +118 -0
  27. package/IMPROVEMENT_PLAN.md +107 -0
  28. package/LANDING.md +43 -0
  29. package/LAUNCH-PAIN-DRIVEN.md +339 -0
  30. package/LAUNCH.md +337 -0
  31. package/LAUNCH_CHECKLIST.md +141 -0
  32. package/LAUNCH_SNAPSHOT.md +260 -0
  33. package/MANIFESTO.md +41 -0
  34. package/POPULARITY_BOOSTERS.md +285 -0
  35. package/PR_STATUS_REPORT.md +148 -0
  36. package/README.md +25 -14
  37. package/REDESIGN.md +95 -0
  38. package/RUNKIT.md +83 -0
  39. package/SECURITY.md +29 -0
  40. package/SUBMISSIONS.md +43 -0
  41. package/_schema.html +53 -0
  42. package/ai-plugin.json +16 -0
  43. package/articles/AI_AGENT_LLM_ROUTING.md +150 -0
  44. package/articles/CHINESE_DIRECTORIES.md +100 -0
  45. package/articles/CHINESE_SUBMISSIONS_READY.md +322 -0
  46. package/articles/COMPETITOR_ALERTS.md +31 -0
  47. package/articles/COMPLETE_POSTING_DIRECTORY.md +147 -0
  48. package/articles/CONTENT_STRUCTURE.md +292 -0
  49. package/articles/DEVTO_COST_GUIDE.md +473 -0
  50. package/articles/DEVTO_FINAL.md +416 -0
  51. package/articles/DEVTO_MULTI_PROVIDER.md +542 -0
  52. package/articles/DEVTO_READY.md +255 -0
  53. package/articles/DEVTO_V2_ANNOUNCEMENT.md +160 -0
  54. package/articles/DEVTO_VIRAL_GROWTH.md +280 -0
  55. package/articles/FRESH_devto.md +460 -0
  56. package/articles/FRESH_devto_2026_05.md +73 -0
  57. package/articles/FRESH_hackernews.md +14 -0
  58. package/articles/FRESH_reddit_ml.md +90 -0
  59. package/articles/FRESH_reddit_node.md +198 -0
  60. package/articles/FRESH_reddit_sideproject.md +72 -0
  61. package/articles/FRESH_reddit_webdev.md +130 -0
  62. package/articles/FROM_ZERO_TO_10K.md +107 -0
  63. package/articles/HN_10X_BETTER.md +430 -0
  64. package/articles/HN_ACCOUNT_GUIDE.md +21 -0
  65. package/articles/HN_CHINESE_STYLE.md +308 -0
  66. package/articles/HN_FINAL.md +148 -0
  67. package/articles/HN_POSTED_VERSION.md +56 -0
  68. package/articles/HN_POST_READY.md +137 -0
  69. package/articles/HN_RESEARCH.md +364 -0
  70. package/articles/HN_SHOW_routerarena.md +17 -0
  71. package/articles/HN_TIMING_GUIDE.md +52 -0
  72. package/articles/INDIEHACKERS_POST.md +52 -0
  73. package/articles/INDIEHACKERS_READY.md +120 -0
  74. package/articles/LLM_BENCHMARK_DEEP_DIVE.md +153 -0
  75. package/articles/MASTER_POSTING_DIRECTORY.md +189 -0
  76. package/articles/NEWSLETTER_SEND_NOW.md +259 -0
  77. package/articles/NEWSLETTER_SUBMISSIONS.md +112 -0
  78. package/articles/PAIN-DRIVEN-devto-v2.md +308 -0
  79. package/articles/PAIN-DRIVEN-devto-v3.md +268 -0
  80. package/articles/PAIN-DRIVEN-devto.md +242 -0
  81. package/articles/PAIN-DRIVEN-hackernews-v2.md +138 -0
  82. package/articles/PAIN-DRIVEN-hackernews-v3.md +151 -0
  83. package/articles/PAIN-DRIVEN-hackernews.md +131 -0
  84. package/articles/PAIN-DRIVEN-reddit-v2.md +301 -0
  85. package/articles/PAIN-DRIVEN-reddit-v3.md +236 -0
  86. package/articles/PAIN-DRIVEN-reddit.md +218 -0
  87. package/articles/PAIN-DRIVEN-twitter-v2.md +110 -0
  88. package/articles/PAIN-DRIVEN-twitter-v3.md +121 -0
  89. package/articles/PAIN-DRIVEN-twitter.md +120 -0
  90. package/articles/PORTKEY_VS_A3M.md +147 -0
  91. package/articles/POSTING_KIT_2026_05.md +67 -0
  92. package/articles/PRESS_KIT_routerarena.md +77 -0
  93. package/articles/PRODUCTHUNT_LISTING.md +48 -0
  94. package/articles/PRODUCTHUNT_READY.md +106 -0
  95. package/articles/PR_PLAN_vault.md +125 -0
  96. package/articles/REDDIT_FINAL.md +232 -0
  97. package/articles/REDDIT_POST.md +67 -0
  98. package/articles/REDDIT_SUBMISSION_READY.md +348 -0
  99. package/articles/ROUTERARENA_9677.md +78 -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-9677.html +92 -0
  346. package/docs/blog/routerarena-number-one.html +73 -0
  347. package/docs/cli-cheatsheet.md +339 -0
  348. package/docs/compare.md +109 -0
  349. package/docs/comparison-litellm.md +88 -0
  350. package/docs/comparison.md +108 -0
  351. package/docs/cost-chart-ascii.md +42 -0
  352. package/docs/cost-comparison-chart.svg +88 -0
  353. package/docs/curl-examples.md +247 -0
  354. package/docs/demo-auto.html +264 -0
  355. package/docs/demo.html +416 -0
  356. package/docs/geo/GENERATIVE_ENGINE_OPTIMIZATION.md +232 -0
  357. package/docs/index.html +507 -0
  358. package/docs/launch-content/LAUNCH_EXECUTION_CHECKLIST.md +421 -0
  359. package/docs/launch-content/README.md +457 -0
  360. package/docs/launch-content/assets/cost_comparison_100_tasks.png +0 -0
  361. package/docs/launch-content/assets/cumulative_savings.png +0 -0
  362. package/docs/launch-content/assets/parallel_speedup.png +0 -0
  363. package/docs/launch-content/assets/provider_pricing_comparison.png +0 -0
  364. package/docs/launch-content/assets/task_breakdown_comparison.png +0 -0
  365. package/docs/launch-content/generate_charts.py +313 -0
  366. package/docs/launch-content/hn_show_post.md +139 -0
  367. package/docs/launch-content/partner_outreach_templates.md +745 -0
  368. package/docs/launch-content/reddit_posts.md +467 -0
  369. package/docs/launch-content/twitter_thread.txt +460 -0
  370. package/{llms.txt.bak → docs/llms.txt} +6 -6
  371. package/docs/npm-downloads-chart.svg +43 -0
  372. package/docs/openapi.json +139 -0
  373. package/docs/openapi.yaml +1318 -0
  374. package/docs/quick-start.html +366 -0
  375. package/docs/robots.txt +52 -0
  376. package/docs/sitemap.xml +57 -0
  377. package/docs/styles.css +682 -0
  378. package/docs/well-known/ai-plugin.json +16 -0
  379. package/docs/wellknown/ai-plugin.json +16 -0
  380. package/docs-site/assets/og-banner.svg +194 -0
  381. package/docs-site/index.html +632 -0
  382. package/eval/README.md +46 -0
  383. package/eval/baselines/main.json +12 -0
  384. package/eval/benchmark_dataset.jsonl +16 -0
  385. package/eval/check_golden_routes.js +64 -0
  386. package/eval/datasets/catalog.json +33 -0
  387. package/eval/datasets/slices/cn_provider_reliability_v1.jsonl +3 -0
  388. package/eval/datasets/slices/cost_pressure_v1.jsonl +3 -0
  389. package/eval/datasets/slices/safety_guardrails_v1.jsonl +3 -0
  390. package/eval/evals.json +199 -0
  391. package/eval/fault_injection_thresholds.json +3 -0
  392. package/eval/generate_report.js +128 -0
  393. package/eval/golden_routes.json +114 -0
  394. package/eval/lib/experiment_registry.js +24 -0
  395. package/eval/run_eval.js +197 -0
  396. package/eval/run_fault_injection.js +201 -0
  397. package/eval/run_shadow_eval.js +85 -0
  398. package/eval/thresholds.json +9 -0
  399. package/examples/QUICKSTART.md +183 -0
  400. package/examples/README.md +61 -0
  401. package/examples/a3m-sdk.js +124 -0
  402. package/examples/basic-route.js +54 -0
  403. package/examples/chat-loop.js +202 -0
  404. package/examples/classify-then-route.js +102 -0
  405. package/examples/cost-compare.js +120 -0
  406. package/examples/ensemble.js +160 -0
  407. package/examples/whatsapp-telegram-bridge-demo.js +302 -0
  408. package/examples/whatsapp-telegram-bridge.js +269 -0
  409. package/hf-space/README.md +23 -0
  410. package/hf-space/app.py +240 -0
  411. package/hf-space/requirements.txt +1 -0
  412. package/huggingface_space/README.md +35 -0
  413. package/huggingface_space/app.py +126 -0
  414. package/huggingface_space/create_space.py +208 -0
  415. package/huggingface_space/requirements.txt +1 -0
  416. package/index.html +1 -1
  417. package/mcp-server/README.md +188 -0
  418. package/mcp-server/package.json +29 -0
  419. package/mcp-server/src/index.ts +744 -0
  420. package/mcp-server/tsconfig.json +19 -0
  421. package/openclaw-alexa-bridge/ALL_REMAINING_FIXES_PLAN.md +313 -0
  422. package/openclaw-alexa-bridge/REMAINING_FIXES_SUMMARY.md +277 -0
  423. package/openclaw-alexa-bridge/src/alexa_handler_no_tmlpd.js +1234 -0
  424. package/openclaw-alexa-bridge/test_fixes.js +77 -0
  425. package/package.json +76 -272
  426. package/playground/README.md +51 -0
  427. package/playground/codesandbox.json +12 -0
  428. package/playground/index.js +39 -0
  429. package/proxy/README.md +227 -0
  430. package/proxy/package-lock.json +831 -0
  431. package/proxy/package.json +17 -0
  432. package/proxy/rate-limit.js +145 -0
  433. package/proxy/rate-limit.test.js +311 -0
  434. package/proxy/server.js +970 -0
  435. package/python/README.md +102 -0
  436. package/python/a3m/__init__.py +6 -0
  437. package/python/a3m/client.py +190 -0
  438. package/python/a3m/models.py +40 -0
  439. package/python/a3m/sync_client.py +61 -0
  440. package/python/examples.py +53 -0
  441. package/python/integrations.py +330 -0
  442. package/python/pyproject.toml +23 -0
  443. package/python/setup.py +28 -0
  444. package/python/tmlpd.py +369 -0
  445. package/qna/REDDIT_GAP_ANALYSIS.md +299 -0
  446. package/qna/TMLPD_QNA.md +751 -0
  447. package/research/FINDING_001_safety.md +28 -0
  448. package/research/FINDING_002_error_diversity.md +32 -0
  449. package/research/FINDING_003_confidence_weighted_voting.md +32 -0
  450. package/research/FINDING_004_cross_model_semantic_detection.md +37 -0
  451. package/research/FINDING_005_knowledge_gap_orthogonality.md +34 -0
  452. package/research/HALLUCINATION_RESEARCH.md +27 -0
  453. package/research/ensemble-voting.md +324 -0
  454. package/research/loss-functions.md +545 -0
  455. package/research-log.md +49 -0
  456. package/scripts/banner.js +29 -0
  457. package/scripts/benchmark-local-routerarena.ts +176 -0
  458. package/scripts/benchmark.js +145 -0
  459. package/scripts/benchmark.sh +61 -0
  460. package/scripts/compare-providers.sh +230 -0
  461. package/scripts/content-planner.js +25 -0
  462. package/scripts/create-labeled-benchmark.ts +105 -0
  463. package/scripts/cross_post.py +443 -0
  464. package/scripts/local-router-benchmark.ts +154 -0
  465. package/scripts/post-all.sh +41 -0
  466. package/scripts/publish_fcc.py +106 -0
  467. package/scripts/push-to-gitee.sh +25 -0
  468. package/scripts/routerarena_ensemble.js +144 -0
  469. package/scripts/routing-benchmark-v2.js +373 -0
  470. package/scripts/routing-benchmark-v3.js +118 -0
  471. package/scripts/routing-benchmark.js +462 -0
  472. package/scripts/run-labeled-benchmark.mjs +104 -0
  473. package/scripts/run-mmlu-benchmark.js +176 -0
  474. package/scripts/run-provider-benchmark.js +244 -0
  475. package/scripts/update-npm-badges.js +158 -0
  476. package/skill/SKILL.md +238 -0
  477. package/src/__tests__/integration/tmpld_integration.test.py +540 -0
  478. package/src/ensemble.ts +2 -0
  479. package/src/routing/advancedRouter.ts +1 -1
  480. package/src/skills/__tests__/skill_manager.test.ts +328 -0
  481. package/submissions/benchmarks/ALL_PLATFORMS_SUBMISSION.md +94 -0
  482. package/submissions/benchmarks/LLMROUTERBENCH_SUBMISSION.md +121 -0
  483. package/submissions/benchmarks/MMRBENCH_SUBMISSION.md +94 -0
  484. package/submissions/benchmarks/ROUTERARENA_UPDATE.md +83 -0
  485. package/submissions/benchmarks/ROUTERBENCH_SUBMISSION.md +225 -0
  486. package/test-council/1-structure-tests.test.js +353 -0
  487. package/test-council/1-structure-tests.test.ts +353 -0
  488. package/test-council/2-edge-case-tests.test.ts +361 -0
  489. package/test-council/3-performance-tests.test.ts +652 -0
  490. package/test-council/4-integration-tests.test.ts +391 -0
  491. package/test-council/5-agent-council-eval.test.ts +413 -0
  492. package/test-council/AGENT_COUNCIL_ARCHITECTURE.md +349 -0
  493. package/test-council/TEST_COUNCIL_REPORT.md +201 -0
  494. package/test-council/agents/edge-case-agent.ts +363 -0
  495. package/test-council/agents/performance-agent.ts +426 -0
  496. package/test-council/agents/structure-agent.ts +227 -0
  497. package/test-council/council.md +183 -0
  498. package/tests/__mocks__/tokenUtils.ts +8 -0
  499. package/tests/memory/episodicMemory.test.ts +227 -0
  500. package/tests/package-lock.json +1785 -0
  501. package/tests/package.json +19 -0
  502. package/tests/routing/ensembleVoting.test.ts +236 -0
  503. package/tests/routing/providerRetry.test.ts +360 -0
  504. package/tests/routing/queryTypePresets.test.ts +208 -0
  505. package/tests/security/guardrailEngine.test.ts +700 -0
  506. package/tests/tsconfig.json +21 -0
  507. package/tests/vitest.config.ts +18 -0
  508. package/tmlpd-pi-extension/README.md +66 -0
  509. package/tmlpd-pi-extension/dist/cache/prefixCache.d.ts +114 -0
  510. package/tmlpd-pi-extension/dist/cache/prefixCache.d.ts.map +1 -0
  511. package/tmlpd-pi-extension/dist/cache/prefixCache.js +285 -0
  512. package/tmlpd-pi-extension/dist/cache/prefixCache.js.map +1 -0
  513. package/tmlpd-pi-extension/dist/cache/responseCache.d.ts +58 -0
  514. package/tmlpd-pi-extension/dist/cache/responseCache.d.ts.map +1 -0
  515. package/tmlpd-pi-extension/dist/cache/responseCache.js +153 -0
  516. package/tmlpd-pi-extension/dist/cache/responseCache.js.map +1 -0
  517. package/tmlpd-pi-extension/dist/cli.js +59 -0
  518. package/tmlpd-pi-extension/dist/cost/costTracker.d.ts +95 -0
  519. package/tmlpd-pi-extension/dist/cost/costTracker.d.ts.map +1 -0
  520. package/tmlpd-pi-extension/dist/cost/costTracker.js +240 -0
  521. package/tmlpd-pi-extension/dist/cost/costTracker.js.map +1 -0
  522. package/tmlpd-pi-extension/dist/index.d.ts +723 -0
  523. package/tmlpd-pi-extension/dist/index.d.ts.map +1 -0
  524. package/tmlpd-pi-extension/dist/index.js +239 -0
  525. package/tmlpd-pi-extension/dist/index.js.map +1 -0
  526. package/tmlpd-pi-extension/dist/memory/episodicMemory.d.ts +82 -0
  527. package/tmlpd-pi-extension/dist/memory/episodicMemory.d.ts.map +1 -0
  528. package/tmlpd-pi-extension/dist/memory/episodicMemory.js +145 -0
  529. package/tmlpd-pi-extension/dist/memory/episodicMemory.js.map +1 -0
  530. package/tmlpd-pi-extension/dist/orchestration/haloOrchestrator.d.ts +102 -0
  531. package/tmlpd-pi-extension/dist/orchestration/haloOrchestrator.d.ts.map +1 -0
  532. package/tmlpd-pi-extension/dist/orchestration/haloOrchestrator.js +207 -0
  533. package/tmlpd-pi-extension/dist/orchestration/haloOrchestrator.js.map +1 -0
  534. package/tmlpd-pi-extension/dist/orchestration/mctsWorkflow.d.ts +85 -0
  535. package/tmlpd-pi-extension/dist/orchestration/mctsWorkflow.d.ts.map +1 -0
  536. package/tmlpd-pi-extension/dist/orchestration/mctsWorkflow.js +210 -0
  537. package/tmlpd-pi-extension/dist/orchestration/mctsWorkflow.js.map +1 -0
  538. package/tmlpd-pi-extension/dist/providers/localProvider.d.ts +102 -0
  539. package/tmlpd-pi-extension/dist/providers/localProvider.d.ts.map +1 -0
  540. package/tmlpd-pi-extension/dist/providers/localProvider.js +338 -0
  541. package/tmlpd-pi-extension/dist/providers/localProvider.js.map +1 -0
  542. package/tmlpd-pi-extension/dist/providers/registry.d.ts +55 -0
  543. package/tmlpd-pi-extension/dist/providers/registry.d.ts.map +1 -0
  544. package/tmlpd-pi-extension/dist/providers/registry.js +138 -0
  545. package/tmlpd-pi-extension/dist/providers/registry.js.map +1 -0
  546. package/tmlpd-pi-extension/dist/routing/advancedRouter.d.ts +68 -0
  547. package/tmlpd-pi-extension/dist/routing/advancedRouter.d.ts.map +1 -0
  548. package/tmlpd-pi-extension/dist/routing/advancedRouter.js +332 -0
  549. package/tmlpd-pi-extension/dist/routing/advancedRouter.js.map +1 -0
  550. package/tmlpd-pi-extension/dist/tools/tmlpdTools.d.ts +101 -0
  551. package/tmlpd-pi-extension/dist/tools/tmlpdTools.d.ts.map +1 -0
  552. package/tmlpd-pi-extension/dist/tools/tmlpdTools.js +368 -0
  553. package/tmlpd-pi-extension/dist/tools/tmlpdTools.js.map +1 -0
  554. package/tmlpd-pi-extension/dist/utils/batchProcessor.d.ts +96 -0
  555. package/tmlpd-pi-extension/dist/utils/batchProcessor.d.ts.map +1 -0
  556. package/tmlpd-pi-extension/dist/utils/batchProcessor.js +170 -0
  557. package/tmlpd-pi-extension/dist/utils/batchProcessor.js.map +1 -0
  558. package/tmlpd-pi-extension/dist/utils/compression.d.ts +61 -0
  559. package/tmlpd-pi-extension/dist/utils/compression.d.ts.map +1 -0
  560. package/tmlpd-pi-extension/dist/utils/compression.js +281 -0
  561. package/tmlpd-pi-extension/dist/utils/compression.js.map +1 -0
  562. package/tmlpd-pi-extension/dist/utils/reliability.d.ts +74 -0
  563. package/tmlpd-pi-extension/dist/utils/reliability.d.ts.map +1 -0
  564. package/tmlpd-pi-extension/dist/utils/reliability.js +177 -0
  565. package/tmlpd-pi-extension/dist/utils/reliability.js.map +1 -0
  566. package/tmlpd-pi-extension/dist/utils/speculativeDecoding.d.ts +117 -0
  567. package/tmlpd-pi-extension/dist/utils/speculativeDecoding.d.ts.map +1 -0
  568. package/tmlpd-pi-extension/dist/utils/speculativeDecoding.js +246 -0
  569. package/tmlpd-pi-extension/dist/utils/speculativeDecoding.js.map +1 -0
  570. package/tmlpd-pi-extension/dist/utils/tokenUtils.d.ts +50 -0
  571. package/tmlpd-pi-extension/dist/utils/tokenUtils.d.ts.map +1 -0
  572. package/tmlpd-pi-extension/dist/utils/tokenUtils.js +124 -0
  573. package/tmlpd-pi-extension/dist/utils/tokenUtils.js.map +1 -0
  574. package/tmlpd-pi-extension/examples/QUICKSTART.md +183 -0
  575. package/tmlpd-pi-extension/package-lock.json +79 -0
  576. package/tmlpd-pi-extension/package.json +172 -0
  577. package/tmlpd-pi-extension/python/examples.py +53 -0
  578. package/tmlpd-pi-extension/python/integrations.py +330 -0
  579. package/tmlpd-pi-extension/python/setup.py +28 -0
  580. package/tmlpd-pi-extension/python/tmlpd.py +369 -0
  581. package/tmlpd-pi-extension/qna/REDDIT_GAP_ANALYSIS.md +299 -0
  582. package/tmlpd-pi-extension/qna/TMLPD_QNA.md +751 -0
  583. package/tmlpd-pi-extension/skill/SKILL.md +238 -0
  584. package/tmlpd-pi-extension/src/cache/responseCache.ts +147 -0
  585. package/tmlpd-pi-extension/src/cost/costTracker.ts +302 -0
  586. package/tmlpd-pi-extension/src/index.ts +232 -0
  587. package/tmlpd-pi-extension/src/memory/episodicMemory.ts +257 -0
  588. package/tmlpd-pi-extension/src/orchestration/haloOrchestrator.ts +266 -0
  589. package/tmlpd-pi-extension/src/orchestration/mctsWorkflow.ts +262 -0
  590. package/tmlpd-pi-extension/src/providers/localProvider.ts +406 -0
  591. package/tmlpd-pi-extension/src/providers/registry.ts +164 -0
  592. package/tmlpd-pi-extension/src/routing/ensembleVoting.ts +159 -0
  593. package/tmlpd-pi-extension/src/routing/queryTypePresets.ts +136 -0
  594. package/tmlpd-pi-extension/src/tools/tmlpdTools.ts +433 -0
  595. package/tmlpd-pi-extension/src/utils/batchProcessor.ts +232 -0
  596. package/tmlpd-pi-extension/src/utils/compression.ts +325 -0
  597. package/tmlpd-pi-extension/src/utils/reliability.ts +221 -0
  598. package/tmlpd-pi-extension/src/utils/tokenUtils.ts +145 -0
  599. package/tmlpd-pi-extension/tsconfig.json +18 -0
  600. package/tsconfig.build.json +29 -0
  601. package/tsconfig.json +18 -0
  602. package/README.md.bak +0 -1185
  603. package/src/routing/advancedRouter.ts.bak +0 -650
  604. package/test.js.bak +0 -376
  605. /package/{llms-full.txt.bak → docs/llms-full.txt} +0 -0
@@ -0,0 +1,232 @@
1
+ /**
2
+ * TMLPD PI Extension - v1.1.0
3
+ *
4
+ * Parallel Multi-LLM Processing with Streaming, Caching, Cost Tracking, Reliability
5
+ * + Reference Architecture to Full TMLPD (Episodic Memory, MCTS, HALO)
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { createTMLPD, HALOOrchestrator, EpisodicMemoryStore } from "tmlpd-pi";
10
+ *
11
+ * // Lightweight usage (core features)
12
+ * const tmlpd = createTMLPD({ cache: { ttl_seconds: 3600 } });
13
+ * const result = await tmlpd.executeParallel(prompt, ["gpt-4o", "claude"]);
14
+ *
15
+ * // Advanced: HALO orchestration with episodic memory
16
+ * const halo = new HALOOrchestrator({ maxConcurrent: 3, enableMCTS: true });
17
+ * const haloResult = await halo.execute("Build a REST API", async (subtask, agent) => {
18
+ * // Execute via agent
19
+ * });
20
+ *
21
+ * // Query episodic memory
22
+ * const similar = memory.getSimilarTasks("Python async API", 5);
23
+ * ```
24
+ */
25
+
26
+ import { createTMLPD, TMLPDTools, TMLPDConfig, ExecuteResult, ParallelResult, StreamingConfig } from "./tools/tmlpdTools";
27
+ import { ResponseCache, CacheConfig, CacheEntry } from "./cache/responseCache";
28
+ import { CostTracker, BudgetConfig, CostAlert, CostSummary, CostSnapshot } from "./cost/costTracker";
29
+ import { ProviderRegistry, ProviderConfig, ProviderRegistryConfig } from "./providers/registry";
30
+ import { CircuitBreaker, withRetry, RetryConfig, CircuitState, calculateRetryDelay, isRetryableStatus, DEFAULT_RETRY_CONFIG } from "./utils/reliability";
31
+ import { EpisodicMemoryStore, EpisodicEntry, MemoryQuery } from "./memory/episodicMemory";
32
+ import { MCTSWorkflowOptimizer, WorkflowState, WorkflowAction, MCTSConfig } from "./orchestration/mctsWorkflow";
33
+ import { HALOOrchestrator, SubTask, AgentAssignment, ExecutionResult, HALOConfig } from "./orchestration/haloOrchestrator";
34
+ import { countTokens, estimateCost, estimateCostFromText, getModelCost, listModelsByCost, findCheapestModels, MODEL_COSTS, TokenCost } from "./utils/tokenUtils";
35
+ import { isonEncode, isonDecode, compressText, truncateMessages, truncateToTokenBudget, calculateCompressionRatio, Message, CompressionStrategy } from "./utils/compression";
36
+ import { LocalProvider, LocalProviderManager, createOllamaProvider, createVLLMProvider, createLMStudioProvider, LocalRuntime, LocalProviderConfig, LocalModelInfo, LocalGenerationResult, LocalParallelResult } from "./providers/localProvider";
37
+ import { BatchProcessor, executeBatch, BatchItem, BatchResult, BatchOptions, BatchProgress, ProgressCallback } from "./utils/batchProcessor";
38
+ import { routeQuery, routeBatch, recommendForTask, extractQueryFeatures, updateModelProfile, MODEL_PROFILES, QueryFeatures, ModelProfile, RouteDecision } from "./routing/advancedRouter";
39
+ import { PrefixCache, createWarmedCache, PrefixCacheStats } from "./cache/prefixCache";
40
+ import { SpeculativeDecoder, speculativeBatch, estimateSpeedupPotential, MedusaPredictor, EagleSpeculative, SpeculativeConfig, SpeculativeResult } from "./utils/speculativeDecoding";
41
+ import { executeEnsemble, mergeComplementary, recordFeedback, EnsembleResult, EnsembleConfig } from "./routing/ensembleVoting";
42
+ import { createPresetRouter, getPresetForQuery, DEFAULT_PRESETS, QueryPreset, PresetRouter } from "./routing/queryTypePresets";
43
+
44
+ // Re-exports
45
+ export { createTMLPD, TMLPDTools, TMLPDConfig, ExecuteResult, ParallelResult, StreamingConfig };
46
+ export { ResponseCache, CacheConfig, CacheEntry };
47
+ export { CostTracker, BudgetConfig, CostAlert, CostSummary, CostSnapshot };
48
+ export { ProviderRegistry, ProviderConfig, ProviderRegistryConfig };
49
+ export { CircuitBreaker, withRetry, RetryConfig, CircuitState, calculateRetryDelay, isRetryableStatus, DEFAULT_RETRY_CONFIG };
50
+ export { EpisodicMemoryStore, EpisodicEntry, MemoryQuery };
51
+ export { MCTSWorkflowOptimizer, WorkflowState, WorkflowAction, MCTSConfig };
52
+ export { HALOOrchestrator, SubTask, AgentAssignment, ExecutionResult, HALOConfig };
53
+
54
+ // Token utilities
55
+ export { countTokens, estimateCost, estimateCostFromText, getModelCost, listModelsByCost, findCheapestModels, MODEL_COSTS, TokenCost };
56
+
57
+ // Compression utilities
58
+ export { isonEncode, isonDecode, compressText, truncateMessages, truncateToTokenBudget, calculateCompressionRatio, Message, CompressionStrategy };
59
+
60
+ // Local provider support (Ollama, vLLM, LM Studio)
61
+ export { LocalProvider, LocalProviderManager, createOllamaProvider, createVLLMProvider, createLMStudioProvider, LocalRuntime, LocalProviderConfig, LocalModelInfo, LocalGenerationResult, LocalParallelResult };
62
+
63
+ // Batch processing
64
+ export { BatchProcessor, executeBatch, BatchItem, BatchResult, BatchOptions, BatchProgress, ProgressCallback };
65
+
66
+ // Advanced routing (RouteLLM-style)
67
+ export { routeQuery, routeBatch, recommendForTask, extractQueryFeatures, updateModelProfile, MODEL_PROFILES, QueryFeatures, ModelProfile as ModelProfileType, RouteDecision };
68
+
69
+ // Ensemble voting (P0) — Core differentiator: parallel multi-LLM execution with confidence merging
70
+ export { executeEnsemble, mergeComplementary, recordFeedback, EnsembleResult, EnsembleConfig };
71
+
72
+ // Query-type presets (P1) — Configurable provider+temp profiles per query type
73
+ export { createPresetRouter, getPresetForQuery, DEFAULT_PRESETS, QueryPreset, PresetRouter };
74
+
75
+ // Prefix caching (RadixAttention-style)
76
+ export { PrefixCache, createWarmedCache, PrefixCacheStats };
77
+
78
+ // Speculative decoding (Medusa/EAGLE-style)
79
+ export { SpeculativeDecoder, speculativeBatch, estimateSpeedupPotential, MedusaPredictor, EagleSpeculative, SpeculativeConfig, SpeculativeResult };
80
+
81
+ // PI Tool definitions (for PI agent integration)
82
+ export const TMLPD_PI_TOOLS = [
83
+ {
84
+ name: "tmlpd_execute",
85
+ description: "Execute prompt across multiple LLM providers in parallel. Optimizes for cost-quality tradeoff with automatic model selection. Use when comparing multiple AI responses or needing faster results via parallel execution.",
86
+ inputSchema: {
87
+ type: "object",
88
+ properties: {
89
+ prompt: { type: "string", description: "The prompt to execute" },
90
+ models: { type: "array", items: { type: "string" }, description: "Optional model list (auto-selects if omitted)" },
91
+ streaming: { type: "object", properties: { enabled: { type: "boolean" }, chunk_size: { type: "number" } } }
92
+ },
93
+ required: ["prompt"]
94
+ }
95
+ },
96
+ {
97
+ name: "tmlpd_execute_single",
98
+ description: "Execute with single model via smart routing. Analyzes prompt to select optimal agent based on task type (coding, explanation, analysis, etc.) with cost-quality optimization.",
99
+ inputSchema: {
100
+ type: "object",
101
+ properties: {
102
+ prompt: { type: "string", description: "The prompt to execute" },
103
+ model: { type: "string", description: "Optional specific model" }
104
+ },
105
+ required: ["prompt"]
106
+ }
107
+ },
108
+ {
109
+ name: "tmlpd_cost_summary",
110
+ description: "Get real-time cost tracking summary. Shows spending by provider, model, daily/monthly breakdowns, and remaining budget. Essential for cost monitoring in production.",
111
+ inputSchema: { type: "object", properties: {} }
112
+ },
113
+ {
114
+ name: "tmlpd_cache_stats",
115
+ description: "Get response cache statistics. Shows hit rate, cache size, and effectiveness. Cache hits cost $0 and provide instant responses.",
116
+ inputSchema: { type: "object", properties: {} }
117
+ },
118
+ {
119
+ name: "tmlpd_provider_status",
120
+ description: "Get status of all configured LLM providers. Shows readiness, cooldown status, failure counts. Use for debugging or selecting specific providers.",
121
+ inputSchema: { type: "object", properties: {} }
122
+ },
123
+ {
124
+ name: "tmlpd_invalidate_cache",
125
+ description: "Invalidate cached responses. Use when prompt content has changed and fresh response needed, or to clear stale cache entries.",
126
+ inputSchema: {
127
+ type: "object",
128
+ properties: { model: { type: "string", description: "Optional model to invalidate (all if omitted)" } }
129
+ }
130
+ },
131
+ {
132
+ name: "tmlpd_get_budget",
133
+ description: "Get remaining budget for cost controls. Returns daily, monthly, and per-model limits. Use for budget enforcement and alerting.",
134
+ inputSchema: { type: "object", properties: {} }
135
+ },
136
+ {
137
+ name: "tmlpd_halo_execute",
138
+ description: "Execute via HALO (Hierarchical Autonomous Logic-Oriented) orchestrator with 3-tier planning: decompose → assign → execute. Includes episodic memory for learning from past executions. For complex multi-step tasks.",
139
+ inputSchema: {
140
+ type: "object",
141
+ properties: {
142
+ task_description: { type: "string", description: "Task to execute" },
143
+ max_concurrent: { type: "number", description: "Max parallel executions (default: 3)" },
144
+ enable_mcts: { type: "boolean", description: "Enable MCTS optimization (slower but better)" }
145
+ },
146
+ required: ["task_description"]
147
+ }
148
+ },
149
+ {
150
+ name: "tmlpd_episodic_query",
151
+ description: "Query episodic memory for similar past tasks. Useful for learning from past executions and improving future routing decisions.",
152
+ inputSchema: {
153
+ type: "object",
154
+ properties: {
155
+ task_description: { type: "string", description: "Task to find similar executions for" },
156
+ limit: { type: "number", description: "Max results (default: 5)" }
157
+ },
158
+ required: ["task_description"]
159
+ }
160
+ },
161
+ {
162
+ name: "tmlpd_count_tokens",
163
+ description: "Count tokens in text for cost estimation. Supports all major models (GPT-4, Claude, Gemini, Llama). Use for estimating costs before execution or calculating context window usage.",
164
+ inputSchema: {
165
+ type: "object",
166
+ properties: {
167
+ text: { type: "string", description: "Text to count tokens in" },
168
+ model: { type: "string", description: "Model for tokenization (default: gpt-4o)" }
169
+ },
170
+ required: ["text"]
171
+ }
172
+ },
173
+ {
174
+ name: "tmlpd_compress_context",
175
+ description: "Compress context/messages using ISON encoding for token reduction. Reduces context by ~20-40% while preserving meaning. Useful for fitting more content in context windows.",
176
+ inputSchema: {
177
+ type: "object",
178
+ properties: {
179
+ messages: { type: "array", description: "Messages to compress", items: { type: "object" } },
180
+ strategy: { type: "string", enum: ["smart", "first", "last"], description: "Compression strategy (default: smart)" },
181
+ max_tokens: { type: "number", description: "Target token budget" }
182
+ },
183
+ required: ["messages"]
184
+ }
185
+ },
186
+ {
187
+ name: "tmlpd_local_generate",
188
+ description: "Generate using local LLM runtime (Ollama, vLLM, LM Studio). Zero cost, privacy-preserving. Use for development, testing, or when local GPU available. Falls back to cloud if local unavailable.",
189
+ inputSchema: {
190
+ type: "object",
191
+ properties: {
192
+ prompt: { type: "string", description: "Prompt for generation" },
193
+ runtime: { type: "string", enum: ["ollama", "vllm", "lmstudio"], description: "Local runtime type" },
194
+ model: { type: "string", description: "Model name (default: llama-3.3-70b)" }
195
+ },
196
+ required: ["prompt", "runtime"]
197
+ }
198
+ },
199
+ {
200
+ name: "tmlpd_batch_execute",
201
+ description: "Execute batch of prompts with concurrency control. Supports priority queuing, progress callbacks, rate limiting. Use for processing multiple prompts efficiently.",
202
+ inputSchema: {
203
+ type: "object",
204
+ properties: {
205
+ prompts: { type: "array", items: { type: "string" }, description: "Prompts to execute" },
206
+ concurrency: { type: "number", description: "Max parallel executions (default: 5)" },
207
+ model: { type: "string", description: "Model to use (default: gpt-4o)" }
208
+ },
209
+ required: ["prompts"]
210
+ }
211
+ }
212
+ ];
213
+
214
+ /**
215
+ * Reference to Full TMLPD
216
+ *
217
+ * This package provides:
218
+ * - Core: streaming, caching, cost tracking, reliability
219
+ * - Reference: episodic memory, MCTS, HALO orchestrator
220
+ *
221
+ * For production with full features:
222
+ * - Python TMLPD: https://github.com/Das-rebel/tmlpd-skill
223
+ * - Full memory: 3-tier (episodic + semantic + working)
224
+ * - Full MCTS: UCB1, deterministic rollouts, strategy caching
225
+ * - Full HALO: NLP decomposition, capability matching, verification
226
+ */
227
+
228
+ export default {
229
+ createTMLPD: createTMLPD,
230
+ TMLPDTools: TMLPDTools,
231
+ TMLPD_PI_TOOLS: TMLPD_PI_TOOLS
232
+ };
@@ -0,0 +1,257 @@
1
+ /**
2
+ * TMLPD Episodic Memory Store
3
+ *
4
+ * Stores specific task executions with full context.
5
+ * Reference implementation - for full features see TMLPD v2.x
6
+ *
7
+ * Full TMLPD includes:
8
+ * - JSON-based episodic storage with keyword indexing
9
+ * - Importance scoring and time-based decay
10
+ * - Episodic retrieval by task similarity
11
+ */
12
+
13
+ import { nanoid } from "nanoid";
14
+
15
+ export interface EpisodicEntry {
16
+ id: string;
17
+ timestamp: number;
18
+ task: {
19
+ description: string;
20
+ type: string;
21
+ complexity: number;
22
+ };
23
+ result: {
24
+ success: boolean;
25
+ output: string;
26
+ duration_ms: number;
27
+ };
28
+ agent: {
29
+ id: string;
30
+ model: string;
31
+ provider: string;
32
+ };
33
+ metadata: Record<string, any>;
34
+ importance: number;
35
+ }
36
+
37
+ export interface MemoryQuery {
38
+ task_type?: string;
39
+ keywords?: string[];
40
+ limit?: number;
41
+ }
42
+
43
+ export class EpisodicMemoryStore {
44
+ private entries: EpisodicEntry[] = [];
45
+ private maxEntries: number;
46
+ private keywordIndex: Map<string, string[]>;
47
+ private persistencePath: string | null;
48
+
49
+ constructor(maxEntries = 1000, persistencePath?: string) {
50
+ this.maxEntries = maxEntries;
51
+ this.keywordIndex = new Map();
52
+ this.persistencePath = persistencePath || null;
53
+ if (this.persistencePath) this.loadFromDisk();
54
+ }
55
+
56
+ /**
57
+ * Store an episodic memory
58
+ */
59
+ store(entry: Omit<EpisodicEntry, "id" | "timestamp">): string {
60
+ const id = nanoid(12);
61
+ const fullEntry: EpisodicEntry = {
62
+ ...entry,
63
+ id,
64
+ timestamp: Date.now()
65
+ };
66
+
67
+ this.entries.push(fullEntry);
68
+ this.autoPersist();
69
+
70
+ // Index keywords
71
+ if (entry.task.description) {
72
+ const words = entry.task.description.toLowerCase().split(/\s+/);
73
+ words.forEach(word => {
74
+ if (word.length > 3) {
75
+ const existing = this.keywordIndex.get(word) || [];
76
+ existing.push(id);
77
+ this.keywordIndex.set(word, existing);
78
+ }
79
+ });
80
+ }
81
+
82
+ // Evict oldest if at capacity
83
+ if (this.entries.length > this.maxEntries) {
84
+ const evicted = this.entries.shift();
85
+ if (evicted) {
86
+ // Clean up keyword index for evicted entry
87
+ for (const [word, ids] of this.keywordIndex.entries()) {
88
+ const filtered = ids.filter(existingId => existingId !== evicted.id);
89
+ if (filtered.length === 0) {
90
+ this.keywordIndex.delete(word);
91
+ } else {
92
+ this.keywordIndex.set(word, filtered);
93
+ }
94
+ }
95
+ }
96
+ }
97
+
98
+ return id;
99
+ }
100
+
101
+ /**
102
+ * Query episodic memories
103
+ */
104
+ query(query: MemoryQuery): EpisodicEntry[] {
105
+ let results = [...this.entries];
106
+
107
+ if (query.task_type) {
108
+ results = results.filter(e => e.task.type === query.task_type);
109
+ }
110
+
111
+ if (query.keywords && query.keywords.length > 0) {
112
+ const matchingIds = new Set<string>();
113
+ query.keywords.forEach(kw => {
114
+ const lower = kw.toLowerCase();
115
+ for (const [word, ids] of this.keywordIndex.entries()) {
116
+ if (word.includes(lower)) {
117
+ ids.forEach(id => matchingIds.add(id));
118
+ }
119
+ }
120
+ });
121
+ if (matchingIds.size > 0) {
122
+ results = results.filter(e => matchingIds.has(e.id));
123
+ }
124
+ }
125
+
126
+ return results.slice(-(query.limit || 10));
127
+ }
128
+
129
+ /**
130
+ * Get similar tasks (for learning)
131
+ */
132
+ getSimilarTasks(taskDescription: string, limit = 5): EpisodicEntry[] {
133
+ const words = taskDescription.toLowerCase().split(/\s+/);
134
+ const scores = new Map<string, number>();
135
+
136
+ this.entries.forEach(entry => {
137
+ let score = 0;
138
+ const entryWords = entry.task.description.toLowerCase().split(/\s+/);
139
+ words.forEach(w => {
140
+ if (entryWords.includes(w)) score++;
141
+ });
142
+ if (score > 0) {
143
+ scores.set(entry.id, score);
144
+ }
145
+ });
146
+
147
+ const sorted = Array.from(scores.entries())
148
+ .sort((a, b) => b[1] - a[1])
149
+ .slice(0, limit)
150
+ .map(([id]) => this.entries.find(e => e.id === id))
151
+ .filter(Boolean) as EpisodicEntry[];
152
+
153
+ return sorted;
154
+ }
155
+
156
+ /**
157
+ * Get statistics
158
+ */
159
+ getStats() {
160
+ return {
161
+ total_entries: this.entries.length,
162
+ indexed_keywords: this.keywordIndex.size,
163
+ success_rate: this.entries.filter(e => e.result.success).length / Math.max(1, this.entries.length),
164
+ avg_duration_ms: this.entries.reduce((sum, e) => sum + e.result.duration_ms, 0) / Math.max(1, this.entries.length)
165
+ };
166
+ }
167
+
168
+ /**
169
+ * Persist current memory to disk as JSON
170
+ */
171
+ saveToDisk(): boolean {
172
+ if (!this.persistencePath) return false;
173
+ try {
174
+ const fs = require('fs');
175
+ const data = JSON.stringify({ entries: this.entries, maxEntries: this.maxEntries }, null, 2);
176
+ fs.writeFileSync(this.persistencePath, data, 'utf8');
177
+ return true;
178
+ } catch (e) {
179
+ console.error('❌ Memory persist failed:', (e as Error).message);
180
+ return false;
181
+ }
182
+ }
183
+
184
+ /**
185
+ * Load memory from disk JSON
186
+ */
187
+ loadFromDisk(): boolean {
188
+ if (!this.persistencePath) return false;
189
+ try {
190
+ const fs = require('fs');
191
+ if (!fs.existsSync(this.persistencePath)) return false;
192
+ const data = JSON.parse(fs.readFileSync(this.persistencePath, 'utf8'));
193
+ if (data.entries && Array.isArray(data.entries)) {
194
+ this.entries = data.entries;
195
+ this.maxEntries = data.maxEntries || this.maxEntries;
196
+ this.rebuildIndex();
197
+ return true;
198
+ }
199
+ return false;
200
+ } catch (e) {
201
+ console.error('❌ Memory load failed:', (e as Error).message);
202
+ return false;
203
+ }
204
+ }
205
+
206
+ /**
207
+ * Rebuild keyword index from loaded entries
208
+ */
209
+ private rebuildIndex(): void {
210
+ this.keywordIndex.clear();
211
+ for (const entry of this.entries) {
212
+ const words = (entry.task.description + ' ' + (entry.result.output || '')).toLowerCase().split(/\s+/);
213
+ for (const word of new Set(words)) {
214
+ if (word.length < 3) continue;
215
+ if (!this.keywordIndex.has(word)) this.keywordIndex.set(word, []);
216
+ this.keywordIndex.get(word)!.push(entry.id);
217
+ }
218
+ }
219
+ }
220
+
221
+ /**
222
+ * Auto-persist after adding new entries (if path configured)
223
+ */
224
+ private autoPersist(): void {
225
+ if (this.persistencePath && this.entries.length % 3 === 0) {
226
+ this.saveToDisk();
227
+ }
228
+ }
229
+
230
+ /**
231
+ * Clear all memories (also removes persisted file)
232
+ */
233
+ clear() {
234
+ this.entries = [];
235
+ this.keywordIndex.clear();
236
+ if (this.persistencePath) {
237
+ try {
238
+ const fs = require('fs');
239
+ if (fs.existsSync(this.persistencePath)) fs.unlinkSync(this.persistencePath);
240
+ } catch {}
241
+ }
242
+ }
243
+ }
244
+
245
+ /**
246
+ * Reference to Full TMLPD Memory System
247
+ *
248
+ * For production use with full features:
249
+ * - Install: npm install tmlpd-skill (Python)
250
+ * - Or integrate with tmlpd-clean/src/memory/
251
+ *
252
+ * Full features include:
253
+ * - Semantic memory with ChromaDB vector embeddings
254
+ * - Time-based importance decay (A-Mem pattern)
255
+ * - Cross-session learning
256
+ * - Episodic + Semantic + Working 3-tier architecture
257
+ */