kynjal-cli 4.0.0 → 4.0.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 (502) hide show
  1. package/dist/src/appliance/gguf-engine.d.ts +91 -0
  2. package/dist/src/appliance/gguf-engine.d.ts.map +1 -0
  3. package/dist/src/appliance/gguf-engine.js +286 -525
  4. package/dist/src/appliance/gguf-engine.js.map +1 -1
  5. package/dist/src/appliance/ruvllm-bridge.d.ts +102 -0
  6. package/dist/src/appliance/ruvllm-bridge.d.ts.map +1 -0
  7. package/dist/src/appliance/ruvllm-bridge.js +203 -403
  8. package/dist/src/appliance/ruvllm-bridge.js.map +1 -1
  9. package/dist/src/appliance/rvfa-builder.d.ts +44 -0
  10. package/dist/src/appliance/rvfa-builder.d.ts.map +1 -0
  11. package/dist/src/appliance/rvfa-builder.js +154 -208
  12. package/dist/src/appliance/rvfa-builder.js.map +1 -1
  13. package/dist/src/appliance/rvfa-distribution.d.ts +97 -0
  14. package/dist/src/appliance/rvfa-distribution.d.ts.map +1 -0
  15. package/dist/src/appliance/rvfa-distribution.js +260 -423
  16. package/dist/src/appliance/rvfa-distribution.js.map +1 -1
  17. package/dist/src/appliance/rvfa-format.d.ts +111 -0
  18. package/dist/src/appliance/rvfa-format.d.ts.map +1 -0
  19. package/dist/src/appliance/rvfa-format.js +128 -200
  20. package/dist/src/appliance/rvfa-format.js.map +1 -1
  21. package/dist/src/appliance/rvfa-runner.d.ts +69 -0
  22. package/dist/src/appliance/rvfa-runner.d.ts.map +1 -0
  23. package/dist/src/appliance/rvfa-runner.js +168 -304
  24. package/dist/src/appliance/rvfa-runner.js.map +1 -1
  25. package/dist/src/appliance/rvfa-signing.d.ts +123 -0
  26. package/dist/src/appliance/rvfa-signing.d.ts.map +1 -0
  27. package/dist/src/appliance/rvfa-signing.js +173 -295
  28. package/dist/src/appliance/rvfa-signing.js.map +1 -1
  29. package/dist/src/benchmarks/pretrain/index.d.ts +58 -0
  30. package/dist/src/benchmarks/pretrain/index.d.ts.map +1 -0
  31. package/dist/src/benchmarks/pretrain/index.js +331 -542
  32. package/dist/src/benchmarks/pretrain/index.js.map +1 -1
  33. package/dist/src/commands/agent.js +574 -697
  34. package/dist/src/commands/agent.js.map +1 -1
  35. package/dist/src/commands/analyze.js +1218 -1548
  36. package/dist/src/commands/analyze.js.map +1 -1
  37. package/dist/src/commands/appliance-advanced.js +158 -267
  38. package/dist/src/commands/appliance-advanced.js.map +1 -1
  39. package/dist/src/commands/appliance.js +318 -493
  40. package/dist/src/commands/appliance.js.map +1 -1
  41. package/dist/src/commands/benchmark.js +372 -523
  42. package/dist/src/commands/benchmark.js.map +1 -1
  43. package/dist/src/commands/claims.js +274 -364
  44. package/dist/src/commands/claims.js.map +1 -1
  45. package/dist/src/commands/cleanup.js +113 -157
  46. package/dist/src/commands/cleanup.js.map +1 -1
  47. package/dist/src/commands/completions.js +477 -118
  48. package/dist/src/commands/completions.js.map +1 -1
  49. package/dist/src/commands/config.js +237 -303
  50. package/dist/src/commands/config.js.map +1 -1
  51. package/dist/src/commands/daemon.js +487 -596
  52. package/dist/src/commands/daemon.js.map +1 -1
  53. package/dist/src/commands/deployment.js +194 -275
  54. package/dist/src/commands/deployment.js.map +1 -1
  55. package/dist/src/commands/doctor.js +504 -686
  56. package/dist/src/commands/doctor.js.map +1 -1
  57. package/dist/src/commands/embeddings.js +1293 -1543
  58. package/dist/src/commands/embeddings.js.map +1 -1
  59. package/dist/src/commands/guidance.js +449 -596
  60. package/dist/src/commands/guidance.js.map +1 -1
  61. package/dist/src/commands/hive-mind.js +854 -938
  62. package/dist/src/commands/hive-mind.js.map +1 -1
  63. package/dist/src/commands/hooks.js +3112 -3519
  64. package/dist/src/commands/hooks.js.map +1 -1
  65. package/dist/src/commands/index.d.ts +115 -0
  66. package/dist/src/commands/index.d.ts.map +1 -0
  67. package/dist/src/commands/index.js +126 -308
  68. package/dist/src/commands/index.js.map +1 -1
  69. package/dist/src/commands/init.js +788 -940
  70. package/dist/src/commands/init.js.map +1 -1
  71. package/dist/src/commands/issues.js +383 -558
  72. package/dist/src/commands/issues.js.map +1 -1
  73. package/dist/src/commands/mcp.js +493 -605
  74. package/dist/src/commands/mcp.js.map +1 -1
  75. package/dist/src/commands/memory.js +833 -1026
  76. package/dist/src/commands/memory.js.map +1 -1
  77. package/dist/src/commands/migrate.js +282 -347
  78. package/dist/src/commands/migrate.js.map +1 -1
  79. package/dist/src/commands/neural.js +1289 -1563
  80. package/dist/src/commands/neural.js.map +1 -1
  81. package/dist/src/commands/performance.js +497 -643
  82. package/dist/src/commands/performance.js.map +1 -1
  83. package/dist/src/commands/plugins.js +668 -841
  84. package/dist/src/commands/plugins.js.map +1 -1
  85. package/dist/src/commands/process.js +392 -447
  86. package/dist/src/commands/process.js.map +1 -1
  87. package/dist/src/commands/progress.js +162 -256
  88. package/dist/src/commands/progress.js.map +1 -1
  89. package/dist/src/commands/providers.js +150 -220
  90. package/dist/src/commands/providers.js.map +1 -1
  91. package/dist/src/commands/route.js +520 -665
  92. package/dist/src/commands/route.js.map +1 -1
  93. package/dist/src/commands/ruvector/backup.js +505 -651
  94. package/dist/src/commands/ruvector/backup.js.map +1 -1
  95. package/dist/src/commands/ruvector/benchmark.js +349 -401
  96. package/dist/src/commands/ruvector/benchmark.js.map +1 -1
  97. package/dist/src/commands/ruvector/import.js +224 -266
  98. package/dist/src/commands/ruvector/import.js.map +1 -1
  99. package/dist/src/commands/ruvector/index.js +37 -75
  100. package/dist/src/commands/ruvector/index.js.map +1 -1
  101. package/dist/src/commands/ruvector/init.js +336 -359
  102. package/dist/src/commands/ruvector/init.js.map +1 -1
  103. package/dist/src/commands/ruvector/migrate.js +335 -322
  104. package/dist/src/commands/ruvector/migrate.js.map +1 -1
  105. package/dist/src/commands/ruvector/optimize.js +375 -431
  106. package/dist/src/commands/ruvector/optimize.js.map +1 -1
  107. package/dist/src/commands/ruvector/setup.js +703 -117
  108. package/dist/src/commands/ruvector/setup.js.map +1 -1
  109. package/dist/src/commands/ruvector/status.js +364 -419
  110. package/dist/src/commands/ruvector/status.js.map +1 -1
  111. package/dist/src/commands/security.js +485 -608
  112. package/dist/src/commands/security.js.map +1 -1
  113. package/dist/src/commands/session.js +504 -626
  114. package/dist/src/commands/session.js.map +1 -1
  115. package/dist/src/commands/start.js +267 -364
  116. package/dist/src/commands/start.js.map +1 -1
  117. package/dist/src/commands/status.js +380 -486
  118. package/dist/src/commands/status.js.map +1 -1
  119. package/dist/src/commands/swarm.js +408 -488
  120. package/dist/src/commands/swarm.js.map +1 -1
  121. package/dist/src/commands/task.js +423 -538
  122. package/dist/src/commands/task.js.map +1 -1
  123. package/dist/src/commands/transfer-store.js +322 -412
  124. package/dist/src/commands/transfer-store.js.map +1 -1
  125. package/dist/src/commands/update.js +196 -291
  126. package/dist/src/commands/update.js.map +1 -1
  127. package/dist/src/commands/workflow.js +386 -486
  128. package/dist/src/commands/workflow.js.map +1 -1
  129. package/dist/src/config-adapter.d.ts +15 -0
  130. package/dist/src/config-adapter.d.ts.map +1 -0
  131. package/dist/src/config-adapter.js +38 -39
  132. package/dist/src/config-adapter.js.map +1 -1
  133. package/dist/src/index.d.ts +77 -0
  134. package/dist/src/index.d.ts.map +1 -0
  135. package/dist/src/index.js +309 -411
  136. package/dist/src/index.js.map +1 -1
  137. package/dist/src/infrastructure/in-memory-repositories.d.ts +68 -0
  138. package/dist/src/infrastructure/in-memory-repositories.d.ts.map +1 -0
  139. package/dist/src/infrastructure/in-memory-repositories.js +246 -507
  140. package/dist/src/infrastructure/in-memory-repositories.js.map +1 -1
  141. package/dist/src/init/claudemd-generator.d.ts +25 -0
  142. package/dist/src/init/claudemd-generator.d.ts.map +1 -0
  143. package/dist/src/init/claudemd-generator.js +368 -78
  144. package/dist/src/init/claudemd-generator.js.map +1 -1
  145. package/dist/src/init/executor.d.ts +41 -0
  146. package/dist/src/init/executor.d.ts.map +1 -0
  147. package/dist/src/init/executor.js +1307 -996
  148. package/dist/src/init/executor.js.map +1 -1
  149. package/dist/src/init/helpers-generator.d.ts +60 -0
  150. package/dist/src/init/helpers-generator.d.ts.map +1 -0
  151. package/dist/src/init/helpers-generator.js +657 -12
  152. package/dist/src/init/helpers-generator.js.map +1 -1
  153. package/dist/src/init/index.d.ts +1 -1
  154. package/dist/src/init/index.d.ts.map +1 -1
  155. package/dist/src/init/index.js +1 -1
  156. package/dist/src/init/index.js.map +1 -1
  157. package/dist/src/init/mcp-generator.js +33 -37
  158. package/dist/src/init/mcp-generator.js.map +1 -1
  159. package/dist/src/init/settings-generator.js +76 -77
  160. package/dist/src/init/settings-generator.js.map +1 -1
  161. package/dist/src/init/statusline-generator.js +801 -3
  162. package/dist/src/init/statusline-generator.js.map +1 -1
  163. package/dist/src/init/types.d.ts +1 -1
  164. package/dist/src/init/types.d.ts.map +1 -1
  165. package/dist/src/init/types.js +76 -59
  166. package/dist/src/init/types.js.map +1 -1
  167. package/dist/src/mcp-client.d.ts +92 -0
  168. package/dist/src/mcp-client.d.ts.map +1 -0
  169. package/dist/src/mcp-client.js +81 -125
  170. package/dist/src/mcp-client.js.map +1 -1
  171. package/dist/src/mcp-server.d.ts +161 -0
  172. package/dist/src/mcp-server.d.ts.map +1 -0
  173. package/dist/src/mcp-server.js +470 -757
  174. package/dist/src/mcp-server.js.map +1 -1
  175. package/dist/src/mcp-tools/agent-tools.js +391 -492
  176. package/dist/src/mcp-tools/agent-tools.js.map +1 -1
  177. package/dist/src/mcp-tools/agentdb-tools.js +332 -533
  178. package/dist/src/mcp-tools/agentdb-tools.js.map +1 -1
  179. package/dist/src/mcp-tools/analyze-tools.js +172 -236
  180. package/dist/src/mcp-tools/analyze-tools.js.map +1 -1
  181. package/dist/src/mcp-tools/auto-install.d.ts +83 -0
  182. package/dist/src/mcp-tools/auto-install.d.ts.map +1 -0
  183. package/dist/src/mcp-tools/auto-install.js +80 -142
  184. package/dist/src/mcp-tools/auto-install.js.map +1 -1
  185. package/dist/src/mcp-tools/browser-tools.js +252 -375
  186. package/dist/src/mcp-tools/browser-tools.js.map +1 -1
  187. package/dist/src/mcp-tools/claims-tools.js +473 -565
  188. package/dist/src/mcp-tools/claims-tools.js.map +1 -1
  189. package/dist/src/mcp-tools/config-tools.js +197 -272
  190. package/dist/src/mcp-tools/config-tools.js.map +1 -1
  191. package/dist/src/mcp-tools/coordination-tools.js +500 -572
  192. package/dist/src/mcp-tools/coordination-tools.js.map +1 -1
  193. package/dist/src/mcp-tools/daa-tools.js +286 -364
  194. package/dist/src/mcp-tools/daa-tools.js.map +1 -1
  195. package/dist/src/mcp-tools/embeddings-tools.js +582 -693
  196. package/dist/src/mcp-tools/embeddings-tools.js.map +1 -1
  197. package/dist/src/mcp-tools/github-tools.js +260 -311
  198. package/dist/src/mcp-tools/github-tools.js.map +1 -1
  199. package/dist/src/mcp-tools/hive-mind-tools.js +573 -640
  200. package/dist/src/mcp-tools/hive-mind-tools.js.map +1 -1
  201. package/dist/src/mcp-tools/hooks-tools.js +2215 -2648
  202. package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
  203. package/dist/src/mcp-tools/memory-tools.js +350 -505
  204. package/dist/src/mcp-tools/memory-tools.js.map +1 -1
  205. package/dist/src/mcp-tools/neural-tools.js +315 -412
  206. package/dist/src/mcp-tools/neural-tools.js.map +1 -1
  207. package/dist/src/mcp-tools/performance-tools.js +420 -480
  208. package/dist/src/mcp-tools/performance-tools.js.map +1 -1
  209. package/dist/src/mcp-tools/progress-tools.js +204 -278
  210. package/dist/src/mcp-tools/progress-tools.js.map +1 -1
  211. package/dist/src/mcp-tools/ruvllm-tools.js +163 -279
  212. package/dist/src/mcp-tools/ruvllm-tools.js.map +1 -1
  213. package/dist/src/mcp-tools/security-tools.js +297 -429
  214. package/dist/src/mcp-tools/security-tools.js.map +1 -1
  215. package/dist/src/mcp-tools/session-tools.js +185 -234
  216. package/dist/src/mcp-tools/session-tools.js.map +1 -1
  217. package/dist/src/mcp-tools/swarm-tools.js +207 -260
  218. package/dist/src/mcp-tools/swarm-tools.js.map +1 -1
  219. package/dist/src/mcp-tools/system-tools.js +276 -325
  220. package/dist/src/mcp-tools/system-tools.js.map +1 -1
  221. package/dist/src/mcp-tools/task-tools.js +270 -336
  222. package/dist/src/mcp-tools/task-tools.js.map +1 -1
  223. package/dist/src/mcp-tools/terminal-tools.js +148 -196
  224. package/dist/src/mcp-tools/terminal-tools.js.map +1 -1
  225. package/dist/src/mcp-tools/transfer-tools.js +186 -333
  226. package/dist/src/mcp-tools/transfer-tools.js.map +1 -1
  227. package/dist/src/mcp-tools/types.d.ts +31 -0
  228. package/dist/src/mcp-tools/types.d.ts.map +1 -0
  229. package/dist/src/mcp-tools/wasm-agent-tools.js +133 -280
  230. package/dist/src/mcp-tools/wasm-agent-tools.js.map +1 -1
  231. package/dist/src/mcp-tools/workflow-tools.js +405 -450
  232. package/dist/src/mcp-tools/workflow-tools.js.map +1 -1
  233. package/dist/src/memory/ewc-consolidation.d.ts +295 -0
  234. package/dist/src/memory/ewc-consolidation.d.ts.map +1 -0
  235. package/dist/src/memory/ewc-consolidation.js +190 -303
  236. package/dist/src/memory/ewc-consolidation.js.map +1 -1
  237. package/dist/src/memory/intelligence.d.ts +338 -0
  238. package/dist/src/memory/intelligence.d.ts.map +1 -0
  239. package/dist/src/memory/intelligence.js +569 -794
  240. package/dist/src/memory/intelligence.js.map +1 -1
  241. package/dist/src/memory/memory-bridge.d.ts +407 -0
  242. package/dist/src/memory/memory-bridge.d.ts.map +1 -0
  243. package/dist/src/memory/memory-bridge.js +1170 -1640
  244. package/dist/src/memory/memory-bridge.js.map +1 -1
  245. package/dist/src/memory/memory-initializer.d.ts +412 -0
  246. package/dist/src/memory/memory-initializer.d.ts.map +1 -0
  247. package/dist/src/memory/memory-initializer.js +1836 -1851
  248. package/dist/src/memory/memory-initializer.js.map +1 -1
  249. package/dist/src/memory/sona-optimizer.d.ts +227 -0
  250. package/dist/src/memory/sona-optimizer.d.ts.map +1 -0
  251. package/dist/src/memory/sona-optimizer.js +199 -329
  252. package/dist/src/memory/sona-optimizer.js.map +1 -1
  253. package/dist/src/output.d.ts +2 -2
  254. package/dist/src/output.d.ts.map +1 -1
  255. package/dist/src/output.js +242 -272
  256. package/dist/src/output.js.map +1 -1
  257. package/dist/src/parser.d.ts +51 -0
  258. package/dist/src/parser.d.ts.map +1 -0
  259. package/dist/src/parser.js +140 -187
  260. package/dist/src/parser.js.map +1 -1
  261. package/dist/src/plugins/manager.d.ts +133 -0
  262. package/dist/src/plugins/manager.d.ts.map +1 -0
  263. package/dist/src/plugins/manager.js +285 -521
  264. package/dist/src/plugins/manager.js.map +1 -1
  265. package/dist/src/plugins/store/discovery.d.ts +88 -0
  266. package/dist/src/plugins/store/discovery.d.ts.map +1 -0
  267. package/dist/src/plugins/store/discovery.js +271 -358
  268. package/dist/src/plugins/store/discovery.js.map +1 -1
  269. package/dist/src/plugins/store/index.d.ts +76 -0
  270. package/dist/src/plugins/store/index.d.ts.map +1 -0
  271. package/dist/src/plugins/store/index.js +48 -105
  272. package/dist/src/plugins/store/index.js.map +1 -1
  273. package/dist/src/plugins/store/search.d.ts +46 -0
  274. package/dist/src/plugins/store/search.d.ts.map +1 -0
  275. package/dist/src/plugins/store/search.js +69 -107
  276. package/dist/src/plugins/store/search.js.map +1 -1
  277. package/dist/src/plugins/store/types.d.ts +274 -0
  278. package/dist/src/plugins/store/types.d.ts.map +1 -0
  279. package/dist/src/plugins/tests/demo-plugin-store.js +113 -160
  280. package/dist/src/plugins/tests/demo-plugin-store.js.map +1 -1
  281. package/dist/src/plugins/tests/standalone-test.js +172 -223
  282. package/dist/src/plugins/tests/standalone-test.js.map +1 -1
  283. package/dist/src/plugins/tests/test-plugin-store.js +190 -228
  284. package/dist/src/plugins/tests/test-plugin-store.js.map +1 -1
  285. package/dist/src/production/circuit-breaker.d.ts +101 -0
  286. package/dist/src/production/circuit-breaker.d.ts.map +1 -0
  287. package/dist/src/production/circuit-breaker.js +62 -126
  288. package/dist/src/production/circuit-breaker.js.map +1 -1
  289. package/dist/src/production/error-handler.d.ts +92 -0
  290. package/dist/src/production/error-handler.d.ts.map +1 -0
  291. package/dist/src/production/error-handler.js +86 -156
  292. package/dist/src/production/error-handler.js.map +1 -1
  293. package/dist/src/production/monitoring.d.ts +161 -0
  294. package/dist/src/production/monitoring.d.ts.map +1 -0
  295. package/dist/src/production/monitoring.js +139 -220
  296. package/dist/src/production/monitoring.js.map +1 -1
  297. package/dist/src/production/rate-limiter.d.ts +80 -0
  298. package/dist/src/production/rate-limiter.d.ts.map +1 -0
  299. package/dist/src/production/rate-limiter.js +74 -93
  300. package/dist/src/production/rate-limiter.js.map +1 -1
  301. package/dist/src/production/retry.d.ts +48 -0
  302. package/dist/src/production/retry.d.ts.map +1 -0
  303. package/dist/src/production/retry.js +75 -167
  304. package/dist/src/production/retry.js.map +1 -1
  305. package/dist/src/prompt.d.ts +44 -0
  306. package/dist/src/prompt.d.ts.map +1 -0
  307. package/dist/src/prompt.js +436 -560
  308. package/dist/src/prompt.js.map +1 -1
  309. package/dist/src/runtime/headless.d.ts +60 -0
  310. package/dist/src/runtime/headless.d.ts.map +1 -0
  311. package/dist/src/runtime/headless.js +197 -286
  312. package/dist/src/runtime/headless.js.map +1 -1
  313. package/dist/src/ruvector/agent-wasm.d.ts +182 -0
  314. package/dist/src/ruvector/agent-wasm.d.ts.map +1 -0
  315. package/dist/src/ruvector/agent-wasm.js +156 -351
  316. package/dist/src/ruvector/agent-wasm.js.map +1 -1
  317. package/dist/src/ruvector/ast-analyzer.d.ts +67 -0
  318. package/dist/src/ruvector/ast-analyzer.d.ts.map +1 -0
  319. package/dist/src/ruvector/ast-analyzer.js +145 -232
  320. package/dist/src/ruvector/ast-analyzer.js.map +1 -1
  321. package/dist/src/ruvector/coverage-router.d.ts +160 -0
  322. package/dist/src/ruvector/coverage-router.d.ts.map +1 -0
  323. package/dist/src/ruvector/coverage-router.js +287 -419
  324. package/dist/src/ruvector/coverage-router.js.map +1 -1
  325. package/dist/src/ruvector/coverage-tools.js +56 -101
  326. package/dist/src/ruvector/coverage-tools.js.map +1 -1
  327. package/dist/src/ruvector/diff-classifier.d.ts +175 -0
  328. package/dist/src/ruvector/diff-classifier.d.ts.map +1 -0
  329. package/dist/src/ruvector/diff-classifier.js +324 -451
  330. package/dist/src/ruvector/diff-classifier.js.map +1 -1
  331. package/dist/src/ruvector/enhanced-model-router.d.ts +146 -0
  332. package/dist/src/ruvector/enhanced-model-router.d.ts.map +1 -0
  333. package/dist/src/ruvector/enhanced-model-router.js +260 -336
  334. package/dist/src/ruvector/enhanced-model-router.js.map +1 -1
  335. package/dist/src/ruvector/flash-attention.d.ts +195 -0
  336. package/dist/src/ruvector/flash-attention.d.ts.map +1 -0
  337. package/dist/src/ruvector/flash-attention.js +223 -254
  338. package/dist/src/ruvector/flash-attention.js.map +1 -1
  339. package/dist/src/ruvector/graph-analyzer.d.ts +187 -0
  340. package/dist/src/ruvector/graph-analyzer.d.ts.map +1 -0
  341. package/dist/src/ruvector/graph-analyzer.js +486 -680
  342. package/dist/src/ruvector/graph-analyzer.js.map +1 -1
  343. package/dist/src/ruvector/index.d.ts +40 -0
  344. package/dist/src/ruvector/index.d.ts.map +1 -0
  345. package/dist/src/ruvector/index.js +36 -106
  346. package/dist/src/ruvector/index.js.map +1 -1
  347. package/dist/src/ruvector/lora-adapter.d.ts +218 -0
  348. package/dist/src/ruvector/lora-adapter.d.ts.map +1 -0
  349. package/dist/src/ruvector/lora-adapter.js +155 -248
  350. package/dist/src/ruvector/lora-adapter.js.map +1 -1
  351. package/dist/src/ruvector/model-router.d.ts +220 -0
  352. package/dist/src/ruvector/model-router.d.ts.map +1 -0
  353. package/dist/src/ruvector/model-router.js +175 -248
  354. package/dist/src/ruvector/model-router.js.map +1 -1
  355. package/dist/src/ruvector/moe-router.d.ts +206 -0
  356. package/dist/src/ruvector/moe-router.d.ts.map +1 -0
  357. package/dist/src/ruvector/moe-router.js +228 -286
  358. package/dist/src/ruvector/moe-router.js.map +1 -1
  359. package/dist/src/ruvector/q-learning-router.d.ts +211 -0
  360. package/dist/src/ruvector/q-learning-router.d.ts.map +1 -0
  361. package/dist/src/ruvector/q-learning-router.js +257 -338
  362. package/dist/src/ruvector/q-learning-router.js.map +1 -1
  363. package/dist/src/ruvector/ruvllm-wasm.d.ts +179 -0
  364. package/dist/src/ruvector/ruvllm-wasm.d.ts.map +1 -0
  365. package/dist/src/ruvector/ruvllm-wasm.js +270 -434
  366. package/dist/src/ruvector/ruvllm-wasm.js.map +1 -1
  367. package/dist/src/ruvector/semantic-router.d.ts +77 -0
  368. package/dist/src/ruvector/semantic-router.d.ts.map +1 -0
  369. package/dist/src/ruvector/semantic-router.js +60 -67
  370. package/dist/src/ruvector/semantic-router.js.map +1 -1
  371. package/dist/src/ruvector/vector-db.d.ts +69 -0
  372. package/dist/src/ruvector/vector-db.d.ts.map +1 -0
  373. package/dist/src/ruvector/vector-db.js +119 -205
  374. package/dist/src/ruvector/vector-db.js.map +1 -1
  375. package/dist/src/services/agentic-flow-bridge.d.ts +50 -0
  376. package/dist/src/services/agentic-flow-bridge.d.ts.map +1 -0
  377. package/dist/src/services/agentic-flow-bridge.js +32 -105
  378. package/dist/src/services/agentic-flow-bridge.js.map +1 -1
  379. package/dist/src/services/claim-service.d.ts +204 -0
  380. package/dist/src/services/claim-service.d.ts.map +1 -0
  381. package/dist/src/services/claim-service.js +615 -940
  382. package/dist/src/services/claim-service.js.map +1 -1
  383. package/dist/src/services/container-worker-pool.d.ts +197 -0
  384. package/dist/src/services/container-worker-pool.d.ts.map +1 -0
  385. package/dist/src/services/container-worker-pool.js +398 -666
  386. package/dist/src/services/container-worker-pool.js.map +1 -1
  387. package/dist/src/services/headless-worker-executor.d.ts +304 -0
  388. package/dist/src/services/headless-worker-executor.d.ts.map +1 -0
  389. package/dist/src/services/headless-worker-executor.js +441 -467
  390. package/dist/src/services/headless-worker-executor.js.map +1 -1
  391. package/dist/src/services/index.d.ts +4 -4
  392. package/dist/src/services/index.d.ts.map +1 -1
  393. package/dist/src/services/index.js +4 -4
  394. package/dist/src/services/index.js.map +1 -1
  395. package/dist/src/services/registry-api.d.ts +58 -0
  396. package/dist/src/services/registry-api.d.ts.map +1 -0
  397. package/dist/src/services/registry-api.js +92 -200
  398. package/dist/src/services/registry-api.js.map +1 -1
  399. package/dist/src/services/ruvector-training.d.ts +222 -0
  400. package/dist/src/services/ruvector-training.d.ts.map +1 -0
  401. package/dist/src/services/ruvector-training.js +257 -337
  402. package/dist/src/services/ruvector-training.js.map +1 -1
  403. package/dist/src/services/worker-daemon.d.ts +228 -0
  404. package/dist/src/services/worker-daemon.d.ts.map +1 -0
  405. package/dist/src/services/worker-daemon.js +591 -849
  406. package/dist/src/services/worker-daemon.js.map +1 -1
  407. package/dist/src/services/worker-queue.d.ts +194 -0
  408. package/dist/src/services/worker-queue.d.ts.map +1 -0
  409. package/dist/src/services/worker-queue.js +331 -548
  410. package/dist/src/services/worker-queue.js.map +1 -1
  411. package/dist/src/suggest.d.ts +53 -0
  412. package/dist/src/suggest.d.ts.map +1 -0
  413. package/dist/src/suggest.js +45 -55
  414. package/dist/src/suggest.js.map +1 -1
  415. package/dist/src/transfer/anonymization/index.js +29 -37
  416. package/dist/src/transfer/anonymization/index.js.map +1 -1
  417. package/dist/src/transfer/deploy-seraphine.js +128 -155
  418. package/dist/src/transfer/deploy-seraphine.js.map +1 -1
  419. package/dist/src/transfer/export.d.ts +25 -0
  420. package/dist/src/transfer/export.d.ts.map +1 -0
  421. package/dist/src/transfer/export.js +84 -142
  422. package/dist/src/transfer/export.js.map +1 -1
  423. package/dist/src/transfer/index.d.ts +1 -1
  424. package/dist/src/transfer/index.d.ts.map +1 -1
  425. package/dist/src/transfer/index.js +0 -2
  426. package/dist/src/transfer/index.js.map +1 -1
  427. package/dist/src/transfer/ipfs/client.d.ts +109 -0
  428. package/dist/src/transfer/ipfs/client.d.ts.map +1 -0
  429. package/dist/src/transfer/ipfs/client.js +187 -337
  430. package/dist/src/transfer/ipfs/client.js.map +1 -1
  431. package/dist/src/transfer/ipfs/upload.d.ts +95 -0
  432. package/dist/src/transfer/ipfs/upload.d.ts.map +1 -0
  433. package/dist/src/transfer/ipfs/upload.js +288 -434
  434. package/dist/src/transfer/ipfs/upload.js.map +1 -1
  435. package/dist/src/transfer/models/seraphine.d.ts +72 -0
  436. package/dist/src/transfer/models/seraphine.d.ts.map +1 -0
  437. package/dist/src/transfer/models/seraphine.js +55 -55
  438. package/dist/src/transfer/models/seraphine.js.map +1 -1
  439. package/dist/src/transfer/serialization/cfp.d.ts +49 -0
  440. package/dist/src/transfer/serialization/cfp.d.ts.map +1 -0
  441. package/dist/src/transfer/serialization/cfp.js +30 -31
  442. package/dist/src/transfer/serialization/cfp.js.map +1 -1
  443. package/dist/src/transfer/storage/gcs.d.ts +82 -0
  444. package/dist/src/transfer/storage/gcs.d.ts.map +1 -0
  445. package/dist/src/transfer/storage/gcs.js +165 -232
  446. package/dist/src/transfer/storage/gcs.js.map +1 -1
  447. package/dist/src/transfer/store/discovery.d.ts +84 -0
  448. package/dist/src/transfer/store/discovery.d.ts.map +1 -0
  449. package/dist/src/transfer/store/discovery.js +239 -349
  450. package/dist/src/transfer/store/discovery.js.map +1 -1
  451. package/dist/src/transfer/store/download.d.ts +70 -0
  452. package/dist/src/transfer/store/download.d.ts.map +1 -0
  453. package/dist/src/transfer/store/download.js +243 -365
  454. package/dist/src/transfer/store/download.js.map +1 -1
  455. package/dist/src/transfer/store/index.d.ts +84 -0
  456. package/dist/src/transfer/store/index.d.ts.map +1 -0
  457. package/dist/src/transfer/store/index.js +63 -130
  458. package/dist/src/transfer/store/index.js.map +1 -1
  459. package/dist/src/transfer/store/publish.d.ts +76 -0
  460. package/dist/src/transfer/store/publish.d.ts.map +1 -0
  461. package/dist/src/transfer/store/publish.js +184 -258
  462. package/dist/src/transfer/store/publish.js.map +1 -1
  463. package/dist/src/transfer/store/registry.js +50 -72
  464. package/dist/src/transfer/store/registry.js.map +1 -1
  465. package/dist/src/transfer/store/search.d.ts +54 -0
  466. package/dist/src/transfer/store/search.d.ts.map +1 -0
  467. package/dist/src/transfer/store/search.js +64 -96
  468. package/dist/src/transfer/store/search.js.map +1 -1
  469. package/dist/src/transfer/store/tests/standalone-test.js +174 -231
  470. package/dist/src/transfer/store/tests/standalone-test.js.map +1 -1
  471. package/dist/src/transfer/test-seraphine.js +95 -130
  472. package/dist/src/transfer/test-seraphine.js.map +1 -1
  473. package/dist/src/transfer/tests/test-store.js +194 -239
  474. package/dist/src/transfer/tests/test-store.js.map +1 -1
  475. package/dist/src/transfer/types.d.ts +245 -0
  476. package/dist/src/transfer/types.d.ts.map +1 -0
  477. package/dist/src/types.d.ts +198 -0
  478. package/dist/src/types.d.ts.map +1 -0
  479. package/dist/src/types.js +26 -55
  480. package/dist/src/types.js.map +1 -1
  481. package/dist/src/update/checker.d.ts +34 -0
  482. package/dist/src/update/checker.d.ts.map +1 -0
  483. package/dist/src/update/checker.js +106 -183
  484. package/dist/src/update/checker.js.map +1 -1
  485. package/dist/src/update/executor.d.ts +32 -0
  486. package/dist/src/update/executor.d.ts.map +1 -0
  487. package/dist/src/update/executor.js +135 -198
  488. package/dist/src/update/executor.js.map +1 -1
  489. package/dist/src/update/index.d.ts +33 -0
  490. package/dist/src/update/index.d.ts.map +1 -0
  491. package/dist/src/update/index.js +38 -85
  492. package/dist/src/update/index.js.map +1 -1
  493. package/dist/src/update/rate-limiter.d.ts +20 -0
  494. package/dist/src/update/rate-limiter.d.ts.map +1 -0
  495. package/dist/src/update/rate-limiter.js +19 -31
  496. package/dist/src/update/rate-limiter.js.map +1 -1
  497. package/dist/src/update/validator.d.ts +17 -0
  498. package/dist/src/update/validator.d.ts.map +1 -0
  499. package/dist/src/update/validator.js +38 -64
  500. package/dist/src/update/validator.js.map +1 -1
  501. package/dist/tsconfig.tsbuildinfo +1 -1
  502. package/package.json +1 -1
