helixmind 0.1.0

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.

Potentially problematic release.


This version of helixmind might be problematic. Click here for more details.

Files changed (479) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +207 -0
  3. package/dist/cli/agent/autonomous.d.ts +10 -0
  4. package/dist/cli/agent/autonomous.d.ts.map +1 -0
  5. package/dist/cli/agent/autonomous.js +172 -0
  6. package/dist/cli/agent/autonomous.js.map +1 -0
  7. package/dist/cli/agent/loop.d.ts +76 -0
  8. package/dist/cli/agent/loop.d.ts.map +1 -0
  9. package/dist/cli/agent/loop.js +333 -0
  10. package/dist/cli/agent/loop.js.map +1 -0
  11. package/dist/cli/agent/permissions.d.ts +28 -0
  12. package/dist/cli/agent/permissions.d.ts.map +1 -0
  13. package/dist/cli/agent/permissions.js +180 -0
  14. package/dist/cli/agent/permissions.js.map +1 -0
  15. package/dist/cli/agent/sandbox.d.ts +17 -0
  16. package/dist/cli/agent/sandbox.d.ts.map +1 -0
  17. package/dist/cli/agent/sandbox.js +124 -0
  18. package/dist/cli/agent/sandbox.js.map +1 -0
  19. package/dist/cli/agent/tools/edit-file.d.ts +2 -0
  20. package/dist/cli/agent/tools/edit-file.d.ts.map +1 -0
  21. package/dist/cli/agent/tools/edit-file.js +49 -0
  22. package/dist/cli/agent/tools/edit-file.js.map +1 -0
  23. package/dist/cli/agent/tools/find.d.ts +2 -0
  24. package/dist/cli/agent/tools/find.d.ts.map +1 -0
  25. package/dist/cli/agent/tools/find.js +35 -0
  26. package/dist/cli/agent/tools/find.js.map +1 -0
  27. package/dist/cli/agent/tools/git-commit.d.ts +2 -0
  28. package/dist/cli/agent/tools/git-commit.d.ts.map +1 -0
  29. package/dist/cli/agent/tools/git-commit.js +51 -0
  30. package/dist/cli/agent/tools/git-commit.js.map +1 -0
  31. package/dist/cli/agent/tools/git-diff.d.ts +2 -0
  32. package/dist/cli/agent/tools/git-diff.d.ts.map +1 -0
  33. package/dist/cli/agent/tools/git-diff.js +36 -0
  34. package/dist/cli/agent/tools/git-diff.js.map +1 -0
  35. package/dist/cli/agent/tools/git-log.d.ts +2 -0
  36. package/dist/cli/agent/tools/git-log.d.ts.map +1 -0
  37. package/dist/cli/agent/tools/git-log.js +32 -0
  38. package/dist/cli/agent/tools/git-log.js.map +1 -0
  39. package/dist/cli/agent/tools/git-status.d.ts +2 -0
  40. package/dist/cli/agent/tools/git-status.d.ts.map +1 -0
  41. package/dist/cli/agent/tools/git-status.js +38 -0
  42. package/dist/cli/agent/tools/git-status.js.map +1 -0
  43. package/dist/cli/agent/tools/list-dir.d.ts +2 -0
  44. package/dist/cli/agent/tools/list-dir.d.ts.map +1 -0
  45. package/dist/cli/agent/tools/list-dir.js +73 -0
  46. package/dist/cli/agent/tools/list-dir.js.map +1 -0
  47. package/dist/cli/agent/tools/read-file.d.ts +2 -0
  48. package/dist/cli/agent/tools/read-file.d.ts.map +1 -0
  49. package/dist/cli/agent/tools/read-file.js +45 -0
  50. package/dist/cli/agent/tools/read-file.js.map +1 -0
  51. package/dist/cli/agent/tools/registry.d.ts +18 -0
  52. package/dist/cli/agent/tools/registry.d.ts.map +1 -0
  53. package/dist/cli/agent/tools/registry.js +31 -0
  54. package/dist/cli/agent/tools/registry.js.map +1 -0
  55. package/dist/cli/agent/tools/run-command.d.ts +2 -0
  56. package/dist/cli/agent/tools/run-command.d.ts.map +1 -0
  57. package/dist/cli/agent/tools/run-command.js +79 -0
  58. package/dist/cli/agent/tools/run-command.js.map +1 -0
  59. package/dist/cli/agent/tools/search.d.ts +2 -0
  60. package/dist/cli/agent/tools/search.d.ts.map +1 -0
  61. package/dist/cli/agent/tools/search.js +104 -0
  62. package/dist/cli/agent/tools/search.js.map +1 -0
  63. package/dist/cli/agent/tools/spiral-query.d.ts +2 -0
  64. package/dist/cli/agent/tools/spiral-query.d.ts.map +1 -0
  65. package/dist/cli/agent/tools/spiral-query.js +52 -0
  66. package/dist/cli/agent/tools/spiral-query.js.map +1 -0
  67. package/dist/cli/agent/tools/spiral-store.d.ts +2 -0
  68. package/dist/cli/agent/tools/spiral-store.d.ts.map +1 -0
  69. package/dist/cli/agent/tools/spiral-store.js +37 -0
  70. package/dist/cli/agent/tools/spiral-store.js.map +1 -0
  71. package/dist/cli/agent/tools/web-research.d.ts +2 -0
  72. package/dist/cli/agent/tools/web-research.d.ts.map +1 -0
  73. package/dist/cli/agent/tools/web-research.js +96 -0
  74. package/dist/cli/agent/tools/web-research.js.map +1 -0
  75. package/dist/cli/agent/tools/write-file.d.ts +2 -0
  76. package/dist/cli/agent/tools/write-file.d.ts.map +1 -0
  77. package/dist/cli/agent/tools/write-file.js +91 -0
  78. package/dist/cli/agent/tools/write-file.js.map +1 -0
  79. package/dist/cli/agent/undo.d.ts +30 -0
  80. package/dist/cli/agent/undo.d.ts.map +1 -0
  81. package/dist/cli/agent/undo.js +48 -0
  82. package/dist/cli/agent/undo.js.map +1 -0
  83. package/dist/cli/auth/callback-server.d.ts +15 -0
  84. package/dist/cli/auth/callback-server.d.ts.map +1 -0
  85. package/dist/cli/auth/callback-server.js +168 -0
  86. package/dist/cli/auth/callback-server.js.map +1 -0
  87. package/dist/cli/auth/feature-gate.d.ts +19 -0
  88. package/dist/cli/auth/feature-gate.d.ts.map +1 -0
  89. package/dist/cli/auth/feature-gate.js +74 -0
  90. package/dist/cli/auth/feature-gate.js.map +1 -0
  91. package/dist/cli/auth/guard.d.ts +10 -0
  92. package/dist/cli/auth/guard.d.ts.map +1 -0
  93. package/dist/cli/auth/guard.js +46 -0
  94. package/dist/cli/auth/guard.js.map +1 -0
  95. package/dist/cli/auth/login.d.ts +22 -0
  96. package/dist/cli/auth/login.d.ts.map +1 -0
  97. package/dist/cli/auth/login.js +194 -0
  98. package/dist/cli/auth/login.js.map +1 -0
  99. package/dist/cli/auth/logout.d.ts +6 -0
  100. package/dist/cli/auth/logout.d.ts.map +1 -0
  101. package/dist/cli/auth/logout.js +36 -0
  102. package/dist/cli/auth/logout.js.map +1 -0
  103. package/dist/cli/bench/dataset.d.ts +13 -0
  104. package/dist/cli/bench/dataset.d.ts.map +1 -0
  105. package/dist/cli/bench/dataset.js +97 -0
  106. package/dist/cli/bench/dataset.js.map +1 -0
  107. package/dist/cli/bench/harness.d.ts +7 -0
  108. package/dist/cli/bench/harness.d.ts.map +1 -0
  109. package/dist/cli/bench/harness.js +135 -0
  110. package/dist/cli/bench/harness.js.map +1 -0
  111. package/dist/cli/bench/metrics.d.ts +15 -0
  112. package/dist/cli/bench/metrics.d.ts.map +1 -0
  113. package/dist/cli/bench/metrics.js +98 -0
  114. package/dist/cli/bench/metrics.js.map +1 -0
  115. package/dist/cli/bench/output.d.ts +42 -0
  116. package/dist/cli/bench/output.d.ts.map +1 -0
  117. package/dist/cli/bench/output.js +140 -0
  118. package/dist/cli/bench/output.js.map +1 -0
  119. package/dist/cli/bench/prompt.d.ts +13 -0
  120. package/dist/cli/bench/prompt.d.ts.map +1 -0
  121. package/dist/cli/bench/prompt.js +106 -0
  122. package/dist/cli/bench/prompt.js.map +1 -0
  123. package/dist/cli/bench/runner.d.ts +14 -0
  124. package/dist/cli/bench/runner.d.ts.map +1 -0
  125. package/dist/cli/bench/runner.js +334 -0
  126. package/dist/cli/bench/runner.js.map +1 -0
  127. package/dist/cli/bench/types.d.ts +109 -0
  128. package/dist/cli/bench/types.d.ts.map +1 -0
  129. package/dist/cli/bench/types.js +2 -0
  130. package/dist/cli/bench/types.js.map +1 -0
  131. package/dist/cli/bench/ui.d.ts +12 -0
  132. package/dist/cli/bench/ui.d.ts.map +1 -0
  133. package/dist/cli/bench/ui.js +126 -0
  134. package/dist/cli/bench/ui.js.map +1 -0
  135. package/dist/cli/brain/archive.d.ts +33 -0
  136. package/dist/cli/brain/archive.d.ts.map +1 -0
  137. package/dist/cli/brain/archive.js +159 -0
  138. package/dist/cli/brain/archive.js.map +1 -0
  139. package/dist/cli/brain/control-protocol.d.ts +159 -0
  140. package/dist/cli/brain/control-protocol.d.ts.map +1 -0
  141. package/dist/cli/brain/control-protocol.js +41 -0
  142. package/dist/cli/brain/control-protocol.js.map +1 -0
  143. package/dist/cli/brain/exporter.d.ts +34 -0
  144. package/dist/cli/brain/exporter.d.ts.map +1 -0
  145. package/dist/cli/brain/exporter.js +37 -0
  146. package/dist/cli/brain/exporter.js.map +1 -0
  147. package/dist/cli/brain/generator.d.ts +67 -0
  148. package/dist/cli/brain/generator.d.ts.map +1 -0
  149. package/dist/cli/brain/generator.js +239 -0
  150. package/dist/cli/brain/generator.js.map +1 -0
  151. package/dist/cli/brain/relay-client.d.ts +8 -0
  152. package/dist/cli/brain/relay-client.d.ts.map +1 -0
  153. package/dist/cli/brain/relay-client.js +173 -0
  154. package/dist/cli/brain/relay-client.js.map +1 -0
  155. package/dist/cli/brain/server.d.ts +34 -0
  156. package/dist/cli/brain/server.d.ts.map +1 -0
  157. package/dist/cli/brain/server.js +425 -0
  158. package/dist/cli/brain/server.js.map +1 -0
  159. package/dist/cli/brain/template.d.ts +3 -0
  160. package/dist/cli/brain/template.d.ts.map +1 -0
  161. package/dist/cli/brain/template.js +2072 -0
  162. package/dist/cli/brain/template.js.map +1 -0
  163. package/dist/cli/checkpoints/browser.d.ts +27 -0
  164. package/dist/cli/checkpoints/browser.d.ts.map +1 -0
  165. package/dist/cli/checkpoints/browser.js +238 -0
  166. package/dist/cli/checkpoints/browser.js.map +1 -0
  167. package/dist/cli/checkpoints/keybinding.d.ts +22 -0
  168. package/dist/cli/checkpoints/keybinding.d.ts.map +1 -0
  169. package/dist/cli/checkpoints/keybinding.js +43 -0
  170. package/dist/cli/checkpoints/keybinding.js.map +1 -0
  171. package/dist/cli/checkpoints/revert.d.ts +37 -0
  172. package/dist/cli/checkpoints/revert.d.ts.map +1 -0
  173. package/dist/cli/checkpoints/revert.js +144 -0
  174. package/dist/cli/checkpoints/revert.js.map +1 -0
  175. package/dist/cli/checkpoints/store.d.ts +48 -0
  176. package/dist/cli/checkpoints/store.d.ts.map +1 -0
  177. package/dist/cli/checkpoints/store.js +188 -0
  178. package/dist/cli/checkpoints/store.js.map +1 -0
  179. package/dist/cli/commands/archive.d.ts +7 -0
  180. package/dist/cli/commands/archive.d.ts.map +1 -0
  181. package/dist/cli/commands/archive.js +66 -0
  182. package/dist/cli/commands/archive.js.map +1 -0
  183. package/dist/cli/commands/auth.d.ts +10 -0
  184. package/dist/cli/commands/auth.d.ts.map +1 -0
  185. package/dist/cli/commands/auth.js +44 -0
  186. package/dist/cli/commands/auth.js.map +1 -0
  187. package/dist/cli/commands/bench.d.ts +25 -0
  188. package/dist/cli/commands/bench.d.ts.map +1 -0
  189. package/dist/cli/commands/bench.js +114 -0
  190. package/dist/cli/commands/bench.js.map +1 -0
  191. package/dist/cli/commands/chat.d.ts +11 -0
  192. package/dist/cli/commands/chat.d.ts.map +1 -0
  193. package/dist/cli/commands/chat.js +2321 -0
  194. package/dist/cli/commands/chat.js.map +1 -0
  195. package/dist/cli/commands/config.d.ts +4 -0
  196. package/dist/cli/commands/config.d.ts.map +1 -0
  197. package/dist/cli/commands/config.js +41 -0
  198. package/dist/cli/commands/config.js.map +1 -0
  199. package/dist/cli/commands/feed.d.ts +6 -0
  200. package/dist/cli/commands/feed.d.ts.map +1 -0
  201. package/dist/cli/commands/feed.js +95 -0
  202. package/dist/cli/commands/feed.js.map +1 -0
  203. package/dist/cli/commands/helix-menu.d.ts +4 -0
  204. package/dist/cli/commands/helix-menu.d.ts.map +1 -0
  205. package/dist/cli/commands/helix-menu.js +400 -0
  206. package/dist/cli/commands/helix-menu.js.map +1 -0
  207. package/dist/cli/commands/init.d.ts +2 -0
  208. package/dist/cli/commands/init.d.ts.map +1 -0
  209. package/dist/cli/commands/init.js +26 -0
  210. package/dist/cli/commands/init.js.map +1 -0
  211. package/dist/cli/commands/setup.d.ts +20 -0
  212. package/dist/cli/commands/setup.d.ts.map +1 -0
  213. package/dist/cli/commands/setup.js +314 -0
  214. package/dist/cli/commands/setup.js.map +1 -0
  215. package/dist/cli/commands/spiral.d.ts +4 -0
  216. package/dist/cli/commands/spiral.d.ts.map +1 -0
  217. package/dist/cli/commands/spiral.js +81 -0
  218. package/dist/cli/commands/spiral.js.map +1 -0
  219. package/dist/cli/config/store.d.ts +72 -0
  220. package/dist/cli/config/store.d.ts.map +1 -0
  221. package/dist/cli/config/store.js +241 -0
  222. package/dist/cli/config/store.js.map +1 -0
  223. package/dist/cli/context/assembler.d.ts +8 -0
  224. package/dist/cli/context/assembler.d.ts.map +1 -0
  225. package/dist/cli/context/assembler.js +124 -0
  226. package/dist/cli/context/assembler.js.map +1 -0
  227. package/dist/cli/context/project.d.ts +13 -0
  228. package/dist/cli/context/project.d.ts.map +1 -0
  229. package/dist/cli/context/project.js +126 -0
  230. package/dist/cli/context/project.js.map +1 -0
  231. package/dist/cli/context/session-buffer.d.ts +57 -0
  232. package/dist/cli/context/session-buffer.d.ts.map +1 -0
  233. package/dist/cli/context/session-buffer.js +268 -0
  234. package/dist/cli/context/session-buffer.js.map +1 -0
  235. package/dist/cli/context/trimmer.d.ts +26 -0
  236. package/dist/cli/context/trimmer.d.ts.map +1 -0
  237. package/dist/cli/context/trimmer.js +105 -0
  238. package/dist/cli/context/trimmer.js.map +1 -0
  239. package/dist/cli/feed/analyzer.d.ts +17 -0
  240. package/dist/cli/feed/analyzer.d.ts.map +1 -0
  241. package/dist/cli/feed/analyzer.js +220 -0
  242. package/dist/cli/feed/analyzer.js.map +1 -0
  243. package/dist/cli/feed/intent.d.ts +8 -0
  244. package/dist/cli/feed/intent.d.ts.map +1 -0
  245. package/dist/cli/feed/intent.js +70 -0
  246. package/dist/cli/feed/intent.js.map +1 -0
  247. package/dist/cli/feed/parser.d.ts +23 -0
  248. package/dist/cli/feed/parser.d.ts.map +1 -0
  249. package/dist/cli/feed/parser.js +166 -0
  250. package/dist/cli/feed/parser.js.map +1 -0
  251. package/dist/cli/feed/pipeline.d.ts +32 -0
  252. package/dist/cli/feed/pipeline.d.ts.map +1 -0
  253. package/dist/cli/feed/pipeline.js +242 -0
  254. package/dist/cli/feed/pipeline.js.map +1 -0
  255. package/dist/cli/feed/reader.d.ts +10 -0
  256. package/dist/cli/feed/reader.d.ts.map +1 -0
  257. package/dist/cli/feed/reader.js +61 -0
  258. package/dist/cli/feed/reader.js.map +1 -0
  259. package/dist/cli/feed/scanner.d.ts +10 -0
  260. package/dist/cli/feed/scanner.d.ts.map +1 -0
  261. package/dist/cli/feed/scanner.js +124 -0
  262. package/dist/cli/feed/scanner.js.map +1 -0
  263. package/dist/cli/feed/watcher.d.ts +14 -0
  264. package/dist/cli/feed/watcher.d.ts.map +1 -0
  265. package/dist/cli/feed/watcher.js +76 -0
  266. package/dist/cli/feed/watcher.js.map +1 -0
  267. package/dist/cli/index.d.ts +3 -0
  268. package/dist/cli/index.d.ts.map +1 -0
  269. package/dist/cli/index.js +204 -0
  270. package/dist/cli/index.js.map +1 -0
  271. package/dist/cli/providers/anthropic.d.ts +10 -0
  272. package/dist/cli/providers/anthropic.d.ts.map +1 -0
  273. package/dist/cli/providers/anthropic.js +117 -0
  274. package/dist/cli/providers/anthropic.js.map +1 -0
  275. package/dist/cli/providers/ollama.d.ts +37 -0
  276. package/dist/cli/providers/ollama.d.ts.map +1 -0
  277. package/dist/cli/providers/ollama.js +151 -0
  278. package/dist/cli/providers/ollama.js.map +1 -0
  279. package/dist/cli/providers/openai.d.ts +13 -0
  280. package/dist/cli/providers/openai.d.ts.map +1 -0
  281. package/dist/cli/providers/openai.js +283 -0
  282. package/dist/cli/providers/openai.js.map +1 -0
  283. package/dist/cli/providers/rate-limiter.d.ts +51 -0
  284. package/dist/cli/providers/rate-limiter.d.ts.map +1 -0
  285. package/dist/cli/providers/rate-limiter.js +164 -0
  286. package/dist/cli/providers/rate-limiter.js.map +1 -0
  287. package/dist/cli/providers/registry.d.ts +16 -0
  288. package/dist/cli/providers/registry.d.ts.map +1 -0
  289. package/dist/cli/providers/registry.js +99 -0
  290. package/dist/cli/providers/registry.js.map +1 -0
  291. package/dist/cli/providers/types.d.ts +61 -0
  292. package/dist/cli/providers/types.d.ts.map +1 -0
  293. package/dist/cli/providers/types.js +2 -0
  294. package/dist/cli/providers/types.js.map +1 -0
  295. package/dist/cli/sessions/manager.d.ts +69 -0
  296. package/dist/cli/sessions/manager.d.ts.map +1 -0
  297. package/dist/cli/sessions/manager.js +200 -0
  298. package/dist/cli/sessions/manager.js.map +1 -0
  299. package/dist/cli/sessions/session.d.ts +54 -0
  300. package/dist/cli/sessions/session.d.ts.map +1 -0
  301. package/dist/cli/sessions/session.js +70 -0
  302. package/dist/cli/sessions/session.js.map +1 -0
  303. package/dist/cli/sessions/tab-view.d.ts +18 -0
  304. package/dist/cli/sessions/tab-view.d.ts.map +1 -0
  305. package/dist/cli/sessions/tab-view.js +134 -0
  306. package/dist/cli/sessions/tab-view.js.map +1 -0
  307. package/dist/cli/ui/activity.d.ts +82 -0
  308. package/dist/cli/ui/activity.d.ts.map +1 -0
  309. package/dist/cli/ui/activity.js +309 -0
  310. package/dist/cli/ui/activity.js.map +1 -0
  311. package/dist/cli/ui/chat-view.d.ts +10 -0
  312. package/dist/cli/ui/chat-view.d.ts.map +1 -0
  313. package/dist/cli/ui/chat-view.js +165 -0
  314. package/dist/cli/ui/chat-view.js.map +1 -0
  315. package/dist/cli/ui/command-suggest.d.ts +22 -0
  316. package/dist/cli/ui/command-suggest.d.ts.map +1 -0
  317. package/dist/cli/ui/command-suggest.js +115 -0
  318. package/dist/cli/ui/command-suggest.js.map +1 -0
  319. package/dist/cli/ui/logo.d.ts +3 -0
  320. package/dist/cli/ui/logo.d.ts.map +1 -0
  321. package/dist/cli/ui/logo.js +25 -0
  322. package/dist/cli/ui/logo.js.map +1 -0
  323. package/dist/cli/ui/progress.d.ts +21 -0
  324. package/dist/cli/ui/progress.d.ts.map +1 -0
  325. package/dist/cli/ui/progress.js +125 -0
  326. package/dist/cli/ui/progress.js.map +1 -0
  327. package/dist/cli/ui/select-menu.d.ts +22 -0
  328. package/dist/cli/ui/select-menu.d.ts.map +1 -0
  329. package/dist/cli/ui/select-menu.js +152 -0
  330. package/dist/cli/ui/select-menu.js.map +1 -0
  331. package/dist/cli/ui/spinner.d.ts +3 -0
  332. package/dist/cli/ui/spinner.d.ts.map +1 -0
  333. package/dist/cli/ui/spinner.js +14 -0
  334. package/dist/cli/ui/spinner.js.map +1 -0
  335. package/dist/cli/ui/statusbar.d.ts +65 -0
  336. package/dist/cli/ui/statusbar.d.ts.map +1 -0
  337. package/dist/cli/ui/statusbar.js +272 -0
  338. package/dist/cli/ui/statusbar.js.map +1 -0
  339. package/dist/cli/ui/theme.d.ts +20 -0
  340. package/dist/cli/ui/theme.d.ts.map +1 -0
  341. package/dist/cli/ui/theme.js +25 -0
  342. package/dist/cli/ui/theme.js.map +1 -0
  343. package/dist/cli/ui/tool-output.d.ts +25 -0
  344. package/dist/cli/ui/tool-output.d.ts.map +1 -0
  345. package/dist/cli/ui/tool-output.js +171 -0
  346. package/dist/cli/ui/tool-output.js.map +1 -0
  347. package/dist/cli/validation/autofix.d.ts +32 -0
  348. package/dist/cli/validation/autofix.d.ts.map +1 -0
  349. package/dist/cli/validation/autofix.js +148 -0
  350. package/dist/cli/validation/autofix.js.map +1 -0
  351. package/dist/cli/validation/classifier.d.ts +17 -0
  352. package/dist/cli/validation/classifier.d.ts.map +1 -0
  353. package/dist/cli/validation/classifier.js +174 -0
  354. package/dist/cli/validation/classifier.js.map +1 -0
  355. package/dist/cli/validation/criteria.d.ts +22 -0
  356. package/dist/cli/validation/criteria.d.ts.map +1 -0
  357. package/dist/cli/validation/criteria.js +188 -0
  358. package/dist/cli/validation/criteria.js.map +1 -0
  359. package/dist/cli/validation/dynamic-checks.d.ts +16 -0
  360. package/dist/cli/validation/dynamic-checks.d.ts.map +1 -0
  361. package/dist/cli/validation/dynamic-checks.js +109 -0
  362. package/dist/cli/validation/dynamic-checks.js.map +1 -0
  363. package/dist/cli/validation/model.d.ts +16 -0
  364. package/dist/cli/validation/model.d.ts.map +1 -0
  365. package/dist/cli/validation/model.js +59 -0
  366. package/dist/cli/validation/model.js.map +1 -0
  367. package/dist/cli/validation/reporter.d.ts +18 -0
  368. package/dist/cli/validation/reporter.d.ts.map +1 -0
  369. package/dist/cli/validation/reporter.js +167 -0
  370. package/dist/cli/validation/reporter.js.map +1 -0
  371. package/dist/cli/validation/spiral-checks.d.ts +12 -0
  372. package/dist/cli/validation/spiral-checks.d.ts.map +1 -0
  373. package/dist/cli/validation/spiral-checks.js +167 -0
  374. package/dist/cli/validation/spiral-checks.js.map +1 -0
  375. package/dist/cli/validation/static-checks.d.ts +26 -0
  376. package/dist/cli/validation/static-checks.d.ts.map +1 -0
  377. package/dist/cli/validation/static-checks.js +492 -0
  378. package/dist/cli/validation/static-checks.js.map +1 -0
  379. package/dist/cli/validation/stats.d.ts +29 -0
  380. package/dist/cli/validation/stats.d.ts.map +1 -0
  381. package/dist/cli/validation/stats.js +137 -0
  382. package/dist/cli/validation/stats.js.map +1 -0
  383. package/dist/index.d.ts +3 -0
  384. package/dist/index.d.ts.map +1 -0
  385. package/dist/index.js +35 -0
  386. package/dist/index.js.map +1 -0
  387. package/dist/server.d.ts +8 -0
  388. package/dist/server.d.ts.map +1 -0
  389. package/dist/server.js +43 -0
  390. package/dist/server.js.map +1 -0
  391. package/dist/spiral/cloud/content-extractor.d.ts +27 -0
  392. package/dist/spiral/cloud/content-extractor.d.ts.map +1 -0
  393. package/dist/spiral/cloud/content-extractor.js +175 -0
  394. package/dist/spiral/cloud/content-extractor.js.map +1 -0
  395. package/dist/spiral/cloud/search-provider.d.ts +22 -0
  396. package/dist/spiral/cloud/search-provider.d.ts.map +1 -0
  397. package/dist/spiral/cloud/search-provider.js +212 -0
  398. package/dist/spiral/cloud/search-provider.js.map +1 -0
  399. package/dist/spiral/cloud/topic-detector.d.ts +25 -0
  400. package/dist/spiral/cloud/topic-detector.d.ts.map +1 -0
  401. package/dist/spiral/cloud/topic-detector.js +196 -0
  402. package/dist/spiral/cloud/topic-detector.js.map +1 -0
  403. package/dist/spiral/cloud/web-enricher.d.ts +58 -0
  404. package/dist/spiral/cloud/web-enricher.d.ts.map +1 -0
  405. package/dist/spiral/cloud/web-enricher.js +170 -0
  406. package/dist/spiral/cloud/web-enricher.js.map +1 -0
  407. package/dist/spiral/compression.d.ts +54 -0
  408. package/dist/spiral/compression.d.ts.map +1 -0
  409. package/dist/spiral/compression.js +175 -0
  410. package/dist/spiral/compression.js.map +1 -0
  411. package/dist/spiral/embeddings.d.ts +24 -0
  412. package/dist/spiral/embeddings.d.ts.map +1 -0
  413. package/dist/spiral/embeddings.js +69 -0
  414. package/dist/spiral/embeddings.js.map +1 -0
  415. package/dist/spiral/engine.d.ts +95 -0
  416. package/dist/spiral/engine.d.ts.map +1 -0
  417. package/dist/spiral/engine.js +271 -0
  418. package/dist/spiral/engine.js.map +1 -0
  419. package/dist/spiral/injection.d.ts +29 -0
  420. package/dist/spiral/injection.d.ts.map +1 -0
  421. package/dist/spiral/injection.js +164 -0
  422. package/dist/spiral/injection.js.map +1 -0
  423. package/dist/spiral/relevance.d.ts +37 -0
  424. package/dist/spiral/relevance.d.ts.map +1 -0
  425. package/dist/spiral/relevance.js +75 -0
  426. package/dist/spiral/relevance.js.map +1 -0
  427. package/dist/storage/database.d.ts +11 -0
  428. package/dist/storage/database.d.ts.map +1 -0
  429. package/dist/storage/database.js +141 -0
  430. package/dist/storage/database.js.map +1 -0
  431. package/dist/storage/edges.d.ts +25 -0
  432. package/dist/storage/edges.d.ts.map +1 -0
  433. package/dist/storage/edges.js +69 -0
  434. package/dist/storage/edges.js.map +1 -0
  435. package/dist/storage/nodes.d.ts +45 -0
  436. package/dist/storage/nodes.d.ts.map +1 -0
  437. package/dist/storage/nodes.js +124 -0
  438. package/dist/storage/nodes.js.map +1 -0
  439. package/dist/storage/vectors.d.ts +25 -0
  440. package/dist/storage/vectors.d.ts.map +1 -0
  441. package/dist/storage/vectors.js +110 -0
  442. package/dist/storage/vectors.js.map +1 -0
  443. package/dist/tools/spiral-compact.d.ts +14 -0
  444. package/dist/tools/spiral-compact.d.ts.map +1 -0
  445. package/dist/tools/spiral-compact.js +14 -0
  446. package/dist/tools/spiral-compact.js.map +1 -0
  447. package/dist/tools/spiral-query.d.ts +18 -0
  448. package/dist/tools/spiral-query.d.ts.map +1 -0
  449. package/dist/tools/spiral-query.js +16 -0
  450. package/dist/tools/spiral-query.js.map +1 -0
  451. package/dist/tools/spiral-relate.d.ts +21 -0
  452. package/dist/tools/spiral-relate.d.ts.map +1 -0
  453. package/dist/tools/spiral-relate.js +21 -0
  454. package/dist/tools/spiral-relate.js.map +1 -0
  455. package/dist/tools/spiral-status.d.ts +8 -0
  456. package/dist/tools/spiral-status.d.ts.map +1 -0
  457. package/dist/tools/spiral-status.js +10 -0
  458. package/dist/tools/spiral-status.js.map +1 -0
  459. package/dist/tools/spiral-store.d.ts +41 -0
  460. package/dist/tools/spiral-store.d.ts.map +1 -0
  461. package/dist/tools/spiral-store.js +22 -0
  462. package/dist/tools/spiral-store.js.map +1 -0
  463. package/dist/types.d.ts +92 -0
  464. package/dist/types.d.ts.map +1 -0
  465. package/dist/types.js +9 -0
  466. package/dist/types.js.map +1 -0
  467. package/dist/utils/config.d.ts +14 -0
  468. package/dist/utils/config.d.ts.map +1 -0
  469. package/dist/utils/config.js +44 -0
  470. package/dist/utils/config.js.map +1 -0
  471. package/dist/utils/logger.d.ts +10 -0
  472. package/dist/utils/logger.d.ts.map +1 -0
  473. package/dist/utils/logger.js +40 -0
  474. package/dist/utils/logger.js.map +1 -0
  475. package/dist/utils/tokens.d.ts +21 -0
  476. package/dist/utils/tokens.d.ts.map +1 -0
  477. package/dist/utils/tokens.js +33 -0
  478. package/dist/utils/tokens.js.map +1 -0
  479. package/package.json +90 -0
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Intelligent command suggestion engine.
3
+ * Shows completions as user types slash commands.
4
+ */
5
+ import chalk from 'chalk';
6
+ const COMMANDS = [
7
+ { cmd: '/help', description: 'Show all commands' },
8
+ { cmd: '/clear', description: 'Clear conversation history' },
9
+ { cmd: '/model', description: 'Switch LLM model' },
10
+ { cmd: '/keys', description: 'Manage API keys' },
11
+ { cmd: '/brain', description: 'Brain scope & 3D visualization' },
12
+ { cmd: '/brain local', description: 'Switch to project-local brain' },
13
+ { cmd: '/brain global', description: 'Switch to global brain' },
14
+ { cmd: '/spiral', description: 'Show spiral memory status' },
15
+ { cmd: '/feed', description: 'Feed files into spiral' },
16
+ { cmd: '/context', description: 'Show context & embeddings info' },
17
+ { cmd: '/compact', description: 'Trigger spiral evolution' },
18
+ { cmd: '/tokens', description: 'Show token usage & memory' },
19
+ { cmd: '/helix', description: 'Command Center + Brain (auto-start local)' },
20
+ { cmd: '/helixlocal', description: 'Command Center + Brain (local scope)' },
21
+ { cmd: '/helixglobal', description: 'Command Center + Brain (global scope)' },
22
+ { cmd: '/undo', description: 'Undo file changes' },
23
+ { cmd: '/diff', description: 'Show git diff' },
24
+ { cmd: '/git', description: 'Show git status' },
25
+ { cmd: '/project', description: 'Show project info' },
26
+ { cmd: '/export', description: 'Export spiral as ZIP' },
27
+ { cmd: '/yolo', description: 'Toggle YOLO mode' },
28
+ { cmd: '/skip-permissions', description: 'Toggle skip-permissions' },
29
+ { cmd: '/auto', description: 'Autonomous mode \u2014 find & fix issues' },
30
+ { cmd: '/stop', description: 'Stop autonomous mode' },
31
+ { cmd: '/security', description: 'Run security audit (background)' },
32
+ { cmd: '/sessions', description: 'List all sessions & tabs' },
33
+ { cmd: '/session close', description: 'Close a session by ID' },
34
+ { cmd: '/session stop', description: 'Stop a running session' },
35
+ { cmd: '/local', description: 'Local LLM setup (Ollama)' },
36
+ { cmd: '/validation', description: 'Validation Matrix status' },
37
+ { cmd: '/validation on', description: 'Enable output validation' },
38
+ { cmd: '/validation off', description: 'Disable output validation' },
39
+ { cmd: '/validation verbose', description: 'Toggle verbose validation' },
40
+ { cmd: '/validation strict', description: 'Toggle strict mode' },
41
+ { cmd: '/validation stats', description: 'Show validation statistics' },
42
+ { cmd: '/login', description: 'Log in to HelixMind web platform' },
43
+ { cmd: '/logout', description: 'Log out and revoke API key' },
44
+ { cmd: '/whoami', description: 'Show account & plan info' },
45
+ { cmd: '/exit', description: 'Exit HelixMind' },
46
+ { cmd: '/quit', description: 'Exit HelixMind' },
47
+ ];
48
+ /**
49
+ * Get matching command suggestions for a partial input.
50
+ */
51
+ export function getSuggestions(partial, max = 5) {
52
+ if (!partial || !partial.startsWith('/') || partial.length < 2)
53
+ return [];
54
+ const lower = partial.toLowerCase();
55
+ // Don't suggest if it's an exact match
56
+ const exact = COMMANDS.find(c => c.cmd === lower);
57
+ if (exact)
58
+ return [];
59
+ // Prefix match first
60
+ const prefixed = COMMANDS.filter(c => c.cmd.startsWith(lower));
61
+ if (prefixed.length > 0)
62
+ return prefixed.slice(0, max);
63
+ // Fuzzy: contains the typed chars (without /)
64
+ const chars = lower.slice(1);
65
+ const fuzzy = COMMANDS.filter(c => c.cmd.slice(1).includes(chars));
66
+ return fuzzy.slice(0, max);
67
+ }
68
+ /**
69
+ * Get the best single suggestion for Tab completion.
70
+ */
71
+ export function getBestCompletion(partial) {
72
+ const suggestions = getSuggestions(partial, 1);
73
+ if (suggestions.length === 0)
74
+ return null;
75
+ return suggestions[0].cmd;
76
+ }
77
+ /**
78
+ * Write command suggestions as overlay above the status bar.
79
+ * Uses ANSI cursor positioning to avoid disturbing readline.
80
+ */
81
+ export function writeSuggestions(suggestions) {
82
+ if (suggestions.length === 0)
83
+ return;
84
+ if (!process.stdout.isTTY)
85
+ return;
86
+ const termHeight = process.stdout.rows || 24;
87
+ const count = suggestions.length;
88
+ // Suggestions go above status bar (last row)
89
+ const startRow = termHeight - count;
90
+ process.stdout.write('\x1b7'); // Save cursor
91
+ for (let i = 0; i < count; i++) {
92
+ const row = startRow + i;
93
+ const s = suggestions[i];
94
+ const text = ` ${chalk.cyan(s.cmd)} ${chalk.dim('\u2014')} ${chalk.dim(s.description)}`;
95
+ process.stdout.write(`\x1b[${row};0H\x1b[2K${text}`);
96
+ }
97
+ process.stdout.write('\x1b8'); // Restore cursor
98
+ }
99
+ /**
100
+ * Clear previously rendered suggestions.
101
+ */
102
+ export function clearSuggestions(count) {
103
+ if (count === 0)
104
+ return;
105
+ if (!process.stdout.isTTY)
106
+ return;
107
+ const termHeight = process.stdout.rows || 24;
108
+ const startRow = termHeight - count;
109
+ process.stdout.write('\x1b7'); // Save cursor
110
+ for (let i = 0; i < count; i++) {
111
+ process.stdout.write(`\x1b[${startRow + i};0H\x1b[2K`);
112
+ }
113
+ process.stdout.write('\x1b8'); // Restore cursor
114
+ }
115
+ //# sourceMappingURL=command-suggest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"command-suggest.js","sourceRoot":"","sources":["../../../src/cli/ui/command-suggest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function renderLogo(): string;
2
+ export declare function renderVersion(version: string): string;
3
+ //# sourceMappingURL=logo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logo.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/logo.ts"],"names":[],"mappings":"AAKA,wBAAgB,UAAU,IAAI,MAAM,CAiBnC;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAErD"}
@@ -0,0 +1,25 @@
1
+ import figlet from 'figlet';
2
+ import gradient from 'gradient-string';
3
+ const HELIX_GRADIENT = gradient(['#00d4ff', '#4169e1', '#8a2be2']);
4
+ export function renderLogo() {
5
+ try {
6
+ const ascii = figlet.textSync('HELIX', {
7
+ font: 'ANSI Shadow',
8
+ horizontalLayout: 'default',
9
+ });
10
+ const lines = [];
11
+ lines.push('');
12
+ lines.push(HELIX_GRADIENT(ascii));
13
+ lines.push(HELIX_GRADIENT(' ─── Mind ───'));
14
+ lines.push('');
15
+ return lines.join('\n');
16
+ }
17
+ catch {
18
+ // Fallback if figlet fails
19
+ return HELIX_GRADIENT('\n ╦ ╦╔═╗╦ ╦═╗ ╦\n ╠═╣║╣ ║ ║╠╦╝ ║\n ╩ ╩╚═╝╩═╝╩╩╚ ╩ Mind\n');
20
+ }
21
+ }
22
+ export function renderVersion(version) {
23
+ return ` ${gradient(['#00d4ff', '#4169e1'])(`v${version}`)}`;
24
+ }
25
+ //# sourceMappingURL=logo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logo.js","sourceRoot":"","sources":["../../../src/cli/ui/logo.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AAEvC,MAAM,cAAc,GAAG,QAAQ,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAEnE,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;YACrC,IAAI,EAAE,aAAa;YACnB,gBAAgB,EAAE,SAAS;SAC5B,CAAC,CAAC;QAEH,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,2BAA2B;QAC3B,OAAO,cAAc,CAAC,kEAAkE,CAAC,CAAC;IAC5F,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,OAAO,KAAK,QAAQ,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC;AAChE,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { FeedProgress } from '../feed/pipeline.js';
2
+ export declare function renderFeedProgress(progress: FeedProgress): void;
3
+ export declare function renderFeedSummary(result: {
4
+ filesScanned: number;
5
+ filesRead: number;
6
+ nodesCreated: number;
7
+ relationsCreated: number;
8
+ modules: Array<{
9
+ name: string;
10
+ files: string[];
11
+ description: string;
12
+ }>;
13
+ architecture: string;
14
+ techStack: string[];
15
+ webEnrichment?: {
16
+ topics: string[];
17
+ nodesStored: number;
18
+ duration_ms: number;
19
+ };
20
+ }): void;
21
+ //# sourceMappingURL=progress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/progress.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAyBxD,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAmC/D;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACvE,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE;QACd,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH,GAAG,IAAI,CAsDP"}
@@ -0,0 +1,125 @@
1
+ import { theme } from './theme.js';
2
+ import { visibleLength } from './statusbar.js';
3
+ const STAGES = {
4
+ scanning: 'Scanning',
5
+ reading: 'Reading',
6
+ parsing: 'Parsing',
7
+ analyzing: 'Understanding',
8
+ spiraling: 'Spiraling',
9
+ enriching: '\u{1F310} Web Research',
10
+ done: 'Done',
11
+ };
12
+ const BAR_WIDTH = 20;
13
+ /** Get usable terminal width (with small margin) */
14
+ function termWidth() {
15
+ return (process.stdout.columns || 80) - 4;
16
+ }
17
+ /** Truncate a plain string to maxLen, adding ellipsis if needed */
18
+ function truncText(str, maxLen) {
19
+ if (str.length <= maxLen)
20
+ return str;
21
+ return str.slice(0, maxLen - 1) + '\u2026';
22
+ }
23
+ export function renderFeedProgress(progress) {
24
+ const tw = termWidth();
25
+ const label = STAGES[progress.stage] ?? progress.stage;
26
+ const pct = progress.total > 0
27
+ ? Math.round((progress.current / progress.total) * 100)
28
+ : 0;
29
+ const filled = Math.round((pct / 100) * BAR_WIDTH);
30
+ const bar = '\u2588'.repeat(filled) + '\u2591'.repeat(BAR_WIDTH - filled);
31
+ let line = ` ${label.padEnd(16)} ${theme.primary(bar)} ${String(pct).padStart(3)}%`;
32
+ // Calculate remaining space for detail/file info
33
+ const baseLen = visibleLength(line);
34
+ const remaining = tw - baseLen;
35
+ if (remaining > 10 && progress.detail) {
36
+ const detail = truncText(progress.detail, remaining - 4);
37
+ line += ` ${theme.dim(detail)}`;
38
+ }
39
+ const afterDetail = visibleLength(line);
40
+ const remaining2 = tw - afterDetail;
41
+ if (remaining2 > 10 && progress.currentFile) {
42
+ const file = truncText(progress.currentFile, remaining2 - 4);
43
+ line += ` ${theme.dim(file)}`;
44
+ }
45
+ // Use carriage return to overwrite the line
46
+ process.stdout.write(`\r\x1b[K${line}`);
47
+ if (progress.stage === 'done') {
48
+ process.stdout.write('\n');
49
+ }
50
+ }
51
+ export function renderFeedSummary(result) {
52
+ const tw = termWidth();
53
+ const indent = ' ';
54
+ const moduleIndent = ' ';
55
+ process.stdout.write('\n');
56
+ process.stdout.write(`${theme.accent('\u{1F300}')} ${theme.bold('Feed Complete!')}\n\n`);
57
+ process.stdout.write(`${indent}${theme.primary('\u{1F4C1}')} Scanned: ${result.filesScanned} files (${result.filesRead} relevant)\n`);
58
+ process.stdout.write(`${indent}${theme.primary('\u{1F9E0}')} Created: ${result.nodesCreated} context nodes\n`);
59
+ process.stdout.write(`${indent}${theme.primary('\u{1F517}')} Relations: ${result.relationsCreated} connections\n`);
60
+ if (result.modules.length > 0) {
61
+ process.stdout.write(`${indent}${theme.primary('\u{1F4CA}')} Modules detected:\n`);
62
+ for (let i = 0; i < result.modules.length; i++) {
63
+ const mod = result.modules[i];
64
+ const isLast = i === result.modules.length - 1;
65
+ const prefix = isLast ? '\u2514\u2500' : '\u251C\u2500';
66
+ // Header line: "├─ moduleName (N files)"
67
+ const header = `${moduleIndent}${prefix} ${mod.name} (${mod.files.length} files)`;
68
+ process.stdout.write(`${theme.bold(header)}\n`);
69
+ // Description parts on separate indented lines, each truncated
70
+ const descParts = mod.description.split(' \u2014 ').filter(Boolean);
71
+ const descIndent = moduleIndent + (isLast ? ' ' : '\u2502 ');
72
+ for (const part of descParts) {
73
+ // Skip the redundant "N files" part (already in header)
74
+ if (/^\d+ files$/.test(part.trim()))
75
+ continue;
76
+ const truncated = truncText(part.trim(), tw - descIndent.length);
77
+ process.stdout.write(`${descIndent}${theme.dim(truncated)}\n`);
78
+ }
79
+ }
80
+ }
81
+ // Architecture — truncate to fit
82
+ const archPrefix = `${indent}${theme.primary('\u{1F3D7}\uFE0F')} Architecture: `;
83
+ const archText = truncText(result.architecture, tw - 24);
84
+ process.stdout.write(`${archPrefix}${archText}\n`);
85
+ // Tech stack — wrap into multiple lines if needed
86
+ const stackPrefix = `${indent}${theme.primary('\u{1F527}')} Stack: `;
87
+ const stackPrefixLen = 12; // " 🔧 Stack: " visible length
88
+ writeWrappedList(result.techStack, stackPrefix, stackPrefixLen, tw, indent + ' ');
89
+ if (result.webEnrichment && result.webEnrichment.nodesStored > 0) {
90
+ process.stdout.write(`${indent}${theme.primary('\u{1F310}')} Web Knowledge: +${result.webEnrichment.nodesStored} nodes from internet research\n`);
91
+ if (result.webEnrichment.topics.length > 0) {
92
+ const topicText = truncText(result.webEnrichment.topics.join(', '), tw - moduleIndent.length);
93
+ process.stdout.write(`${moduleIndent}${theme.dim(topicText)}\n`);
94
+ }
95
+ }
96
+ process.stdout.write('\n');
97
+ process.stdout.write(`${indent}${theme.dim('Your spiral now deeply understands this project.')}\n\n`);
98
+ }
99
+ /** Write a comma-separated list with word-wrapping at terminal width */
100
+ function writeWrappedList(items, prefix, prefixVisibleLen, maxWidth, wrapIndent) {
101
+ if (items.length === 0) {
102
+ process.stdout.write(`${prefix}\n`);
103
+ return;
104
+ }
105
+ let line = prefix;
106
+ let lineLen = prefixVisibleLen;
107
+ let firstItem = true;
108
+ for (const item of items) {
109
+ const separator = firstItem ? '' : ', ';
110
+ const addition = separator + item;
111
+ if (!firstItem && lineLen + addition.length > maxWidth) {
112
+ // Wrap to next line
113
+ process.stdout.write(`${line}\n`);
114
+ line = wrapIndent + item;
115
+ lineLen = wrapIndent.length + item.length;
116
+ }
117
+ else {
118
+ line += addition;
119
+ lineLen += addition.length;
120
+ }
121
+ firstItem = false;
122
+ }
123
+ process.stdout.write(`${line}\n`);
124
+ }
125
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../../../src/cli/ui/progress.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export interface MenuItem {
2
+ label: string;
3
+ description?: string;
4
+ key?: string;
5
+ marker?: string;
6
+ disabled?: boolean;
7
+ }
8
+ export interface SelectMenuOptions {
9
+ title?: string;
10
+ cancelLabel?: string;
11
+ pageSize?: number;
12
+ }
13
+ /**
14
+ * Interactive arrow-key menu. Returns the selected index or -1 if cancelled.
15
+ * Works in raw mode — no readline needed.
16
+ */
17
+ export declare function selectMenu(items: MenuItem[], opts?: SelectMenuOptions): Promise<number>;
18
+ /**
19
+ * Convenience: show a yes/no confirmation prompt with arrow keys.
20
+ */
21
+ export declare function confirmMenu(question: string, defaultYes?: boolean): Promise<boolean>;
22
+ //# sourceMappingURL=select-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-menu.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/select-menu.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,QAAQ,EAAE,EACjB,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,MAAM,CAAC,CA0JjB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,UAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAYlF"}
@@ -0,0 +1,152 @@
1
+ import chalk from 'chalk';
2
+ import { theme } from './theme.js';
3
+ /**
4
+ * Interactive arrow-key menu. Returns the selected index or -1 if cancelled.
5
+ * Works in raw mode — no readline needed.
6
+ */
7
+ export function selectMenu(items, opts = {}) {
8
+ const { title, cancelLabel = 'Back', pageSize = 10 } = opts;
9
+ const enabledIndices = items.map((item, i) => item.disabled ? -1 : i).filter(i => i >= 0);
10
+ if (enabledIndices.length === 0)
11
+ return Promise.resolve(-1);
12
+ let cursor = enabledIndices[0];
13
+ let scrollOffset = 0;
14
+ const visibleCount = Math.min(pageSize, items.length);
15
+ function render(clear) {
16
+ if (clear) {
17
+ // Move cursor up to overwrite previous render
18
+ const linesToClear = (title ? 1 : 0) + visibleCount + (items.length > visibleCount ? 1 : 0) + 2;
19
+ process.stdout.write(`\x1b[${linesToClear}A\x1b[J`);
20
+ }
21
+ if (title) {
22
+ process.stdout.write(` ${theme.bold(title)}\n`);
23
+ }
24
+ // Adjust scroll window
25
+ if (cursor < scrollOffset)
26
+ scrollOffset = cursor;
27
+ if (cursor >= scrollOffset + visibleCount)
28
+ scrollOffset = cursor - visibleCount + 1;
29
+ for (let vi = 0; vi < visibleCount; vi++) {
30
+ const i = scrollOffset + vi;
31
+ if (i >= items.length)
32
+ break;
33
+ const item = items[i];
34
+ const isSelected = i === cursor;
35
+ const prefix = isSelected ? theme.primary(' ❯ ') : ' ';
36
+ const label = isSelected ? chalk.white.bold(item.label) : (item.disabled ? chalk.dim(item.label) : item.label);
37
+ const desc = item.description ? (isSelected ? chalk.white(` — ${item.description}`) : chalk.dim(` — ${item.description}`)) : '';
38
+ const marker = item.marker ? ` ${item.marker}` : '';
39
+ const keyHint = item.key ? chalk.dim(` [${item.key}]`) : '';
40
+ process.stdout.write(`${prefix}${label}${desc}${marker}${keyHint}\n`);
41
+ }
42
+ // Scroll indicator
43
+ if (items.length > visibleCount) {
44
+ const above = scrollOffset > 0 ? '↑' : ' ';
45
+ const below = scrollOffset + visibleCount < items.length ? '↓' : ' ';
46
+ process.stdout.write(chalk.dim(` ${above} ${scrollOffset + 1}-${Math.min(scrollOffset + visibleCount, items.length)} of ${items.length} ${below}\n`));
47
+ }
48
+ process.stdout.write(chalk.dim(`\n ↑↓ navigate · Enter select · Esc ${cancelLabel}\n`));
49
+ }
50
+ return new Promise((resolve) => {
51
+ const stdin = process.stdin;
52
+ const wasRaw = stdin.isRaw;
53
+ if (stdin.isTTY) {
54
+ stdin.setRawMode(true);
55
+ }
56
+ stdin.resume();
57
+ let firstRender = true;
58
+ function draw() {
59
+ render(!firstRender);
60
+ firstRender = false;
61
+ }
62
+ function cleanup(result) {
63
+ stdin.removeListener('data', onData);
64
+ if (stdin.isTTY && wasRaw !== undefined) {
65
+ stdin.setRawMode(wasRaw);
66
+ }
67
+ resolve(result);
68
+ }
69
+ function moveCursor(direction) {
70
+ const currentPos = enabledIndices.indexOf(cursor);
71
+ if (currentPos === -1)
72
+ return;
73
+ const nextPos = currentPos + direction;
74
+ if (nextPos >= 0 && nextPos < enabledIndices.length) {
75
+ cursor = enabledIndices[nextPos];
76
+ }
77
+ }
78
+ function onData(data) {
79
+ const key = data.toString();
80
+ // ESC (alone)
81
+ if (key === '\x1b' || key === '\x1b\x1b') {
82
+ cleanup(-1);
83
+ return;
84
+ }
85
+ // Ctrl+C
86
+ if (key === '\x03') {
87
+ cleanup(-1);
88
+ return;
89
+ }
90
+ // Enter
91
+ if (key === '\r' || key === '\n') {
92
+ cleanup(cursor);
93
+ return;
94
+ }
95
+ // Arrow up
96
+ if (key === '\x1b[A') {
97
+ moveCursor(-1);
98
+ draw();
99
+ return;
100
+ }
101
+ // Arrow down
102
+ if (key === '\x1b[B') {
103
+ moveCursor(1);
104
+ draw();
105
+ return;
106
+ }
107
+ // Home / Page Up
108
+ if (key === '\x1b[H' || key === '\x1b[5~') {
109
+ cursor = enabledIndices[0];
110
+ draw();
111
+ return;
112
+ }
113
+ // End / Page Down
114
+ if (key === '\x1b[F' || key === '\x1b[6~') {
115
+ cursor = enabledIndices[enabledIndices.length - 1];
116
+ draw();
117
+ return;
118
+ }
119
+ // Shortcut key match
120
+ const char = key.toLowerCase();
121
+ if (char.length === 1) {
122
+ const matchIdx = items.findIndex((item) => !item.disabled && item.key === char);
123
+ if (matchIdx >= 0) {
124
+ cleanup(matchIdx);
125
+ return;
126
+ }
127
+ }
128
+ // 'q' as cancel shortcut
129
+ if (char === 'q') {
130
+ cleanup(-1);
131
+ return;
132
+ }
133
+ }
134
+ stdin.on('data', onData);
135
+ draw();
136
+ });
137
+ }
138
+ /**
139
+ * Convenience: show a yes/no confirmation prompt with arrow keys.
140
+ */
141
+ export function confirmMenu(question, defaultYes = false) {
142
+ process.stdout.write(`\n ${question}\n`);
143
+ return selectMenu([
144
+ { label: 'Yes' },
145
+ { label: 'No' },
146
+ ], { cancelLabel: 'Cancel' }).then((idx) => {
147
+ if (idx === -1)
148
+ return false;
149
+ return idx === 0;
150
+ });
151
+ }
152
+ //# sourceMappingURL=select-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select-menu.js","sourceRoot":"","sources":["../../../src/cli/ui/select-menu.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function createThinkingSpinner(): import("nanospinner").Spinner;
2
+ export declare function createLoadingSpinner(text: string): import("nanospinner").Spinner;
3
+ //# sourceMappingURL=spinner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/spinner.ts"],"names":[],"mappings":"AAEA,wBAAgB,qBAAqB,kCAMpC;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,iCAIhD"}
@@ -0,0 +1,14 @@
1
+ import { createSpinner } from 'nanospinner';
2
+ export function createThinkingSpinner() {
3
+ return createSpinner('Thinking...', {
4
+ color: 'cyan',
5
+ frames: ['◐', '◓', '◑', '◒'],
6
+ interval: 100,
7
+ });
8
+ }
9
+ export function createLoadingSpinner(text) {
10
+ return createSpinner(text, {
11
+ color: 'cyan',
12
+ });
13
+ }
14
+ //# sourceMappingURL=spinner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../../src/cli/ui/spinner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,UAAU,qBAAqB;IACnC,OAAO,aAAa,CAAC,aAAa,EAAE;QAClC,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;QAC5B,QAAQ,EAAE,GAAG;KACd,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,aAAa,CAAC,IAAI,EAAE;QACzB,KAAK,EAAE,MAAM;KACd,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,65 @@
1
+ export interface StatusBarData {
2
+ spiral: {
3
+ l1: number;
4
+ l2: number;
5
+ l3: number;
6
+ l4: number;
7
+ l5: number;
8
+ l6: number;
9
+ };
10
+ sessionTokens: number;
11
+ tokens: {
12
+ thisMessage: number;
13
+ thisSession: number;
14
+ };
15
+ tools: {
16
+ callsThisRound: number;
17
+ };
18
+ model: string;
19
+ git: {
20
+ branch: string;
21
+ uncommitted: number;
22
+ };
23
+ checkpoints?: number;
24
+ permissionMode?: 'safe' | 'skip' | 'yolo';
25
+ autonomous?: boolean;
26
+ paused?: boolean;
27
+ plan?: string;
28
+ }
29
+ /**
30
+ * Render the statusbar string (single line, colored).
31
+ * Truncates to maxWidth to prevent line wrapping in the terminal.
32
+ */
33
+ export declare function renderStatusBar(data: StatusBarData, maxWidth?: number): string;
34
+ /**
35
+ * Write the statusbar to the bottom of the terminal.
36
+ * Layout (from bottom):
37
+ * row N = statusbar (spiral counts, tokens, model, git)
38
+ * row N-1 = hint line (permission mode · shortcuts)
39
+ * row N-2 = lower input frame line └───┘
40
+ * The upper frame line ┌───┐ + prompt │ ❯ are handled by readline (prompt string).
41
+ */
42
+ /**
43
+ * Pin statusbar to the bottom row of the terminal.
44
+ * Uses save/restore cursor so the caller's cursor position is preserved.
45
+ * Only draws 1 row (the status bar) — separator + hint are drawn inline by showPrompt().
46
+ */
47
+ export declare function writeStatusBar(data: StatusBarData): void;
48
+ /**
49
+ * Write status info as normal inline text (scrolls with content).
50
+ * Safe to call while readline is active — no cursor jumping.
51
+ * Shows: hint line + status bar as two regular lines.
52
+ */
53
+ export declare function writeStatusInline(data: StatusBarData): void;
54
+ /**
55
+ * Get current git info (branch + uncommitted count).
56
+ */
57
+ export declare function getGitInfo(projectRoot: string): {
58
+ branch: string;
59
+ uncommitted: number;
60
+ };
61
+ /** Strip ANSI escape codes to measure visible string width */
62
+ export declare function visibleLength(str: string): number;
63
+ /** Truncate a styled string to fit within maxWidth visible characters */
64
+ export declare function truncateBar(bar: string, maxWidth: number): string;
65
+ //# sourceMappingURL=statusbar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statusbar.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/statusbar.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE;QACN,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,KAAK,EAAE;QACL,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;IACF,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE;QACH,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAC1C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CA4F9E;AAED;;;;;;;GAOG;AACH;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAaxD;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,IAAI,CAc3D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAavF;AAqFD,8DAA8D;AAC9D,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGjD;AAED,yEAAyE;AACzE,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAgBjE"}