helixmind 0.5.4

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 (808) hide show
  1. package/LICENSE +73 -0
  2. package/README.md +323 -0
  3. package/dist/cli/agent/autonomous.d.ts +24 -0
  4. package/dist/cli/agent/autonomous.d.ts.map +1 -0
  5. package/dist/cli/agent/autonomous.js +194 -0
  6. package/dist/cli/agent/autonomous.js.map +1 -0
  7. package/dist/cli/agent/loop.d.ts +87 -0
  8. package/dist/cli/agent/loop.d.ts.map +1 -0
  9. package/dist/cli/agent/loop.js +492 -0
  10. package/dist/cli/agent/loop.js.map +1 -0
  11. package/dist/cli/agent/monitor/alerter.d.ts +29 -0
  12. package/dist/cli/agent/monitor/alerter.d.ts.map +1 -0
  13. package/dist/cli/agent/monitor/alerter.js +80 -0
  14. package/dist/cli/agent/monitor/alerter.js.map +1 -0
  15. package/dist/cli/agent/monitor/baseline.d.ts +14 -0
  16. package/dist/cli/agent/monitor/baseline.d.ts.map +1 -0
  17. package/dist/cli/agent/monitor/baseline.js +157 -0
  18. package/dist/cli/agent/monitor/baseline.js.map +1 -0
  19. package/dist/cli/agent/monitor/prompts.d.ts +9 -0
  20. package/dist/cli/agent/monitor/prompts.d.ts.map +1 -0
  21. package/dist/cli/agent/monitor/prompts.js +103 -0
  22. package/dist/cli/agent/monitor/prompts.js.map +1 -0
  23. package/dist/cli/agent/monitor/responder.d.ts +12 -0
  24. package/dist/cli/agent/monitor/responder.d.ts.map +1 -0
  25. package/dist/cli/agent/monitor/responder.js +59 -0
  26. package/dist/cli/agent/monitor/responder.js.map +1 -0
  27. package/dist/cli/agent/monitor/scanner.d.ts +18 -0
  28. package/dist/cli/agent/monitor/scanner.d.ts.map +1 -0
  29. package/dist/cli/agent/monitor/scanner.js +81 -0
  30. package/dist/cli/agent/monitor/scanner.js.map +1 -0
  31. package/dist/cli/agent/monitor/types.d.ts +119 -0
  32. package/dist/cli/agent/monitor/types.d.ts.map +1 -0
  33. package/dist/cli/agent/monitor/types.js +5 -0
  34. package/dist/cli/agent/monitor/types.js.map +1 -0
  35. package/dist/cli/agent/monitor/watcher.d.ts +4 -0
  36. package/dist/cli/agent/monitor/watcher.d.ts.map +1 -0
  37. package/dist/cli/agent/monitor/watcher.js +214 -0
  38. package/dist/cli/agent/monitor/watcher.js.map +1 -0
  39. package/dist/cli/agent/permissions.d.ts +65 -0
  40. package/dist/cli/agent/permissions.d.ts.map +1 -0
  41. package/dist/cli/agent/permissions.js +447 -0
  42. package/dist/cli/agent/permissions.js.map +1 -0
  43. package/dist/cli/agent/plan-engine.d.ts +72 -0
  44. package/dist/cli/agent/plan-engine.d.ts.map +1 -0
  45. package/dist/cli/agent/plan-engine.js +261 -0
  46. package/dist/cli/agent/plan-engine.js.map +1 -0
  47. package/dist/cli/agent/plan-executor.d.ts +37 -0
  48. package/dist/cli/agent/plan-executor.d.ts.map +1 -0
  49. package/dist/cli/agent/plan-executor.js +105 -0
  50. package/dist/cli/agent/plan-executor.js.map +1 -0
  51. package/dist/cli/agent/plan-types.d.ts +50 -0
  52. package/dist/cli/agent/plan-types.d.ts.map +1 -0
  53. package/dist/cli/agent/plan-types.js +58 -0
  54. package/dist/cli/agent/plan-types.js.map +1 -0
  55. package/dist/cli/agent/sandbox.d.ts +28 -0
  56. package/dist/cli/agent/sandbox.d.ts.map +1 -0
  57. package/dist/cli/agent/sandbox.js +298 -0
  58. package/dist/cli/agent/sandbox.js.map +1 -0
  59. package/dist/cli/agent/swarm.d.ts +75 -0
  60. package/dist/cli/agent/swarm.d.ts.map +1 -0
  61. package/dist/cli/agent/swarm.js +272 -0
  62. package/dist/cli/agent/swarm.js.map +1 -0
  63. package/dist/cli/agent/tools/browser-click.d.ts +2 -0
  64. package/dist/cli/agent/tools/browser-click.d.ts.map +1 -0
  65. package/dist/cli/agent/tools/browser-click.js +35 -0
  66. package/dist/cli/agent/tools/browser-click.js.map +1 -0
  67. package/dist/cli/agent/tools/browser-close.d.ts +2 -0
  68. package/dist/cli/agent/tools/browser-close.d.ts.map +1 -0
  69. package/dist/cli/agent/tools/browser-close.js +27 -0
  70. package/dist/cli/agent/tools/browser-close.js.map +1 -0
  71. package/dist/cli/agent/tools/browser-navigate.d.ts +2 -0
  72. package/dist/cli/agent/tools/browser-navigate.d.ts.map +1 -0
  73. package/dist/cli/agent/tools/browser-navigate.js +27 -0
  74. package/dist/cli/agent/tools/browser-navigate.js.map +1 -0
  75. package/dist/cli/agent/tools/browser-open.d.ts +2 -0
  76. package/dist/cli/agent/tools/browser-open.d.ts.map +1 -0
  77. package/dist/cli/agent/tools/browser-open.js +38 -0
  78. package/dist/cli/agent/tools/browser-open.js.map +1 -0
  79. package/dist/cli/agent/tools/browser-screenshot.d.ts +2 -0
  80. package/dist/cli/agent/tools/browser-screenshot.d.ts.map +1 -0
  81. package/dist/cli/agent/tools/browser-screenshot.js +68 -0
  82. package/dist/cli/agent/tools/browser-screenshot.js.map +1 -0
  83. package/dist/cli/agent/tools/browser-type.d.ts +2 -0
  84. package/dist/cli/agent/tools/browser-type.d.ts.map +1 -0
  85. package/dist/cli/agent/tools/browser-type.js +33 -0
  86. package/dist/cli/agent/tools/browser-type.js.map +1 -0
  87. package/dist/cli/agent/tools/bug-list.d.ts +2 -0
  88. package/dist/cli/agent/tools/bug-list.d.ts.map +1 -0
  89. package/dist/cli/agent/tools/bug-list.js +82 -0
  90. package/dist/cli/agent/tools/bug-list.js.map +1 -0
  91. package/dist/cli/agent/tools/bug-report.d.ts +2 -0
  92. package/dist/cli/agent/tools/bug-report.d.ts.map +1 -0
  93. package/dist/cli/agent/tools/bug-report.js +130 -0
  94. package/dist/cli/agent/tools/bug-report.js.map +1 -0
  95. package/dist/cli/agent/tools/edit-file.d.ts +2 -0
  96. package/dist/cli/agent/tools/edit-file.d.ts.map +1 -0
  97. package/dist/cli/agent/tools/edit-file.js +61 -0
  98. package/dist/cli/agent/tools/edit-file.js.map +1 -0
  99. package/dist/cli/agent/tools/find.d.ts +2 -0
  100. package/dist/cli/agent/tools/find.d.ts.map +1 -0
  101. package/dist/cli/agent/tools/find.js +35 -0
  102. package/dist/cli/agent/tools/find.js.map +1 -0
  103. package/dist/cli/agent/tools/git-commit.d.ts +2 -0
  104. package/dist/cli/agent/tools/git-commit.d.ts.map +1 -0
  105. package/dist/cli/agent/tools/git-commit.js +57 -0
  106. package/dist/cli/agent/tools/git-commit.js.map +1 -0
  107. package/dist/cli/agent/tools/git-diff.d.ts +2 -0
  108. package/dist/cli/agent/tools/git-diff.d.ts.map +1 -0
  109. package/dist/cli/agent/tools/git-diff.js +45 -0
  110. package/dist/cli/agent/tools/git-diff.js.map +1 -0
  111. package/dist/cli/agent/tools/git-log.d.ts +2 -0
  112. package/dist/cli/agent/tools/git-log.d.ts.map +1 -0
  113. package/dist/cli/agent/tools/git-log.js +41 -0
  114. package/dist/cli/agent/tools/git-log.js.map +1 -0
  115. package/dist/cli/agent/tools/git-status.d.ts +2 -0
  116. package/dist/cli/agent/tools/git-status.d.ts.map +1 -0
  117. package/dist/cli/agent/tools/git-status.js +52 -0
  118. package/dist/cli/agent/tools/git-status.js.map +1 -0
  119. package/dist/cli/agent/tools/list-dir.d.ts +2 -0
  120. package/dist/cli/agent/tools/list-dir.d.ts.map +1 -0
  121. package/dist/cli/agent/tools/list-dir.js +73 -0
  122. package/dist/cli/agent/tools/list-dir.js.map +1 -0
  123. package/dist/cli/agent/tools/read-file.d.ts +2 -0
  124. package/dist/cli/agent/tools/read-file.d.ts.map +1 -0
  125. package/dist/cli/agent/tools/read-file.js +45 -0
  126. package/dist/cli/agent/tools/read-file.js.map +1 -0
  127. package/dist/cli/agent/tools/registry.d.ts +34 -0
  128. package/dist/cli/agent/tools/registry.d.ts.map +1 -0
  129. package/dist/cli/agent/tools/registry.js +53 -0
  130. package/dist/cli/agent/tools/registry.js.map +1 -0
  131. package/dist/cli/agent/tools/run-command.d.ts +2 -0
  132. package/dist/cli/agent/tools/run-command.d.ts.map +1 -0
  133. package/dist/cli/agent/tools/run-command.js +112 -0
  134. package/dist/cli/agent/tools/run-command.js.map +1 -0
  135. package/dist/cli/agent/tools/search.d.ts +2 -0
  136. package/dist/cli/agent/tools/search.d.ts.map +1 -0
  137. package/dist/cli/agent/tools/search.js +104 -0
  138. package/dist/cli/agent/tools/search.js.map +1 -0
  139. package/dist/cli/agent/tools/spiral-query.d.ts +2 -0
  140. package/dist/cli/agent/tools/spiral-query.d.ts.map +1 -0
  141. package/dist/cli/agent/tools/spiral-query.js +52 -0
  142. package/dist/cli/agent/tools/spiral-query.js.map +1 -0
  143. package/dist/cli/agent/tools/spiral-store.d.ts +2 -0
  144. package/dist/cli/agent/tools/spiral-store.d.ts.map +1 -0
  145. package/dist/cli/agent/tools/spiral-store.js +37 -0
  146. package/dist/cli/agent/tools/spiral-store.js.map +1 -0
  147. package/dist/cli/agent/tools/web-research.d.ts +2 -0
  148. package/dist/cli/agent/tools/web-research.d.ts.map +1 -0
  149. package/dist/cli/agent/tools/web-research.js +96 -0
  150. package/dist/cli/agent/tools/web-research.js.map +1 -0
  151. package/dist/cli/agent/tools/write-file.d.ts +2 -0
  152. package/dist/cli/agent/tools/write-file.d.ts.map +1 -0
  153. package/dist/cli/agent/tools/write-file.js +86 -0
  154. package/dist/cli/agent/tools/write-file.js.map +1 -0
  155. package/dist/cli/agent/undo.d.ts +30 -0
  156. package/dist/cli/agent/undo.d.ts.map +1 -0
  157. package/dist/cli/agent/undo.js +48 -0
  158. package/dist/cli/agent/undo.js.map +1 -0
  159. package/dist/cli/auth/callback-server.d.ts +15 -0
  160. package/dist/cli/auth/callback-server.d.ts.map +1 -0
  161. package/dist/cli/auth/callback-server.js +169 -0
  162. package/dist/cli/auth/callback-server.js.map +1 -0
  163. package/dist/cli/auth/feature-gate.d.ts +47 -0
  164. package/dist/cli/auth/feature-gate.d.ts.map +1 -0
  165. package/dist/cli/auth/feature-gate.js +171 -0
  166. package/dist/cli/auth/feature-gate.js.map +1 -0
  167. package/dist/cli/auth/guard.d.ts +11 -0
  168. package/dist/cli/auth/guard.d.ts.map +1 -0
  169. package/dist/cli/auth/guard.js +94 -0
  170. package/dist/cli/auth/guard.js.map +1 -0
  171. package/dist/cli/auth/login.d.ts +22 -0
  172. package/dist/cli/auth/login.d.ts.map +1 -0
  173. package/dist/cli/auth/login.js +287 -0
  174. package/dist/cli/auth/login.js.map +1 -0
  175. package/dist/cli/auth/logout.d.ts +6 -0
  176. package/dist/cli/auth/logout.d.ts.map +1 -0
  177. package/dist/cli/auth/logout.js +36 -0
  178. package/dist/cli/auth/logout.js.map +1 -0
  179. package/dist/cli/bench/dataset.d.ts +13 -0
  180. package/dist/cli/bench/dataset.d.ts.map +1 -0
  181. package/dist/cli/bench/dataset.js +97 -0
  182. package/dist/cli/bench/dataset.js.map +1 -0
  183. package/dist/cli/bench/harness.d.ts +7 -0
  184. package/dist/cli/bench/harness.d.ts.map +1 -0
  185. package/dist/cli/bench/harness.js +135 -0
  186. package/dist/cli/bench/harness.js.map +1 -0
  187. package/dist/cli/bench/metrics.d.ts +15 -0
  188. package/dist/cli/bench/metrics.d.ts.map +1 -0
  189. package/dist/cli/bench/metrics.js +98 -0
  190. package/dist/cli/bench/metrics.js.map +1 -0
  191. package/dist/cli/bench/output.d.ts +42 -0
  192. package/dist/cli/bench/output.d.ts.map +1 -0
  193. package/dist/cli/bench/output.js +140 -0
  194. package/dist/cli/bench/output.js.map +1 -0
  195. package/dist/cli/bench/prompt.d.ts +13 -0
  196. package/dist/cli/bench/prompt.d.ts.map +1 -0
  197. package/dist/cli/bench/prompt.js +106 -0
  198. package/dist/cli/bench/prompt.js.map +1 -0
  199. package/dist/cli/bench/runner.d.ts +14 -0
  200. package/dist/cli/bench/runner.d.ts.map +1 -0
  201. package/dist/cli/bench/runner.js +334 -0
  202. package/dist/cli/bench/runner.js.map +1 -0
  203. package/dist/cli/bench/types.d.ts +109 -0
  204. package/dist/cli/bench/types.d.ts.map +1 -0
  205. package/dist/cli/bench/types.js +2 -0
  206. package/dist/cli/bench/types.js.map +1 -0
  207. package/dist/cli/bench/ui.d.ts +12 -0
  208. package/dist/cli/bench/ui.d.ts.map +1 -0
  209. package/dist/cli/bench/ui.js +126 -0
  210. package/dist/cli/bench/ui.js.map +1 -0
  211. package/dist/cli/brain/archive.d.ts +33 -0
  212. package/dist/cli/brain/archive.d.ts.map +1 -0
  213. package/dist/cli/brain/archive.js +166 -0
  214. package/dist/cli/brain/archive.js.map +1 -0
  215. package/dist/cli/brain/control-protocol.d.ts +913 -0
  216. package/dist/cli/brain/control-protocol.d.ts.map +1 -0
  217. package/dist/cli/brain/control-protocol.js +87 -0
  218. package/dist/cli/brain/control-protocol.js.map +1 -0
  219. package/dist/cli/brain/exporter.d.ts +34 -0
  220. package/dist/cli/brain/exporter.d.ts.map +1 -0
  221. package/dist/cli/brain/exporter.js +37 -0
  222. package/dist/cli/brain/exporter.js.map +1 -0
  223. package/dist/cli/brain/generator.d.ts +157 -0
  224. package/dist/cli/brain/generator.d.ts.map +1 -0
  225. package/dist/cli/brain/generator.js +633 -0
  226. package/dist/cli/brain/generator.js.map +1 -0
  227. package/dist/cli/brain/instance-manager.d.ts +42 -0
  228. package/dist/cli/brain/instance-manager.d.ts.map +1 -0
  229. package/dist/cli/brain/instance-manager.js +152 -0
  230. package/dist/cli/brain/instance-manager.js.map +1 -0
  231. package/dist/cli/brain/relay-client.d.ts +8 -0
  232. package/dist/cli/brain/relay-client.d.ts.map +1 -0
  233. package/dist/cli/brain/relay-client.js +505 -0
  234. package/dist/cli/brain/relay-client.js.map +1 -0
  235. package/dist/cli/brain/server.d.ts +40 -0
  236. package/dist/cli/brain/server.d.ts.map +1 -0
  237. package/dist/cli/brain/server.js +873 -0
  238. package/dist/cli/brain/server.js.map +1 -0
  239. package/dist/cli/brain/stdout-capture.d.ts +19 -0
  240. package/dist/cli/brain/stdout-capture.d.ts.map +1 -0
  241. package/dist/cli/brain/stdout-capture.js +45 -0
  242. package/dist/cli/brain/stdout-capture.js.map +1 -0
  243. package/dist/cli/brain/sync.d.ts +53 -0
  244. package/dist/cli/brain/sync.d.ts.map +1 -0
  245. package/dist/cli/brain/sync.js +113 -0
  246. package/dist/cli/brain/sync.js.map +1 -0
  247. package/dist/cli/brain/template.d.ts +3 -0
  248. package/dist/cli/brain/template.d.ts.map +1 -0
  249. package/dist/cli/brain/template.js +2099 -0
  250. package/dist/cli/brain/template.js.map +1 -0
  251. package/dist/cli/brain/web-chat-handler.d.ts +26 -0
  252. package/dist/cli/brain/web-chat-handler.d.ts.map +1 -0
  253. package/dist/cli/brain/web-chat-handler.js +134 -0
  254. package/dist/cli/brain/web-chat-handler.js.map +1 -0
  255. package/dist/cli/browser/chrome-finder.d.ts +12 -0
  256. package/dist/cli/browser/chrome-finder.d.ts.map +1 -0
  257. package/dist/cli/browser/chrome-finder.js +74 -0
  258. package/dist/cli/browser/chrome-finder.js.map +1 -0
  259. package/dist/cli/browser/controller.d.ts +51 -0
  260. package/dist/cli/browser/controller.d.ts.map +1 -0
  261. package/dist/cli/browser/controller.js +152 -0
  262. package/dist/cli/browser/controller.js.map +1 -0
  263. package/dist/cli/browser/vision.d.ts +38 -0
  264. package/dist/cli/browser/vision.d.ts.map +1 -0
  265. package/dist/cli/browser/vision.js +123 -0
  266. package/dist/cli/browser/vision.js.map +1 -0
  267. package/dist/cli/bugs/detector.d.ts +14 -0
  268. package/dist/cli/bugs/detector.d.ts.map +1 -0
  269. package/dist/cli/bugs/detector.js +108 -0
  270. package/dist/cli/bugs/detector.js.map +1 -0
  271. package/dist/cli/bugs/journal.d.ts +39 -0
  272. package/dist/cli/bugs/journal.d.ts.map +1 -0
  273. package/dist/cli/bugs/journal.js +195 -0
  274. package/dist/cli/bugs/journal.js.map +1 -0
  275. package/dist/cli/bugs/types.d.ts +27 -0
  276. package/dist/cli/bugs/types.d.ts.map +1 -0
  277. package/dist/cli/bugs/types.js +2 -0
  278. package/dist/cli/bugs/types.js.map +1 -0
  279. package/dist/cli/checkpoints/browser.d.ts +26 -0
  280. package/dist/cli/checkpoints/browser.d.ts.map +1 -0
  281. package/dist/cli/checkpoints/browser.js +272 -0
  282. package/dist/cli/checkpoints/browser.js.map +1 -0
  283. package/dist/cli/checkpoints/keybinding.d.ts +22 -0
  284. package/dist/cli/checkpoints/keybinding.d.ts.map +1 -0
  285. package/dist/cli/checkpoints/keybinding.js +44 -0
  286. package/dist/cli/checkpoints/keybinding.js.map +1 -0
  287. package/dist/cli/checkpoints/revert.d.ts +37 -0
  288. package/dist/cli/checkpoints/revert.d.ts.map +1 -0
  289. package/dist/cli/checkpoints/revert.js +144 -0
  290. package/dist/cli/checkpoints/revert.js.map +1 -0
  291. package/dist/cli/checkpoints/store.d.ts +48 -0
  292. package/dist/cli/checkpoints/store.d.ts.map +1 -0
  293. package/dist/cli/checkpoints/store.js +196 -0
  294. package/dist/cli/checkpoints/store.js.map +1 -0
  295. package/dist/cli/commands/archive.d.ts +7 -0
  296. package/dist/cli/commands/archive.d.ts.map +1 -0
  297. package/dist/cli/commands/archive.js +66 -0
  298. package/dist/cli/commands/archive.js.map +1 -0
  299. package/dist/cli/commands/auth.d.ts +10 -0
  300. package/dist/cli/commands/auth.d.ts.map +1 -0
  301. package/dist/cli/commands/auth.js +44 -0
  302. package/dist/cli/commands/auth.js.map +1 -0
  303. package/dist/cli/commands/bench.d.ts +25 -0
  304. package/dist/cli/commands/bench.d.ts.map +1 -0
  305. package/dist/cli/commands/bench.js +114 -0
  306. package/dist/cli/commands/bench.js.map +1 -0
  307. package/dist/cli/commands/chat.d.ts +11 -0
  308. package/dist/cli/commands/chat.d.ts.map +1 -0
  309. package/dist/cli/commands/chat.js +5363 -0
  310. package/dist/cli/commands/chat.js.map +1 -0
  311. package/dist/cli/commands/config.d.ts +4 -0
  312. package/dist/cli/commands/config.d.ts.map +1 -0
  313. package/dist/cli/commands/config.js +43 -0
  314. package/dist/cli/commands/config.js.map +1 -0
  315. package/dist/cli/commands/feed.d.ts +6 -0
  316. package/dist/cli/commands/feed.d.ts.map +1 -0
  317. package/dist/cli/commands/feed.js +95 -0
  318. package/dist/cli/commands/feed.js.map +1 -0
  319. package/dist/cli/commands/helix-menu.d.ts +4 -0
  320. package/dist/cli/commands/helix-menu.d.ts.map +1 -0
  321. package/dist/cli/commands/helix-menu.js +400 -0
  322. package/dist/cli/commands/helix-menu.js.map +1 -0
  323. package/dist/cli/commands/init.d.ts +2 -0
  324. package/dist/cli/commands/init.d.ts.map +1 -0
  325. package/dist/cli/commands/init.js +38 -0
  326. package/dist/cli/commands/init.js.map +1 -0
  327. package/dist/cli/commands/setup.d.ts +20 -0
  328. package/dist/cli/commands/setup.d.ts.map +1 -0
  329. package/dist/cli/commands/setup.js +310 -0
  330. package/dist/cli/commands/setup.js.map +1 -0
  331. package/dist/cli/commands/spiral.d.ts +4 -0
  332. package/dist/cli/commands/spiral.d.ts.map +1 -0
  333. package/dist/cli/commands/spiral.js +81 -0
  334. package/dist/cli/commands/spiral.js.map +1 -0
  335. package/dist/cli/config/store.d.ts +80 -0
  336. package/dist/cli/config/store.d.ts.map +1 -0
  337. package/dist/cli/config/store.js +247 -0
  338. package/dist/cli/config/store.js.map +1 -0
  339. package/dist/cli/config/trust.d.ts +21 -0
  340. package/dist/cli/config/trust.d.ts.map +1 -0
  341. package/dist/cli/config/trust.js +106 -0
  342. package/dist/cli/config/trust.js.map +1 -0
  343. package/dist/cli/context/assembler.d.ts +9 -0
  344. package/dist/cli/context/assembler.d.ts.map +1 -0
  345. package/dist/cli/context/assembler.js +217 -0
  346. package/dist/cli/context/assembler.js.map +1 -0
  347. package/dist/cli/context/project.d.ts +13 -0
  348. package/dist/cli/context/project.d.ts.map +1 -0
  349. package/dist/cli/context/project.js +126 -0
  350. package/dist/cli/context/project.js.map +1 -0
  351. package/dist/cli/context/session-buffer.d.ts +69 -0
  352. package/dist/cli/context/session-buffer.d.ts.map +1 -0
  353. package/dist/cli/context/session-buffer.js +362 -0
  354. package/dist/cli/context/session-buffer.js.map +1 -0
  355. package/dist/cli/context/trimmer.d.ts +26 -0
  356. package/dist/cli/context/trimmer.d.ts.map +1 -0
  357. package/dist/cli/context/trimmer.js +137 -0
  358. package/dist/cli/context/trimmer.js.map +1 -0
  359. package/dist/cli/core/index.d.ts +15 -0
  360. package/dist/cli/core/index.d.ts.map +1 -0
  361. package/dist/cli/core/index.js +12 -0
  362. package/dist/cli/core/index.js.map +1 -0
  363. package/dist/cli/core/input.d.ts +208 -0
  364. package/dist/cli/core/input.d.ts.map +1 -0
  365. package/dist/cli/core/input.js +807 -0
  366. package/dist/cli/core/input.js.map +1 -0
  367. package/dist/cli/core/screen.d.ts +211 -0
  368. package/dist/cli/core/screen.d.ts.map +1 -0
  369. package/dist/cli/core/screen.js +826 -0
  370. package/dist/cli/core/screen.js.map +1 -0
  371. package/dist/cli/core/terminal.d.ts +88 -0
  372. package/dist/cli/core/terminal.d.ts.map +1 -0
  373. package/dist/cli/core/terminal.js +200 -0
  374. package/dist/cli/core/terminal.js.map +1 -0
  375. package/dist/cli/feed/analyzer.d.ts +17 -0
  376. package/dist/cli/feed/analyzer.d.ts.map +1 -0
  377. package/dist/cli/feed/analyzer.js +220 -0
  378. package/dist/cli/feed/analyzer.js.map +1 -0
  379. package/dist/cli/feed/intent.d.ts +8 -0
  380. package/dist/cli/feed/intent.d.ts.map +1 -0
  381. package/dist/cli/feed/intent.js +70 -0
  382. package/dist/cli/feed/intent.js.map +1 -0
  383. package/dist/cli/feed/parser.d.ts +23 -0
  384. package/dist/cli/feed/parser.d.ts.map +1 -0
  385. package/dist/cli/feed/parser.js +166 -0
  386. package/dist/cli/feed/parser.js.map +1 -0
  387. package/dist/cli/feed/pipeline.d.ts +33 -0
  388. package/dist/cli/feed/pipeline.d.ts.map +1 -0
  389. package/dist/cli/feed/pipeline.js +250 -0
  390. package/dist/cli/feed/pipeline.js.map +1 -0
  391. package/dist/cli/feed/reader.d.ts +10 -0
  392. package/dist/cli/feed/reader.d.ts.map +1 -0
  393. package/dist/cli/feed/reader.js +61 -0
  394. package/dist/cli/feed/reader.js.map +1 -0
  395. package/dist/cli/feed/scanner.d.ts +10 -0
  396. package/dist/cli/feed/scanner.d.ts.map +1 -0
  397. package/dist/cli/feed/scanner.js +124 -0
  398. package/dist/cli/feed/scanner.js.map +1 -0
  399. package/dist/cli/feed/watcher.d.ts +14 -0
  400. package/dist/cli/feed/watcher.d.ts.map +1 -0
  401. package/dist/cli/feed/watcher.js +76 -0
  402. package/dist/cli/feed/watcher.js.map +1 -0
  403. package/dist/cli/helixmind.cmd +2 -0
  404. package/dist/cli/index.d.ts +3 -0
  405. package/dist/cli/index.d.ts.map +1 -0
  406. package/dist/cli/index.js +297 -0
  407. package/dist/cli/index.js.map +1 -0
  408. package/dist/cli/jarvis/autonomy.d.ts +55 -0
  409. package/dist/cli/jarvis/autonomy.d.ts.map +1 -0
  410. package/dist/cli/jarvis/autonomy.js +176 -0
  411. package/dist/cli/jarvis/autonomy.js.map +1 -0
  412. package/dist/cli/jarvis/code-reviewer.d.ts +35 -0
  413. package/dist/cli/jarvis/code-reviewer.d.ts.map +1 -0
  414. package/dist/cli/jarvis/code-reviewer.js +93 -0
  415. package/dist/cli/jarvis/code-reviewer.js.map +1 -0
  416. package/dist/cli/jarvis/core-ethics.d.ts +35 -0
  417. package/dist/cli/jarvis/core-ethics.d.ts.map +1 -0
  418. package/dist/cli/jarvis/core-ethics.js +246 -0
  419. package/dist/cli/jarvis/core-ethics.js.map +1 -0
  420. package/dist/cli/jarvis/daemon.d.ts +24 -0
  421. package/dist/cli/jarvis/daemon.d.ts.map +1 -0
  422. package/dist/cli/jarvis/daemon.js +230 -0
  423. package/dist/cli/jarvis/daemon.js.map +1 -0
  424. package/dist/cli/jarvis/dependency-guardian.d.ts +40 -0
  425. package/dist/cli/jarvis/dependency-guardian.d.ts.map +1 -0
  426. package/dist/cli/jarvis/dependency-guardian.js +148 -0
  427. package/dist/cli/jarvis/dependency-guardian.js.map +1 -0
  428. package/dist/cli/jarvis/git-intelligence.d.ts +36 -0
  429. package/dist/cli/jarvis/git-intelligence.d.ts.map +1 -0
  430. package/dist/cli/jarvis/git-intelligence.js +222 -0
  431. package/dist/cli/jarvis/git-intelligence.js.map +1 -0
  432. package/dist/cli/jarvis/identity.d.ts +57 -0
  433. package/dist/cli/jarvis/identity.d.ts.map +1 -0
  434. package/dist/cli/jarvis/identity.js +416 -0
  435. package/dist/cli/jarvis/identity.js.map +1 -0
  436. package/dist/cli/jarvis/index.d.ts +9 -0
  437. package/dist/cli/jarvis/index.d.ts.map +1 -0
  438. package/dist/cli/jarvis/index.js +7 -0
  439. package/dist/cli/jarvis/index.js.map +1 -0
  440. package/dist/cli/jarvis/instance-lock.d.ts +15 -0
  441. package/dist/cli/jarvis/instance-lock.d.ts.map +1 -0
  442. package/dist/cli/jarvis/instance-lock.js +95 -0
  443. package/dist/cli/jarvis/instance-lock.js.map +1 -0
  444. package/dist/cli/jarvis/learning.d.ts +73 -0
  445. package/dist/cli/jarvis/learning.d.ts.map +1 -0
  446. package/dist/cli/jarvis/learning.js +284 -0
  447. package/dist/cli/jarvis/learning.js.map +1 -0
  448. package/dist/cli/jarvis/multi-project.d.ts +39 -0
  449. package/dist/cli/jarvis/multi-project.d.ts.map +1 -0
  450. package/dist/cli/jarvis/multi-project.js +152 -0
  451. package/dist/cli/jarvis/multi-project.js.map +1 -0
  452. package/dist/cli/jarvis/notifications.d.ts +39 -0
  453. package/dist/cli/jarvis/notifications.d.ts.map +1 -0
  454. package/dist/cli/jarvis/notifications.js +216 -0
  455. package/dist/cli/jarvis/notifications.js.map +1 -0
  456. package/dist/cli/jarvis/onboarding.d.ts +19 -0
  457. package/dist/cli/jarvis/onboarding.d.ts.map +1 -0
  458. package/dist/cli/jarvis/onboarding.js +116 -0
  459. package/dist/cli/jarvis/onboarding.js.map +1 -0
  460. package/dist/cli/jarvis/orchestrator.d.ts +46 -0
  461. package/dist/cli/jarvis/orchestrator.d.ts.map +1 -0
  462. package/dist/cli/jarvis/orchestrator.js +253 -0
  463. package/dist/cli/jarvis/orchestrator.js.map +1 -0
  464. package/dist/cli/jarvis/parallel.d.ts +63 -0
  465. package/dist/cli/jarvis/parallel.d.ts.map +1 -0
  466. package/dist/cli/jarvis/parallel.js +172 -0
  467. package/dist/cli/jarvis/parallel.js.map +1 -0
  468. package/dist/cli/jarvis/performance-profiler.d.ts +31 -0
  469. package/dist/cli/jarvis/performance-profiler.d.ts.map +1 -0
  470. package/dist/cli/jarvis/performance-profiler.js +229 -0
  471. package/dist/cli/jarvis/performance-profiler.js.map +1 -0
  472. package/dist/cli/jarvis/proposals.d.ts +80 -0
  473. package/dist/cli/jarvis/proposals.d.ts.map +1 -0
  474. package/dist/cli/jarvis/proposals.js +286 -0
  475. package/dist/cli/jarvis/proposals.js.map +1 -0
  476. package/dist/cli/jarvis/queue.d.ts +41 -0
  477. package/dist/cli/jarvis/queue.d.ts.map +1 -0
  478. package/dist/cli/jarvis/queue.js +245 -0
  479. package/dist/cli/jarvis/queue.js.map +1 -0
  480. package/dist/cli/jarvis/runtime-context.d.ts +34 -0
  481. package/dist/cli/jarvis/runtime-context.d.ts.map +1 -0
  482. package/dist/cli/jarvis/runtime-context.js +113 -0
  483. package/dist/cli/jarvis/runtime-context.js.map +1 -0
  484. package/dist/cli/jarvis/scheduler.d.ts +21 -0
  485. package/dist/cli/jarvis/scheduler.d.ts.map +1 -0
  486. package/dist/cli/jarvis/scheduler.js +182 -0
  487. package/dist/cli/jarvis/scheduler.js.map +1 -0
  488. package/dist/cli/jarvis/sentiment.d.ts +29 -0
  489. package/dist/cli/jarvis/sentiment.d.ts.map +1 -0
  490. package/dist/cli/jarvis/sentiment.js +221 -0
  491. package/dist/cli/jarvis/sentiment.js.map +1 -0
  492. package/dist/cli/jarvis/skill-scoring.d.ts +63 -0
  493. package/dist/cli/jarvis/skill-scoring.d.ts.map +1 -0
  494. package/dist/cli/jarvis/skill-scoring.js +226 -0
  495. package/dist/cli/jarvis/skill-scoring.js.map +1 -0
  496. package/dist/cli/jarvis/skills.d.ts +87 -0
  497. package/dist/cli/jarvis/skills.d.ts.map +1 -0
  498. package/dist/cli/jarvis/skills.js +367 -0
  499. package/dist/cli/jarvis/skills.js.map +1 -0
  500. package/dist/cli/jarvis/telegram-bot.d.ts +77 -0
  501. package/dist/cli/jarvis/telegram-bot.d.ts.map +1 -0
  502. package/dist/cli/jarvis/telegram-bot.js +251 -0
  503. package/dist/cli/jarvis/telegram-bot.js.map +1 -0
  504. package/dist/cli/jarvis/telemetry.d.ts +32 -0
  505. package/dist/cli/jarvis/telemetry.d.ts.map +1 -0
  506. package/dist/cli/jarvis/telemetry.js +213 -0
  507. package/dist/cli/jarvis/telemetry.js.map +1 -0
  508. package/dist/cli/jarvis/test-sentinel.d.ts +36 -0
  509. package/dist/cli/jarvis/test-sentinel.d.ts.map +1 -0
  510. package/dist/cli/jarvis/test-sentinel.js +178 -0
  511. package/dist/cli/jarvis/test-sentinel.js.map +1 -0
  512. package/dist/cli/jarvis/thinking-loop.d.ts +15 -0
  513. package/dist/cli/jarvis/thinking-loop.d.ts.map +1 -0
  514. package/dist/cli/jarvis/thinking-loop.js +437 -0
  515. package/dist/cli/jarvis/thinking-loop.js.map +1 -0
  516. package/dist/cli/jarvis/triggers.d.ts +23 -0
  517. package/dist/cli/jarvis/triggers.d.ts.map +1 -0
  518. package/dist/cli/jarvis/triggers.js +157 -0
  519. package/dist/cli/jarvis/triggers.js.map +1 -0
  520. package/dist/cli/jarvis/types.d.ts +582 -0
  521. package/dist/cli/jarvis/types.d.ts.map +1 -0
  522. package/dist/cli/jarvis/types.js +18 -0
  523. package/dist/cli/jarvis/types.js.map +1 -0
  524. package/dist/cli/jarvis/voice-bridge.d.ts +68 -0
  525. package/dist/cli/jarvis/voice-bridge.d.ts.map +1 -0
  526. package/dist/cli/jarvis/voice-bridge.js +254 -0
  527. package/dist/cli/jarvis/voice-bridge.js.map +1 -0
  528. package/dist/cli/jarvis/world-model.d.ts +43 -0
  529. package/dist/cli/jarvis/world-model.d.ts.map +1 -0
  530. package/dist/cli/jarvis/world-model.js +209 -0
  531. package/dist/cli/jarvis/world-model.js.map +1 -0
  532. package/dist/cli/jarvis-proxy/client.d.ts +18 -0
  533. package/dist/cli/jarvis-proxy/client.d.ts.map +1 -0
  534. package/dist/cli/jarvis-proxy/client.js +64 -0
  535. package/dist/cli/jarvis-proxy/client.js.map +1 -0
  536. package/dist/cli/jarvis-proxy/executor.d.ts +13 -0
  537. package/dist/cli/jarvis-proxy/executor.d.ts.map +1 -0
  538. package/dist/cli/jarvis-proxy/executor.js +32 -0
  539. package/dist/cli/jarvis-proxy/executor.js.map +1 -0
  540. package/dist/cli/jarvis-proxy/types.d.ts +25 -0
  541. package/dist/cli/jarvis-proxy/types.d.ts.map +1 -0
  542. package/dist/cli/jarvis-proxy/types.js +7 -0
  543. package/dist/cli/jarvis-proxy/types.js.map +1 -0
  544. package/dist/cli/license/checker.d.ts +11 -0
  545. package/dist/cli/license/checker.d.ts.map +1 -0
  546. package/dist/cli/license/checker.js +28 -0
  547. package/dist/cli/license/checker.js.map +1 -0
  548. package/dist/cli/license/validator.d.ts +13 -0
  549. package/dist/cli/license/validator.d.ts.map +1 -0
  550. package/dist/cli/license/validator.js +72 -0
  551. package/dist/cli/license/validator.js.map +1 -0
  552. package/dist/cli/providers/anthropic.d.ts +11 -0
  553. package/dist/cli/providers/anthropic.d.ts.map +1 -0
  554. package/dist/cli/providers/anthropic.js +120 -0
  555. package/dist/cli/providers/anthropic.js.map +1 -0
  556. package/dist/cli/providers/model-limits.d.ts +12 -0
  557. package/dist/cli/providers/model-limits.d.ts.map +1 -0
  558. package/dist/cli/providers/model-limits.js +63 -0
  559. package/dist/cli/providers/model-limits.js.map +1 -0
  560. package/dist/cli/providers/ollama.d.ts +37 -0
  561. package/dist/cli/providers/ollama.d.ts.map +1 -0
  562. package/dist/cli/providers/ollama.js +151 -0
  563. package/dist/cli/providers/ollama.js.map +1 -0
  564. package/dist/cli/providers/openai.d.ts +14 -0
  565. package/dist/cli/providers/openai.d.ts.map +1 -0
  566. package/dist/cli/providers/openai.js +319 -0
  567. package/dist/cli/providers/openai.js.map +1 -0
  568. package/dist/cli/providers/rate-limiter.d.ts +51 -0
  569. package/dist/cli/providers/rate-limiter.d.ts.map +1 -0
  570. package/dist/cli/providers/rate-limiter.js +164 -0
  571. package/dist/cli/providers/rate-limiter.js.map +1 -0
  572. package/dist/cli/providers/registry.d.ts +16 -0
  573. package/dist/cli/providers/registry.d.ts.map +1 -0
  574. package/dist/cli/providers/registry.js +99 -0
  575. package/dist/cli/providers/registry.js.map +1 -0
  576. package/dist/cli/providers/types.d.ts +72 -0
  577. package/dist/cli/providers/types.d.ts.map +1 -0
  578. package/dist/cli/providers/types.js +2 -0
  579. package/dist/cli/providers/types.js.map +1 -0
  580. package/dist/cli/sessions/manager.d.ts +69 -0
  581. package/dist/cli/sessions/manager.d.ts.map +1 -0
  582. package/dist/cli/sessions/manager.js +201 -0
  583. package/dist/cli/sessions/manager.js.map +1 -0
  584. package/dist/cli/sessions/session.d.ts +58 -0
  585. package/dist/cli/sessions/session.d.ts.map +1 -0
  586. package/dist/cli/sessions/session.js +74 -0
  587. package/dist/cli/sessions/session.js.map +1 -0
  588. package/dist/cli/sessions/tab-view.d.ts +18 -0
  589. package/dist/cli/sessions/tab-view.d.ts.map +1 -0
  590. package/dist/cli/sessions/tab-view.js +137 -0
  591. package/dist/cli/sessions/tab-view.js.map +1 -0
  592. package/dist/cli/ui/activity.d.ts +81 -0
  593. package/dist/cli/ui/activity.d.ts.map +1 -0
  594. package/dist/cli/ui/activity.js +286 -0
  595. package/dist/cli/ui/activity.js.map +1 -0
  596. package/dist/cli/ui/agent-display.d.ts +24 -0
  597. package/dist/cli/ui/agent-display.d.ts.map +1 -0
  598. package/dist/cli/ui/agent-display.js +36 -0
  599. package/dist/cli/ui/agent-display.js.map +1 -0
  600. package/dist/cli/ui/bottom-chrome.d.ts +121 -0
  601. package/dist/cli/ui/bottom-chrome.d.ts.map +1 -0
  602. package/dist/cli/ui/bottom-chrome.js +428 -0
  603. package/dist/cli/ui/bottom-chrome.js.map +1 -0
  604. package/dist/cli/ui/chat-view.d.ts +10 -0
  605. package/dist/cli/ui/chat-view.d.ts.map +1 -0
  606. package/dist/cli/ui/chat-view.js +237 -0
  607. package/dist/cli/ui/chat-view.js.map +1 -0
  608. package/dist/cli/ui/command-suggest.d.ts +22 -0
  609. package/dist/cli/ui/command-suggest.d.ts.map +1 -0
  610. package/dist/cli/ui/command-suggest.js +118 -0
  611. package/dist/cli/ui/command-suggest.js.map +1 -0
  612. package/dist/cli/ui/input-window.d.ts +145 -0
  613. package/dist/cli/ui/input-window.d.ts.map +1 -0
  614. package/dist/cli/ui/input-window.js +415 -0
  615. package/dist/cli/ui/input-window.js.map +1 -0
  616. package/dist/cli/ui/logo.d.ts +3 -0
  617. package/dist/cli/ui/logo.d.ts.map +1 -0
  618. package/dist/cli/ui/logo.js +25 -0
  619. package/dist/cli/ui/logo.js.map +1 -0
  620. package/dist/cli/ui/plan-display.d.ts +35 -0
  621. package/dist/cli/ui/plan-display.d.ts.map +1 -0
  622. package/dist/cli/ui/plan-display.js +381 -0
  623. package/dist/cli/ui/plan-display.js.map +1 -0
  624. package/dist/cli/ui/progress.d.ts +22 -0
  625. package/dist/cli/ui/progress.d.ts.map +1 -0
  626. package/dist/cli/ui/progress.js +126 -0
  627. package/dist/cli/ui/progress.js.map +1 -0
  628. package/dist/cli/ui/prompt-history.d.ts +37 -0
  629. package/dist/cli/ui/prompt-history.d.ts.map +1 -0
  630. package/dist/cli/ui/prompt-history.js +156 -0
  631. package/dist/cli/ui/prompt-history.js.map +1 -0
  632. package/dist/cli/ui/select-menu.d.ts +45 -0
  633. package/dist/cli/ui/select-menu.d.ts.map +1 -0
  634. package/dist/cli/ui/select-menu.js +330 -0
  635. package/dist/cli/ui/select-menu.js.map +1 -0
  636. package/dist/cli/ui/spinner.d.ts +3 -0
  637. package/dist/cli/ui/spinner.d.ts.map +1 -0
  638. package/dist/cli/ui/spinner.js +14 -0
  639. package/dist/cli/ui/spinner.js.map +1 -0
  640. package/dist/cli/ui/statusbar.d.ts +72 -0
  641. package/dist/cli/ui/statusbar.d.ts.map +1 -0
  642. package/dist/cli/ui/statusbar.js +376 -0
  643. package/dist/cli/ui/statusbar.js.map +1 -0
  644. package/dist/cli/ui/suggestion-panel.d.ts +52 -0
  645. package/dist/cli/ui/suggestion-panel.d.ts.map +1 -0
  646. package/dist/cli/ui/suggestion-panel.js +159 -0
  647. package/dist/cli/ui/suggestion-panel.js.map +1 -0
  648. package/dist/cli/ui/theme.d.ts +20 -0
  649. package/dist/cli/ui/theme.d.ts.map +1 -0
  650. package/dist/cli/ui/theme.js +25 -0
  651. package/dist/cli/ui/theme.js.map +1 -0
  652. package/dist/cli/ui/tool-output.d.ts +31 -0
  653. package/dist/cli/ui/tool-output.d.ts.map +1 -0
  654. package/dist/cli/ui/tool-output.js +204 -0
  655. package/dist/cli/ui/tool-output.js.map +1 -0
  656. package/dist/cli/validation/autofix.d.ts +32 -0
  657. package/dist/cli/validation/autofix.d.ts.map +1 -0
  658. package/dist/cli/validation/autofix.js +148 -0
  659. package/dist/cli/validation/autofix.js.map +1 -0
  660. package/dist/cli/validation/classifier.d.ts +17 -0
  661. package/dist/cli/validation/classifier.d.ts.map +1 -0
  662. package/dist/cli/validation/classifier.js +174 -0
  663. package/dist/cli/validation/classifier.js.map +1 -0
  664. package/dist/cli/validation/criteria.d.ts +22 -0
  665. package/dist/cli/validation/criteria.d.ts.map +1 -0
  666. package/dist/cli/validation/criteria.js +188 -0
  667. package/dist/cli/validation/criteria.js.map +1 -0
  668. package/dist/cli/validation/dynamic-checks.d.ts +16 -0
  669. package/dist/cli/validation/dynamic-checks.d.ts.map +1 -0
  670. package/dist/cli/validation/dynamic-checks.js +109 -0
  671. package/dist/cli/validation/dynamic-checks.js.map +1 -0
  672. package/dist/cli/validation/model.d.ts +16 -0
  673. package/dist/cli/validation/model.d.ts.map +1 -0
  674. package/dist/cli/validation/model.js +59 -0
  675. package/dist/cli/validation/model.js.map +1 -0
  676. package/dist/cli/validation/reporter.d.ts +18 -0
  677. package/dist/cli/validation/reporter.d.ts.map +1 -0
  678. package/dist/cli/validation/reporter.js +209 -0
  679. package/dist/cli/validation/reporter.js.map +1 -0
  680. package/dist/cli/validation/spiral-checks.d.ts +12 -0
  681. package/dist/cli/validation/spiral-checks.d.ts.map +1 -0
  682. package/dist/cli/validation/spiral-checks.js +167 -0
  683. package/dist/cli/validation/spiral-checks.js.map +1 -0
  684. package/dist/cli/validation/static-checks.d.ts +26 -0
  685. package/dist/cli/validation/static-checks.d.ts.map +1 -0
  686. package/dist/cli/validation/static-checks.js +648 -0
  687. package/dist/cli/validation/static-checks.js.map +1 -0
  688. package/dist/cli/validation/stats.d.ts +29 -0
  689. package/dist/cli/validation/stats.d.ts.map +1 -0
  690. package/dist/cli/validation/stats.js +137 -0
  691. package/dist/cli/validation/stats.js.map +1 -0
  692. package/dist/cli/version.d.ts +2 -0
  693. package/dist/cli/version.d.ts.map +1 -0
  694. package/dist/cli/version.js +5 -0
  695. package/dist/cli/version.js.map +1 -0
  696. package/dist/cli/voice/clone-manager.d.ts +19 -0
  697. package/dist/cli/voice/clone-manager.d.ts.map +1 -0
  698. package/dist/cli/voice/clone-manager.js +55 -0
  699. package/dist/cli/voice/clone-manager.js.map +1 -0
  700. package/dist/cli/voice/engine.d.ts +43 -0
  701. package/dist/cli/voice/engine.d.ts.map +1 -0
  702. package/dist/cli/voice/engine.js +109 -0
  703. package/dist/cli/voice/engine.js.map +1 -0
  704. package/dist/cli/voice/whisper-stt.d.ts +28 -0
  705. package/dist/cli/voice/whisper-stt.d.ts.map +1 -0
  706. package/dist/cli/voice/whisper-stt.js +78 -0
  707. package/dist/cli/voice/whisper-stt.js.map +1 -0
  708. package/dist/index.d.ts +3 -0
  709. package/dist/index.d.ts.map +1 -0
  710. package/dist/index.js +35 -0
  711. package/dist/index.js.map +1 -0
  712. package/dist/server.d.ts +8 -0
  713. package/dist/server.d.ts.map +1 -0
  714. package/dist/server.js +44 -0
  715. package/dist/server.js.map +1 -0
  716. package/dist/shared/protocol-types.d.ts +283 -0
  717. package/dist/shared/protocol-types.d.ts.map +1 -0
  718. package/dist/shared/protocol-types.js +9 -0
  719. package/dist/shared/protocol-types.js.map +1 -0
  720. package/dist/spiral/cloud/content-extractor.d.ts +27 -0
  721. package/dist/spiral/cloud/content-extractor.d.ts.map +1 -0
  722. package/dist/spiral/cloud/content-extractor.js +175 -0
  723. package/dist/spiral/cloud/content-extractor.js.map +1 -0
  724. package/dist/spiral/cloud/search-provider.d.ts +22 -0
  725. package/dist/spiral/cloud/search-provider.d.ts.map +1 -0
  726. package/dist/spiral/cloud/search-provider.js +241 -0
  727. package/dist/spiral/cloud/search-provider.js.map +1 -0
  728. package/dist/spiral/cloud/topic-detector.d.ts +25 -0
  729. package/dist/spiral/cloud/topic-detector.d.ts.map +1 -0
  730. package/dist/spiral/cloud/topic-detector.js +196 -0
  731. package/dist/spiral/cloud/topic-detector.js.map +1 -0
  732. package/dist/spiral/cloud/web-enricher.d.ts +58 -0
  733. package/dist/spiral/cloud/web-enricher.d.ts.map +1 -0
  734. package/dist/spiral/cloud/web-enricher.js +176 -0
  735. package/dist/spiral/cloud/web-enricher.js.map +1 -0
  736. package/dist/spiral/compression.d.ts +54 -0
  737. package/dist/spiral/compression.d.ts.map +1 -0
  738. package/dist/spiral/compression.js +175 -0
  739. package/dist/spiral/compression.js.map +1 -0
  740. package/dist/spiral/embeddings.d.ts +30 -0
  741. package/dist/spiral/embeddings.d.ts.map +1 -0
  742. package/dist/spiral/embeddings.js +99 -0
  743. package/dist/spiral/embeddings.js.map +1 -0
  744. package/dist/spiral/engine.d.ts +98 -0
  745. package/dist/spiral/engine.d.ts.map +1 -0
  746. package/dist/spiral/engine.js +330 -0
  747. package/dist/spiral/engine.js.map +1 -0
  748. package/dist/spiral/injection.d.ts +29 -0
  749. package/dist/spiral/injection.d.ts.map +1 -0
  750. package/dist/spiral/injection.js +176 -0
  751. package/dist/spiral/injection.js.map +1 -0
  752. package/dist/spiral/relevance.d.ts +37 -0
  753. package/dist/spiral/relevance.d.ts.map +1 -0
  754. package/dist/spiral/relevance.js +75 -0
  755. package/dist/spiral/relevance.js.map +1 -0
  756. package/dist/storage/database.d.ts +11 -0
  757. package/dist/storage/database.d.ts.map +1 -0
  758. package/dist/storage/database.js +169 -0
  759. package/dist/storage/database.js.map +1 -0
  760. package/dist/storage/edges.d.ts +30 -0
  761. package/dist/storage/edges.d.ts.map +1 -0
  762. package/dist/storage/edges.js +98 -0
  763. package/dist/storage/edges.js.map +1 -0
  764. package/dist/storage/nodes.d.ts +60 -0
  765. package/dist/storage/nodes.d.ts.map +1 -0
  766. package/dist/storage/nodes.js +161 -0
  767. package/dist/storage/nodes.js.map +1 -0
  768. package/dist/storage/vectors.d.ts +25 -0
  769. package/dist/storage/vectors.d.ts.map +1 -0
  770. package/dist/storage/vectors.js +110 -0
  771. package/dist/storage/vectors.js.map +1 -0
  772. package/dist/tools/spiral-compact.d.ts +14 -0
  773. package/dist/tools/spiral-compact.d.ts.map +1 -0
  774. package/dist/tools/spiral-compact.js +14 -0
  775. package/dist/tools/spiral-compact.js.map +1 -0
  776. package/dist/tools/spiral-query.d.ts +18 -0
  777. package/dist/tools/spiral-query.d.ts.map +1 -0
  778. package/dist/tools/spiral-query.js +16 -0
  779. package/dist/tools/spiral-query.js.map +1 -0
  780. package/dist/tools/spiral-relate.d.ts +21 -0
  781. package/dist/tools/spiral-relate.d.ts.map +1 -0
  782. package/dist/tools/spiral-relate.js +21 -0
  783. package/dist/tools/spiral-relate.js.map +1 -0
  784. package/dist/tools/spiral-status.d.ts +8 -0
  785. package/dist/tools/spiral-status.d.ts.map +1 -0
  786. package/dist/tools/spiral-status.js +10 -0
  787. package/dist/tools/spiral-status.js.map +1 -0
  788. package/dist/tools/spiral-store.d.ts +41 -0
  789. package/dist/tools/spiral-store.d.ts.map +1 -0
  790. package/dist/tools/spiral-store.js +22 -0
  791. package/dist/tools/spiral-store.js.map +1 -0
  792. package/dist/types.d.ts +94 -0
  793. package/dist/types.d.ts.map +1 -0
  794. package/dist/types.js +9 -0
  795. package/dist/types.js.map +1 -0
  796. package/dist/utils/config.d.ts +14 -0
  797. package/dist/utils/config.d.ts.map +1 -0
  798. package/dist/utils/config.js +44 -0
  799. package/dist/utils/config.js.map +1 -0
  800. package/dist/utils/logger.d.ts +10 -0
  801. package/dist/utils/logger.d.ts.map +1 -0
  802. package/dist/utils/logger.js +40 -0
  803. package/dist/utils/logger.js.map +1 -0
  804. package/dist/utils/tokens.d.ts +21 -0
  805. package/dist/utils/tokens.d.ts.map +1 -0
  806. package/dist/utils/tokens.js +33 -0
  807. package/dist/utils/tokens.js.map +1 -0
  808. package/package.json +93 -0
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Static validation checks — no LLM calls, pure algorithms.
3
+ * Fast (~50ms) pattern matching, parsing, and analysis.
4
+ */
5
+ export interface CheckResult {
6
+ id: string;
7
+ passed: boolean;
8
+ details: string;
9
+ fix?: string;
10
+ severity: 'error' | 'warning' | 'info';
11
+ autofix: boolean;
12
+ }
13
+ export interface StaticCheckContext {
14
+ lang?: string;
15
+ projectFiles?: string[];
16
+ }
17
+ /**
18
+ * Run all applicable static checks on the output.
19
+ */
20
+ export declare function runStaticChecks(output: string, criterionIds: string[], context?: StaticCheckContext): CheckResult[];
21
+ /**
22
+ * Extract code from markdown code blocks with given language hints.
23
+ * Also handles raw code without blocks.
24
+ */
25
+ export declare function extractCodeContent(output: string, languages: string[]): string | null;
26
+ //# sourceMappingURL=static-checks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"static-checks.d.ts","sourceRoot":"","sources":["../../../src/cli/validation/static-checks.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACvC,OAAO,EAAE,OAAO,CAAC;CAClB;AAID,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AA2dD;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,WAAW,EAAE,CAgBf;AAYD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,GAAG,IAAI,CAyBrF"}
@@ -0,0 +1,648 @@
1
+ /**
2
+ * Static validation checks — no LLM calls, pure algorithms.
3
+ * Fast (~50ms) pattern matching, parsing, and analysis.
4
+ */
5
+ // ── Void HTML elements (self-closing) ──
6
+ const VOID_ELEMENTS = new Set([
7
+ 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input',
8
+ 'link', 'meta', 'param', 'source', 'track', 'wbr',
9
+ ]);
10
+ // ── Static Checkers ──
11
+ const checkers = {
12
+ 'html-valid': (output) => {
13
+ // Extract code blocks that contain HTML
14
+ const html = extractCodeContent(output, ['html', 'jsx', 'tsx', 'vue', 'svelte']);
15
+ if (!html)
16
+ return pass('html-valid', 'No HTML content found');
17
+ const stack = [];
18
+ const tagRegex = /<\/?([a-zA-Z][a-zA-Z0-9-]*)[^>]*\/?>/g;
19
+ let match;
20
+ while ((match = tagRegex.exec(html)) !== null) {
21
+ const fullTag = match[0];
22
+ const tagName = match[1].toLowerCase();
23
+ if (VOID_ELEMENTS.has(tagName))
24
+ continue;
25
+ if (fullTag.endsWith('/>'))
26
+ continue; // Self-closing
27
+ if (fullTag.startsWith('</')) {
28
+ // Closing tag
29
+ if (stack.length === 0) {
30
+ return fail('html-valid', `Unexpected closing tag </${tagName}>`, `Remove stray </${tagName}>`);
31
+ }
32
+ const expected = stack.pop();
33
+ if (expected !== tagName) {
34
+ return fail('html-valid', `Mismatched tags: expected </${expected}>, found </${tagName}>`, `Change </${tagName}> to </${expected}>`);
35
+ }
36
+ }
37
+ else {
38
+ // Opening tag
39
+ stack.push(tagName);
40
+ }
41
+ }
42
+ if (stack.length > 0) {
43
+ const unclosed = stack.reverse().map(t => `<${t}>`).join(', ');
44
+ return fail('html-valid', `Unclosed tags: ${unclosed}`, stack.map(t => `</${t}>`).join('\n'));
45
+ }
46
+ return pass('html-valid', 'HTML tags properly balanced');
47
+ },
48
+ 'links-valid': (output) => {
49
+ const html = extractCodeContent(output, ['html', 'jsx', 'tsx', 'vue']);
50
+ if (!html)
51
+ return pass('links-valid', 'No HTML content found');
52
+ const hrefRegex = /(?:href|src|action)=["']([^"']*?)["']/gi;
53
+ const issues = [];
54
+ let match;
55
+ while ((match = hrefRegex.exec(html)) !== null) {
56
+ const value = match[1];
57
+ if (!value || value === '' || value === '#undefined' || value === 'undefined') {
58
+ issues.push(`Empty/invalid ${match[0]}`);
59
+ }
60
+ }
61
+ if (issues.length > 0) {
62
+ return fail('links-valid', issues.join('; '), undefined, 'error');
63
+ }
64
+ return pass('links-valid', 'All links valid');
65
+ },
66
+ 'ids-unique': (output) => {
67
+ const html = extractCodeContent(output, ['html', 'jsx', 'tsx', 'vue']);
68
+ if (!html)
69
+ return pass('ids-unique', 'No HTML content found');
70
+ const idRegex = /\bid=["']([^"']+)["']/gi;
71
+ const seen = new Map();
72
+ let match;
73
+ while ((match = idRegex.exec(html)) !== null) {
74
+ const id = match[1];
75
+ seen.set(id, (seen.get(id) || 0) + 1);
76
+ }
77
+ const duplicates = [...seen.entries()].filter(([, count]) => count > 1);
78
+ if (duplicates.length > 0) {
79
+ const dupeList = duplicates.map(([id, count]) => `"${id}" (${count}x)`).join(', ');
80
+ return fail('ids-unique', `Duplicate IDs: ${dupeList}`, `Rename duplicate IDs to be unique`);
81
+ }
82
+ return pass('ids-unique', 'All IDs unique');
83
+ },
84
+ 'img-alt': (output) => {
85
+ const html = extractCodeContent(output, ['html', 'jsx', 'tsx', 'vue']);
86
+ if (!html)
87
+ return pass('img-alt', 'No HTML content found');
88
+ const imgRegex = /<img\b[^>]*>/gi;
89
+ const images = html.match(imgRegex) || [];
90
+ const missingAlt = images.filter(img => !img.includes('alt='));
91
+ if (missingAlt.length > 0) {
92
+ return {
93
+ id: 'img-alt',
94
+ passed: false,
95
+ details: `${missingAlt.length} image(s) missing alt attribute`,
96
+ fix: 'Add alt="" to images',
97
+ severity: 'warning',
98
+ autofix: true,
99
+ };
100
+ }
101
+ return pass('img-alt', 'All images have alt attributes', 'warning');
102
+ },
103
+ 'syntax-valid': (output, ctx) => {
104
+ const code = extractCodeContent(output, ['ts', 'typescript', 'js', 'javascript', 'json', 'css']);
105
+ if (!code)
106
+ return pass('syntax-valid', 'No code content found');
107
+ const lang = ctx?.lang || detectLanguage(code);
108
+ if (lang === 'json') {
109
+ try {
110
+ JSON.parse(code);
111
+ return pass('syntax-valid', 'Valid JSON');
112
+ }
113
+ catch (e) {
114
+ return fail('syntax-valid', `Invalid JSON: ${e.message}`);
115
+ }
116
+ }
117
+ // Check bracket/brace/paren balance
118
+ const balance = checkBracketBalance(code);
119
+ if (!balance.balanced) {
120
+ return fail('syntax-valid', `Unbalanced ${balance.type}: ${balance.details}`, balance.fix);
121
+ }
122
+ // Check for obvious syntax errors
123
+ const syntaxIssues = checkBasicSyntax(code);
124
+ if (syntaxIssues) {
125
+ return fail('syntax-valid', syntaxIssues);
126
+ }
127
+ return pass('syntax-valid', 'Syntax appears valid');
128
+ },
129
+ 'imports-resolve': (output, ctx) => {
130
+ const code = extractCodeContent(output, ['ts', 'typescript', 'js', 'javascript']);
131
+ if (!code)
132
+ return pass('imports-resolve', 'No code content found');
133
+ const importRegex = /import\s+(?:.*?\s+from\s+)?['"]([^'"]+)['"]/g;
134
+ const issues = [];
135
+ let match;
136
+ while ((match = importRegex.exec(code)) !== null) {
137
+ const path = match[1];
138
+ // Skip node_modules imports
139
+ if (!path.startsWith('.') && !path.startsWith('/'))
140
+ continue;
141
+ if (ctx?.projectFiles && ctx.projectFiles.length > 0) {
142
+ // Check if file exists in known project files
143
+ const normalized = path.replace(/\.(js|ts|jsx|tsx)$/, '');
144
+ const found = ctx.projectFiles.some(f => f.includes(normalized) || f.includes(normalized + '.ts') || f.includes(normalized + '.js'));
145
+ if (!found) {
146
+ issues.push(`Import "${path}" may not exist`);
147
+ }
148
+ }
149
+ }
150
+ if (issues.length > 0) {
151
+ return fail('imports-resolve', issues.join('; '));
152
+ }
153
+ return pass('imports-resolve', 'All imports appear valid');
154
+ },
155
+ 'no-dead-code': (output) => {
156
+ const code = extractCodeContent(output, ['ts', 'typescript', 'js', 'javascript']);
157
+ if (!code)
158
+ return pass('no-dead-code', 'No code content found');
159
+ const issues = [];
160
+ // Check for unreachable code after return/throw/break/continue
161
+ const unreachableRegex = /\b(return|throw|break|continue)\b[^;]*;\s*\n\s*(?![\s}]|\/\/|\/\*|case\s|default:)([\w])/gm;
162
+ if (unreachableRegex.test(code)) {
163
+ issues.push('Possible unreachable code after return/throw');
164
+ }
165
+ // Check for unused imports (simple heuristic)
166
+ const importNames = extractImportNames(code);
167
+ for (const name of importNames) {
168
+ // Count occurrences after the import line
169
+ const afterImport = code.slice(code.indexOf(name) + name.length);
170
+ if (!afterImport.includes(name)) {
171
+ issues.push(`Possibly unused import: ${name}`);
172
+ }
173
+ }
174
+ if (issues.length > 0) {
175
+ return { id: 'no-dead-code', passed: false, details: issues.join('; '), severity: 'warning', autofix: true };
176
+ }
177
+ return pass('no-dead-code', 'No dead code detected', 'warning');
178
+ },
179
+ 'no-hardcoded': (output) => {
180
+ const code = extractCodeContent(output, ['ts', 'typescript', 'js', 'javascript', 'py', 'python']);
181
+ if (!code)
182
+ return pass('no-hardcoded', 'No code content found');
183
+ const issues = [];
184
+ // API keys / secrets patterns
185
+ const secretPatterns = [
186
+ /['"][A-Za-z0-9+/]{40,}['"]/, // Long base64-like strings
187
+ /(?:api[_-]?key|secret|password|token)\s*[:=]\s*['"][^'"]{8,}['"]/i,
188
+ /sk-[a-zA-Z0-9]{20,}/, // OpenAI key pattern
189
+ /ghp_[a-zA-Z0-9]{36}/, // GitHub PAT
190
+ /(?:AKIA|ASIA)[A-Z0-9]{16}/, // AWS access key
191
+ ];
192
+ for (const pattern of secretPatterns) {
193
+ if (pattern.test(code)) {
194
+ issues.push('Possible hardcoded secret/API key detected');
195
+ break;
196
+ }
197
+ }
198
+ // Hardcoded localhost URLs (not in comments/config)
199
+ if (/['"]https?:\/\/localhost:\d+/.test(code) && !code.includes('// dev') && !code.includes('development')) {
200
+ issues.push('Hardcoded localhost URL');
201
+ }
202
+ if (issues.length > 0) {
203
+ return { id: 'no-hardcoded', passed: false, details: issues.join('; '), severity: 'warning', autofix: false };
204
+ }
205
+ return pass('no-hardcoded', 'No hardcoded secrets detected', 'warning');
206
+ },
207
+ 'sql-injection': (output) => {
208
+ const code = extractCodeContent(output, ['ts', 'typescript', 'js', 'javascript', 'py', 'python']);
209
+ if (!code)
210
+ return pass('sql-injection', 'No code content found');
211
+ // Check for string concatenation in SQL queries
212
+ const sqlConcat = /(?:query|exec|execute|run|prepare)\s*\(\s*[`'"](?:SELECT|INSERT|UPDATE|DELETE|CREATE|DROP|ALTER)\b[^`'"]*\$\{/i;
213
+ const sqlPlus = /(?:query|exec|execute|run)\s*\(\s*['"](?:SELECT|INSERT|UPDATE|DELETE)\b[^'"]*['"]\s*\+/i;
214
+ if (sqlConcat.test(code) || sqlPlus.test(code)) {
215
+ return fail('sql-injection', 'SQL query with string interpolation/concatenation detected', 'Use parameterized queries instead');
216
+ }
217
+ return pass('sql-injection', 'No SQL injection vulnerabilities detected');
218
+ },
219
+ 'async-await': (output) => {
220
+ const code = extractCodeContent(output, ['ts', 'typescript', 'js', 'javascript']);
221
+ if (!code)
222
+ return pass('async-await', 'No async code found');
223
+ const issues = [];
224
+ // Find async function declarations and check if they use await.
225
+ // Use bracket counting instead of regex to handle nested blocks correctly.
226
+ const asyncPattern = /async\s+(?:function\s+)?(\w+)\s*\([^)]*\)\s*\{/g;
227
+ let match;
228
+ while ((match = asyncPattern.exec(code)) !== null) {
229
+ const funcName = match[1];
230
+ const bodyStart = match.index + match[0].length - 1; // index of opening {
231
+ const body = extractBalancedBlock(code, bodyStart);
232
+ if (body && !body.includes('await') && !body.includes('Promise') && !body.includes('.then(')) {
233
+ issues.push(`Async function "${funcName}" has no await`);
234
+ }
235
+ }
236
+ if (issues.length > 0) {
237
+ return fail('async-await', issues.join('; '));
238
+ }
239
+ return pass('async-await', 'Async/await usage appears correct');
240
+ },
241
+ 'error-handling': (output) => {
242
+ const code = extractCodeContent(output, ['ts', 'typescript', 'js', 'javascript']);
243
+ if (!code)
244
+ return pass('error-handling', 'No code content found');
245
+ // Check if there are async operations without try/catch
246
+ const hasAsync = code.includes('await ');
247
+ const hasTryCatch = code.includes('try {') || code.includes('try{');
248
+ const hasCatch = code.includes('.catch(');
249
+ if (hasAsync && !hasTryCatch && !hasCatch) {
250
+ return fail('error-handling', 'Async operations without error handling', 'Wrap in try/catch');
251
+ }
252
+ return pass('error-handling', 'Error handling present');
253
+ },
254
+ 'status-codes': (output) => {
255
+ const code = extractCodeContent(output, ['ts', 'typescript', 'js', 'javascript']);
256
+ if (!code)
257
+ return pass('status-codes', 'No HTTP status code usage found');
258
+ // Count status codes used
259
+ const statusRegex = /\.status\((\d{3})\)/g;
260
+ const codes = new Set();
261
+ let match;
262
+ while ((match = statusRegex.exec(code)) !== null) {
263
+ codes.add(match[1]);
264
+ }
265
+ if (codes.size > 0 && codes.size === 1 && codes.has('200')) {
266
+ return { id: 'status-codes', passed: false, details: 'Only status 200 used — use appropriate codes (201, 400, 404, 500)', severity: 'warning', autofix: true };
267
+ }
268
+ return pass('status-codes', 'HTTP status codes look appropriate', 'warning');
269
+ },
270
+ 'assertions-exist': (output) => {
271
+ const code = extractCodeContent(output, ['ts', 'typescript', 'js', 'javascript']);
272
+ if (!code)
273
+ return pass('assertions-exist', 'No test code found');
274
+ // Find test blocks
275
+ const testRegex = /(?:it|test)\s*\(\s*['"][^'"]+['"]\s*,\s*(?:async\s*)?\(\s*\)\s*=>\s*\{([^]*?)(?=\n\s*(?:it|test|describe)\s*\(|\n\}\);\s*$)/g;
276
+ const issues = [];
277
+ let match;
278
+ while ((match = testRegex.exec(code)) !== null) {
279
+ const body = match[1];
280
+ if (!body.includes('expect(') && !body.includes('assert') && !body.includes('should')) {
281
+ // Extract test name for reporting
282
+ const nameMatch = code.slice(match.index).match(/['"]([^'"]+)['"]/);
283
+ issues.push(`Test "${nameMatch?.[1] || 'unknown'}" has no assertion`);
284
+ }
285
+ }
286
+ if (issues.length > 0) {
287
+ return fail('assertions-exist', issues.join('; '));
288
+ }
289
+ return pass('assertions-exist', 'All tests have assertions');
290
+ },
291
+ 'mocks-cleanup': (output) => {
292
+ const code = extractCodeContent(output, ['ts', 'typescript', 'js', 'javascript']);
293
+ if (!code)
294
+ return pass('mocks-cleanup', 'No test code found');
295
+ const hasMocks = code.includes('vi.mock') || code.includes('jest.mock') || code.includes('sinon');
296
+ const hasCleanup = code.includes('afterEach') || code.includes('afterAll') || code.includes('restoreAllMocks') || code.includes('resetAllMocks') || code.includes('clearAllMocks');
297
+ if (hasMocks && !hasCleanup) {
298
+ return { id: 'mocks-cleanup', passed: false, details: 'Mocks used without cleanup (afterEach/restoreAllMocks)', fix: 'Add afterEach(() => vi.restoreAllMocks())', severity: 'warning', autofix: true };
299
+ }
300
+ return pass('mocks-cleanup', 'Mocks properly cleaned up', 'warning');
301
+ },
302
+ 'input-handled': (output) => {
303
+ const code = extractCodeContent(output, ['ts', 'typescript', 'js', 'javascript', 'py', 'python']);
304
+ if (!code)
305
+ return pass('input-handled', 'No code content found');
306
+ // Check for array/object operations without null checks
307
+ const hasArrayOps = /\.\s*(?:map|filter|reduce|forEach|find)\s*\(/.test(code);
308
+ const hasNullCheck = /(?:if\s*\(\s*!?\s*\w+|[\w.]+\s*\?\.|[\w.]+\s*!==?\s*(?:null|undefined))/.test(code);
309
+ if (hasArrayOps && !hasNullCheck) {
310
+ return fail('input-handled', 'Array operations without null/undefined checks', 'Add input validation');
311
+ }
312
+ return pass('input-handled', 'Input handling appears adequate');
313
+ },
314
+ 'no-circular': (output) => {
315
+ const code = extractCodeContent(output, ['ts', 'typescript', 'js', 'javascript']);
316
+ if (!code)
317
+ return pass('no-circular', 'No code content found');
318
+ // Simple heuristic: check if a file imports itself or has obvious circular patterns
319
+ const importRegex = /import\s+.*from\s+['"]([^'"]+)['"]/g;
320
+ const exportRegex = /export\s+.*from\s+['"]([^'"]+)['"]/g;
321
+ const imports = new Set();
322
+ let match;
323
+ while ((match = importRegex.exec(code)) !== null)
324
+ imports.add(match[1]);
325
+ while ((match = exportRegex.exec(code)) !== null)
326
+ imports.add(match[1]);
327
+ // Can't detect circular deps from a single output — pass
328
+ return pass('no-circular', 'No obvious circular dependencies');
329
+ },
330
+ 'no-secrets': (output) => {
331
+ const code = extractCodeContent(output, ['json', 'yaml', 'yml', 'toml', 'env', 'ini', 'cfg', 'ts', 'typescript', 'js', 'javascript']);
332
+ if (!code)
333
+ return pass('no-secrets', 'No config content found');
334
+ const secretKeys = /["']?(?:password|secret|api[_-]?key|token|private[_-]?key)["']?\s*[:=]\s*["']?[^\s"',}{]{5,}/i;
335
+ if (secretKeys.test(code)) {
336
+ return fail('no-secrets', 'Possible plaintext secret in configuration');
337
+ }
338
+ return pass('no-secrets', 'No plaintext secrets detected');
339
+ },
340
+ 'code-duplication': (output) => {
341
+ const code = extractCodeContent(output, ['ts', 'typescript', 'js', 'javascript', 'py', 'python']);
342
+ if (!code)
343
+ return pass('code-duplication', 'No code content found');
344
+ // Extract meaningful lines — skip short lines, comments, and common boilerplate
345
+ const boilerplate = new Set(['return;', 'break;', 'continue;', 'default:', 'else {', '} else {', '});', '],', '});']);
346
+ const lines = code.split('\n')
347
+ .map(l => l.trim())
348
+ .filter(l => l.length > 40
349
+ && !l.startsWith('//')
350
+ && !l.startsWith('#')
351
+ && !l.startsWith('*')
352
+ && !l.startsWith('import ')
353
+ && !l.startsWith('return ')
354
+ && !boilerplate.has(l));
355
+ const lineCounts = new Map();
356
+ for (const line of lines) {
357
+ lineCounts.set(line, (lineCounts.get(line) || 0) + 1);
358
+ }
359
+ const duplicates = [...lineCounts.entries()].filter(([, count]) => count > 1);
360
+ if (duplicates.length > 3) {
361
+ const dupeList = duplicates.slice(0, 5).map(([line, count]) => `"${line.slice(0, 40)}..." (${count}x)`).join('; ');
362
+ return {
363
+ id: 'code-duplication',
364
+ passed: false,
365
+ details: `${duplicates.length} duplicate lines found: ${dupeList}`,
366
+ severity: 'warning',
367
+ autofix: false
368
+ };
369
+ }
370
+ return pass('code-duplication', 'No significant code duplication', 'warning');
371
+ },
372
+ 'outdated-references': (output, ctx) => {
373
+ const code = extractCodeContent(output, ['ts', 'typescript', 'js', 'javascript']);
374
+ if (!code)
375
+ return pass('outdated-references', 'No code content found');
376
+ const issues = [];
377
+ const importRegex = /import\s+(?:.*?\s+from\s+)?['"]([^'"]+)['"]/g;
378
+ let match;
379
+ while ((match = importRegex.exec(code)) !== null) {
380
+ const importPath = match[1];
381
+ // Skip node_modules imports
382
+ if (!importPath.startsWith('.') && !importPath.startsWith('/'))
383
+ continue;
384
+ // In ESM TypeScript, .js imports are the CORRECT pattern (compiled output).
385
+ // Flag .ts imports instead — they should use .js extension for ESM.
386
+ if (importPath.endsWith('.ts')) {
387
+ issues.push(`Import "${importPath}" uses .ts extension — ESM requires .js extension`);
388
+ }
389
+ // Check if file exists in project
390
+ if (ctx?.projectFiles && ctx.projectFiles.length > 0) {
391
+ const normalized = importPath.replace(/\.(js|ts|jsx|tsx)$/, '');
392
+ const found = ctx.projectFiles.some(f => f.includes(normalized) ||
393
+ f.includes(normalized + '.ts') ||
394
+ f.includes(normalized + '.js') ||
395
+ f.includes(normalized + '/index.ts') ||
396
+ f.includes(normalized + '/index.js'));
397
+ if (!found) {
398
+ issues.push(`Import "${importPath}" may reference deleted/moved file`);
399
+ }
400
+ }
401
+ }
402
+ if (issues.length > 0) {
403
+ return {
404
+ id: 'outdated-references',
405
+ passed: false,
406
+ details: issues.slice(0, 5).join('; '),
407
+ severity: 'warning',
408
+ autofix: false
409
+ };
410
+ }
411
+ return pass('outdated-references', 'No outdated references detected', 'warning');
412
+ },
413
+ };
414
+ /**
415
+ * Run all applicable static checks on the output.
416
+ */
417
+ export function runStaticChecks(output, criterionIds, context) {
418
+ const results = [];
419
+ for (const id of criterionIds) {
420
+ const checker = checkers[id];
421
+ if (checker) {
422
+ try {
423
+ results.push(checker(output, context));
424
+ }
425
+ catch {
426
+ // If a checker throws, mark as passed to avoid false negatives
427
+ results.push(pass(id, 'Check skipped (internal error)'));
428
+ }
429
+ }
430
+ }
431
+ return results;
432
+ }
433
+ // ── Helpers ──
434
+ function pass(id, details, severity = 'error') {
435
+ return { id, passed: true, details, severity, autofix: false };
436
+ }
437
+ function fail(id, details, fix, severity = 'error') {
438
+ return { id, passed: false, details, fix, severity, autofix: !!fix };
439
+ }
440
+ /**
441
+ * Extract code from markdown code blocks with given language hints.
442
+ * Also handles raw code without blocks.
443
+ */
444
+ export function extractCodeContent(output, languages) {
445
+ // Try to find fenced code blocks with matching language tags
446
+ const langPattern = languages.join('|');
447
+ // Match code blocks WITH the specified language, or code blocks with no language tag
448
+ const fencedRegex = new RegExp('```(?:(' + langPattern + ')\\s*\\n|\\s*\\n)([\\s\\S]*?)```', 'gi');
449
+ const blocks = [];
450
+ let match;
451
+ while ((match = fencedRegex.exec(output)) !== null) {
452
+ // match[1] = language tag (when lang matched), match[2] = code content
453
+ blocks.push(match[2]);
454
+ }
455
+ if (blocks.length > 0) {
456
+ return blocks.join('\n\n');
457
+ }
458
+ // No code blocks — check if the output itself looks like code
459
+ if (output.includes('function ') || output.includes('import ') ||
460
+ output.includes('class ') || output.includes('const ') ||
461
+ output.includes('<div') || output.includes('<html')) {
462
+ return output;
463
+ }
464
+ return null;
465
+ }
466
+ function detectLanguage(code) {
467
+ if (code.trim().startsWith('{') || code.trim().startsWith('['))
468
+ return 'json';
469
+ if (code.includes('import ') || code.includes('export '))
470
+ return 'typescript';
471
+ if (code.includes('<html') || code.includes('<div'))
472
+ return 'html';
473
+ if ((code.includes('def ') && !code.includes('default')) || (code.includes('class ') && code.includes(':')))
474
+ return 'python';
475
+ return 'typescript';
476
+ }
477
+ /**
478
+ * Extract the balanced block starting at the given index (which should point to '{').
479
+ * Returns the content between the braces, or null if unbalanced.
480
+ */
481
+ function extractBalancedBlock(code, startIdx) {
482
+ if (code[startIdx] !== '{')
483
+ return null;
484
+ let depth = 0;
485
+ let inString = false;
486
+ let stringChar = '';
487
+ let escaped = false;
488
+ for (let i = startIdx; i < code.length; i++) {
489
+ const ch = code[i];
490
+ if (escaped) {
491
+ escaped = false;
492
+ continue;
493
+ }
494
+ if (ch === '\\') {
495
+ escaped = true;
496
+ continue;
497
+ }
498
+ if (inString) {
499
+ if (ch === stringChar && stringChar !== '`') {
500
+ inString = false;
501
+ }
502
+ else if (ch === stringChar && stringChar === '`') {
503
+ inString = false;
504
+ }
505
+ else if (stringChar === '`' && ch === '$' && code[i + 1] === '{') {
506
+ // Template literal expression — skip ${, count inner braces
507
+ i++; // skip $
508
+ // The { will be handled by the depth counter below
509
+ }
510
+ if (inString)
511
+ continue;
512
+ }
513
+ if (!inString && (ch === '"' || ch === "'" || ch === '`')) {
514
+ inString = true;
515
+ stringChar = ch;
516
+ continue;
517
+ }
518
+ if (ch === '/' && code[i + 1] === '/') {
519
+ const nl = code.indexOf('\n', i);
520
+ i = nl === -1 ? code.length : nl;
521
+ continue;
522
+ }
523
+ if (ch === '/' && code[i + 1] === '*') {
524
+ const end = code.indexOf('*/', i + 2);
525
+ i = end === -1 ? code.length : end + 1;
526
+ continue;
527
+ }
528
+ if (ch === '{')
529
+ depth++;
530
+ else if (ch === '}') {
531
+ depth--;
532
+ if (depth === 0)
533
+ return code.slice(startIdx + 1, i);
534
+ }
535
+ }
536
+ return null;
537
+ }
538
+ function checkBracketBalance(code) {
539
+ const pairs = { '(': ')', '[': ']', '{': '}' };
540
+ const stack = [];
541
+ let inString = false;
542
+ let stringChar = '';
543
+ let escaped = false;
544
+ let templateDepth = 0; // Track nested ${...} inside template literals
545
+ for (let i = 0; i < code.length; i++) {
546
+ const ch = code[i];
547
+ if (escaped) {
548
+ escaped = false;
549
+ continue;
550
+ }
551
+ if (ch === '\\') {
552
+ escaped = true;
553
+ continue;
554
+ }
555
+ if (inString) {
556
+ if (stringChar === '`') {
557
+ // Template literal: handle ${...} expressions
558
+ if (ch === '$' && code[i + 1] === '{') {
559
+ templateDepth++;
560
+ inString = false; // Exit string mode to count brackets in expression
561
+ i++; // skip '{'
562
+ stack.push('{');
563
+ continue;
564
+ }
565
+ if (ch === '`') {
566
+ inString = false;
567
+ }
568
+ }
569
+ else {
570
+ if (ch === stringChar)
571
+ inString = false;
572
+ }
573
+ continue;
574
+ }
575
+ if (ch === '"' || ch === "'" || ch === '`') {
576
+ inString = true;
577
+ stringChar = ch;
578
+ continue;
579
+ }
580
+ // Skip single-line comments
581
+ if (ch === '/' && code[i + 1] === '/') {
582
+ const nl = code.indexOf('\n', i);
583
+ i = nl === -1 ? code.length : nl;
584
+ continue;
585
+ }
586
+ // Skip multi-line comments
587
+ if (ch === '/' && code[i + 1] === '*') {
588
+ const end = code.indexOf('*/', i + 2);
589
+ i = end === -1 ? code.length : end + 1;
590
+ continue;
591
+ }
592
+ if (ch in pairs) {
593
+ stack.push(ch);
594
+ }
595
+ else if (ch === ')' || ch === ']' || ch === '}') {
596
+ const expected = stack.pop();
597
+ if (!expected) {
598
+ return { balanced: false, type: ch, details: `Unexpected '${ch}'`, fix: `Remove stray '${ch}'` };
599
+ }
600
+ if (pairs[expected] !== ch) {
601
+ return { balanced: false, type: ch, details: `Expected '${pairs[expected]}' but found '${ch}'`, fix: `Change '${ch}' to '${pairs[expected]}'` };
602
+ }
603
+ // If closing a template expression, re-enter template string mode
604
+ if (ch === '}' && templateDepth > 0 && expected === '{') {
605
+ templateDepth--;
606
+ inString = true;
607
+ stringChar = '`';
608
+ }
609
+ }
610
+ }
611
+ if (stack.length > 0) {
612
+ const unclosed = stack.map(s => pairs[s]).reverse().join('');
613
+ return { balanced: false, type: 'bracket', details: `Unclosed: ${stack.join(', ')}`, fix: `Add ${unclosed}` };
614
+ }
615
+ return { balanced: true };
616
+ }
617
+ function checkBasicSyntax(code) {
618
+ // Check for duplicate commas
619
+ if (/,,/.test(code))
620
+ return 'Duplicate commas found';
621
+ // Check for missing semicolons in obvious places (very conservative)
622
+ // Only flag if there's a clear pattern break
623
+ if (/\)\s*\n\s*(?:const|let|var|function|class|if|for|while)\b/.test(code)) {
624
+ // This is often valid (e.g., function call then statement), so don't flag
625
+ }
626
+ return null;
627
+ }
628
+ function extractImportNames(code) {
629
+ const names = [];
630
+ const regex = /import\s+(?:\{([^}]+)\}|(\w+))/g;
631
+ let match;
632
+ while ((match = regex.exec(code)) !== null) {
633
+ if (match[1]) {
634
+ // Named imports: { foo, bar as baz }
635
+ for (const part of match[1].split(',')) {
636
+ const name = part.trim().split(/\s+as\s+/).pop()?.trim();
637
+ if (name && name.length > 1)
638
+ names.push(name);
639
+ }
640
+ }
641
+ else if (match[2]) {
642
+ // Default import
643
+ names.push(match[2]);
644
+ }
645
+ }
646
+ return names;
647
+ }
648
+ //# sourceMappingURL=static-checks.js.map