@@ -4,53 +4,6 @@
4
4
  *
5
5
  * Created with ruv.io
6
6
  */
7
- var __assign = (this && this.__assign) || function () {
8
- __assign = Object.assign || function(t) {
9
- for (var s, i = 1, n = arguments.length; i < n; i++) {
10
- s = arguments[i];
11
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
12
- t[p] = s[p];
13
- }
14
- return t;
15
- };
16
- return __assign.apply(this, arguments);
17
- };
18
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
19
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
20
- return new (P || (P = Promise))(function (resolve, reject) {
21
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
22
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
23
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
24
- step((generator = generator.apply(thisArg, _arguments || [])).next());
25
- });
26
- };
27
- var __generator = (this && this.__generator) || function (thisArg, body) {
28
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
29
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
30
- function verb(n) { return function (v) { return step([n, v]); }; }
31
- function step(op) {
32
- if (f) throw new TypeError("Generator is already executing.");
33
- while (_) try {
34
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
35
- if (y = 0, t) op = [op[0] & 2, t.value];
36
- switch (op[0]) {
37
- case 0: case 1: t = op; break;
38
- case 4: _.label++; return { value: op[1], done: false };
39
- case 5: _.label++; y = op[1]; op = [0]; continue;
40
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
41
- default:
42
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
43
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
44
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
45
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
46
- if (t[2]) _.ops.pop();
47
- _.trys.pop(); continue;
48
- }
49
- op = body.call(thisArg, _);
50
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
51
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
52
- }
53
- };
54
7
  import { output } from '../output.js';
55
8
  import { existsSync, readFileSync, statSync } from 'fs';
56
9
  import { join, dirname } from 'path';
@@ -58,549 +11,427 @@ import { fileURLToPath } from 'url';
58
11
  import { execSync, exec } from 'child_process';
59
12
  import { promisify } from 'util';
60
13
  // Promisified exec with proper shell and env inheritance for cross-platform support
61
- var execAsync = promisify(exec);
14
+ const execAsync = promisify(exec);
62
15
  /**
63
16
  * Execute command asynchronously with proper environment inheritance
64
17
  * Critical for Windows where PATH may not be inherited properly
65
18
  */
66
- function runCommand(command, timeoutMs) {
67
- if (timeoutMs === void 0) { timeoutMs = 5000; }
68
- return __awaiter(this, void 0, Promise, function () {
69
- var stdout;
70
- return __generator(this, function (_a) {
71
- switch (_a.label) {
72
- case 0: return [4 /*yield*/, execAsync(command, {
73
- encoding: 'utf8',
74
- timeout: timeoutMs,
75
- shell: process.platform === 'win32' ? 'cmd.exe' : '/bin/sh',
76
- env: __assign({}, process.env),
77
- windowsHide: true
78
- })];
79
- case 1:
80
- stdout = (_a.sent()).stdout;
81
- return [2 /*return*/, stdout.trim()];
82
- }
83
- });
19
+ async function runCommand(command, timeoutMs = 5000) {
20
+ const { stdout } = await execAsync(command, {
21
+ encoding: 'utf8',
22
+ timeout: timeoutMs,
23
+ shell: process.platform === 'win32' ? 'cmd.exe' : '/bin/sh', // Use proper shell per platform
24
+ env: { ...process.env }, // Explicitly inherit full environment
25
+ windowsHide: true, // Hide window on Windows
84
26
  });
27
+ return stdout.trim();
85
28
  }
86
29
  // Check Node.js version
87
- function checkNodeVersion() {
88
- return __awaiter(this, void 0, Promise, function () {
89
- var requiredMajor, version, major;
90
- return __generator(this, function (_a) {
91
- requiredMajor = 20;
92
- version = process.version;
93
- major = parseInt(version.slice(1).split('.')[0], 10);
94
- if (major >= requiredMajor) {
95
- return [2 /*return*/, { name: 'Node.js Version', status: 'pass', message: version + " (>= " + requiredMajor + " required)" }];
96
- }
97
- else if (major >= 18) {
98
- return [2 /*return*/, { name: 'Node.js Version', status: 'warn', message: version + " (>= " + requiredMajor + " recommended)", fix: 'nvm install 20 && nvm use 20' }];
99
- }
100
- else {
101
- return [2 /*return*/, { name: 'Node.js Version', status: 'fail', message: version + " (>= " + requiredMajor + " required)", fix: 'nvm install 20 && nvm use 20' }];
102
- }
103
- return [2 /*return*/];
104
- });
105
- });
30
+ async function checkNodeVersion() {
31
+ const requiredMajor = 20;
32
+ const version = process.version;
33
+ const major = parseInt(version.slice(1).split('.')[0], 10);
34
+ if (major >= requiredMajor) {
35
+ return { name: 'Node.js Version', status: 'pass', message: `${version} (>= ${requiredMajor} required)` };
36
+ }
37
+ else if (major >= 18) {
38
+ return { name: 'Node.js Version', status: 'warn', message: `${version} (>= ${requiredMajor} recommended)`, fix: 'nvm install 20 && nvm use 20' };
39
+ }
40
+ else {
41
+ return { name: 'Node.js Version', status: 'fail', message: `${version} (>= ${requiredMajor} required)`, fix: 'nvm install 20 && nvm use 20' };
42
+ }
106
43
  }
107
44
  // Check npm version (async with proper env inheritance)
108
- function checkNpmVersion() {
109
- return __awaiter(this, void 0, Promise, function () {
110
- var version, major, _a;
111
- return __generator(this, function (_b) {
112
- switch (_b.label) {
113
- case 0:
114
- _b.trys.push([0, 2, , 3]);
115
- return [4 /*yield*/, runCommand('npm --version')];
116
- case 1:
117
- version = _b.sent();
118
- major = parseInt(version.split('.')[0], 10);
119
- if (major >= 9) {
120
- return [2 /*return*/, { name: 'npm Version', status: 'pass', message: "v" + version }];
121
- }
122
- else {
123
- return [2 /*return*/, { name: 'npm Version', status: 'warn', message: "v" + version + " (>= 9 recommended)", fix: 'npm install -g npm@latest' }];
124
- }
125
- return [3 /*break*/, 3];
126
- case 2:
127
- _a = _b.sent();
128
- return [2 /*return*/, { name: 'npm Version', status: 'fail', message: 'npm not found', fix: 'Install Node.js from https://nodejs.org' }];
129
- case 3: return [2 /*return*/];
130
- }
131
- });
132
- });
45
+ async function checkNpmVersion() {
46
+ try {
47
+ const version = await runCommand('npm --version');
48
+ const major = parseInt(version.split('.')[0], 10);
49
+ if (major >= 9) {
50
+ return { name: 'npm Version', status: 'pass', message: `v${version}` };
51
+ }
52
+ else {
53
+ return { name: 'npm Version', status: 'warn', message: `v${version} (>= 9 recommended)`, fix: 'npm install -g npm@latest' };
54
+ }
55
+ }
56
+ catch {
57
+ return { name: 'npm Version', status: 'fail', message: 'npm not found', fix: 'Install Node.js from https://nodejs.org' };
58
+ }
133
59
  }
134
60
  // Check config file
135
- function checkConfigFile() {
136
- return __awaiter(this, void 0, Promise, function () {
137
- var jsonPaths, _i, jsonPaths_1, configPath, content, yamlPaths, _a, yamlPaths_1, configPath;
138
- return __generator(this, function (_b) {
139
- jsonPaths = [
140
- '.claude-flow/config.json',
141
- 'claude-flow.config.json',
142
- '.claude-flow.json'
143
- ];
144
- for (_i = 0, jsonPaths_1 = jsonPaths; _i < jsonPaths_1.length; _i++) {
145
- configPath = jsonPaths_1[_i];
146
- if (existsSync(configPath)) {
147
- try {
148
- content = readFileSync(configPath, 'utf8');
149
- JSON.parse(content);
150
- return [2 /*return*/, { name: 'Config File', status: 'pass', message: "Found: " + configPath }];
151
- }
152
- catch (e) {
153
- return [2 /*return*/, { name: 'Config File', status: 'fail', message: "Invalid JSON: " + configPath, fix: 'Fix JSON syntax in config file' }];
154
- }
155
- }
61
+ async function checkConfigFile() {
62
+ // JSON configs (parse-validated)
63
+ const jsonPaths = [
64
+ '.claude-flow/config.json',
65
+ 'claude-flow.config.json',
66
+ '.claude-flow.json'
67
+ ];
68
+ for (const configPath of jsonPaths) {
69
+ if (existsSync(configPath)) {
70
+ try {
71
+ const content = readFileSync(configPath, 'utf8');
72
+ JSON.parse(content);
73
+ return { name: 'Config File', status: 'pass', message: `Found: ${configPath}` };
156
74
  }
157
- yamlPaths = [
158
- '.claude-flow/config.yaml',
159
- '.claude-flow/config.yml',
160
- 'claude-flow.config.yaml'
161
- ];
162
- for (_a = 0, yamlPaths_1 = yamlPaths; _a < yamlPaths_1.length; _a++) {
163
- configPath = yamlPaths_1[_a];
164
- if (existsSync(configPath)) {
165
- return [2 /*return*/, { name: 'Config File', status: 'pass', message: "Found: " + configPath }];
166
- }
75
+ catch (e) {
76
+ return { name: 'Config File', status: 'fail', message: `Invalid JSON: ${configPath}`, fix: 'Fix JSON syntax in config file' };
167
77
  }
168
- return [2 /*return*/, { name: 'Config File', status: 'warn', message: 'No config file (using defaults)', fix: 'claude-flow config init' }];
169
- });
170
- });
78
+ }
79
+ }
80
+ // YAML configs (existence-checked only — no heavy yaml parser dependency)
81
+ const yamlPaths = [
82
+ '.claude-flow/config.yaml',
83
+ '.claude-flow/config.yml',
84
+ 'claude-flow.config.yaml'
85
+ ];
86
+ for (const configPath of yamlPaths) {
87
+ if (existsSync(configPath)) {
88
+ return { name: 'Config File', status: 'pass', message: `Found: ${configPath}` };
89
+ }
90
+ }
91
+ return { name: 'Config File', status: 'warn', message: 'No config file (using defaults)', fix: 'claude-flow config init' };
171
92
  }
172
93
  // Check daemon status
173
- function checkDaemonStatus() {
174
- return __awaiter(this, void 0, Promise, function () {
175
- var pidFile, pid;
176
- return __generator(this, function (_a) {
94
+ async function checkDaemonStatus() {
95
+ try {
96
+ const pidFile = '.claude-flow/daemon.pid';
97
+ if (existsSync(pidFile)) {
98
+ const pid = readFileSync(pidFile, 'utf8').trim();
177
99
  try {
178
- pidFile = '.claude-flow/daemon.pid';
179
- if (existsSync(pidFile)) {
180
- pid = readFileSync(pidFile, 'utf8').trim();
181
- try {
182
- process.kill(parseInt(pid, 10), 0); // Check if process exists
183
- return [2 /*return*/, { name: 'Daemon Status', status: 'pass', message: "Running (PID: " + pid + ")" }];
184
- }
185
- catch (_b) {
186
- return [2 /*return*/, { name: 'Daemon Status', status: 'warn', message: 'Stale PID file', fix: 'rm .claude-flow/daemon.pid && claude-flow daemon start' }];
187
- }
188
- }
189
- return [2 /*return*/, { name: 'Daemon Status', status: 'warn', message: 'Not running', fix: 'claude-flow daemon start' }];
100
+ process.kill(parseInt(pid, 10), 0); // Check if process exists
101
+ return { name: 'Daemon Status', status: 'pass', message: `Running (PID: ${pid})` };
190
102
  }
191
- catch (_c) {
192
- return [2 /*return*/, { name: 'Daemon Status', status: 'warn', message: 'Unable to check', fix: 'claude-flow daemon status' }];
103
+ catch {
104
+ return { name: 'Daemon Status', status: 'warn', message: 'Stale PID file', fix: 'rm .claude-flow/daemon.pid && claude-flow daemon start' };
193
105
  }
194
- return [2 /*return*/];
195
- });
196
- });
106
+ }
107
+ return { name: 'Daemon Status', status: 'warn', message: 'Not running', fix: 'claude-flow daemon start' };
108
+ }
109
+ catch {
110
+ return { name: 'Daemon Status', status: 'warn', message: 'Unable to check', fix: 'claude-flow daemon status' };
111
+ }
197
112
  }
198
113
  // Check memory database
199
- function checkMemoryDatabase() {
200
- return __awaiter(this, void 0, Promise, function () {
201
- var dbPaths, _i, dbPaths_1, dbPath, stats, sizeMB;
202
- return __generator(this, function (_a) {
203
- dbPaths = [
204
- '.claude-flow/memory.db',
205
- '.swarm/memory.db',
206
- 'data/memory.db'
207
- ];
208
- for (_i = 0, dbPaths_1 = dbPaths; _i < dbPaths_1.length; _i++) {
209
- dbPath = dbPaths_1[_i];
210
- if (existsSync(dbPath)) {
211
- try {
212
- stats = statSync(dbPath);
213
- sizeMB = (stats.size / 1024 / 1024).toFixed(2);
214
- return [2 /*return*/, { name: 'Memory Database', status: 'pass', message: dbPath + " (" + sizeMB + " MB)" }];
215
- }
216
- catch (_b) {
217
- return [2 /*return*/, { name: 'Memory Database', status: 'warn', message: dbPath + " (unable to stat)" }];
218
- }
219
- }
114
+ async function checkMemoryDatabase() {
115
+ const dbPaths = [
116
+ '.claude-flow/memory.db',
117
+ '.swarm/memory.db',
118
+ 'data/memory.db'
119
+ ];
120
+ for (const dbPath of dbPaths) {
121
+ if (existsSync(dbPath)) {
122
+ try {
123
+ const stats = statSync(dbPath);
124
+ const sizeMB = (stats.size / 1024 / 1024).toFixed(2);
125
+ return { name: 'Memory Database', status: 'pass', message: `${dbPath} (${sizeMB} MB)` };
220
126
  }
221
- return [2 /*return*/, { name: 'Memory Database', status: 'warn', message: 'Not initialized', fix: 'claude-flow memory configure --backend hybrid' }];
222
- });
223
- });
127
+ catch {
128
+ return { name: 'Memory Database', status: 'warn', message: `${dbPath} (unable to stat)` };
129
+ }
130
+ }
131
+ }
132
+ return { name: 'Memory Database', status: 'warn', message: 'Not initialized', fix: 'claude-flow memory configure --backend hybrid' };
224
133
  }
225
134
  // Check API keys
226
- function checkApiKeys() {
227
- return __awaiter(this, void 0, Promise, function () {
228
- var keys, found, _i, keys_1, key, inClaudeCode;
229
- return __generator(this, function (_a) {
230
- keys = ['ANTHROPIC_API_KEY', 'CLAUDE_API_KEY', 'OPENAI_API_KEY'];
231
- found = [];
232
- for (_i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
233
- key = keys_1[_i];
234
- if (process.env[key]) {
235
- found.push(key);
236
- }
237
- }
238
- inClaudeCode = !!(process.env.CLAUDE_CODE || process.env.CLAUDE_PROJECT_DIR || process.env.MCP_SESSION_ID);
239
- if (found.includes('ANTHROPIC_API_KEY') || found.includes('CLAUDE_API_KEY')) {
240
- return [2 /*return*/, { name: 'API Keys', status: 'pass', message: "Found: " + found.join(', ') }];
241
- }
242
- else if (inClaudeCode) {
243
- return [2 /*return*/, { name: 'API Keys', status: 'pass', message: 'Claude Code (managed internally)' }];
244
- }
245
- else if (found.length > 0) {
246
- return [2 /*return*/, { name: 'API Keys', status: 'warn', message: "Found: " + found.join(', ') + " (no Claude key)", fix: 'export ANTHROPIC_API_KEY=your_key' }];
247
- }
248
- else {
249
- return [2 /*return*/, { name: 'API Keys', status: 'warn', message: 'No API keys found', fix: 'export ANTHROPIC_API_KEY=your_key' }];
250
- }
251
- return [2 /*return*/];
252
- });
253
- });
135
+ async function checkApiKeys() {
136
+ const keys = ['ANTHROPIC_API_KEY', 'CLAUDE_API_KEY', 'OPENAI_API_KEY'];
137
+ const found = [];
138
+ for (const key of keys) {
139
+ if (process.env[key]) {
140
+ found.push(key);
141
+ }
142
+ }
143
+ // Detect Claude Code environment — API keys are managed internally
144
+ const inClaudeCode = !!(process.env.CLAUDE_CODE || process.env.CLAUDE_PROJECT_DIR || process.env.MCP_SESSION_ID);
145
+ if (found.includes('ANTHROPIC_API_KEY') || found.includes('CLAUDE_API_KEY')) {
146
+ return { name: 'API Keys', status: 'pass', message: `Found: ${found.join(', ')}` };
147
+ }
148
+ else if (inClaudeCode) {
149
+ return { name: 'API Keys', status: 'pass', message: 'Claude Code (managed internally)' };
150
+ }
151
+ else if (found.length > 0) {
152
+ return { name: 'API Keys', status: 'warn', message: `Found: ${found.join(', ')} (no Claude key)`, fix: 'export ANTHROPIC_API_KEY=your_key' };
153
+ }
154
+ else {
155
+ return { name: 'API Keys', status: 'warn', message: 'No API keys found', fix: 'export ANTHROPIC_API_KEY=your_key' };
156
+ }
254
157
  }
255
158
  // Check git (async with proper env inheritance)
256
- function checkGit() {
257
- return __awaiter(this, void 0, Promise, function () {
258
- var version, _a;
259
- return __generator(this, function (_b) {
260
- switch (_b.label) {
261
- case 0:
262
- _b.trys.push([0, 2, , 3]);
263
- return [4 /*yield*/, runCommand('git --version')];
264
- case 1:
265
- version = _b.sent();
266
- return [2 /*return*/, { name: 'Git', status: 'pass', message: version.replace('git version ', 'v') }];
267
- case 2:
268
- _a = _b.sent();
269
- return [2 /*return*/, { name: 'Git', status: 'warn', message: 'Not installed', fix: 'Install git from https://git-scm.com' }];
270
- case 3: return [2 /*return*/];
271
- }
272
- });
273
- });
159
+ async function checkGit() {
160
+ try {
161
+ const version = await runCommand('git --version');
162
+ return { name: 'Git', status: 'pass', message: version.replace('git version ', 'v') };
163
+ }
164
+ catch {
165
+ return { name: 'Git', status: 'warn', message: 'Not installed', fix: 'Install git from https://git-scm.com' };
166
+ }
274
167
  }
275
168
  // Check if in git repo (async with proper env inheritance)
276
- function checkGitRepo() {
277
- return __awaiter(this, void 0, Promise, function () {
278
- var _a;
279
- return __generator(this, function (_b) {
280
- switch (_b.label) {
281
- case 0:
282
- _b.trys.push([0, 2, , 3]);
283
- return [4 /*yield*/, runCommand('git rev-parse --git-dir')];
284
- case 1:
285
- _b.sent();
286
- return [2 /*return*/, { name: 'Git Repository', status: 'pass', message: 'In a git repository' }];
287
- case 2:
288
- _a = _b.sent();
289
- return [2 /*return*/, { name: 'Git Repository', status: 'warn', message: 'Not a git repository', fix: 'git init' }];
290
- case 3: return [2 /*return*/];
291
- }
292
- });
293
- });
169
+ async function checkGitRepo() {
170
+ try {
171
+ await runCommand('git rev-parse --git-dir');
172
+ return { name: 'Git Repository', status: 'pass', message: 'In a git repository' };
173
+ }
174
+ catch {
175
+ return { name: 'Git Repository', status: 'warn', message: 'Not a git repository', fix: 'git init' };
176
+ }
294
177
  }
295
178
  // Check MCP servers
296
- function checkMcpServers() {
297
- return __awaiter(this, void 0, Promise, function () {
298
- var mcpConfigPaths, _i, mcpConfigPaths_1, configPath, content, servers, count, hasClaudeFlow;
299
- return __generator(this, function (_a) {
300
- mcpConfigPaths = [
301
- join(process.env.HOME || '', '.claude/claude_desktop_config.json'),
302
- join(process.env.HOME || '', '.config/claude/mcp.json'),
303
- '.mcp.json'
304
- ];
305
- for (_i = 0, mcpConfigPaths_1 = mcpConfigPaths; _i < mcpConfigPaths_1.length; _i++) {
306
- configPath = mcpConfigPaths_1[_i];
307
- if (existsSync(configPath)) {
308
- try {
309
- content = JSON.parse(readFileSync(configPath, 'utf8'));
310
- servers = content.mcpServers || content.servers || {};
311
- count = Object.keys(servers).length;
312
- hasClaudeFlow = 'claude-flow' in servers || 'claude-flow_alpha' in servers || 'ruflo' in servers || 'ruflo_alpha' in servers;
313
- if (hasClaudeFlow) {
314
- return [2 /*return*/, { name: 'MCP Servers', status: 'pass', message: count + " servers (ruflo configured)" }];
315
- }
316
- else {
317
- return [2 /*return*/, { name: 'MCP Servers', status: 'warn', message: count + " servers (ruflo not found)", fix: 'claude mcp add ruflo -- npx -y ruflo@latest mcp start' }];
318
- }
319
- }
320
- catch (_b) {
321
- // continue to next path
322
- }
179
+ async function checkMcpServers() {
180
+ const mcpConfigPaths = [
181
+ join(process.env.HOME || '', '.claude/claude_desktop_config.json'),
182
+ join(process.env.HOME || '', '.config/claude/mcp.json'),
183
+ '.mcp.json'
184
+ ];
185
+ for (const configPath of mcpConfigPaths) {
186
+ if (existsSync(configPath)) {
187
+ try {
188
+ const content = JSON.parse(readFileSync(configPath, 'utf8'));
189
+ const servers = content.mcpServers || content.servers || {};
190
+ const count = Object.keys(servers).length;
191
+ const hasClaudeFlow = 'claude-flow' in servers || 'claude-flow_alpha' in servers || 'ruflo' in servers || 'ruflo_alpha' in servers;
192
+ if (hasClaudeFlow) {
193
+ return { name: 'MCP Servers', status: 'pass', message: `${count} servers (ruflo configured)` };
194
+ }
195
+ else {
196
+ return { name: 'MCP Servers', status: 'warn', message: `${count} servers (ruflo not found)`, fix: 'claude mcp add ruflo -- npx -y ruflo@latest mcp start' };
323
197
  }
324
198
  }
325
- return [2 /*return*/, { name: 'MCP Servers', status: 'warn', message: 'No MCP config found', fix: 'claude mcp add claude-flow npx @claude-flow/cli@v3alpha mcp start' }];
326
- });
327
- });
199
+ catch {
200
+ // continue to next path
201
+ }
202
+ }
203
+ }
204
+ return { name: 'MCP Servers', status: 'warn', message: 'No MCP config found', fix: 'claude mcp add claude-flow npx @claude-flow/cli@v3alpha mcp start' };
328
205
  }
329
206
  // Check disk space (async with proper env inheritance)
330
- function checkDiskSpace() {
331
- var _a;
332
- return __awaiter(this, void 0, Promise, function () {
333
- var output_str, parts, available, usePercent, _b;
334
- return __generator(this, function (_c) {
335
- switch (_c.label) {
336
- case 0:
337
- _c.trys.push([0, 2, , 3]);
338
- if (process.platform === 'win32') {
339
- return [2 /*return*/, { name: 'Disk Space', status: 'pass', message: 'Check skipped on Windows' }];
340
- }
341
- return [4 /*yield*/, runCommand('df -Ph . | tail -1')];
342
- case 1:
343
- output_str = _c.sent();
344
- parts = output_str.split(/\s+/);
345
- available = parts[3];
346
- usePercent = parseInt(((_a = parts[4]) === null || _a === void 0 ? void 0 : _a.replace('%', '')) || '0', 10);
347
- if (isNaN(usePercent)) {
348
- return [2 /*return*/, { name: 'Disk Space', status: 'warn', message: (available || 'unknown') + " available (unable to parse usage)" }];
349
- }
350
- if (usePercent > 90) {
351
- return [2 /*return*/, { name: 'Disk Space', status: 'fail', message: available + " available (" + usePercent + "% used)", fix: 'Free up disk space' }];
352
- }
353
- else if (usePercent > 80) {
354
- return [2 /*return*/, { name: 'Disk Space', status: 'warn', message: available + " available (" + usePercent + "% used)" }];
355
- }
356
- return [2 /*return*/, { name: 'Disk Space', status: 'pass', message: available + " available" }];
357
- case 2:
358
- _b = _c.sent();
359
- return [2 /*return*/, { name: 'Disk Space', status: 'warn', message: 'Unable to check' }];
360
- case 3: return [2 /*return*/];
361
- }
362
- });
363
- });
207
+ async function checkDiskSpace() {
208
+ try {
209
+ if (process.platform === 'win32') {
210
+ return { name: 'Disk Space', status: 'pass', message: 'Check skipped on Windows' };
211
+ }
212
+ // Use df -Ph for POSIX mode (guarantees single-line output even with long device names)
213
+ const output_str = await runCommand('df -Ph . | tail -1');
214
+ const parts = output_str.split(/\s+/);
215
+ // POSIX format: Filesystem Size Used Avail Capacity Mounted
216
+ const available = parts[3];
217
+ const usePercent = parseInt(parts[4]?.replace('%', '') || '0', 10);
218
+ if (isNaN(usePercent)) {
219
+ return { name: 'Disk Space', status: 'warn', message: `${available || 'unknown'} available (unable to parse usage)` };
220
+ }
221
+ if (usePercent > 90) {
222
+ return { name: 'Disk Space', status: 'fail', message: `${available} available (${usePercent}% used)`, fix: 'Free up disk space' };
223
+ }
224
+ else if (usePercent > 80) {
225
+ return { name: 'Disk Space', status: 'warn', message: `${available} available (${usePercent}% used)` };
226
+ }
227
+ return { name: 'Disk Space', status: 'pass', message: `${available} available` };
228
+ }
229
+ catch {
230
+ return { name: 'Disk Space', status: 'warn', message: 'Unable to check' };
231
+ }
364
232
  }
365
233
  // Check TypeScript/build (async with proper env inheritance)
366
- function checkBuildTools() {
367
- return __awaiter(this, void 0, Promise, function () {
368
- var tscVersion, _a;
369
- return __generator(this, function (_b) {
370
- switch (_b.label) {
371
- case 0:
372
- _b.trys.push([0, 2, , 3]);
373
- return [4 /*yield*/, runCommand('npx tsc --version', 10000)];
374
- case 1:
375
- tscVersion = _b.sent();
376
- if (!tscVersion || tscVersion.includes('not found')) {
377
- return [2 /*return*/, { name: 'TypeScript', status: 'warn', message: 'Not installed locally', fix: 'npm install -D typescript' }];
378
- }
379
- return [2 /*return*/, { name: 'TypeScript', status: 'pass', message: tscVersion.replace('Version ', 'v') }];
380
- case 2:
381
- _a = _b.sent();
382
- return [2 /*return*/, { name: 'TypeScript', status: 'warn', message: 'Not installed locally', fix: 'npm install -D typescript' }];
383
- case 3: return [2 /*return*/];
384
- }
385
- });
386
- });
234
+ async function checkBuildTools() {
235
+ try {
236
+ const tscVersion = await runCommand('npx tsc --version', 10000); // tsc can be slow
237
+ if (!tscVersion || tscVersion.includes('not found')) {
238
+ return { name: 'TypeScript', status: 'warn', message: 'Not installed locally', fix: 'npm install -D typescript' };
239
+ }
240
+ return { name: 'TypeScript', status: 'pass', message: tscVersion.replace('Version ', 'v') };
241
+ }
242
+ catch {
243
+ return { name: 'TypeScript', status: 'warn', message: 'Not installed locally', fix: 'npm install -D typescript' };
244
+ }
387
245
  }
388
246
  // Check for stale npx cache (version freshness)
389
- function checkVersionFreshness() {
390
- var _a, _b;
391
- return __awaiter(this, void 0, Promise, function () {
392
- var currentVersion, thisFile, dir, candidate, pkg, parent, isNpx, latestVersion, npmInfo, _c, parseVersion, current, latest, isOutdated, fix, error_1;
393
- return __generator(this, function (_d) {
394
- switch (_d.label) {
395
- case 0:
396
- _d.trys.push([0, 5, , 6]);
397
- currentVersion = '0.0.0';
398
- try {
399
- thisFile = fileURLToPath(import.meta.url);
400
- dir = dirname(thisFile);
401
- // Walk up from the current file's directory until we find the
402
- // package.json that belongs to @claude-flow/cli (or claude-flow/cli).
403
- // Walk until dirname(dir) === dir (filesystem root on any platform).
404
- for (;;) {
405
- candidate = join(dir, 'package.json');
406
- try {
407
- if (existsSync(candidate)) {
408
- pkg = JSON.parse(readFileSync(candidate, 'utf8'));
409
- if (pkg.version &&
410
- typeof pkg.name === 'string' &&
411
- (pkg.name === '@claude-flow/cli' || pkg.name === 'claude-flow' || pkg.name === 'ruflo')) {
412
- currentVersion = pkg.version;
413
- break;
414
- }
415
- }
416
- }
417
- catch (_e) {
418
- // Unreadable/invalid JSON -- skip and keep walking up
419
- }
420
- parent = dirname(dir);
421
- if (parent === dir)
422
- break; // reached root
423
- dir = parent;
247
+ async function checkVersionFreshness() {
248
+ try {
249
+ // Get current CLI version from package.json
250
+ // Use import.meta.url to reliably locate our own package.json,
251
+ // regardless of how deep the compiled file sits (e.g. dist/src/commands/).
252
+ let currentVersion = '0.0.0';
253
+ try {
254
+ const thisFile = fileURLToPath(import.meta.url);
255
+ let dir = dirname(thisFile);
256
+ // Walk up from the current file's directory until we find the
257
+ // package.json that belongs to @claude-flow/cli (or claude-flow/cli).
258
+ // Walk until dirname(dir) === dir (filesystem root on any platform).
259
+ for (;;) {
260
+ const candidate = join(dir, 'package.json');
261
+ try {
262
+ if (existsSync(candidate)) {
263
+ const pkg = JSON.parse(readFileSync(candidate, 'utf8'));
264
+ if (pkg.version &&
265
+ typeof pkg.name === 'string' &&
266
+ (pkg.name === '@claude-flow/cli' || pkg.name === 'claude-flow' || pkg.name === 'ruflo')) {
267
+ currentVersion = pkg.version;
268
+ break;
424
269
  }
425
270
  }
426
- catch (_f) {
427
- // Fall back to a default
428
- currentVersion = '0.0.0';
429
- }
430
- isNpx = ((_a = process.argv[1]) === null || _a === void 0 ? void 0 : _a.includes('_npx')) ||
431
- ((_b = process.env.npm_execpath) === null || _b === void 0 ? void 0 : _b.includes('npx')) ||
432
- process.cwd().includes('_npx');
433
- latestVersion = currentVersion;
434
- _d.label = 1;
435
- case 1:
436
- _d.trys.push([1, 3, , 4]);
437
- return [4 /*yield*/, runCommand('npm view @claude-flow/cli@alpha version', 5000)];
438
- case 2:
439
- npmInfo = _d.sent();
440
- latestVersion = npmInfo.trim();
441
- return [3 /*break*/, 4];
442
- case 3:
443
- _c = _d.sent();
444
- // Can't reach npm registry - skip check
445
- return [2 /*return*/, {
446
- name: 'Version Freshness',
447
- status: 'warn',
448
- message: "v" + currentVersion + " (cannot check registry)"
449
- }];
450
- case 4:
451
- parseVersion = function (v) {
452
- var match = v.match(/^(\d+)\.(\d+)\.(\d+)(?:-[a-zA-Z]+\.(\d+))?/);
453
- if (!match)
454
- return { major: 0, minor: 0, patch: 0, prerelease: 0 };
455
- return {
456
- major: parseInt(match[1], 10) || 0,
457
- minor: parseInt(match[2], 10) || 0,
458
- patch: parseInt(match[3], 10) || 0,
459
- prerelease: parseInt(match[4], 10) || 0
460
- };
461
- };
462
- current = parseVersion(currentVersion);
463
- latest = parseVersion(latestVersion);
464
- isOutdated = (latest.major > current.major ||
465
- (latest.major === current.major && latest.minor > current.minor) ||
466
- (latest.major === current.major && latest.minor === current.minor && latest.patch > current.patch) ||
467
- (latest.major === current.major && latest.minor === current.minor && latest.patch === current.patch && latest.prerelease > current.prerelease));
468
- if (isOutdated) {
469
- fix = isNpx
470
- ? 'rm -rf ~/.npm/_npx/* && npx -y @claude-flow/cli@latest'
471
- : 'npm update @claude-flow/cli';
472
- return [2 /*return*/, {
473
- name: 'Version Freshness',
474
- status: 'warn',
475
- message: "v" + currentVersion + " (latest: v" + latestVersion + ")" + (isNpx ? ' [npx cache stale]' : ''),
476
- fix: fix
477
- }];
478
- }
479
- return [2 /*return*/, {
480
- name: 'Version Freshness',
481
- status: 'pass',
482
- message: "v" + currentVersion + " (up to date)"
483
- }];
484
- case 5:
485
- error_1 = _d.sent();
486
- return [2 /*return*/, {
487
- name: 'Version Freshness',
488
- status: 'warn',
489
- message: 'Unable to check version freshness'
490
- }];
491
- case 6: return [2 /*return*/];
271
+ }
272
+ catch {
273
+ // Unreadable/invalid JSON -- skip and keep walking up
274
+ }
275
+ const parent = dirname(dir);
276
+ if (parent === dir)
277
+ break; // reached root
278
+ dir = parent;
492
279
  }
493
- });
494
- });
280
+ }
281
+ catch {
282
+ // Fall back to a default
283
+ currentVersion = '0.0.0';
284
+ }
285
+ // Check if running via npx (look for _npx in process path or argv)
286
+ const isNpx = process.argv[1]?.includes('_npx') ||
287
+ process.env.npm_execpath?.includes('npx') ||
288
+ process.cwd().includes('_npx');
289
+ // Query npm for latest version (using alpha tag since that's what we publish to)
290
+ let latestVersion = currentVersion;
291
+ try {
292
+ const npmInfo = await runCommand('npm view @claude-flow/cli@alpha version', 5000);
293
+ latestVersion = npmInfo.trim();
294
+ }
295
+ catch {
296
+ // Can't reach npm registry - skip check
297
+ return {
298
+ name: 'Version Freshness',
299
+ status: 'warn',
300
+ message: `v${currentVersion} (cannot check registry)`
301
+ };
302
+ }
303
+ // Parse version numbers for comparison (handle prerelease like 3.0.0-alpha.84)
304
+ const parseVersion = (v) => {
305
+ const match = v.match(/^(\d+)\.(\d+)\.(\d+)(?:-[a-zA-Z]+\.(\d+))?/);
306
+ if (!match)
307
+ return { major: 0, minor: 0, patch: 0, prerelease: 0 };
308
+ return {
309
+ major: parseInt(match[1], 10) || 0,
310
+ minor: parseInt(match[2], 10) || 0,
311
+ patch: parseInt(match[3], 10) || 0,
312
+ prerelease: parseInt(match[4], 10) || 0
313
+ };
314
+ };
315
+ const current = parseVersion(currentVersion);
316
+ const latest = parseVersion(latestVersion);
317
+ // Compare versions (including prerelease number)
318
+ const isOutdated = (latest.major > current.major ||
319
+ (latest.major === current.major && latest.minor > current.minor) ||
320
+ (latest.major === current.major && latest.minor === current.minor && latest.patch > current.patch) ||
321
+ (latest.major === current.major && latest.minor === current.minor && latest.patch === current.patch && latest.prerelease > current.prerelease));
322
+ if (isOutdated) {
323
+ const fix = isNpx
324
+ ? 'rm -rf ~/.npm/_npx/* && npx -y @claude-flow/cli@latest'
325
+ : 'npm update @claude-flow/cli';
326
+ return {
327
+ name: 'Version Freshness',
328
+ status: 'warn',
329
+ message: `v${currentVersion} (latest: v${latestVersion})${isNpx ? ' [npx cache stale]' : ''}`,
330
+ fix
331
+ };
332
+ }
333
+ return {
334
+ name: 'Version Freshness',
335
+ status: 'pass',
336
+ message: `v${currentVersion} (up to date)`
337
+ };
338
+ }
339
+ catch (error) {
340
+ return {
341
+ name: 'Version Freshness',
342
+ status: 'warn',
343
+ message: 'Unable to check version freshness'
344
+ };
345
+ }
495
346
  }
496
347
  // Check Claude Code CLI (async with proper env inheritance)
497
- function checkClaudeCode() {
498
- return __awaiter(this, void 0, Promise, function () {
499
- var version, versionMatch, versionStr, _a;
500
- return __generator(this, function (_b) {
501
- switch (_b.label) {
502
- case 0:
503
- _b.trys.push([0, 2, , 3]);
504
- return [4 /*yield*/, runCommand('claude --version')];
505
- case 1:
506
- version = _b.sent();
507
- versionMatch = version.match(/v?(\d+\.\d+\.\d+)/);
508
- versionStr = versionMatch ? "v" + versionMatch[1] : version;
509
- return [2 /*return*/, { name: 'Claude Code CLI', status: 'pass', message: versionStr }];
510
- case 2:
511
- _a = _b.sent();
512
- return [2 /*return*/, {
513
- name: 'Claude Code CLI',
514
- status: 'warn',
515
- message: 'Not installed',
516
- fix: 'npm install -g @anthropic-ai/claude-code'
517
- }];
518
- case 3: return [2 /*return*/];
519
- }
520
- });
521
- });
348
+ async function checkClaudeCode() {
349
+ try {
350
+ const version = await runCommand('claude --version');
351
+ // Parse version from output like "claude 1.0.0" or "Claude Code v1.0.0"
352
+ const versionMatch = version.match(/v?(\d+\.\d+\.\d+)/);
353
+ const versionStr = versionMatch ? `v${versionMatch[1]}` : version;
354
+ return { name: 'Claude Code CLI', status: 'pass', message: versionStr };
355
+ }
356
+ catch {
357
+ return {
358
+ name: 'Claude Code CLI',
359
+ status: 'warn',
360
+ message: 'Not installed',
361
+ fix: 'npm install -g @anthropic-ai/claude-code'
362
+ };
363
+ }
522
364
  }
523
365
  // Install Claude Code CLI
524
- function installClaudeCode() {
525
- return __awaiter(this, void 0, Promise, function () {
526
- return __generator(this, function (_a) {
527
- try {
528
- output.writeln();
529
- output.writeln(output.bold('Installing Claude Code CLI...'));
530
- execSync('npm install -g @anthropic-ai/claude-code', {
531
- encoding: 'utf8',
532
- stdio: 'inherit'
533
- });
534
- output.writeln(output.success('Claude Code CLI installed successfully!'));
535
- return [2 /*return*/, true];
536
- }
537
- catch (error) {
538
- output.writeln(output.error('Failed to install Claude Code CLI'));
539
- if (error instanceof Error) {
540
- output.writeln(output.dim(error.message));
541
- }
542
- return [2 /*return*/, false];
543
- }
544
- return [2 /*return*/];
366
+ async function installClaudeCode() {
367
+ try {
368
+ output.writeln();
369
+ output.writeln(output.bold('Installing Claude Code CLI...'));
370
+ execSync('npm install -g @anthropic-ai/claude-code', {
371
+ encoding: 'utf8',
372
+ stdio: 'inherit'
545
373
  });
546
- });
374
+ output.writeln(output.success('Claude Code CLI installed successfully!'));
375
+ return true;
376
+ }
377
+ catch (error) {
378
+ output.writeln(output.error('Failed to install Claude Code CLI'));
379
+ if (error instanceof Error) {
380
+ output.writeln(output.dim(error.message));
381
+ }
382
+ return false;
383
+ }
547
384
  }
548
385
  // Check agentic-flow v3 integration (filesystem-based to avoid slow WASM/DB init)
549
- function checkAgenticFlow() {
550
- return __awaiter(this, void 0, Promise, function () {
551
- var candidates, pkgJsonPath, _i, candidates_1, p, pkg, version, exports, features;
552
- return __generator(this, function (_a) {
553
- try {
554
- candidates = [
555
- join(process.cwd(), 'node_modules', 'agentic-flow', 'package.json'),
556
- join(process.cwd(), '..', 'node_modules', 'agentic-flow', 'package.json'),
557
- ];
558
- pkgJsonPath = null;
559
- for (_i = 0, candidates_1 = candidates; _i < candidates_1.length; _i++) {
560
- p = candidates_1[_i];
561
- if (existsSync(p)) {
562
- pkgJsonPath = p;
563
- break;
564
- }
565
- }
566
- if (!pkgJsonPath) {
567
- return [2 /*return*/, {
568
- name: 'agentic-flow',
569
- status: 'warn',
570
- message: 'Not installed (optional — embeddings/routing will use fallbacks)',
571
- fix: 'npm install agentic-flow@latest'
572
- }];
573
- }
574
- pkg = JSON.parse(readFileSync(pkgJsonPath, 'utf-8'));
575
- version = pkg.version || 'unknown';
576
- exports = pkg.exports || {};
577
- features = [
578
- exports['./reasoningbank'] ? 'ReasoningBank' : null,
579
- exports['./router'] ? 'Router' : null,
580
- exports['./transport/quic'] ? 'QUIC' : null,
581
- ].filter(Boolean);
582
- return [2 /*return*/, {
583
- name: 'agentic-flow',
584
- status: 'pass',
585
- message: "v" + version + " (" + features.join(', ') + ")"
586
- }];
386
+ async function checkAgenticFlow() {
387
+ try {
388
+ // Walk common node_modules paths to find agentic-flow/package.json
389
+ const candidates = [
390
+ join(process.cwd(), 'node_modules', 'agentic-flow', 'package.json'),
391
+ join(process.cwd(), '..', 'node_modules', 'agentic-flow', 'package.json'),
392
+ ];
393
+ let pkgJsonPath = null;
394
+ for (const p of candidates) {
395
+ if (existsSync(p)) {
396
+ pkgJsonPath = p;
397
+ break;
587
398
  }
588
- catch (_b) {
589
- return [2 /*return*/, { name: 'agentic-flow', status: 'warn', message: 'Check failed' }];
590
- }
591
- return [2 /*return*/];
592
- });
593
- });
399
+ }
400
+ if (!pkgJsonPath) {
401
+ return {
402
+ name: 'agentic-flow',
403
+ status: 'warn',
404
+ message: 'Not installed (optional — embeddings/routing will use fallbacks)',
405
+ fix: 'npm install agentic-flow@latest'
406
+ };
407
+ }
408
+ const pkg = JSON.parse(readFileSync(pkgJsonPath, 'utf-8'));
409
+ const version = pkg.version || 'unknown';
410
+ const exports = pkg.exports || {};
411
+ const features = [
412
+ exports['./reasoningbank'] ? 'ReasoningBank' : null,
413
+ exports['./router'] ? 'Router' : null,
414
+ exports['./transport/quic'] ? 'QUIC' : null,
415
+ ].filter(Boolean);
416
+ return {
417
+ name: 'agentic-flow',
418
+ status: 'pass',
419
+ message: `v${version} (${features.join(', ')})`
420
+ };
421
+ }
422
+ catch {
423
+ return { name: 'agentic-flow', status: 'warn', message: 'Check failed' };
424
+ }
594
425
  }
595
426
  // Format health check result
596
427
  function formatCheck(check) {
597
- var icon = check.status === 'pass' ? output.success('✓') :
428
+ const icon = check.status === 'pass' ? output.success('✓') :
598
429
  check.status === 'warn' ? output.warning('⚠') :
599
430
  output.error('✗');
600
- return icon + " " + check.name + ": " + check.message;
431
+ return `${icon} ${check.name}: ${check.message}`;
601
432
  }
602
433
  // Main doctor command
603
- export var doctorCommand = {
434
+ export const doctorCommand = {
604
435
  name: 'doctor',
605
436
  description: 'System diagnostics and health checks',
606
437
  options: [
@@ -609,14 +440,14 @@ export var doctorCommand = {
609
440
  short: 'f',
610
441
  description: 'Show fix commands for issues',
611
442
  type: 'boolean',
612
- "default": false
443
+ default: false
613
444
  },
614
445
  {
615
446
  name: 'install',
616
447
  short: 'i',
617
448
  description: 'Auto-install missing dependencies (Claude Code CLI)',
618
449
  type: 'boolean',
619
- "default": false
450
+ default: false
620
451
  },
621
452
  {
622
453
  name: 'component',
@@ -629,7 +460,7 @@ export var doctorCommand = {
629
460
  short: 'v',
630
461
  description: 'Verbose output',
631
462
  type: 'boolean',
632
- "default": false
463
+ default: false
633
464
  }
634
465
  ],
635
466
  examples: [
@@ -639,163 +470,150 @@ export var doctorCommand = {
639
470
  { command: 'claude-flow doctor -c version', description: 'Check for stale npx cache' },
640
471
  { command: 'claude-flow doctor -c claude', description: 'Check Claude Code CLI only' }
641
472
  ],
642
- action: function (ctx) { return __awaiter(void 0, void 0, Promise, function () {
643
- var showFix, autoInstall, component, verbose, allChecks, componentMap, checksToRun, results, fixes, spinner, checkResults, _i, checkResults_1, settledResult, result, errorResult, error_2, claudeCodeResult, installed, newCheck, idx, fixIdx, passed, warnings, failed, summaryParts, _a, fixes_1, fix;
644
- var _b;
645
- return __generator(this, function (_c) {
646
- switch (_c.label) {
647
- case 0:
648
- showFix = ctx.flags.fix;
649
- autoInstall = ctx.flags.install;
650
- component = ctx.flags.component;
651
- verbose = ctx.flags.verbose;
652
- output.writeln();
653
- output.writeln(output.bold('RuFlo Doctor'));
654
- output.writeln(output.dim('System diagnostics and health check'));
655
- output.writeln(output.dim('─'.repeat(50)));
656
- output.writeln();
657
- allChecks = [
658
- checkVersionFreshness,
659
- checkNodeVersion,
660
- checkNpmVersion,
661
- checkClaudeCode,
662
- checkGit,
663
- checkGitRepo,
664
- checkConfigFile,
665
- checkDaemonStatus,
666
- checkMemoryDatabase,
667
- checkApiKeys,
668
- checkMcpServers,
669
- checkDiskSpace,
670
- checkBuildTools,
671
- checkAgenticFlow
672
- ];
673
- componentMap = {
674
- 'version': checkVersionFreshness,
675
- 'freshness': checkVersionFreshness,
676
- 'node': checkNodeVersion,
677
- 'npm': checkNpmVersion,
678
- 'claude': checkClaudeCode,
679
- 'config': checkConfigFile,
680
- 'daemon': checkDaemonStatus,
681
- 'memory': checkMemoryDatabase,
682
- 'api': checkApiKeys,
683
- 'git': checkGit,
684
- 'mcp': checkMcpServers,
685
- 'disk': checkDiskSpace,
686
- 'typescript': checkBuildTools,
687
- 'agentic-flow': checkAgenticFlow
688
- };
689
- checksToRun = allChecks;
690
- if (component && componentMap[component]) {
691
- checksToRun = [componentMap[component]];
692
- }
693
- results = [];
694
- fixes = [];
695
- spinner = output.createSpinner({ text: 'Running health checks in parallel...', spinner: 'dots' });
696
- spinner.start();
697
- _c.label = 1;
698
- case 1:
699
- _c.trys.push([1, 3, , 4]);
700
- return [4 /*yield*/, Promise.allSettled(checksToRun.map(function (check) { return check(); }))];
701
- case 2:
702
- checkResults = _c.sent();
703
- spinner.stop();
704
- // Process results in order
705
- for (_i = 0, checkResults_1 = checkResults; _i < checkResults_1.length; _i++) {
706
- settledResult = checkResults_1[_i];
707
- if (settledResult.status === 'fulfilled') {
708
- result = settledResult.value;
709
- results.push(result);
710
- output.writeln(formatCheck(result));
711
- if (result.fix && (result.status === 'fail' || result.status === 'warn')) {
712
- fixes.push(result.name + ": " + result.fix);
713
- }
714
- }
715
- else {
716
- errorResult = {
717
- name: 'Check',
718
- status: 'fail',
719
- message: ((_b = settledResult.reason) === null || _b === void 0 ? void 0 : _b.message) || 'Unknown error'
720
- };
721
- results.push(errorResult);
722
- output.writeln(formatCheck(errorResult));
723
- }
473
+ action: async (ctx) => {
474
+ const showFix = ctx.flags.fix;
475
+ const autoInstall = ctx.flags.install;
476
+ const component = ctx.flags.component;
477
+ const verbose = ctx.flags.verbose;
478
+ output.writeln();
479
+ output.writeln(output.bold('RuFlo Doctor'));
480
+ output.writeln(output.dim('System diagnostics and health check'));
481
+ output.writeln(output.dim('─'.repeat(50)));
482
+ output.writeln();
483
+ const allChecks = [
484
+ checkVersionFreshness,
485
+ checkNodeVersion,
486
+ checkNpmVersion,
487
+ checkClaudeCode,
488
+ checkGit,
489
+ checkGitRepo,
490
+ checkConfigFile,
491
+ checkDaemonStatus,
492
+ checkMemoryDatabase,
493
+ checkApiKeys,
494
+ checkMcpServers,
495
+ checkDiskSpace,
496
+ checkBuildTools,
497
+ checkAgenticFlow
498
+ ];
499
+ const componentMap = {
500
+ 'version': checkVersionFreshness,
501
+ 'freshness': checkVersionFreshness,
502
+ 'node': checkNodeVersion,
503
+ 'npm': checkNpmVersion,
504
+ 'claude': checkClaudeCode,
505
+ 'config': checkConfigFile,
506
+ 'daemon': checkDaemonStatus,
507
+ 'memory': checkMemoryDatabase,
508
+ 'api': checkApiKeys,
509
+ 'git': checkGit,
510
+ 'mcp': checkMcpServers,
511
+ 'disk': checkDiskSpace,
512
+ 'typescript': checkBuildTools,
513
+ 'agentic-flow': checkAgenticFlow
514
+ };
515
+ let checksToRun = allChecks;
516
+ if (component && componentMap[component]) {
517
+ checksToRun = [componentMap[component]];
518
+ }
519
+ const results = [];
520
+ const fixes = [];
521
+ // OPTIMIZATION: Run all checks in parallel for 3-5x faster execution
522
+ const spinner = output.createSpinner({ text: 'Running health checks in parallel...', spinner: 'dots' });
523
+ spinner.start();
524
+ try {
525
+ // Execute all checks concurrently
526
+ const checkResults = await Promise.allSettled(checksToRun.map(check => check()));
527
+ spinner.stop();
528
+ // Process results in order
529
+ for (const settledResult of checkResults) {
530
+ if (settledResult.status === 'fulfilled') {
531
+ const result = settledResult.value;
532
+ results.push(result);
533
+ output.writeln(formatCheck(result));
534
+ if (result.fix && (result.status === 'fail' || result.status === 'warn')) {
535
+ fixes.push(`${result.name}: ${result.fix}`);
724
536
  }
725
- return [3 /*break*/, 4];
726
- case 3:
727
- error_2 = _c.sent();
728
- spinner.stop();
729
- output.writeln(output.error('Failed to run health checks'));
730
- return [3 /*break*/, 4];
731
- case 4:
732
- if (!autoInstall) return [3 /*break*/, 7];
733
- claudeCodeResult = results.find(function (r) { return r.name === 'Claude Code CLI'; });
734
- if (!(claudeCodeResult && claudeCodeResult.status !== 'pass')) return [3 /*break*/, 7];
735
- return [4 /*yield*/, installClaudeCode()];
736
- case 5:
737
- installed = _c.sent();
738
- if (!installed) return [3 /*break*/, 7];
739
- return [4 /*yield*/, checkClaudeCode()];
740
- case 6:
741
- newCheck = _c.sent();
742
- idx = results.findIndex(function (r) { return r.name === 'Claude Code CLI'; });
537
+ }
538
+ else {
539
+ const errorResult = {
540
+ name: 'Check',
541
+ status: 'fail',
542
+ message: settledResult.reason?.message || 'Unknown error'
543
+ };
544
+ results.push(errorResult);
545
+ output.writeln(formatCheck(errorResult));
546
+ }
547
+ }
548
+ }
549
+ catch (error) {
550
+ spinner.stop();
551
+ output.writeln(output.error('Failed to run health checks'));
552
+ }
553
+ // Auto-install missing dependencies if requested
554
+ if (autoInstall) {
555
+ const claudeCodeResult = results.find(r => r.name === 'Claude Code CLI');
556
+ if (claudeCodeResult && claudeCodeResult.status !== 'pass') {
557
+ const installed = await installClaudeCode();
558
+ if (installed) {
559
+ // Re-check Claude Code after installation
560
+ const newCheck = await checkClaudeCode();
561
+ const idx = results.findIndex(r => r.name === 'Claude Code CLI');
743
562
  if (idx !== -1) {
744
563
  results[idx] = newCheck;
745
- fixIdx = fixes.findIndex(function (f) { return f.startsWith('Claude Code CLI:'); });
564
+ // Update fixes list
565
+ const fixIdx = fixes.findIndex(f => f.startsWith('Claude Code CLI:'));
746
566
  if (fixIdx !== -1 && newCheck.status === 'pass') {
747
567
  fixes.splice(fixIdx, 1);
748
568
  }
749
569
  }
750
570
  output.writeln(formatCheck(newCheck));
751
- _c.label = 7;
752
- case 7:
753
- passed = results.filter(function (r) { return r.status === 'pass'; }).length;
754
- warnings = results.filter(function (r) { return r.status === 'warn'; }).length;
755
- failed = results.filter(function (r) { return r.status === 'fail'; }).length;
756
- output.writeln();
757
- output.writeln(output.dim('─'.repeat(50)));
758
- output.writeln();
759
- summaryParts = [
760
- output.success(passed + " passed"),
761
- warnings > 0 ? output.warning(warnings + " warnings") : null,
762
- failed > 0 ? output.error(failed + " failed") : null
763
- ].filter(Boolean);
764
- output.writeln("Summary: " + summaryParts.join(', '));
765
- // Show fixes
766
- if (showFix && fixes.length > 0) {
767
- output.writeln();
768
- output.writeln(output.bold('Suggested Fixes:'));
769
- output.writeln();
770
- for (_a = 0, fixes_1 = fixes; _a < fixes_1.length; _a++) {
771
- fix = fixes_1[_a];
772
- output.writeln(output.dim(" " + fix));
773
- }
774
- }
775
- else if (fixes.length > 0 && !showFix) {
776
- output.writeln();
777
- output.writeln(output.dim("Run with --fix to see " + fixes.length + " suggested fix" + (fixes.length > 1 ? 'es' : '')));
778
- }
779
- // Overall result
780
- if (failed > 0) {
781
- output.writeln();
782
- output.writeln(output.error('Some checks failed. Please address the issues above.'));
783
- return [2 /*return*/, { success: false, exitCode: 1, data: { passed: passed, warnings: warnings, failed: failed, results: results } }];
784
- }
785
- else if (warnings > 0) {
786
- output.writeln();
787
- output.writeln(output.warning('All checks passed with some warnings.'));
788
- return [2 /*return*/, { success: true, data: { passed: passed, warnings: warnings, failed: failed, results: results } }];
789
- }
790
- else {
791
- output.writeln();
792
- output.writeln(output.success('All checks passed! System is healthy.'));
793
- return [2 /*return*/, { success: true, data: { passed: passed, warnings: warnings, failed: failed, results: results } }];
794
- }
795
- return [2 /*return*/];
571
+ }
796
572
  }
797
- });
798
- }); }
573
+ }
574
+ // Summary
575
+ const passed = results.filter(r => r.status === 'pass').length;
576
+ const warnings = results.filter(r => r.status === 'warn').length;
577
+ const failed = results.filter(r => r.status === 'fail').length;
578
+ output.writeln();
579
+ output.writeln(output.dim('─'.repeat(50)));
580
+ output.writeln();
581
+ const summaryParts = [
582
+ output.success(`${passed} passed`),
583
+ warnings > 0 ? output.warning(`${warnings} warnings`) : null,
584
+ failed > 0 ? output.error(`${failed} failed`) : null
585
+ ].filter(Boolean);
586
+ output.writeln(`Summary: ${summaryParts.join(', ')}`);
587
+ // Show fixes
588
+ if (showFix && fixes.length > 0) {
589
+ output.writeln();
590
+ output.writeln(output.bold('Suggested Fixes:'));
591
+ output.writeln();
592
+ for (const fix of fixes) {
593
+ output.writeln(output.dim(` ${fix}`));
594
+ }
595
+ }
596
+ else if (fixes.length > 0 && !showFix) {
597
+ output.writeln();
598
+ output.writeln(output.dim(`Run with --fix to see ${fixes.length} suggested fix${fixes.length > 1 ? 'es' : ''}`));
599
+ }
600
+ // Overall result
601
+ if (failed > 0) {
602
+ output.writeln();
603
+ output.writeln(output.error('Some checks failed. Please address the issues above.'));
604
+ return { success: false, exitCode: 1, data: { passed, warnings, failed, results } };
605
+ }
606
+ else if (warnings > 0) {
607
+ output.writeln();
608
+ output.writeln(output.warning('All checks passed with some warnings.'));
609
+ return { success: true, data: { passed, warnings, failed, results } };
610
+ }
611
+ else {
612
+ output.writeln();
613
+ output.writeln(output.success('All checks passed! System is healthy.'));
614
+ return { success: true, data: { passed, warnings, failed, results } };
615
+ }
616
+ }
799
617
  };
800
618
  export default doctorCommand;
801
619
  //# sourceMappingURL=doctor.js.map