@monoes/monomindcli 2.8.3 → 2.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (377) hide show
  1. package/.claude/helpers/auto-memory-hook.mjs +0 -0
  2. package/.claude/helpers/handlers/route-handler.cjs +12 -0
  3. package/.claude/helpers/handlers/session-restore-handler.cjs +28 -7
  4. package/.claude/helpers/hook-handler.cjs +0 -0
  5. package/.claude/helpers/utils/micro-agents.cjs +22 -0
  6. package/.claude/skills/monodesign/scripts/live/sveltekit-adapter.mjs +11 -6
  7. package/.claude/skills/monodesign/scripts/live-inject.mjs +20 -7
  8. package/.claude/skills/monodesign/scripts/live-server.mjs +38 -2
  9. package/LICENSE +191 -0
  10. package/README.md +8 -6
  11. package/dist/src/browser/dashboard/server.d.ts +5 -0
  12. package/dist/src/browser/dashboard/server.d.ts.map +1 -1
  13. package/dist/src/browser/dashboard/server.js +59 -4
  14. package/dist/src/browser/dashboard/server.js.map +1 -1
  15. package/dist/src/browser/dashboard/ui.html +18 -8
  16. package/dist/src/browser/workflow/store.d.ts.map +1 -1
  17. package/dist/src/browser/workflow/store.js +3 -2
  18. package/dist/src/browser/workflow/store.js.map +1 -1
  19. package/dist/src/capabilities/cap-documents.d.ts.map +1 -1
  20. package/dist/src/capabilities/cap-documents.js +14 -9
  21. package/dist/src/capabilities/cap-documents.js.map +1 -1
  22. package/dist/src/commands/design-palette.d.ts +5 -0
  23. package/dist/src/commands/design-palette.d.ts.map +1 -1
  24. package/dist/src/commands/design-palette.js +8 -5
  25. package/dist/src/commands/design-palette.js.map +1 -1
  26. package/dist/src/commands/doctor.d.ts.map +1 -1
  27. package/dist/src/commands/doctor.js +22 -18
  28. package/dist/src/commands/doctor.js.map +1 -1
  29. package/dist/src/commands/download-embeddings.d.ts +8 -0
  30. package/dist/src/commands/download-embeddings.d.ts.map +1 -0
  31. package/dist/src/commands/download-embeddings.js +34 -0
  32. package/dist/src/commands/download-embeddings.js.map +1 -0
  33. package/dist/src/commands/hooks.d.ts.map +1 -1
  34. package/dist/src/commands/hooks.js +14 -0
  35. package/dist/src/commands/hooks.js.map +1 -1
  36. package/dist/src/commands/index.d.ts.map +1 -1
  37. package/dist/src/commands/index.js +4 -0
  38. package/dist/src/commands/index.js.map +1 -1
  39. package/dist/src/commands/init-wizard.js +1 -1
  40. package/dist/src/commands/init-wizard.js.map +1 -1
  41. package/dist/src/commands/init.d.ts.map +1 -1
  42. package/dist/src/commands/init.js +48 -1
  43. package/dist/src/commands/init.js.map +1 -1
  44. package/dist/src/commands/monograph.d.ts.map +1 -1
  45. package/dist/src/commands/monograph.js +35 -1
  46. package/dist/src/commands/monograph.js.map +1 -1
  47. package/dist/src/commands/org-observe.d.ts +10 -0
  48. package/dist/src/commands/org-observe.d.ts.map +1 -1
  49. package/dist/src/commands/org-observe.js +195 -31
  50. package/dist/src/commands/org-observe.js.map +1 -1
  51. package/dist/src/commands/org.d.ts +1 -0
  52. package/dist/src/commands/org.d.ts.map +1 -1
  53. package/dist/src/commands/org.js +139 -3
  54. package/dist/src/commands/org.js.map +1 -1
  55. package/dist/src/commands/route.d.ts +1 -9
  56. package/dist/src/commands/route.d.ts.map +1 -1
  57. package/dist/src/commands/route.js +42 -65
  58. package/dist/src/commands/route.js.map +1 -1
  59. package/dist/src/commands/security-cve.d.ts.map +1 -1
  60. package/dist/src/commands/security-cve.js +2 -1
  61. package/dist/src/commands/security-cve.js.map +1 -1
  62. package/dist/src/index.d.ts +0 -10
  63. package/dist/src/index.d.ts.map +1 -1
  64. package/dist/src/index.js +4 -15
  65. package/dist/src/index.js.map +1 -1
  66. package/dist/src/init/copy-assets.d.ts +17 -0
  67. package/dist/src/init/copy-assets.d.ts.map +1 -0
  68. package/dist/src/init/copy-assets.js +271 -0
  69. package/dist/src/init/copy-assets.js.map +1 -0
  70. package/dist/src/init/executor.d.ts +2 -30
  71. package/dist/src/init/executor.d.ts.map +1 -1
  72. package/dist/src/init/executor.js +56 -2493
  73. package/dist/src/init/executor.js.map +1 -1
  74. package/dist/src/init/geminimd-generator.js +2 -2
  75. package/dist/src/init/helpers-generator.d.ts.map +1 -1
  76. package/dist/src/init/helpers-generator.js +9 -0
  77. package/dist/src/init/helpers-generator.js.map +1 -1
  78. package/dist/src/init/kimi-generator.js +3 -3
  79. package/dist/src/init/kimi-generator.js.map +1 -1
  80. package/dist/src/init/settings-generator.d.ts.map +1 -1
  81. package/dist/src/init/settings-generator.js +0 -4
  82. package/dist/src/init/settings-generator.js.map +1 -1
  83. package/dist/src/init/shared.d.ts +112 -0
  84. package/dist/src/init/shared.d.ts.map +1 -0
  85. package/dist/src/init/shared.js +475 -0
  86. package/dist/src/init/shared.js.map +1 -0
  87. package/dist/src/init/statusline-generator.d.ts.map +1 -1
  88. package/dist/src/init/statusline-generator.js +37 -0
  89. package/dist/src/init/statusline-generator.js.map +1 -1
  90. package/dist/src/init/types.d.ts +1 -1
  91. package/dist/src/init/types.d.ts.map +1 -1
  92. package/dist/src/init/upgrade.d.ts +34 -0
  93. package/dist/src/init/upgrade.d.ts.map +1 -0
  94. package/dist/src/init/upgrade.js +477 -0
  95. package/dist/src/init/upgrade.js.map +1 -0
  96. package/dist/src/init/write-antigravity.d.ts +13 -0
  97. package/dist/src/init/write-antigravity.d.ts.map +1 -0
  98. package/dist/src/init/write-antigravity.js +117 -0
  99. package/dist/src/init/write-antigravity.js.map +1 -0
  100. package/dist/src/init/write-capabilities.d.ts +9 -0
  101. package/dist/src/init/write-capabilities.d.ts.map +1 -0
  102. package/dist/src/init/write-capabilities.js +392 -0
  103. package/dist/src/init/write-capabilities.js.map +1 -0
  104. package/dist/src/init/write-claude.d.ts +25 -0
  105. package/dist/src/init/write-claude.d.ts.map +1 -0
  106. package/dist/src/init/write-claude.js +279 -0
  107. package/dist/src/init/write-claude.js.map +1 -0
  108. package/dist/src/init/write-kimicode.d.ts +19 -0
  109. package/dist/src/init/write-kimicode.d.ts.map +1 -0
  110. package/dist/src/init/write-kimicode.js +223 -0
  111. package/dist/src/init/write-kimicode.js.map +1 -0
  112. package/dist/src/init/write-opencode.d.ts +14 -0
  113. package/dist/src/init/write-opencode.d.ts.map +1 -0
  114. package/dist/src/init/write-opencode.js +130 -0
  115. package/dist/src/init/write-opencode.js.map +1 -0
  116. package/dist/src/init/write-runtime-config.d.ts +14 -0
  117. package/dist/src/init/write-runtime-config.d.ts.map +1 -0
  118. package/dist/src/init/write-runtime-config.js +214 -0
  119. package/dist/src/init/write-runtime-config.js.map +1 -0
  120. package/dist/src/init/write-sample-org.d.ts +9 -0
  121. package/dist/src/init/write-sample-org.d.ts.map +1 -0
  122. package/dist/src/init/write-sample-org.js +39 -0
  123. package/dist/src/init/write-sample-org.js.map +1 -0
  124. package/dist/src/knowledge/eval/golden-set.js +1 -1
  125. package/dist/src/knowledge/eval/golden-set.js.map +1 -1
  126. package/dist/src/mcp-client.d.ts.map +1 -1
  127. package/dist/src/mcp-client.js +7 -3
  128. package/dist/src/mcp-client.js.map +1 -1
  129. package/dist/src/mcp-tools/analyze-tools.d.ts.map +1 -1
  130. package/dist/src/mcp-tools/analyze-tools.js +2 -25
  131. package/dist/src/mcp-tools/analyze-tools.js.map +1 -1
  132. package/dist/src/mcp-tools/auto-install.d.ts.map +1 -1
  133. package/dist/src/mcp-tools/auto-install.js +2 -1
  134. package/dist/src/mcp-tools/auto-install.js.map +1 -1
  135. package/dist/src/mcp-tools/hooks-routing.d.ts.map +1 -1
  136. package/dist/src/mcp-tools/hooks-routing.js +26 -0
  137. package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
  138. package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
  139. package/dist/src/mcp-tools/memory-tools.js +2 -37
  140. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  141. package/dist/src/mcp-tools/monodesign-tools.d.ts +19 -0
  142. package/dist/src/mcp-tools/monodesign-tools.d.ts.map +1 -0
  143. package/dist/src/mcp-tools/monodesign-tools.js +233 -0
  144. package/dist/src/mcp-tools/monodesign-tools.js.map +1 -0
  145. package/dist/src/mcp-tools/monograph/agent-history-tools.d.ts +5 -0
  146. package/dist/src/mcp-tools/monograph/agent-history-tools.d.ts.map +1 -0
  147. package/dist/src/mcp-tools/monograph/agent-history-tools.js +177 -0
  148. package/dist/src/mcp-tools/monograph/agent-history-tools.js.map +1 -0
  149. package/dist/src/mcp-tools/monograph/build-tools.d.ts +9 -0
  150. package/dist/src/mcp-tools/monograph/build-tools.d.ts.map +1 -0
  151. package/dist/src/mcp-tools/monograph/build-tools.js +299 -0
  152. package/dist/src/mcp-tools/monograph/build-tools.js.map +1 -0
  153. package/dist/src/mcp-tools/monograph/group-tools.d.ts +10 -0
  154. package/dist/src/mcp-tools/monograph/group-tools.d.ts.map +1 -0
  155. package/dist/src/mcp-tools/monograph/group-tools.js +225 -0
  156. package/dist/src/mcp-tools/monograph/group-tools.js.map +1 -0
  157. package/dist/src/mcp-tools/monograph/health-tools.d.ts +6 -0
  158. package/dist/src/mcp-tools/monograph/health-tools.d.ts.map +1 -0
  159. package/dist/src/mcp-tools/monograph/health-tools.js +113 -0
  160. package/dist/src/mcp-tools/monograph/health-tools.js.map +1 -0
  161. package/dist/src/mcp-tools/monograph/impact-tools.d.ts +9 -0
  162. package/dist/src/mcp-tools/monograph/impact-tools.d.ts.map +1 -0
  163. package/dist/src/mcp-tools/monograph/impact-tools.js +532 -0
  164. package/dist/src/mcp-tools/monograph/impact-tools.js.map +1 -0
  165. package/dist/src/mcp-tools/monograph/index.d.ts +10 -0
  166. package/dist/src/mcp-tools/monograph/index.d.ts.map +1 -0
  167. package/dist/src/mcp-tools/monograph/index.js +73 -0
  168. package/dist/src/mcp-tools/monograph/index.js.map +1 -0
  169. package/dist/src/mcp-tools/monograph/query-tools.d.ts +11 -0
  170. package/dist/src/mcp-tools/monograph/query-tools.d.ts.map +1 -0
  171. package/dist/src/mcp-tools/monograph/query-tools.js +500 -0
  172. package/dist/src/mcp-tools/monograph/query-tools.js.map +1 -0
  173. package/dist/src/mcp-tools/monograph/shared.d.ts +64 -0
  174. package/dist/src/mcp-tools/monograph/shared.d.ts.map +1 -0
  175. package/dist/src/mcp-tools/monograph/shared.js +215 -0
  176. package/dist/src/mcp-tools/monograph/shared.js.map +1 -0
  177. package/dist/src/mcp-tools/monograph/visualize-tools.d.ts +10 -0
  178. package/dist/src/mcp-tools/monograph/visualize-tools.d.ts.map +1 -0
  179. package/dist/src/mcp-tools/monograph/visualize-tools.js +382 -0
  180. package/dist/src/mcp-tools/monograph/visualize-tools.js.map +1 -0
  181. package/dist/src/mcp-tools/monograph-tools.d.ts +4 -23
  182. package/dist/src/mcp-tools/monograph-tools.d.ts.map +1 -1
  183. package/dist/src/mcp-tools/monograph-tools.js +4 -2439
  184. package/dist/src/mcp-tools/monograph-tools.js.map +1 -1
  185. package/dist/src/mcp-tools/monomind-tools.d.ts +8 -0
  186. package/dist/src/mcp-tools/monomind-tools.d.ts.map +1 -1
  187. package/dist/src/mcp-tools/monomind-tools.js +13 -1
  188. package/dist/src/mcp-tools/monomind-tools.js.map +1 -1
  189. package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.d.ts.map +1 -1
  190. package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.js +31 -2
  191. package/dist/src/mcp-tools/quality/security-compliance/detect-secrets.js.map +1 -1
  192. package/dist/src/mcp-tools/terminal-tools.d.ts.map +1 -1
  193. package/dist/src/mcp-tools/terminal-tools.js +31 -1
  194. package/dist/src/mcp-tools/terminal-tools.js.map +1 -1
  195. package/dist/src/mcp-tools/types.d.ts +8 -27
  196. package/dist/src/mcp-tools/types.d.ts.map +1 -1
  197. package/dist/src/mcp-tools/types.js +9 -91
  198. package/dist/src/mcp-tools/types.js.map +1 -1
  199. package/dist/src/memory/file-permissions.d.ts +15 -0
  200. package/dist/src/memory/file-permissions.d.ts.map +1 -0
  201. package/dist/src/memory/file-permissions.js +25 -0
  202. package/dist/src/memory/file-permissions.js.map +1 -0
  203. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  204. package/dist/src/memory/memory-bridge.js +94 -34
  205. package/dist/src/memory/memory-bridge.js.map +1 -1
  206. package/dist/src/memory/memory-crud.d.ts.map +1 -1
  207. package/dist/src/memory/memory-crud.js +298 -275
  208. package/dist/src/memory/memory-crud.js.map +1 -1
  209. package/dist/src/memory/memory-initializer.d.ts +2 -4
  210. package/dist/src/memory/memory-initializer.d.ts.map +1 -1
  211. package/dist/src/memory/memory-initializer.js +53 -76
  212. package/dist/src/memory/memory-initializer.js.map +1 -1
  213. package/dist/src/memory/memory-migrations.d.ts +1 -14
  214. package/dist/src/memory/memory-migrations.d.ts.map +1 -1
  215. package/dist/src/memory/memory-migrations.js +52 -105
  216. package/dist/src/memory/memory-migrations.js.map +1 -1
  217. package/dist/src/memory/sona-optimizer.d.ts +1 -1
  218. package/dist/src/memory/sona-optimizer.js +1 -1
  219. package/dist/src/monovector/index.d.ts +16 -19
  220. package/dist/src/monovector/index.d.ts.map +1 -1
  221. package/dist/src/monovector/index.js +50 -8
  222. package/dist/src/monovector/index.js.map +1 -1
  223. package/dist/src/orgrt/approvals.d.ts +16 -0
  224. package/dist/src/orgrt/approvals.d.ts.map +1 -0
  225. package/dist/src/orgrt/approvals.js +72 -0
  226. package/dist/src/orgrt/approvals.js.map +1 -0
  227. package/dist/src/orgrt/bus.d.ts.map +1 -1
  228. package/dist/src/orgrt/bus.js +21 -0
  229. package/dist/src/orgrt/bus.js.map +1 -1
  230. package/dist/src/orgrt/checkpoint-ops.d.ts +19 -0
  231. package/dist/src/orgrt/checkpoint-ops.d.ts.map +1 -0
  232. package/dist/src/orgrt/checkpoint-ops.js +219 -0
  233. package/dist/src/orgrt/checkpoint-ops.js.map +1 -0
  234. package/dist/src/orgrt/checkpoint.d.ts +33 -1
  235. package/dist/src/orgrt/checkpoint.d.ts.map +1 -1
  236. package/dist/src/orgrt/checkpoint.js +50 -6
  237. package/dist/src/orgrt/checkpoint.js.map +1 -1
  238. package/dist/src/orgrt/cross-org.d.ts +32 -0
  239. package/dist/src/orgrt/cross-org.d.ts.map +1 -0
  240. package/dist/src/orgrt/cross-org.js +256 -0
  241. package/dist/src/orgrt/cross-org.js.map +1 -0
  242. package/dist/src/orgrt/daemon.d.ts +131 -157
  243. package/dist/src/orgrt/daemon.d.ts.map +1 -1
  244. package/dist/src/orgrt/daemon.js +356 -966
  245. package/dist/src/orgrt/daemon.js.map +1 -1
  246. package/dist/src/orgrt/decisions.d.ts +33 -0
  247. package/dist/src/orgrt/decisions.d.ts.map +1 -0
  248. package/dist/src/orgrt/decisions.js +169 -0
  249. package/dist/src/orgrt/decisions.js.map +1 -0
  250. package/dist/src/orgrt/kimicode-runner.d.ts.map +1 -1
  251. package/dist/src/orgrt/kimicode-runner.js +5 -1
  252. package/dist/src/orgrt/kimicode-runner.js.map +1 -1
  253. package/dist/src/orgrt/opencode-runner.d.ts.map +1 -1
  254. package/dist/src/orgrt/opencode-runner.js +10 -2
  255. package/dist/src/orgrt/opencode-runner.js.map +1 -1
  256. package/dist/src/orgrt/org-memory.d.ts +45 -0
  257. package/dist/src/orgrt/org-memory.d.ts.map +1 -0
  258. package/dist/src/orgrt/org-memory.js +220 -0
  259. package/dist/src/orgrt/org-memory.js.map +1 -0
  260. package/dist/src/orgrt/policy.d.ts +4 -0
  261. package/dist/src/orgrt/policy.d.ts.map +1 -1
  262. package/dist/src/orgrt/policy.js +13 -1
  263. package/dist/src/orgrt/policy.js.map +1 -1
  264. package/dist/src/orgrt/prechecks.d.ts +15 -0
  265. package/dist/src/orgrt/prechecks.d.ts.map +1 -0
  266. package/dist/src/orgrt/prechecks.js +21 -0
  267. package/dist/src/orgrt/prechecks.js.map +1 -0
  268. package/dist/src/orgrt/questions.d.ts +39 -0
  269. package/dist/src/orgrt/questions.d.ts.map +1 -0
  270. package/dist/src/orgrt/questions.js +135 -0
  271. package/dist/src/orgrt/questions.js.map +1 -0
  272. package/dist/src/orgrt/remote.d.ts +25 -0
  273. package/dist/src/orgrt/remote.d.ts.map +1 -0
  274. package/dist/src/orgrt/remote.js +73 -0
  275. package/dist/src/orgrt/remote.js.map +1 -0
  276. package/dist/src/orgrt/scheduler-integration.d.ts +19 -0
  277. package/dist/src/orgrt/scheduler-integration.d.ts.map +1 -0
  278. package/dist/src/orgrt/scheduler-integration.js +90 -0
  279. package/dist/src/orgrt/scheduler-integration.js.map +1 -0
  280. package/dist/src/orgrt/server.d.ts.map +1 -1
  281. package/dist/src/orgrt/server.js +70 -2
  282. package/dist/src/orgrt/server.js.map +1 -1
  283. package/dist/src/orgrt/session.d.ts +30 -1
  284. package/dist/src/orgrt/session.d.ts.map +1 -1
  285. package/dist/src/orgrt/session.js +184 -53
  286. package/dist/src/orgrt/session.js.map +1 -1
  287. package/dist/src/orgrt/state-detector.d.ts +19 -0
  288. package/dist/src/orgrt/state-detector.d.ts.map +1 -0
  289. package/dist/src/orgrt/state-detector.js +59 -0
  290. package/dist/src/orgrt/state-detector.js.map +1 -0
  291. package/dist/src/orgrt/task-dag.d.ts +27 -0
  292. package/dist/src/orgrt/task-dag.d.ts.map +1 -0
  293. package/dist/src/orgrt/task-dag.js +100 -0
  294. package/dist/src/orgrt/task-dag.js.map +1 -0
  295. package/dist/src/orgrt/tool-fence.d.ts +7 -4
  296. package/dist/src/orgrt/tool-fence.d.ts.map +1 -1
  297. package/dist/src/orgrt/tool-fence.js +47 -6
  298. package/dist/src/orgrt/tool-fence.js.map +1 -1
  299. package/dist/src/orgrt/types.d.ts +57 -2
  300. package/dist/src/orgrt/types.d.ts.map +1 -1
  301. package/dist/src/orgrt/types.js +34 -3
  302. package/dist/src/orgrt/types.js.map +1 -1
  303. package/dist/src/routing/model-download.d.ts +49 -0
  304. package/dist/src/routing/model-download.d.ts.map +1 -0
  305. package/dist/src/routing/model-download.js +106 -0
  306. package/dist/src/routing/model-download.js.map +1 -0
  307. package/dist/src/services/crash-reporter.d.ts +5 -0
  308. package/dist/src/services/crash-reporter.d.ts.map +1 -1
  309. package/dist/src/services/crash-reporter.js +49 -0
  310. package/dist/src/services/crash-reporter.js.map +1 -1
  311. package/dist/src/transfer/anonymization/index.d.ts +18 -15
  312. package/dist/src/transfer/anonymization/index.d.ts.map +1 -1
  313. package/dist/src/transfer/anonymization/index.js +7 -119
  314. package/dist/src/transfer/anonymization/index.js.map +1 -1
  315. package/dist/src/ui/dashboard.html +606 -7
  316. package/dist/src/ui/orgs.html +7 -1
  317. package/dist/src/ui/routes-monograph.mjs +6 -0
  318. package/dist/src/ui/server.mjs +327 -7
  319. package/dist/src/update/checker.d.ts.map +1 -1
  320. package/dist/src/update/checker.js +2 -1
  321. package/dist/src/update/checker.js.map +1 -1
  322. package/dist/src/update/executor.d.ts.map +1 -1
  323. package/dist/src/update/executor.js +7 -3
  324. package/dist/src/update/executor.js.map +1 -1
  325. package/dist/src/update/index.d.ts +0 -1
  326. package/dist/src/update/index.d.ts.map +1 -1
  327. package/dist/src/update/index.js +5 -24
  328. package/dist/src/update/index.js.map +1 -1
  329. package/dist/src/utils/db-mutex.d.ts +11 -0
  330. package/dist/src/utils/db-mutex.d.ts.map +1 -0
  331. package/dist/src/utils/db-mutex.js +23 -0
  332. package/dist/src/utils/db-mutex.js.map +1 -0
  333. package/dist/src/utils/input-guards.d.ts +23 -0
  334. package/dist/src/utils/input-guards.d.ts.map +1 -1
  335. package/dist/src/utils/input-guards.js +72 -0
  336. package/dist/src/utils/input-guards.js.map +1 -1
  337. package/dist/src/utils/npm-command.d.ts +10 -0
  338. package/dist/src/utils/npm-command.d.ts.map +1 -0
  339. package/dist/src/utils/npm-command.js +12 -0
  340. package/dist/src/utils/npm-command.js.map +1 -0
  341. package/dist/src/utils/paths.d.ts +28 -0
  342. package/dist/src/utils/paths.d.ts.map +1 -0
  343. package/dist/src/utils/paths.js +108 -0
  344. package/dist/src/utils/paths.js.map +1 -0
  345. package/dist/tsconfig.tsbuildinfo +1 -1
  346. package/package.json +17 -17
  347. package/scripts/download-embedding-model.mjs +97 -0
  348. package/scripts/publish.sh +0 -0
  349. package/scripts/sync-claude-assets.sh +0 -0
  350. package/dist/src/production/circuit-breaker.d.ts +0 -121
  351. package/dist/src/production/circuit-breaker.d.ts.map +0 -1
  352. package/dist/src/production/circuit-breaker.js +0 -262
  353. package/dist/src/production/circuit-breaker.js.map +0 -1
  354. package/dist/src/production/error-handler.d.ts +0 -119
  355. package/dist/src/production/error-handler.d.ts.map +0 -1
  356. package/dist/src/production/error-handler.js +0 -324
  357. package/dist/src/production/error-handler.js.map +0 -1
  358. package/dist/src/production/index.d.ts +0 -6
  359. package/dist/src/production/index.d.ts.map +0 -1
  360. package/dist/src/production/index.js +0 -6
  361. package/dist/src/production/index.js.map +0 -1
  362. package/dist/src/production/monitoring.d.ts +0 -181
  363. package/dist/src/production/monitoring.d.ts.map +0 -1
  364. package/dist/src/production/monitoring.js +0 -375
  365. package/dist/src/production/monitoring.js.map +0 -1
  366. package/dist/src/production/rate-limiter.d.ts +0 -125
  367. package/dist/src/production/rate-limiter.d.ts.map +0 -1
  368. package/dist/src/production/rate-limiter.js +0 -218
  369. package/dist/src/production/rate-limiter.js.map +0 -1
  370. package/dist/src/production/retry.d.ts +0 -48
  371. package/dist/src/production/retry.d.ts.map +0 -1
  372. package/dist/src/production/retry.js +0 -189
  373. package/dist/src/production/retry.js.map +0 -1
  374. package/dist/src/transfer/types.d.ts +0 -245
  375. package/dist/src/transfer/types.d.ts.map +0 -1
  376. package/dist/src/transfer/types.js +0 -6
  377. package/dist/src/transfer/types.js.map +0 -1
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@monoes/monomindcli",
3
- "version": "2.8.3",
3
+ "version": "2.9.1",
4
4
  "type": "module",
