kynjal-cli 4.0.0 → 4.0.2

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
@@ -2,51 +2,6 @@
2
2
  * V3 CLI RuVector Optimize Command
3
3
  * Optimization analysis and recommendations
4
4
  */
5
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
6
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7
- return new (P || (P = Promise))(function (resolve, reject) {
8
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
9
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
10
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
11
- step((generator = generator.apply(thisArg, _arguments || [])).next());
12
- });
13
- };
14
- var __generator = (this && this.__generator) || function (thisArg, body) {
15
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
16
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
17
- function verb(n) { return function (v) { return step([n, v]); }; }
18
- function step(op) {
19
- if (f) throw new TypeError("Generator is already executing.");
20
- while (_) try {
21
- 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;
22
- if (y = 0, t) op = [op[0] & 2, t.value];
23
- switch (op[0]) {
24
- case 0: case 1: t = op; break;
25
- case 4: _.label++; return { value: op[1], done: false };
26
- case 5: _.label++; y = op[1]; op = [0]; continue;
27
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
28
- default:
29
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
30
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
31
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
32
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
33
- if (t[2]) _.ops.pop();
34
- _.trys.pop(); continue;
35
- }
36
- op = body.call(thisArg, _);
37
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
38
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
39
- }
40
- };
41
- var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
42
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
43
- if (ar || !(i in from)) {
44
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
45
- ar[i] = from[i];
46
- }
47
- }
48
- return to.concat(ar || Array.prototype.slice.call(from));
49
- };
50
5
  import { output } from '../../output.js';
51
6
  import { confirm } from '../../prompt.js';
52
7
  /**
@@ -60,13 +15,13 @@ function getConnectionConfig(ctx) {
60
15
  user: ctx.flags.user || process.env.PGUSER || 'postgres',
61
16
  password: ctx.flags.password || process.env.PGPASSWORD || '',
62
17
  ssl: ctx.flags.ssl || process.env.PGSSLMODE === 'require',
63
- schema: ctx.flags.schema || 'claude_flow'
18
+ schema: ctx.flags.schema || 'claude_flow',
64
19
  };
65
20
  }
66
21
  /**
67
22
  * RuVector optimize command
68
23
  */