5
- "description": "CLI engine for Monomind — an open-source MCP server that extends Claude Code with a codebase knowledge graph (tree-sitter + SQLite), persistent memory, multi-agent task coordination, and session hooks. MIT licensed, fully local.",
5
+ "description": "CLI engine for Monomind — an open-source MCP server that extends Claude Code with a codebase knowledge graph (tree-sitter + SQLite), persistent memory, multi-agent task coordination, and session hooks. Apache 2.0 licensed, fully local.",
6
6
  "main": "dist/src/index.js",
7
7
  "types": "dist/src/index.d.ts",
8
8
  "sideEffects": false,
@@ -44,7 +44,7 @@
44
44
  "email": "nokhodian@gmail.com",
45
45
  "url": "https://github.com/nokhodian"
46
46
  },
47
- "license": "MIT",
47
+ "license": "Apache-2.0",
48
48
  "exports": {
49
49
  ".": {
50
50
  "types": "./dist/src/index.d.ts",
@@ -82,17 +82,6 @@
82
82
  "scripts",
83
83
  "README.md"
84
84
  ],
85
- "scripts": {
86
- "prebuild": "node ../../../scripts/build-fs.mjs clean dist tsconfig.tsbuildinfo",
87
- "build": "tsc && node ../../../scripts/build-fs.mjs copy-into dist/src/browser/dashboard src/browser/dashboard/ui.html && node ../../../scripts/build-fs.mjs copy-into dist/src/ui src/ui/dashboard.html src/ui/server.mjs src/ui/collector.mjs src/ui/orgs.html src/ui/orgs-files.js src/ui/sse-manager.mjs src/ui/routes-monograph.mjs src/ui/routes-org.mjs src/ui/mastermind-diagram-fallback.html && node ../../../scripts/build-fs.mjs clean dist/src/ui/data && node ../../../scripts/build-fs.mjs copy-dir src/ui/data dist/src/ui/data",
88
- "build:loose": "tsc --noEmitOnError false || true && node ../../../scripts/build-fs.mjs copy-into dist/src/browser/dashboard src/browser/dashboard/ui.html && node ../../../scripts/build-fs.mjs copy-into dist/src/ui src/ui/dashboard.html src/ui/server.mjs src/ui/collector.mjs src/ui/orgs.html src/ui/orgs-files.js src/ui/sse-manager.mjs src/ui/routes-monograph.mjs src/ui/routes-org.mjs src/ui/mastermind-diagram-fallback.html && node ../../../scripts/build-fs.mjs clean dist/src/ui/data && node ../../../scripts/build-fs.mjs copy-dir src/ui/data dist/src/ui/data",
89
- "test": "vitest run",
90
- "test:coverage": "vitest run --coverage",
91
- "test:pattern-store": "npx tsx src/transfer/store/tests/standalone-test.ts",
92
- "prepublishOnly": "node ../../@monoes/monodesign/scripts/sync-skill.mjs && node ../../../scripts/build-fs.mjs copy-into . ../../../README.md && npm run build",
93
- "release": "npm version prerelease --preid=alpha && npm run publish:all",
94
- "publish:all": "./scripts/publish.sh"
95
- },
96
85
  "devDependencies": {
97
86
  "tsx": "^4.21.0",
98
87
  "typescript": "^7.0.2",
@@ -102,13 +91,13 @@
102
91
  "@anthropic-ai/claude-agent-sdk": "^0.3.207",
103
92
  "@monoes/monobrowse": "^1.0.6",
104
93
  "@monoes/monodesign": "^1.2.2",
105
- "@monoes/monograph": "^1.5.4",
106
94
  "@noble/ed25519": "^2.1.0",
107
95
  "mammoth": "^1.12.0",
108
96
  "pdf-parse": "^2.4.5",
109
97
  "ws": "^8.21.0",
110
98
  "yaml": "^2.8.0",
111
- "zod": "^4.0.0"
99
+ "zod": "^4.0.0",
100
+ "@monoes/monograph": "1.5.7"
112
101
  },
113
102
  "optionalDependencies": {
114
103
  "@huggingface/transformers": "^3.8.1",
@@ -116,6 +105,7 @@
116
105
  "@monoes/mcp": "^1.0.1",
117
106
  "@monoes/memory": "^1.0.10",
118
107
  "@monoes/routing": "^1.0.1",
108
+ "@opencode-ai/sdk": "^1.18.15",
119
109
  "monofence-ai": "^1.0.2",
120
110
  "sql.js": "^1.14.1"
121
111
  },
@@ -125,5 +115,15 @@
125
115
  },
126
116
  "overrides": {
127
117
  "onnxruntime-node": ">=1.27.0"
118
+ },
119
+ "scripts": {
120
+ "prebuild": "node ../../../scripts/build-fs.mjs clean dist tsconfig.tsbuildinfo",
121
+ "build": "tsc && node ../../../scripts/build-fs.mjs copy-into dist/src/browser/dashboard src/browser/dashboard/ui.html && node ../../../scripts/build-fs.mjs copy-into dist/src/ui src/ui/dashboard.html src/ui/server.mjs src/ui/collector.mjs src/ui/orgs.html src/ui/orgs-files.js src/ui/sse-manager.mjs src/ui/routes-monograph.mjs src/ui/routes-org.mjs src/ui/mastermind-diagram-fallback.html && node ../../../scripts/build-fs.mjs clean dist/src/ui/data && node ../../../scripts/build-fs.mjs copy-dir src/ui/data dist/src/ui/data",
122
+ "build:loose": "tsc --noEmitOnError false || true && node ../../../scripts/build-fs.mjs copy-into dist/src/browser/dashboard src/browser/dashboard/ui.html && node ../../../scripts/build-fs.mjs copy-into dist/src/ui src/ui/dashboard.html src/ui/server.mjs src/ui/collector.mjs src/ui/orgs.html src/ui/orgs-files.js src/ui/sse-manager.mjs src/ui/routes-monograph.mjs src/ui/routes-org.mjs src/ui/mastermind-diagram-fallback.html && node ../../../scripts/build-fs.mjs clean dist/src/ui/data && node ../../../scripts/build-fs.mjs copy-dir src/ui/data dist/src/ui/data",
123
+ "test": "vitest run",
124
+ "test:coverage": "vitest run --coverage",
125
+ "test:pattern-store": "npx tsx src/transfer/store/tests/standalone-test.ts",
126
+ "release": "npm version prerelease --preid=alpha && npm run publish:all",
127
+ "publish:all": "./scripts/publish.sh"
128
128
  }