69
- export var optimizeCommand = {
24
+ export const optimizeCommand = {
70
25
  name: 'optimize',
71
26
  description: 'Optimization analysis and recommendations',
72
27
  options: [
@@ -75,74 +30,74 @@ export var optimizeCommand = {
75
30
  short: 'a',
76
31
  description: 'Analyze current performance',
77
32
  type: 'boolean',
78
- "default": true
33
+ default: true,
79
34
  },
80
35
  {
81
36
  name: 'apply',
82
37
  description: 'Apply suggested optimizations',
83
38
  type: 'boolean',
84
- "default": false
39
+ default: false,
85
40
  },
86
41
  {
87
42
  name: 'index',
88
43
  short: 'i',
89
44
  description: 'Optimize specific index',
90
- type: 'string'
45
+ type: 'string',
91
46
  },
92
47
  {
93
48
  name: 'vacuum',
94
49
  description: 'Run VACUUM ANALYZE',
95
50
  type: 'boolean',
96
- "default": false
51
+ default: false,
97
52
  },
98
53
  {
99
54
  name: 'reindex',
100
55
  description: 'Rebuild indexes',
101
56
  type: 'boolean',
102
- "default": false
57
+ default: false,
103
58
  },
104
59
  {
105
60
  name: 'host',
106
61
  short: 'h',
107
62
  description: 'PostgreSQL host',
108
63
  type: 'string',
109
- "default": 'localhost'
64
+ default: 'localhost',
110
65
  },
111
66
  {
112
67
  name: 'port',
113
68
  short: 'p',
114
69
  description: 'PostgreSQL port',
115
70
  type: 'number',
116
- "default": 5432
71
+ default: 5432,
117
72
  },
118
73
  {
119
74
  name: 'database',
120
75
  description: 'Database name',
121
- type: 'string'
76
+ type: 'string',
122
77
  },
123
78
  {
124
79
  name: 'user',
125
80
  short: 'u',
126
81
  description: 'Database user',
127
- type: 'string'
82
+ type: 'string',
128
83
  },
129
84
  {
130
85
  name: 'password',
131
86
  description: 'Database password',
132
- type: 'string'
87
+ type: 'string',
133
88
  },
134
89
  {
135
90
  name: 'ssl',
136
91
  description: 'Enable SSL',
137
92
  type: 'boolean',
138
- "default": false
93
+ default: false,
139
94
  },
140
95
  {
141
96
  name: 'schema',
142
97
  short: 's',
143
98
  description: 'Schema name',
144
99
  type: 'string',
145
- "default": 'claude_flow'
100
+ default: 'claude_flow',
146
101
  },
147
102
  ],
148
103
  examples: [
@@ -151,203 +106,204 @@ export var optimizeCommand = {
151
106
  { command: 'claude-flow ruvector optimize --vacuum', description: 'Run VACUUM ANALYZE' },
152
107
  { command: 'claude-flow ruvector optimize --reindex', description: 'Rebuild all indexes' },
153
108
  ],
154
- action: function (ctx) { return __awaiter(void 0, void 0, Promise, function () {
155
- var config, applyOptimizations, runVacuum, runReindex, specificIndex, spinner, recommendations, pg, _a, client, schemaResult, tables, _i, _b, row, tableStatsResult, _c, _d, row, deadRatio, indexStatsResult, _e, _f, row, sizeKB, vectorIndexes, _g, vectorIndexes_1, idx, optionsResult, options, m, efConstruction, mValue, efValue, countResult, rowCount, lists, listsValue, countResult, rowCount, recommendedLists, settingsResult, settings, _h, _j, row, workMemMB, maintMemMB, critical, high, medium, low, displayRecommendations, confirmApply, applyClient, _k, _l, rec, error_1, error_2;
156
- var _m;
157
- return __generator(this, function (_o) {
158
- switch (_o.label) {
159
- case 0:
160
- config = getConnectionConfig(ctx);
161
- applyOptimizations = ctx.flags.apply;
162
- runVacuum = ctx.flags.vacuum;
163
- runReindex = ctx.flags.reindex;
164
- specificIndex = ctx.flags.index;
165
- output.writeln();
166
- output.writeln(output.bold('RuVector Optimization Analysis'));
167
- output.writeln(output.dim('='.repeat(60)));
168
- output.writeln();
169
- if (!config.database) {
170
- output.printError('Database name is required. Use --database or -d flag, or set PGDATABASE env.');
171
- return [2 /*return*/, { success: false, exitCode: 1 }];
172
- }
173
- spinner = output.createSpinner({ text: 'Connecting to PostgreSQL...', spinner: 'dots' });
174
- spinner.start();
175
- recommendations = [];
176
- _o.label = 1;
177
- case 1:
178
- _o.trys.push([1, 41, , 42]);
179
- pg = null;
180
- _o.label = 2;
181
- case 2:
182
- _o.trys.push([2, 4, , 5]);
183
- return [4 /*yield*/, import('pg')];
184
- case 3:
185
- pg = _o.sent();
186
- return [3 /*break*/, 5];
187
- case 4:
188
- _a = _o.sent();
189
- spinner.fail('PostgreSQL driver not found');
190
- output.printError('Install pg package: npm install pg');
191
- return [2 /*return*/, { success: false, exitCode: 1 }];
192
- case 5:
193
- client = new pg.Client({
194
- host: config.host,
195
- port: config.port,
196
- database: config.database,
197
- user: config.user,
198
- password: config.password,
199
- ssl: config.ssl ? { rejectUnauthorized: false } : false
200
- });
201
- return [4 /*yield*/, client.connect()];
202
- case 6:
203
- _o.sent();
204
- spinner.succeed('Connected to PostgreSQL');
205
- return [4 /*yield*/, client.query("\n SELECT schema_name FROM information_schema.schemata WHERE schema_name = $1\n ", [config.schema])];
206
- case 7:
207
- schemaResult = _o.sent();
208
- if (!(schemaResult.rows.length === 0)) return [3 /*break*/, 9];
209
- output.printError("Schema \"" + config.schema + "\" not found");
210
- return [4 /*yield*/, client.end()];
211
- case 8:
212
- _o.sent();
213
- return [2 /*return*/, { success: false, exitCode: 1 }];
214
- case 9:
215
- if (!runVacuum) return [3 /*break*/, 15];
216
- spinner.setText('Running VACUUM ANALYZE...');
217
- spinner.start();
218
- return [4 /*yield*/, client.query("\n SELECT table_name FROM information_schema.tables\n WHERE table_schema = $1 AND table_type = 'BASE TABLE'\n ", [config.schema])];
219
- case 10:
220
- tables = _o.sent();
221
- _i = 0, _b = tables.rows;
222
- _o.label = 11;
223
- case 11:
224
- if (!(_i < _b.length)) return [3 /*break*/, 14];
225
- row = _b[_i];
226
- return [4 /*yield*/, client.query("VACUUM ANALYZE " + config.schema + "." + row.table_name)];
227
- case 12:
228
- _o.sent();
229
- _o.label = 13;
230
- case 13:
231
- _i++;
232
- return [3 /*break*/, 11];
233
- case 14:
234
- spinner.succeed('VACUUM ANALYZE completed');
235
- _o.label = 15;
236
- case 15:
237
- if (!runReindex) return [3 /*break*/, 19];
238
- spinner.setText('Rebuilding indexes...');
239
- spinner.start();
240
- if (!specificIndex) return [3 /*break*/, 17];
241
- return [4 /*yield*/, client.query("REINDEX INDEX " + config.schema + "." + specificIndex)];
242
- case 16:
243
- _o.sent();
244
- spinner.succeed("Index " + specificIndex + " rebuilt");
245
- return [3 /*break*/, 19];
246
- case 17: return [4 /*yield*/, client.query("REINDEX SCHEMA " + config.schema)];
247
- case 18:
248
- _o.sent();
109
+ action: async (ctx) => {
110
+ const config = getConnectionConfig(ctx);
111
+ const applyOptimizations = ctx.flags.apply;
112
+ const runVacuum = ctx.flags.vacuum;
113
+ const runReindex = ctx.flags.reindex;
114
+ const specificIndex = ctx.flags.index;
115
+ output.writeln();
116
+ output.writeln(output.bold('RuVector Optimization Analysis'));
117
+ output.writeln(output.dim('='.repeat(60)));
118
+ output.writeln();
119
+ if (!config.database) {
120
+ output.printError('Database name is required. Use --database or -d flag, or set PGDATABASE env.');
121
+ return { success: false, exitCode: 1 };
122
+ }
123
+ const spinner = output.createSpinner({ text: 'Connecting to PostgreSQL...', spinner: 'dots' });
124
+ spinner.start();
125
+ const recommendations = [];
126
+ try {
127
+ // Import pg
128
+ let pg = null;
129
+ try {
130
+ pg = await import('pg');
131
+ }
132
+ catch {
133
+ spinner.fail('PostgreSQL driver not found');
134
+ output.printError('Install pg package: npm install pg');
135
+ return { success: false, exitCode: 1 };
136
+ }
137
+ const client = new pg.Client({
138
+ host: config.host,
139
+ port: config.port,
140
+ database: config.database,
141
+ user: config.user,
142
+ password: config.password,
143
+ ssl: config.ssl ? { rejectUnauthorized: false } : false,
144
+ });
145
+ await client.connect();
146
+ spinner.succeed('Connected to PostgreSQL');
147
+ // Check schema exists
148
+ const schemaResult = await client.query(`
149
+ SELECT schema_name FROM information_schema.schemata WHERE schema_name = $1
150
+ `, [config.schema]);
151
+ if (schemaResult.rows.length === 0) {
152
+ output.printError(`Schema "${config.schema}" not found`);
153
+ await client.end();
154
+ return { success: false, exitCode: 1 };
155
+ }
156
+ // Run VACUUM if requested
157
+ if (runVacuum) {
158
+ spinner.setText('Running VACUUM ANALYZE...');
159
+ spinner.start();
160
+ const tables = await client.query(`
161
+ SELECT table_name FROM information_schema.tables
162
+ WHERE table_schema = $1 AND table_type = 'BASE TABLE'
163
+ `, [config.schema]);
164
+ for (const row of tables.rows) {
165
+ await client.query(`VACUUM ANALYZE ${config.schema}.${row.table_name}`);
166
+ }
167
+ spinner.succeed('VACUUM ANALYZE completed');
168
+ }
169
+ // Rebuild indexes if requested
170
+ if (runReindex) {
171
+ spinner.setText('Rebuilding indexes...');
172
+ spinner.start();
173
+ if (specificIndex) {
174
+ await client.query(`REINDEX INDEX ${config.schema}.${specificIndex}`);
175
+ spinner.succeed(`Index ${specificIndex} rebuilt`);
176
+ }
177
+ else {
178
+ await client.query(`REINDEX SCHEMA ${config.schema}`);
249
179
  spinner.succeed('All indexes rebuilt');
250
- _o.label = 19;
251
- case 19:
252
- // Analyze table statistics
253
- spinner.setText('Analyzing table statistics...');
254
- spinner.start();
255
- return [4 /*yield*/, client.query("\n SELECT\n relname as table_name,\n n_live_tup as live_rows,\n n_dead_tup as dead_rows,\n last_vacuum,\n last_autovacuum,\n last_analyze,\n last_autoanalyze\n FROM pg_stat_user_tables\n WHERE schemaname = $1\n ", [config.schema])];
256
- case 20:
257
- tableStatsResult = _o.sent();
258
- for (_c = 0, _d = tableStatsResult.rows; _c < _d.length; _c++) {
259
- row = _d[_c];
260
- deadRatio = row.live_rows > 0 ? row.dead_rows / row.live_rows : 0;
261
- // Check for high dead tuple ratio
262
- if (deadRatio > 0.1) {
263
- recommendations.push({
264
- category: 'Table Bloat',
265
- priority: deadRatio > 0.3 ? 'critical' : 'high',
266
- issue: "Table \"" + row.table_name + "\" has " + (deadRatio * 100).toFixed(1) + "% dead tuples",
267
- recommendation: 'Run VACUUM to reclaim space',
268
- sql: "VACUUM ANALYZE " + config.schema + "." + row.table_name,
269
- impact: 'Reduces storage and improves query performance'
270
- });
271
- }
272
- // Check for missing statistics
273
- if (!row.last_analyze && !row.last_autoanalyze) {
274
- recommendations.push({
275
- category: 'Statistics',
276
- priority: 'medium',
277
- issue: "Table \"" + row.table_name + "\" has never been analyzed",
278
- recommendation: 'Run ANALYZE to collect statistics',
279
- sql: "ANALYZE " + config.schema + "." + row.table_name,
280
- impact: 'Improves query planner decisions'
281
- });
282
- }
283
- }
284
- spinner.succeed('Table statistics analyzed');
285
- // Analyze indexes
286
- spinner.setText('Analyzing index health...');
287
- spinner.start();
288
- return [4 /*yield*/, client.query("\n SELECT\n i.relname as index_name,\n t.relname as table_name,\n am.amname as index_type,\n pg_relation_size(i.oid) as index_size,\n idx.indisvalid as is_valid,\n idx.indisready as is_ready,\n idx.indislive as is_live,\n pg_stat_user_indexes.idx_scan as scans,\n pg_stat_user_indexes.idx_tup_read as tuples_read,\n pg_stat_user_indexes.idx_tup_fetch as tuples_fetched\n FROM pg_index idx\n JOIN pg_class i ON i.oid = idx.indexrelid\n JOIN pg_class t ON t.oid = idx.indrelid\n JOIN pg_namespace n ON n.oid = t.relnamespace\n JOIN pg_am am ON am.oid = i.relam\n LEFT JOIN pg_stat_user_indexes ON pg_stat_user_indexes.indexrelid = i.oid\n WHERE n.nspname = $1\n ", [config.schema])];
289
- case 21:
290
- indexStatsResult = _o.sent();
291
- for (_e = 0, _f = indexStatsResult.rows; _e < _f.length; _e++) {
292
- row = _f[_e];
293
- // Check for invalid indexes
294
- if (!row.is_valid) {
295
- recommendations.push({
296
- category: 'Index Health',
297
- priority: 'critical',
298
- issue: "Index \"" + row.index_name + "\" is invalid",
299
- recommendation: 'Rebuild the index',
300
- sql: "REINDEX INDEX " + config.schema + "." + row.index_name,
301
- impact: 'Index is not being used for queries'
302
- });
303
- }
304
- // Check for unused indexes (skip vector indexes as they may be new)
305
- if (row.scans === 0 && row.index_type !== 'hnsw' && row.index_type !== 'ivfflat') {
306
- sizeKB = parseInt(row.index_size, 10) / 1024;
307
- if (sizeKB > 100) {
308
- recommendations.push({
309
- category: 'Unused Index',
310
- priority: 'low',
311
- issue: "Index \"" + row.index_name + "\" has never been used (" + (sizeKB / 1024).toFixed(2) + " MB)",
312
- recommendation: 'Consider dropping if not needed',
313
- sql: "-- DROP INDEX IF EXISTS " + config.schema + "." + row.index_name,
314
- impact: 'Reduces storage and write overhead'
315
- });
316
- }
317
- }
180
+ }
181
+ }
182
+ // Analyze table statistics
183
+ spinner.setText('Analyzing table statistics...');
184
+ spinner.start();
185
+ const tableStatsResult = await client.query(`
186
+ SELECT
187
+ relname as table_name,
188
+ n_live_tup as live_rows,
189
+ n_dead_tup as dead_rows,
190
+ last_vacuum,
191
+ last_autovacuum,
192
+ last_analyze,
193
+ last_autoanalyze
194
+ FROM pg_stat_user_tables
195
+ WHERE schemaname = $1
196
+ `, [config.schema]);
197
+ for (const row of tableStatsResult.rows) {
198
+ const deadRatio = row.live_rows > 0 ? row.dead_rows / row.live_rows : 0;
199
+ // Check for high dead tuple ratio
200
+ if (deadRatio > 0.1) {
201
+ recommendations.push({
202
+ category: 'Table Bloat',
203
+ priority: deadRatio > 0.3 ? 'critical' : 'high',
204
+ issue: `Table "${row.table_name}" has ${(deadRatio * 100).toFixed(1)}% dead tuples`,
205
+ recommendation: 'Run VACUUM to reclaim space',
206
+ sql: `VACUUM ANALYZE ${config.schema}.${row.table_name}`,
207
+ impact: 'Reduces storage and improves query performance',
208
+ });
209
+ }
210
+ // Check for missing statistics
211
+ if (!row.last_analyze && !row.last_autoanalyze) {
212
+ recommendations.push({
213
+ category: 'Statistics',
214
+ priority: 'medium',
215
+ issue: `Table "${row.table_name}" has never been analyzed`,
216
+ recommendation: 'Run ANALYZE to collect statistics',
217
+ sql: `ANALYZE ${config.schema}.${row.table_name}`,
218
+ impact: 'Improves query planner decisions',
219
+ });
220
+ }
221
+ }
222
+ spinner.succeed('Table statistics analyzed');
223
+ // Analyze indexes
224
+ spinner.setText('Analyzing index health...');
225
+ spinner.start();
226
+ const indexStatsResult = await client.query(`
227
+ SELECT
228
+ i.relname as index_name,
229
+ t.relname as table_name,
230
+ am.amname as index_type,
231
+ pg_relation_size(i.oid) as index_size,
232
+ idx.indisvalid as is_valid,
233
+ idx.indisready as is_ready,
234
+ idx.indislive as is_live,
235
+ pg_stat_user_indexes.idx_scan as scans,
236
+ pg_stat_user_indexes.idx_tup_read as tuples_read,
237
+ pg_stat_user_indexes.idx_tup_fetch as tuples_fetched
238
+ FROM pg_index idx
239
+ JOIN pg_class i ON i.oid = idx.indexrelid
240
+ JOIN pg_class t ON t.oid = idx.indrelid
241
+ JOIN pg_namespace n ON n.oid = t.relnamespace
242
+ JOIN pg_am am ON am.oid = i.relam
243
+ LEFT JOIN pg_stat_user_indexes ON pg_stat_user_indexes.indexrelid = i.oid
244
+ WHERE n.nspname = $1
245
+ `, [config.schema]);
246
+ for (const row of indexStatsResult.rows) {
247
+ // Check for invalid indexes
248
+ if (!row.is_valid) {
249
+ recommendations.push({
250
+ category: 'Index Health',
251
+ priority: 'critical',
252
+ issue: `Index "${row.index_name}" is invalid`,
253
+ recommendation: 'Rebuild the index',
254
+ sql: `REINDEX INDEX ${config.schema}.${row.index_name}`,
255
+ impact: 'Index is not being used for queries',
256
+ });
257
+ }
258
+ // Check for unused indexes (skip vector indexes as they may be new)
259
+ if (row.scans === 0 && row.index_type !== 'hnsw' && row.index_type !== 'ivfflat') {
260
+ const sizeKB = parseInt(row.index_size, 10) / 1024;
261
+ if (sizeKB > 100) {
262
+ recommendations.push({
263
+ category: 'Unused Index',
264
+ priority: 'low',
265
+ issue: `Index "${row.index_name}" has never been used (${(sizeKB / 1024).toFixed(2)} MB)`,
266
+ recommendation: 'Consider dropping if not needed',
267
+ sql: `-- DROP INDEX IF EXISTS ${config.schema}.${row.index_name}`,
268
+ impact: 'Reduces storage and write overhead',
269
+ });
318
270
  }
319
- spinner.succeed('Index health analyzed');
320
- // Analyze vector index parameters
321
- spinner.setText('Analyzing vector index configuration...');
322
- spinner.start();
323
- vectorIndexes = indexStatsResult.rows.filter(function (r) { return r.index_type === 'hnsw' || r.index_type === 'ivfflat'; });
324
- _g = 0, vectorIndexes_1 = vectorIndexes;
325
- _o.label = 22;
326
- case 22:
327
- if (!(_g < vectorIndexes_1.length)) return [3 /*break*/, 28];
328
- idx = vectorIndexes_1[_g];
329
- return [4 /*yield*/, client.query("\n SELECT reloptions FROM pg_class\n WHERE relname = $1 AND relnamespace = (\n SELECT oid FROM pg_namespace WHERE nspname = $2\n )\n ", [idx.index_name, config.schema])];
330
- case 23:
331
- optionsResult = _o.sent();
332
- options = ((_m = optionsResult.rows[0]) === null || _m === void 0 ? void 0 : _m.reloptions) || [];
333
- if (!(idx.index_type === 'hnsw')) return [3 /*break*/, 25];
334
- m = options.find(function (o) { return o.startsWith('m='); });
335
- efConstruction = options.find(function (o) { return o.startsWith('ef_construction='); });
336
- mValue = m ? parseInt(m.split('=')[1], 10) : 16;
337
- efValue = efConstruction ? parseInt(efConstruction.split('=')[1], 10) : 64;
338
- return [4 /*yield*/, client.query("\n SELECT count(*) as cnt FROM " + config.schema + "." + idx.table_name + "\n ")];
339
- case 24:
340
- countResult = _o.sent();
341
- rowCount = parseInt(countResult.rows[0].cnt, 10);
271
+ }
272
+ }
273
+ spinner.succeed('Index health analyzed');
274
+ // Analyze vector index parameters
275
+ spinner.setText('Analyzing vector index configuration...');
276
+ spinner.start();
277
+ const vectorIndexes = indexStatsResult.rows.filter(r => r.index_type === 'hnsw' || r.index_type === 'ivfflat');
278
+ for (const idx of vectorIndexes) {
279
+ // Get index options
280
+ const optionsResult = await client.query(`
281
+ SELECT reloptions FROM pg_class
282
+ WHERE relname = $1 AND relnamespace = (
283
+ SELECT oid FROM pg_namespace WHERE nspname = $2
284
+ )
285
+ `, [idx.index_name, config.schema]);
286
+ const options = optionsResult.rows[0]?.reloptions || [];
287
+ if (idx.index_type === 'hnsw') {
288
+ // Check HNSW parameters
289
+ const m = options.find((o) => o.startsWith('m='));
290
+ const efConstruction = options.find((o) => o.startsWith('ef_construction='));
291
+ const mValue = m ? parseInt(m.split('=')[1], 10) : 16;
292
+ const efValue = efConstruction ? parseInt(efConstruction.split('=')[1], 10) : 64;
293
+ // Get table row count
294
+ const countResult = await client.query(`
295
+ SELECT count(*) as cnt FROM ${config.schema}.${idx.table_name}
296
+ `);
297
+ const rowCount = parseInt(countResult.rows[0].cnt, 10);
342
298
  // Recommend higher ef_construction for large datasets
343
299
  if (rowCount > 100000 && efValue < 100) {
344
300
  recommendations.push({
345
301
  category: 'HNSW Tuning',
346
302
  priority: 'medium',
347
- issue: "HNSW index \"" + idx.index_name + "\" has ef_construction=" + efValue + " for " + rowCount.toLocaleString() + " vectors",
303
+ issue: `HNSW index "${idx.index_name}" has ef_construction=${efValue} for ${rowCount.toLocaleString()} vectors`,
348
304
  recommendation: 'Consider rebuilding with higher ef_construction for better recall',
349
- sql: "-- Rebuild with: CREATE INDEX ... WITH (m = " + mValue + ", ef_construction = 128)",
350
- impact: 'Improves recall at slight build time cost'
305
+ sql: `-- Rebuild with: CREATE INDEX ... WITH (m = ${mValue}, ef_construction = 128)`,
306
+ impact: 'Improves recall at slight build time cost',
351
307
  });
352
308
  }
353
309
  // Recommend higher m for very large datasets
@@ -355,205 +311,193 @@ export var optimizeCommand = {
355
311
  recommendations.push({
356
312
  category: 'HNSW Tuning',
357
313
  priority: 'medium',
358
- issue: "HNSW index \"" + idx.index_name + "\" has m=" + mValue + " for " + rowCount.toLocaleString() + " vectors",
314
+ issue: `HNSW index "${idx.index_name}" has m=${mValue} for ${rowCount.toLocaleString()} vectors`,
359
315
  recommendation: 'Consider rebuilding with higher m for better connectivity',
360
- sql: "-- Rebuild with: CREATE INDEX ... WITH (m = 24, ef_construction = " + efValue + ")",
361
- impact: 'Improves recall and query performance'
316
+ sql: `-- Rebuild with: CREATE INDEX ... WITH (m = 24, ef_construction = ${efValue})`,
317
+ impact: 'Improves recall and query performance',
362
318
  });
363
319
  }
364
- _o.label = 25;
365
- case 25:
366
- if (!(idx.index_type === 'ivfflat')) return [3 /*break*/, 27];
367
- lists = options.find(function (o) { return o.startsWith('lists='); });
368
- listsValue = lists ? parseInt(lists.split('=')[1], 10) : 100;
369
- return [4 /*yield*/, client.query("\n SELECT count(*) as cnt FROM " + config.schema + "." + idx.table_name + "\n ")];
370
- case 26:
371
- countResult = _o.sent();
372
- rowCount = parseInt(countResult.rows[0].cnt, 10);
373
- recommendedLists = Math.floor(Math.sqrt(rowCount));
320
+ }
321
+ if (idx.index_type === 'ivfflat') {
322
+ // Check IVFFlat lists parameter
323
+ const lists = options.find((o) => o.startsWith('lists='));
324
+ const listsValue = lists ? parseInt(lists.split('=')[1], 10) : 100;
325
+ // Get table row count
326
+ const countResult = await client.query(`
327
+ SELECT count(*) as cnt FROM ${config.schema}.${idx.table_name}
328
+ `);
329
+ const rowCount = parseInt(countResult.rows[0].cnt, 10);
330
+ // Recommended lists = sqrt(n)
331
+ const recommendedLists = Math.floor(Math.sqrt(rowCount));
374
332
  if (Math.abs(listsValue - recommendedLists) / recommendedLists > 0.5) {
375
333
  recommendations.push({
376
334
  category: 'IVFFlat Tuning',
377
335
  priority: 'medium',
378
- issue: "IVFFlat index \"" + idx.index_name + "\" has lists=" + listsValue + " (recommended: ~" + recommendedLists + ")",
336
+ issue: `IVFFlat index "${idx.index_name}" has lists=${listsValue} (recommended: ~${recommendedLists})`,
379
337
  recommendation: 'Consider rebuilding with optimal lists parameter',
380
- sql: "-- Rebuild with: CREATE INDEX ... WITH (lists = " + recommendedLists + ")",
381
- impact: 'Balances query speed and recall'
382
- });
383
- }
384
- _o.label = 27;
385
- case 27:
386
- _g++;
387
- return [3 /*break*/, 22];
388
- case 28:
389
- spinner.succeed('Vector index configuration analyzed');
390
- // Check memory settings
391
- spinner.setText('Checking PostgreSQL settings...');
392
- spinner.start();
393
- return [4 /*yield*/, client.query("\n SELECT name, setting, unit, context\n FROM pg_settings\n WHERE name IN (\n 'shared_buffers', 'effective_cache_size', 'work_mem',\n 'maintenance_work_mem', 'max_parallel_workers_per_gather'\n )\n ")];
394
- case 29:
395
- settingsResult = _o.sent();
396
- settings = {};
397
- for (_h = 0, _j = settingsResult.rows; _h < _j.length; _h++) {
398
- row = _j[_h];
399
- settings[row.name] = row.setting + (row.unit || '');
400
- }
401
- workMemMB = parseInt(settings.work_mem || '4096', 10) / 1024;
402
- if (workMemMB < 64) {
403
- recommendations.push({
404
- category: 'Memory Settings',
405
- priority: 'medium',
406
- issue: "work_mem is " + workMemMB.toFixed(0) + "MB (recommended: 64MB+ for vector ops)",
407
- recommendation: 'Increase work_mem for better vector search performance',
408
- sql: "SET work_mem = '64MB'",
409
- impact: 'Improves sorting and index build performance'
338
+ sql: `-- Rebuild with: CREATE INDEX ... WITH (lists = ${recommendedLists})`,
339
+ impact: 'Balances query speed and recall',
410
340
  });
411
341
  }
412
- maintMemMB = parseInt(settings.maintenance_work_mem || '65536', 10) / 1024;
413
- if (maintMemMB < 256) {
414
- recommendations.push({
415
- category: 'Memory Settings',
416
- priority: 'low',
417
- issue: "maintenance_work_mem is " + maintMemMB.toFixed(0) + "MB",
418
- recommendation: 'Increase for faster index builds',
419
- sql: "SET maintenance_work_mem = '256MB'",
420
- impact: 'Faster VACUUM and index creation'
421
- });
422
- }
423
- spinner.succeed('PostgreSQL settings checked');
424
- return [4 /*yield*/, client.end()];
425
- case 30:
426
- _o.sent();
427
- // Display recommendations
428
- output.writeln();
429
- if (recommendations.length === 0) {
430
- output.printSuccess('No optimization recommendations - your setup looks good!');
431
- output.writeln();
432
- output.printBox([
433
- 'All tables have been analyzed',
434
- 'Indexes are valid and properly configured',
435
- 'Memory settings are adequate',
436
- '',
437
- 'Tips for maintaining performance:',
438
- ' - Run VACUUM ANALYZE regularly',
439
- ' - Monitor dead tuple ratio',
440
- ' - Rebuild indexes after large batch inserts',
441
- ].join('\n'), 'Status: Optimal');
442
- return [2 /*return*/, { success: true, data: { recommendations: [] } }];
342
+ }
343
+ }
344
+ spinner.succeed('Vector index configuration analyzed');
345
+ // Check memory settings
346
+ spinner.setText('Checking PostgreSQL settings...');
347
+ spinner.start();
348
+ const settingsResult = await client.query(`
349
+ SELECT name, setting, unit, context
350
+ FROM pg_settings
351
+ WHERE name IN (
352
+ 'shared_buffers', 'effective_cache_size', 'work_mem',
353
+ 'maintenance_work_mem', 'max_parallel_workers_per_gather'
354
+ )
355
+ `);
356
+ const settings = {};
357
+ for (const row of settingsResult.rows) {
358
+ settings[row.name] = row.setting + (row.unit || '');
359
+ }
360
+ // Check work_mem for vector operations
361
+ const workMemMB = parseInt(settings.work_mem || '4096', 10) / 1024;
362
+ if (workMemMB < 64) {
363
+ recommendations.push({
364
+ category: 'Memory Settings',
365
+ priority: 'medium',
366
+ issue: `work_mem is ${workMemMB.toFixed(0)}MB (recommended: 64MB+ for vector ops)`,
367
+ recommendation: 'Increase work_mem for better vector search performance',
368
+ sql: `SET work_mem = '64MB'`,
369
+ impact: 'Improves sorting and index build performance',
370
+ });
371
+ }
372
+ // Check maintenance_work_mem for index building
373
+ const maintMemMB = parseInt(settings.maintenance_work_mem || '65536', 10) / 1024;
374
+ if (maintMemMB < 256) {
375
+ recommendations.push({
376
+ category: 'Memory Settings',
377
+ priority: 'low',
378
+ issue: `maintenance_work_mem is ${maintMemMB.toFixed(0)}MB`,
379
+ recommendation: 'Increase for faster index builds',
380
+ sql: `SET maintenance_work_mem = '256MB'`,
381
+ impact: 'Faster VACUUM and index creation',
382
+ });
383
+ }
384
+ spinner.succeed('PostgreSQL settings checked');
385
+ await client.end();
386
+ // Display recommendations
387
+ output.writeln();
388
+ if (recommendations.length === 0) {
389
+ output.printSuccess('No optimization recommendations - your setup looks good!');
390
+ output.writeln();
391
+ output.printBox([
392
+ 'All tables have been analyzed',
393
+ 'Indexes are valid and properly configured',
394
+ 'Memory settings are adequate',
395
+ '',
396
+ 'Tips for maintaining performance:',
397
+ ' - Run VACUUM ANALYZE regularly',
398
+ ' - Monitor dead tuple ratio',
399
+ ' - Rebuild indexes after large batch inserts',
400
+ ].join('\n'), 'Status: Optimal');
401
+ return { success: true, data: { recommendations: [] } };
402
+ }
403
+ // Group by priority
404
+ const critical = recommendations.filter(r => r.priority === 'critical');
405
+ const high = recommendations.filter(r => r.priority === 'high');
406
+ const medium = recommendations.filter(r => r.priority === 'medium');
407
+ const low = recommendations.filter(r => r.priority === 'low');
408
+ output.writeln(output.bold(`Found ${recommendations.length} optimization recommendations:`));
409
+ output.writeln();
410
+ // Display by priority
411
+ const displayRecommendations = (recs, label, color) => {
412
+ if (recs.length === 0)
413
+ return;
414
+ output.writeln(color(`${label} Priority (${recs.length}):`));
415
+ output.writeln();
416
+ for (const rec of recs) {
417
+ output.writeln(` ${output.bold(rec.category)}: ${rec.issue}`);
418
+ output.writeln(` ${output.dim('Recommendation:')} ${rec.recommendation}`);
419
+ output.writeln(` ${output.dim('Impact:')} ${rec.impact}`);
420
+ if (rec.sql) {
421
+ output.writeln(` ${output.dim('SQL:')} ${output.highlight(rec.sql)}`);
443
422
  }
444
- critical = recommendations.filter(function (r) { return r.priority === 'critical'; });
445
- high = recommendations.filter(function (r) { return r.priority === 'high'; });
446
- medium = recommendations.filter(function (r) { return r.priority === 'medium'; });
447
- low = recommendations.filter(function (r) { return r.priority === 'low'; });
448
- output.writeln(output.bold("Found " + recommendations.length + " optimization recommendations:"));
449
- output.writeln();
450
- displayRecommendations = function (recs, label, color) {
451
- if (recs.length === 0)
452
- return;
453
- output.writeln(color(label + " Priority (" + recs.length + "):"));
454
- output.writeln();
455
- for (var _i = 0, recs_1 = recs; _i < recs_1.length; _i++) {
456
- var rec = recs_1[_i];
457
- output.writeln(" " + output.bold(rec.category) + ": " + rec.issue);
458
- output.writeln(" " + output.dim('Recommendation:') + " " + rec.recommendation);
459
- output.writeln(" " + output.dim('Impact:') + " " + rec.impact);
460
- if (rec.sql) {
461
- output.writeln(" " + output.dim('SQL:') + " " + output.highlight(rec.sql));
462
- }
463
- output.writeln();
464
- }
465
- };
466
- displayRecommendations(critical, 'CRITICAL', output.error.bind(output));
467
- displayRecommendations(high, 'HIGH', output.warning.bind(output));
468
- displayRecommendations(medium, 'MEDIUM', output.highlight.bind(output));
469
- displayRecommendations(low, 'LOW', output.dim.bind(output));
470
- if (!(applyOptimizations && (critical.length > 0 || high.length > 0))) return [3 /*break*/, 40];
471
- output.writeln(output.dim('-'.repeat(60)));
472
423
  output.writeln();
473
- if (!ctx.interactive) return [3 /*break*/, 40];
474
- return [4 /*yield*/, confirm({
475
- message: "Apply " + (critical.length + high.length) + " critical/high priority optimizations?",
476
- "default": false
477
- })];
478
- case 31:
479
- confirmApply = _o.sent();
480
- if (!confirmApply) return [3 /*break*/, 40];
481
- applyClient = new pg.Client({
482
- host: config.host,
483
- port: config.port,
484
- database: config.database,
485
- user: config.user,
486
- password: config.password,
487
- ssl: config.ssl ? { rejectUnauthorized: false } : false
424
+ }
425
+ };
426
+ displayRecommendations(critical, 'CRITICAL', output.error.bind(output));
427
+ displayRecommendations(high, 'HIGH', output.warning.bind(output));
428
+ displayRecommendations(medium, 'MEDIUM', output.highlight.bind(output));
429
+ displayRecommendations(low, 'LOW', output.dim.bind(output));
430
+ // Apply optimizations if requested
431
+ if (applyOptimizations && (critical.length > 0 || high.length > 0)) {
432
+ output.writeln(output.dim('-'.repeat(60)));
433
+ output.writeln();
434
+ if (ctx.interactive) {
435
+ const confirmApply = await confirm({
436
+ message: `Apply ${critical.length + high.length} critical/high priority optimizations?`,
437
+ default: false,
488
438
  });
489
- return [4 /*yield*/, applyClient.connect()];
490
- case 32:
491
- _o.sent();
492
- _k = 0, _l = __spreadArray(__spreadArray([], critical, true), high, true);
493
- _o.label = 33;
494
- case 33:
495
- if (!(_k < _l.length)) return [3 /*break*/, 38];
496
- rec = _l[_k];
497
- if (!(rec.sql && !rec.sql.startsWith('--'))) return [3 /*break*/, 37];
498
- spinner.setText("Applying: " + rec.issue + "...");
499
- spinner.start();
500
- _o.label = 34;
501
- case 34:
502
- _o.trys.push([34, 36, , 37]);
503
- return [4 /*yield*/, applyClient.query(rec.sql)];
504
- case 35:
505
- _o.sent();
506
- spinner.succeed("Applied: " + rec.category);
507
- return [3 /*break*/, 37];
508
- case 36:
509
- error_1 = _o.sent();
510
- spinner.fail("Failed: " + rec.category);
511
- output.printError(error_1 instanceof Error ? error_1.message : String(error_1));
512
- return [3 /*break*/, 37];
513
- case 37:
514
- _k++;
515
- return [3 /*break*/, 33];
516
- case 38: return [4 /*yield*/, applyClient.end()];
517
- case 39:
518
- _o.sent();
519
- output.writeln();
520
- output.printSuccess('Optimizations applied');
521
- _o.label = 40;
522
- case 40:
523
- // Summary
524
- output.printBox([
525
- "Total Recommendations: " + recommendations.length,
526
- " Critical: " + critical.length,
527
- " High: " + high.length,
528
- " Medium: " + medium.length,
529
- " Low: " + low.length,
530
- '',
531
- 'Quick commands:',
532
- " claude-flow ruvector optimize --vacuum # Clean up tables",
533
- " claude-flow ruvector optimize --reindex # Rebuild indexes",
534
- " claude-flow ruvector optimize --apply # Apply critical fixes",
535
- ].join('\n'), 'Optimization Summary');
536
- return [2 /*return*/, {
537
- success: true,
538
- data: {
539
- recommendations: recommendations,
540
- summary: {
541
- critical: critical.length,
542
- high: high.length,
543
- medium: medium.length,
544
- low: low.length
439
+ if (confirmApply) {
440
+ const applyClient = new pg.Client({
441
+ host: config.host,
442
+ port: config.port,
443
+ database: config.database,
444
+ user: config.user,
445
+ password: config.password,
446
+ ssl: config.ssl ? { rejectUnauthorized: false } : false,
447
+ });
448
+ await applyClient.connect();
449
+ for (const rec of [...critical, ...high]) {
450
+ if (rec.sql && !rec.sql.startsWith('--')) {
451
+ spinner.setText(`Applying: ${rec.issue}...`);
452
+ spinner.start();
453
+ try {
454
+ await applyClient.query(rec.sql);
455
+ spinner.succeed(`Applied: ${rec.category}`);
456
+ }
457
+ catch (error) {
458
+ spinner.fail(`Failed: ${rec.category}`);
459
+ output.printError(error instanceof Error ? error.message : String(error));
545
460
  }
546
461
  }
547
- }];
548
- case 41:
549
- error_2 = _o.sent();
550
- spinner.fail('Optimization analysis failed');
551
- output.printError(error_2 instanceof Error ? error_2.message : String(error_2));
552
- return [2 /*return*/, { success: false, exitCode: 1 }];
553
- case 42: return [2 /*return*/];
462
+ }
463
+ await applyClient.end();
464
+ output.writeln();
465
+ output.printSuccess('Optimizations applied');
466
+ }
467
+ }
554
468
  }
555
- });
556
- }); }
469
+ // Summary
470
+ output.printBox([
471
+ `Total Recommendations: ${recommendations.length}`,
472
+ ` Critical: ${critical.length}`,
473
+ ` High: ${high.length}`,
474
+ ` Medium: ${medium.length}`,
475
+ ` Low: ${low.length}`,
476
+ '',
477
+ 'Quick commands:',
478
+ ` claude-flow ruvector optimize --vacuum # Clean up tables`,
479
+ ` claude-flow ruvector optimize --reindex # Rebuild indexes`,
480
+ ` claude-flow ruvector optimize --apply # Apply critical fixes`,
481
+ ].join('\n'), 'Optimization Summary');
482
+ return {
483
+ success: true,
484
+ data: {
485
+ recommendations,
486
+ summary: {
487
+ critical: critical.length,
488
+ high: high.length,
489
+ medium: medium.length,
490
+ low: low.length,
491
+ },
492
+ },
493
+ };
494
+ }
495
+ catch (error) {
496
+ spinner.fail('Optimization analysis failed');
497
+ output.printError(error instanceof Error ? error.message : String(error));
498
+ return { success: false, exitCode: 1 };
499
+ }
500
+ },
557
501
  };
558
502
  export default optimizeCommand;
559
503
  //# sourceMappingURL=optimize.js.map