129
- }
129
+ }
@@ -0,0 +1,97 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Pre-seed the semantic-routing embedding model on a fresh install.
4
+ *
5
+ * The semantic router needs Snowflake/snowflake-arctic-embed-xs (~88 MB)
6
+ * cached on disk by @huggingface/transformers; without it, routing falls back
7
+ * to keyword mode. Nothing downloads these weights implicitly — run this
8
+ * script (or `monomind download-embeddings`) explicitly:
9
+ *
10
+ * node scripts/download-embedding-model.mjs
11
+ *
12
+ * Loading the pipeline once is all it takes — transformers.js populates its
13
+ * `.cache/` directory as a side effect. Exits 0 without downloading when the
14
+ * model is already cached.
15
+ */
16
+
17
+ import { existsSync } from 'node:fs';
18
+ import { createRequire } from 'node:module';
19
+ import { dirname, join } from 'node:path';
20
+
21
+ const MODEL_ID = 'Snowflake/snowflake-arctic-embed-xs';
22
+
23
+ function findCacheDir() {
24
+ let entry;
25
+ try {
26
+ const require = createRequire(import.meta.url);
27
+ entry = require.resolve('@huggingface/transformers');
28
+ } catch {
29
+ return null;
30
+ }
31
+ let dir = dirname(entry);
32
+ for (let i = 0; i < 5 && !existsSync(join(dir, 'package.json')); i++) {
33
+ const parent = dirname(dir);
34
+ if (parent === dir) break;
35
+ dir = parent;
36
+ }
37
+ return join(dir, '.cache');
38
+ }
39
+
40
+ function isCached(cacheDir) {
41
+ return (
42
+ existsSync(join(cacheDir, 'Snowflake')) ||
43
+ existsSync(join(cacheDir, 'Xenova'))
44
+ );
45
+ }
46
+
47
+ async function main() {
48
+ const cacheDir = findCacheDir();
49
+ if (!cacheDir) {
50
+ console.error(
51
+ 'Error: @huggingface/transformers is not installed (optionalDependency).\n' +
52
+ 'Reinstall with optional dependencies enabled: npm install --include=optional',
53
+ );
54
+ process.exit(1);
55
+ }
56
+
57
+ if (isCached(cacheDir)) {
58
+ console.log(`Embedding model already cached at ${cacheDir} — nothing to download.`);
59
+ return;
60
+ }
61
+
62
+ console.log(`Downloading ${MODEL_ID} (~88 MB) into ${cacheDir} ...`);
63
+
64
+ let hf;
65
+ try {
66
+ hf = await import('@huggingface/transformers');
67
+ } catch (err) {
68
+ console.error(`Error: failed to load @huggingface/transformers: ${err.message}`);
69
+ process.exit(1);
70
+ }
71
+
72
+ let lastPct = -1;
73
+ try {
74
+ await hf.pipeline('feature-extraction', MODEL_ID, {
75
+ dtype: 'fp32',
76
+ progress_callback: (p) => {
77
+ if (!p || !p.file) return;
78
+ if (p.status === 'progress' && typeof p.progress === 'number') {
79
+ const pct = Math.floor(p.progress / 10) * 10;
80
+ if (pct !== lastPct) {
81
+ lastPct = pct;
82
+ console.log(` ${p.file}: ${pct}%`);
83
+ }
84
+ } else if (p.status === 'done') {
85
+ console.log(` ${p.file}: done`);
86
+ }
87
+ },
88
+ });
89
+ } catch (err) {
90
+ console.error(`Error: model download failed: ${err.message}`);
91
+ process.exit(1);
92
+ }
93
+
94
+ console.log('Embedding model cached — semantic routing is now available.');
95
+ }
96
+
97
+ main();
File without changes
File without changes
@@ -1,121 +0,0 @@
1
- /**
2
- * Production Circuit Breaker
3
- *
4
- * Implements the circuit breaker pattern to prevent cascading failures:
5
- * - Closed: Normal operation
6
- * - Open: Failing fast, not calling service
7
- * - Half-Open: Testing if service recovered
8
- *
9
- * @module @monomind/cli/production/circuit-breaker
10
- */
11
- /**
12
- * Circuit breaker states.
13
- * - `closed`: Normal operation, requests pass through.
14
- * - `open`: Failing fast, requests are rejected immediately.
15
- * - `half-open`: Testing recovery, a percentage of requests pass through.
16
- */
17
- export type CircuitState = 'closed' | 'open' | 'half-open';
18
- /**
19
- * Circuit breaker configuration options.
20
- */
21
- export interface CircuitBreakerConfig {
22
- /** Number of failures within the window before opening the circuit. */
23
- failureThreshold: number;
24
- /** Time (ms) to wait in the open state before transitioning to half-open. */
25
- resetTimeoutMs: number;
26
- /** Number of consecutive successes in half-open before closing. */
27
- successThreshold: number;
28
- /** Sliding window (ms) over which failures are counted. */
29
- failureWindowMs: number;
30
- /** Fraction of requests (0-1) allowed through while half-open. */
31
- halfOpenRequestPercentage: number;
32
- /** Called when the circuit transitions to the open state. */
33
- onOpen?: (failureCount: number) => void;
34
- /** Called when the circuit transitions to the closed state. */
35
- onClose?: () => void;
36
- /** Called on any state transition. */
37
- onStateChange?: (oldState: CircuitState, newState: CircuitState) => void;
38
- }
39
- /**
40
- * Snapshot of circuit breaker statistics.
41
- */
42
- export interface CircuitBreakerStats {
43
- state: CircuitState;
44
- failures: number;
45
- successes: number;
46
- lastFailure: Date | null;
47
- lastSuccess: Date | null;
48
- stateChangedAt: Date;
49
- totalRequests: number;
50
- totalFailures: number;
51
- totalSuccesses: number;
52
- }
53
- export declare class CircuitBreaker {
54
- private config;
55
- private state;
56
- private failures;
57
- private successCount;
58
- private stateChangedAt;
59
- private totalRequests;
60
- private totalFailures;
61
- private totalSuccesses;
62
- private lastFailure;
63
- private lastSuccess;
64
- constructor(config?: Partial<CircuitBreakerConfig>);
65
- /**
66
- * Get current circuit state
67
- */
68
- getState(): CircuitState;
69
- /**
70
- * Check if request is allowed
71
- */
72
- isAllowed(): boolean;
73
- /**
74
- * Execute a function through the circuit breaker
75
- */
76
- execute<T>(fn: () => Promise<T>): Promise<T>;
77
- /**
78
- * Record a successful operation
79
- */
80
- recordSuccess(): void;
81
- /**
82
- * Record a failed operation
83
- */
84
- recordFailure(): void;
85
- /**
86
- * Manually open the circuit
87
- */
88
- open(): void;
89
- /**
90
- * Manually close the circuit
91
- */
92
- close(): void;
93
- /**
94
- * Reset the circuit breaker
95
- */
96
- reset(): void;
97
- /**
98
- * Get circuit statistics
99
- */
100
- getStats(): CircuitBreakerStats;
101
- /**
102
- * Get failure rate
103
- */
104
- getFailureRate(): number;
105
- private checkStateTransition;
106
- private transitionTo;
107
- }
108
- /**
109
- * Get or create a circuit breaker by name
110
- */
111
- export declare function getCircuitBreaker(name: string, config?: Partial<CircuitBreakerConfig>): CircuitBreaker;
112
- /**
113
- * Get all circuit breaker stats
114
- */
115
- export declare function getAllCircuitStats(): Record<string, CircuitBreakerStats>;
116
- /**
117
- * Reset all circuit breakers
118
- */
119
- export declare function resetAllCircuits(): void;
120
- export default CircuitBreaker;
121
- //# sourceMappingURL=circuit-breaker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"circuit-breaker.d.ts","sourceRoot":"","sources":["../../../src/production/circuit-breaker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,uEAAuE;IACvE,gBAAgB,EAAE,MAAM,CAAC;IACzB,6EAA6E;IAC7E,cAAc,EAAE,MAAM,CAAC;IACvB,mEAAmE;IACnE,gBAAgB,EAAE,MAAM,CAAC;IACzB,2DAA2D;IAC3D,eAAe,EAAE,MAAM,CAAC;IACxB,kEAAkE;IAClE,yBAAyB,EAAE,MAAM,CAAC;IAClC,6DAA6D;IAC7D,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,+DAA+D;IAC/D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,sCAAsC;IACtC,aAAa,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,KAAK,IAAI,CAAC;CAC1E;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,IAAI,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAkBD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,QAAQ,CAAgB;IAChC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,WAAW,CAAqB;IACxC,OAAO,CAAC,WAAW,CAAqB;IAExC,YAAY,MAAM,GAAE,OAAO,CAAC,oBAAoB,CAAM,EAErD;IAED;;OAEG;IACH,QAAQ,IAAI,YAAY,CAGvB;IAED;;OAEG;IACH,SAAS,IAAI,OAAO,CAiBnB;IAED;;OAEG;IACG,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAejD;IAED;;OAEG;IACH,aAAa,IAAI,IAAI,CAgBpB;IAED;;OAEG;IACH,aAAa,IAAI,IAAI,CAgCpB;IAED;;OAEG;IACH,IAAI,IAAI,IAAI,CAIX;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAIZ;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAUZ;IAED;;OAEG;IACH,QAAQ,IAAI,mBAAmB,CAY9B;IAED;;OAEG;IACH,cAAc,IAAI,MAAM,CAGvB;IAMD,OAAO,CAAC,oBAAoB;IAW5B,OAAO,CAAC,YAAY;CAyBrB;AAYD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACrC,cAAc,CAehB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAMxE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAIvC;eAEc,cAAc"}
@@ -1,262 +0,0 @@
1
- /**
2
- * Production Circuit Breaker
3
- *
4
- * Implements the circuit breaker pattern to prevent cascading failures:
5
- * - Closed: Normal operation
6
- * - Open: Failing fast, not calling service
7
- * - Half-Open: Testing if service recovered
8
- *
9
- * @module @monomind/cli/production/circuit-breaker
10
- */
11
- // ============================================================================
12
- // Default Configuration
13
- // ============================================================================
14
- const DEFAULT_CONFIG = {
15
- failureThreshold: 5,
16
- resetTimeoutMs: 30000,
17
- successThreshold: 3,
18
- failureWindowMs: 60000,
19
- halfOpenRequestPercentage: 0.1,
20
- };
21
- // ============================================================================
22
- // Circuit Breaker Implementation
23
- // ============================================================================
24
- export class CircuitBreaker {
25
- config;
26
- state = 'closed';
27
- failures = [];
28
- successCount = 0;
29
- stateChangedAt = Date.now();
30
- totalRequests = 0;
31
- totalFailures = 0;
32
- totalSuccesses = 0;
33
- lastFailure = null;
34
- lastSuccess = null;
35
- constructor(config = {}) {
36
- this.config = { ...DEFAULT_CONFIG, ...config };
37
- }
38
- /**
39
- * Get current circuit state
40
- */
41
- getState() {
42
- this.checkStateTransition();
43
- return this.state;
44
- }
45
- /**
46
- * Check if request is allowed
47
- */
48
- isAllowed() {
49
- this.checkStateTransition();
50
- switch (this.state) {
51
- case 'closed':
52
- return true;
53
- case 'open':
54
- return false;
55
- case 'half-open':
56
- // Allow a percentage of requests through
57
- return Math.random() < this.config.halfOpenRequestPercentage;
58
- default:
59
- return true;
60
- }
61
- }
62
- /**
63
- * Execute a function through the circuit breaker
64
- */
65
- async execute(fn) {
66
- if (!this.isAllowed()) {
67
- throw new Error('Circuit breaker is open. Service temporarily unavailable.');
68
- }
69
- this.totalRequests++;
70
- try {
71
- const result = await fn();
72
- this.recordSuccess();
73
- return result;
74
- }
75
- catch (error) {
76
- this.recordFailure();
77
- throw error;
78
- }
79
- }
80
- /**
81
- * Record a successful operation
82
- */
83
- recordSuccess() {
84
- this.totalSuccesses++;
85
- this.lastSuccess = new Date();
86
- if (this.state === 'half-open') {
87
- this.successCount++;
88
- if (this.successCount >= this.config.successThreshold) {
89
- this.transitionTo('closed');
90
- }
91
- }
92
- // Reset failure count on success in closed state
93
- if (this.state === 'closed') {
94
- this.failures = [];
95
- }
96
- }
97
- /**
98
- * Record a failed operation
99
- */
100
- recordFailure() {
101
- const now = Date.now();
102
- this.totalFailures++;
103
- this.lastFailure = new Date();
104
- // Add failure timestamp
105
- this.failures.push(now);
106
- // Clean old failures outside window
107
- this.failures = this.failures.filter(t => t > now - this.config.failureWindowMs);
108
- // Hard cap: prevent unbounded growth under rapid-fire recordFailure() calls
109
- // before the window filter prunes entries (e.g. clock skew or test hammering).
110
- if (this.failures.length > 10_000) {
111
- this.failures = this.failures.slice(-10_000);
112
- }
113
- // Check if we should open the circuit
114
- if (this.state === 'closed' && this.failures.length >= this.config.failureThreshold) {
115
- this.transitionTo('open');
116
- if (this.config.onOpen) {
117
- this.config.onOpen(this.failures.length);
118
- }
119
- }
120
- // If half-open and we fail, go back to open
121
- if (this.state === 'half-open') {
122
- this.transitionTo('open');
123
- if (this.config.onOpen) {
124
- this.config.onOpen(this.failures.length);
125
- }
126
- }
127
- }
128
- /**
129
- * Manually open the circuit
130
- */
131
- open() {
132
- if (this.state !== 'open') {
133
- this.transitionTo('open');
134
- }
135
- }
136
- /**
137
- * Manually close the circuit
138
- */
139
- close() {
140
- if (this.state !== 'closed') {
141
- this.transitionTo('closed');
142
- }
143
- }
144
- /**
145
- * Reset the circuit breaker
146
- */
147
- reset() {
148
- this.state = 'closed';
149
- this.failures = [];
150
- this.successCount = 0;
151
- this.stateChangedAt = Date.now();
152
- this.totalRequests = 0;
153
- this.totalFailures = 0;
154
- this.totalSuccesses = 0;
155
- this.lastFailure = null;
156
- this.lastSuccess = null;
157
- }
158
- /**
159
- * Get circuit statistics
160
- */
161
- getStats() {
162
- return {
163
- state: this.state,
164
- failures: this.failures.length,
165
- successes: this.successCount,
166
- lastFailure: this.lastFailure,
167
- lastSuccess: this.lastSuccess,
168
- stateChangedAt: new Date(this.stateChangedAt),
169
- totalRequests: this.totalRequests,
170
- totalFailures: this.totalFailures,
171
- totalSuccesses: this.totalSuccesses,
172
- };
173
- }
174
- /**
175
- * Get failure rate
176
- */
177
- getFailureRate() {
178
- if (this.totalRequests === 0)
179
- return 0;
180
- return this.totalFailures / this.totalRequests;
181
- }
182
- // ============================================================================
183
- // Private Methods
184
- // ============================================================================
185
- checkStateTransition() {
186
- const now = Date.now();
187
- if (this.state === 'open') {
188
- // Check if we should transition to half-open
189
- if (now - this.stateChangedAt >= this.config.resetTimeoutMs) {
190
- this.transitionTo('half-open');
191
- }
192
- }
193
- }
194
- transitionTo(newState) {
195
- const oldState = this.state;
196
- if (oldState === newState)
197
- return;
198
- this.state = newState;
199
- this.stateChangedAt = Date.now();
200
- // Reset counters on state change
201
- if (newState === 'half-open') {
202
- this.successCount = 0;
203
- }
204
- if (newState === 'closed') {
205
- this.failures = [];
206
- this.successCount = 0;
207
- if (this.config.onClose) {
208
- this.config.onClose();
209
- }
210
- }
211
- // Notify state change
212
- if (this.config.onStateChange) {
213
- this.config.onStateChange(oldState, newState);
214
- }
215
- }
216
- }
217
- // ============================================================================
218
- // Circuit Breaker Registry
219
- // ============================================================================
220
- const circuitBreakers = new Map();
221
- const MAX_CIRCUIT_BREAKERS = 1000;
222
- const MAX_CIRCUIT_BREAKER_NAME_LEN = 256;
223
- const FORBIDDEN_CB_NAMES = new Set(['__proto__', 'constructor', 'prototype']);
224
- /**
225
- * Get or create a circuit breaker by name
226
- */
227
- export function getCircuitBreaker(name, config) {
228
- // Sanitize name: cap length and block prototype-pollution keys
229
- const safeName = typeof name === 'string'
230
- ? name.slice(0, MAX_CIRCUIT_BREAKER_NAME_LEN)
231
- : 'default';
232
- if (FORBIDDEN_CB_NAMES.has(safeName)) {
233
- throw new Error(`Invalid circuit breaker name: ${safeName}`);
234
- }
235
- if (!circuitBreakers.has(safeName)) {
236
- if (circuitBreakers.size >= MAX_CIRCUIT_BREAKERS) {
237
- throw new Error(`Circuit breaker registry full (max ${MAX_CIRCUIT_BREAKERS})`);
238
- }
239
- circuitBreakers.set(safeName, new CircuitBreaker(config));
240
- }
241
- return circuitBreakers.get(safeName);
242
- }
243
- /**
244
- * Get all circuit breaker stats
245
- */
246
- export function getAllCircuitStats() {
247
- const stats = {};
248
- for (const [name, breaker] of circuitBreakers) {
249
- stats[name] = breaker.getStats();
250
- }
251
- return stats;
252
- }
253
- /**
254
- * Reset all circuit breakers
255
- */
256
- export function resetAllCircuits() {
257
- for (const breaker of circuitBreakers.values()) {
258
- breaker.reset();
259
- }
260
- }
261
- export default CircuitBreaker;
262
- //# sourceMappingURL=circuit-breaker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"circuit-breaker.js","sourceRoot":"","sources":["../../../src/production/circuit-breaker.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAmDH,+EAA+E;AAC/E,wBAAwB;AACxB,+EAA+E;AAE/E,MAAM,cAAc,GAAyB;IAC3C,gBAAgB,EAAE,CAAC;IACnB,cAAc,EAAE,KAAK;IACrB,gBAAgB,EAAE,CAAC;IACnB,eAAe,EAAE,KAAK;IACtB,yBAAyB,EAAE,GAAG;CAC/B,CAAC;AAEF,+EAA+E;AAC/E,iCAAiC;AACjC,+EAA+E;AAE/E,MAAM,OAAO,cAAc;IACjB,MAAM,CAAuB;IAC7B,KAAK,GAAiB,QAAQ,CAAC;IAC/B,QAAQ,GAAa,EAAE,CAAC;IACxB,YAAY,GAAG,CAAC,CAAC;IACjB,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC5B,aAAa,GAAG,CAAC,CAAC;IAClB,aAAa,GAAG,CAAC,CAAC;IAClB,cAAc,GAAG,CAAC,CAAC;IACnB,WAAW,GAAgB,IAAI,CAAC;IAChC,WAAW,GAAgB,IAAI,CAAC;IAExC,YAAY,MAAM,GAAkC,EAAE;QACpD,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;OAEG;IACH,SAAS;QACP,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAE5B,QAAQ,IAAI,CAAC,KAAK,EAAE,CAAC;YACnB,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC;YAEd,KAAK,MAAM;gBACT,OAAO,KAAK,CAAC;YAEf,KAAK,WAAW;gBACd,yCAAyC;gBACzC,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC;YAE/D;gBACE,OAAO,IAAI,CAAC;QAChB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAI,EAAoB;QACnC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,EAAE,EAAE,CAAC;YAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,aAAa;QACX,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;QAE9B,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;YAEpB,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;gBACtD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,iDAAiD;QACjD,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;IAED;;OAEG;IACH,aAAa;QACX,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;QAE9B,wBAAwB;QACxB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAExB,oCAAoC;QACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAEjF,4EAA4E;QAC5E,+EAA+E;QAC/E,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC;QAED,sCAAsC;QACtC,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;YACpF,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,4CAA4C;QAC5C,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YAC/B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;gBACvB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC1B,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC5B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;YAC9B,SAAS,EAAE,IAAI,CAAC,YAAY;YAC5B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,cAAc,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;YAC7C,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;IACjD,CAAC;IAED,+EAA+E;IAC/E,kBAAkB;IAClB,+EAA+E;IAEvE,oBAAoB;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEvB,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;YAC1B,6CAA6C;YAC7C,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC5D,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,QAAsB;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;QAC5B,IAAI,QAAQ,KAAK,QAAQ;YAAE,OAAO;QAElC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEjC,iCAAiC;QACjC,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;YAC7B,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACxB,CAAC;QAED,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;YACnB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;YACtB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACxB,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;CACF;AAED,+EAA+E;AAC/E,2BAA2B;AAC3B,+EAA+E;AAE/E,MAAM,eAAe,GAAG,IAAI,GAAG,EAA0B,CAAC;AAC1D,MAAM,oBAAoB,GAAG,IAAI,CAAC;AAElC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AACzC,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC,CAAC;AAE9E;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAY,EACZ,MAAsC;IAEtC,+DAA+D;IAC/D,MAAM,QAAQ,GAAG,OAAO,IAAI,KAAK,QAAQ;QACvC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,4BAA4B,CAAC;QAC7C,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,iCAAiC,QAAQ,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnC,IAAI,eAAe,CAAC,IAAI,IAAI,oBAAoB,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,sCAAsC,oBAAoB,GAAG,CAAC,CAAC;QACjF,CAAC;QACD,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,KAAK,GAAwC,EAAE,CAAC;IACtD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,eAAe,EAAE,CAAC;QAC9C,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB;IAC9B,KAAK,MAAM,OAAO,IAAI,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC;QAC/C,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;AACH,CAAC;AAED,eAAe,cAAc,CAAC"}