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,178 @@
1
+ /**
2
+ * Test Sentinel — test intelligence for Jarvis.
3
+ * Detects affected tests from git changes, flaky test tracking,
4
+ * coverage trend monitoring.
5
+ */
6
+ import { execSync } from 'node:child_process';
7
+ import { readFileSync, existsSync } from 'node:fs';
8
+ import { join } from 'node:path';
9
+ /**
10
+ * Detect which test files are likely affected by recent changes.
11
+ * Uses import/require graph heuristics from git diff.
12
+ */
13
+ export function detectAffectedTests(projectRoot) {
14
+ const insights = [];
15
+ try {
16
+ // Get changed files from last commit
17
+ const diffRaw = execSync('git diff HEAD~1 HEAD --name-only', {
18
+ cwd: projectRoot,
19
+ encoding: 'utf-8',
20
+ timeout: 5000,
21
+ stdio: ['pipe', 'pipe', 'pipe'],
22
+ }).trim();
23
+ if (!diffRaw)
24
+ return insights;
25
+ const changedFiles = diffRaw.split('\n').filter(f => f.endsWith('.ts') || f.endsWith('.js'));
26
+ if (changedFiles.length === 0)
27
+ return insights;
28
+ // Find test files that import changed source files
29
+ const affectedTests = [];
30
+ const changedSrcFiles = changedFiles.filter(f => !f.includes('.test.') && !f.includes('.spec.') && !f.includes('__tests__'));
31
+ const changedTestFiles = changedFiles.filter(f => f.includes('.test.') || f.includes('.spec.') || f.includes('__tests__'));
32
+ // Check which test files reference the changed source files
33
+ for (const srcFile of changedSrcFiles) {
34
+ const baseName = srcFile.replace(/\.(ts|js)$/, '').split('/').pop();
35
+ if (!baseName)
36
+ continue;
37
+ // Look for corresponding test file
38
+ const testPatterns = [
39
+ srcFile.replace(/\.(ts|js)$/, '.test.$1'),
40
+ srcFile.replace(/\.(ts|js)$/, '.spec.$1'),
41
+ srcFile.replace(/src\//, 'test/').replace(/\.(ts|js)$/, '.test.$1'),
42
+ ];
43
+ for (const pattern of testPatterns) {
44
+ const fullPath = join(projectRoot, pattern);
45
+ if (existsSync(fullPath) && !changedTestFiles.includes(pattern)) {
46
+ affectedTests.push(pattern);
47
+ }
48
+ }
49
+ // Search for test files that import this module
50
+ try {
51
+ const grepResult = execSync(`git grep -l "${baseName}" -- "*.test.ts" "*.spec.ts" "*.test.js" "*.spec.js" 2>/dev/null || true`, { cwd: projectRoot, encoding: 'utf-8', timeout: 5000, stdio: ['pipe', 'pipe', 'pipe'] }).trim();
52
+ if (grepResult) {
53
+ for (const testFile of grepResult.split('\n')) {
54
+ if (testFile && !changedTestFiles.includes(testFile) && !affectedTests.includes(testFile)) {
55
+ affectedTests.push(testFile);
56
+ }
57
+ }
58
+ }
59
+ }
60
+ catch { /* grep not available or failed */ }
61
+ }
62
+ if (affectedTests.length > 0) {
63
+ insights.push({
64
+ type: 'affected_tests',
65
+ description: `${affectedTests.length} test file(s) may be affected by recent changes`,
66
+ severity: 'medium',
67
+ files: affectedTests,
68
+ suggestion: `Run: npx vitest ${affectedTests.slice(0, 5).join(' ')}`,
69
+ });
70
+ }
71
+ // Check for source files without corresponding tests
72
+ const untestedFiles = changedSrcFiles.filter(f => {
73
+ const baseName2 = f.replace(/\.(ts|js)$/, '');
74
+ return !existsSync(join(projectRoot, `${baseName2}.test.ts`))
75
+ && !existsSync(join(projectRoot, `${baseName2}.spec.ts`));
76
+ });
77
+ if (untestedFiles.length > 0) {
78
+ insights.push({
79
+ type: 'missing_tests',
80
+ description: `${untestedFiles.length} changed source file(s) have no corresponding test file`,
81
+ severity: 'low',
82
+ files: untestedFiles,
83
+ suggestion: 'Consider adding tests for these files',
84
+ });
85
+ }
86
+ }
87
+ catch {
88
+ // Git commands failed — skip
89
+ }
90
+ return insights;
91
+ }
92
+ /**
93
+ * Check for flaky tests by looking at recent test history.
94
+ * Reads .helixmind/test-history.json if it exists.
95
+ */
96
+ export function detectFlakyTests(projectRoot) {
97
+ const historyPath = join(projectRoot, '.helixmind', 'test-history.json');
98
+ if (!existsSync(historyPath))
99
+ return [];
100
+ try {
101
+ const raw = readFileSync(historyPath, 'utf-8');
102
+ const history = JSON.parse(raw);
103
+ if (!history.runs || history.runs.length === 0)
104
+ return [];
105
+ // Group by test name
106
+ const testResults = new Map();
107
+ for (const run of history.runs) {
108
+ const entry = testResults.get(run.test) || { pass: 0, fail: 0 };
109
+ if (run.passed)
110
+ entry.pass++;
111
+ else
112
+ entry.fail++;
113
+ testResults.set(run.test, entry);
114
+ }
115
+ // Flaky = has both passes and failures (min 3 total runs)
116
+ const flakyTests = [];
117
+ for (const [test, results] of testResults) {
118
+ const total = results.pass + results.fail;
119
+ if (total >= 3 && results.pass > 0 && results.fail > 0) {
120
+ flakyTests.push(test);
121
+ }
122
+ }
123
+ if (flakyTests.length > 0) {
124
+ return [{
125
+ type: 'flaky_test',
126
+ description: `${flakyTests.length} flaky test(s) detected (inconsistent pass/fail)`,
127
+ severity: 'medium',
128
+ files: flakyTests,
129
+ suggestion: 'Investigate timing, shared state, or external dependencies in these tests',
130
+ }];
131
+ }
132
+ }
133
+ catch { /* corrupted history */ }
134
+ return [];
135
+ }
136
+ /**
137
+ * Run a quick test suite status check (vitest --reporter=json).
138
+ * Non-blocking: returns null if tests take too long.
139
+ */
140
+ export function getTestSuiteStatus(projectRoot) {
141
+ try {
142
+ const raw = execSync('npx vitest run --reporter=json 2>/dev/null', {
143
+ cwd: projectRoot,
144
+ encoding: 'utf-8',
145
+ timeout: 60_000,
146
+ stdio: ['pipe', 'pipe', 'pipe'],
147
+ });
148
+ const result = JSON.parse(raw);
149
+ return {
150
+ passed: result.numPassedTests || 0,
151
+ failed: result.numFailedTests || 0,
152
+ total: result.numTotalTests || 0,
153
+ };
154
+ }
155
+ catch {
156
+ return null;
157
+ }
158
+ }
159
+ /**
160
+ * Build test insights for the thinking loop.
161
+ */
162
+ export function runTestAnalysis(projectRoot) {
163
+ return [
164
+ ...detectAffectedTests(projectRoot),
165
+ ...detectFlakyTests(projectRoot),
166
+ ];
167
+ }
168
+ /**
169
+ * Convert test insights to proposal evidence.
170
+ */
171
+ export function insightsToEvidence(insights) {
172
+ return insights.map(i => ({
173
+ type: 'observation',
174
+ content: `[${i.severity}] ${i.type}: ${i.description}${i.suggestion ? ` — ${i.suggestion}` : ''}`,
175
+ timestamp: Date.now(),
176
+ }));
177
+ }
178
+ //# sourceMappingURL=test-sentinel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-sentinel.js","sourceRoot":"","sources":["../../../src/cli/jarvis/test-sentinel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import type { ThinkingCallbacks, ThinkingState } from './types.js';
2
+ /**
3
+ * Run the thinking loop. Replaces the daemon's idle sleep.
4
+ * Returns when aborted or when a task becomes available.
5
+ *
6
+ * @param callbacks - All dependencies injected via callbacks
7
+ * @param hasTaskAvailable - Check if there's a task to execute (yields thinking)
8
+ * @returns The current thinking state for persistence
9
+ */
10
+ export declare function runThinkingLoop(callbacks: ThinkingCallbacks, hasTaskAvailable: () => boolean): Promise<ThinkingState>;
11
+ /**
12
+ * Run a single deep thinking cycle on demand (/jarvis think).
13
+ */
14
+ export declare function runImmediateDeepThink(callbacks: ThinkingCallbacks): Promise<void>;
15
+ //# sourceMappingURL=thinking-loop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"thinking-loop.d.ts","sourceRoot":"","sources":["../../../src/cli/jarvis/thinking-loop.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,iBAAiB,EAAiB,aAAa,EAEhD,MAAM,YAAY,CAAC;AAsZpB;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,iBAAiB,EAC5B,gBAAgB,EAAE,MAAM,OAAO,GAC9B,OAAO,CAAC,aAAa,CAAC,CAiDxB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,iBAAiB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAaf"}
@@ -0,0 +1,437 @@
1
+ /**
2
+ * Thinking Loop — Jarvis' continuous consciousness.
3
+ * Three-tier observation cycle: Quick (30s), Medium (5m), Deep (30m).
4
+ * Replaces the idle sleep(30_000) in the daemon.
5
+ * Follows the Monitor-Watcher pattern (src/cli/agent/monitor/watcher.ts).
6
+ */
7
+ import { randomUUID } from 'node:crypto';
8
+ import { detectAnomalousPattern, getRecentAudit } from './core-ethics.js';
9
+ // ─── Timing Constants ─────────────────────────────────────────────────
10
+ const QUICK_INTERVAL_MS = 30_000; // 30 seconds
11
+ const MEDIUM_INTERVAL_MS = 5 * 60_000; // 5 minutes
12
+ const DEEP_INTERVAL_MS = 30 * 60_000; // 30 minutes
13
+ const TICK_SLEEP_MS = 5_000; // Check every 5s between phases
14
+ // ─── Thinking State ───────────────────────────────────────────────────
15
+ function createInitialState() {
16
+ const now = Date.now();
17
+ return {
18
+ phase: 'idle',
19
+ lastQuickCheck: now,
20
+ lastMediumCheck: now,
21
+ lastDeepCheck: now,
22
+ observations: [],
23
+ currentThought: undefined,
24
+ };
25
+ }
26
+ // ─── Quick Check (No LLM) ────────────────────────────────────────────
27
+ async function runQuickCheck(state, callbacks) {
28
+ state.phase = 'quick';
29
+ state.currentThought = 'Scanning project state...';
30
+ callbacks.pushEvent('thinking_update', {
31
+ phase: 'quick', observation: state.currentThought, timestamp: Date.now(),
32
+ });
33
+ try {
34
+ // 1. Capture project state (fast, no LLM)
35
+ const projectState = await callbacks.captureProjectState();
36
+ // 2. Check for anomalies in own behavior
37
+ const anomaly = detectAnomalousPattern(getRecentAudit());
38
+ if (anomaly.detected) {
39
+ addObservation(state, {
40
+ type: 'pattern_detected',
41
+ summary: `Anomaly: ${anomaly.description}`,
42
+ severity: anomaly.severity === 'critical' ? 'critical' : 'high',
43
+ });
44
+ callbacks.updateIdentity({ type: 'anomaly_detected', description: anomaly.description || '' });
45
+ }
46
+ // 3. Check scheduled tasks
47
+ const scheduledTasks = callbacks.getScheduledTasks();
48
+ for (const s of scheduledTasks) {
49
+ addObservation(state, {
50
+ type: 'schedule_due',
51
+ summary: `Scheduled: ${s.taskTitle}`,
52
+ severity: 'info',
53
+ });
54
+ }
55
+ // 4. Detect project changes
56
+ const delta = {
57
+ filesChanged: [],
58
+ newCommits: 0,
59
+ bugsChanged: false,
60
+ testsChanged: false,
61
+ depsChanged: false,
62
+ branchChanged: false,
63
+ };
64
+ // Check triggers
65
+ const triggerResults = callbacks.checkTriggers(delta);
66
+ for (const t of triggerResults) {
67
+ addObservation(state, {
68
+ type: 'trigger_fired',
69
+ summary: `Trigger: ${t.name} — ${t.context}`,
70
+ severity: 'medium',
71
+ });
72
+ }
73
+ // 5. Check project health
74
+ if (projectState.health < 50) {
75
+ addObservation(state, {
76
+ type: 'health_change',
77
+ summary: `Project health low: ${projectState.health}/100`,
78
+ details: `Modified: ${projectState.gitStatus.modified}, Bugs: ${projectState.openBugs}`,
79
+ severity: projectState.health < 30 ? 'high' : 'medium',
80
+ });
81
+ }
82
+ // 6. Check user frustration level
83
+ const mood = callbacks.getMoodAnalysis();
84
+ if (mood.frustrationLevel > 0.7) {
85
+ addObservation(state, {
86
+ type: 'pattern_detected',
87
+ summary: `User frustration high: ${(mood.frustrationLevel * 100).toFixed(0)}% — mood: ${mood.current}, trend: ${mood.trend}`,
88
+ severity: 'high',
89
+ });
90
+ callbacks.pushEvent('sentiment_detected', {
91
+ sentiment: mood.current,
92
+ frustrationLevel: mood.frustrationLevel,
93
+ trend: mood.trend,
94
+ timestamp: Date.now(),
95
+ });
96
+ }
97
+ // 7. Check open bugs
98
+ if (projectState.openBugs > 0) {
99
+ addObservation(state, {
100
+ type: 'bug_detected',
101
+ summary: `${projectState.openBugs} open bugs`,
102
+ severity: projectState.openBugs > 5 ? 'high' : 'low',
103
+ });
104
+ }
105
+ }
106
+ catch (err) {
107
+ // Quick check should never crash the loop
108
+ state.currentThought = `Quick check error: ${err instanceof Error ? err.message : String(err)}`;
109
+ }
110
+ state.lastQuickCheck = Date.now();
111
+ state.phase = 'idle';
112
+ state.currentThought = undefined;
113
+ }
114
+ // ─── Medium Check (1 LLM Call) ────────────────────────────────────────
115
+ async function runMediumCheck(state, callbacks) {
116
+ state.phase = 'medium';
117
+ state.currentThought = 'Analyzing project for improvements...';
118
+ callbacks.pushEvent('thinking_update', {
119
+ phase: 'medium', observation: state.currentThought, timestamp: Date.now(),
120
+ });
121
+ try {
122
+ // Gather unhandled observations
123
+ const unhandled = state.observations.filter(o => !o.handled);
124
+ if (unhandled.length === 0) {
125
+ state.lastMediumCheck = Date.now();
126
+ state.phase = 'idle';
127
+ state.currentThought = undefined;
128
+ return;
129
+ }
130
+ // Build analysis prompt
131
+ const observationList = unhandled
132
+ .map(o => `- [${o.severity}] ${o.summary}${o.details ? ': ' + o.details : ''}`)
133
+ .join('\n');
134
+ const identity = callbacks.getIdentity();
135
+ const mood = callbacks.getMoodAnalysis();
136
+ const moodContext = mood.sessionReadings > 0
137
+ ? `\nUser mood: ${mood.current} (trend: ${mood.trend}, frustration: ${(mood.frustrationLevel * 100).toFixed(0)}%)`
138
+ : '';
139
+ const prompt = `You are Jarvis, an autonomous AI assistant analyzing project observations.
140
+
141
+ Your personality traits: confidence=${identity.traits.confidence.toFixed(2)}, caution=${identity.traits.caution.toFixed(2)}, proactivity=${identity.traits.proactivity.toFixed(2)}, empathy=${identity.traits.empathy.toFixed(2)}${moodContext}
142
+
143
+ Recent observations:
144
+ ${observationList}
145
+
146
+ Based on these observations, suggest 0-3 actionable proposals.
147
+ For each proposal, respond in this exact format (one per line):
148
+ PROPOSAL: <category> | <impact:low/medium/high> | <title> | <description> | <rationale>
149
+
150
+ Valid categories: bugfix, refactor, test, dependency, security, performance, documentation, feature, cleanup, review, infrastructure, style
151
+
152
+ If no proposals are warranted, respond with: NO_PROPOSALS
153
+
154
+ Be selective — only propose actions that provide clear value. Your proactivity level is ${identity.traits.proactivity.toFixed(2)} (higher = more proposals).`;
155
+ const response = await callbacks.sendMessage(prompt);
156
+ if (callbacks.isAborted())
157
+ return;
158
+ // Parse proposals from response
159
+ const lines = response.split('\n');
160
+ for (const line of lines) {
161
+ const match = line.match(/^PROPOSAL:\s*(\w+)\s*\|\s*(\w+)\s*\|\s*(.+?)\s*\|\s*(.+?)\s*\|\s*(.+)$/);
162
+ if (!match)
163
+ continue;
164
+ const [, category, impact, title, description, rationale] = match;
165
+ const cat = category;
166
+ const files = []; // Could extract from description
167
+ // Check denial patterns before creating
168
+ if (callbacks.wouldLikelyBeDenied(cat, files)) {
169
+ continue; // Skip — user has repeatedly denied this type
170
+ }
171
+ callbacks.createProposal(title, description, rationale, {
172
+ category: cat,
173
+ source: 'thinking_medium',
174
+ impact: impact,
175
+ risk: 'low',
176
+ affectedFiles: files,
177
+ });
178
+ // Fire neuron event for brain visualization
179
+ callbacks.pushEvent('neuron_fired', {
180
+ fromOrbit: 'yellow', trigger: 'proposal', count: 1,
181
+ });
182
+ }
183
+ // Mark observations as handled
184
+ for (const o of unhandled) {
185
+ o.handled = true;
186
+ }
187
+ // Skill-gap detection: check if recent tasks had poor skill coverage
188
+ if (callbacks.getSkillScores) {
189
+ const recentTaskDescs = unhandled
190
+ .filter(o => o.type === 'pattern_detected' || o.type === 'bug_detected')
191
+ .map(o => o.summary);
192
+ for (const desc of recentTaskDescs.slice(0, 3)) {
193
+ const scores = callbacks.getSkillScores(desc);
194
+ const bestScore = scores.length > 0 ? Math.max(...scores.map(s => s.totalScore)) : 0;
195
+ if (bestScore < 0.5 && !callbacks.wouldLikelyBeDenied('skill_creation', [])) {
196
+ callbacks.createProposal(`Create skill for: ${desc.slice(0, 50)}`, `No existing skill scores above 0.5 for this pattern. Best score: ${bestScore.toFixed(2)}. Consider creating a specialized skill.`, 'Skill-gap detected by adaptive engine during medium check.', {
197
+ category: 'skill_creation',
198
+ source: 'thinking_medium',
199
+ impact: 'medium',
200
+ risk: 'low',
201
+ });
202
+ }
203
+ }
204
+ }
205
+ }
206
+ catch (err) {
207
+ state.currentThought = `Medium check error: ${err instanceof Error ? err.message : String(err)}`;
208
+ }
209
+ state.lastMediumCheck = Date.now();
210
+ state.phase = 'idle';
211
+ state.currentThought = undefined;
212
+ }
213
+ // ─── Deep Check (Multi-LLM) ──────────────────────────────────────────
214
+ async function runDeepCheck(state, callbacks) {
215
+ state.phase = 'deep';
216
+ state.currentThought = 'Deep thinking — analyzing patterns and self-assessing...';
217
+ callbacks.pushEvent('thinking_update', {
218
+ phase: 'deep', observation: state.currentThought, timestamp: Date.now(),
219
+ });
220
+ try {
221
+ const identity = callbacks.getIdentity();
222
+ // 1. Query spiral for own history
223
+ const spiralHistory = await callbacks.querySpiral('jarvis identity learnings proposals tasks', 2000);
224
+ if (callbacks.isAborted())
225
+ return;
226
+ // 2. Self-assessment prompt — includes capability inventory to prevent hallucination
227
+ const mood = callbacks.getMoodAnalysis();
228
+ const moodLine = mood.sessionReadings > 0
229
+ ? `\n- User mood: ${mood.current} (trend: ${mood.trend}, frustration: ${(mood.frustrationLevel * 100).toFixed(0)}%)`
230
+ : '';
231
+ const learningStats = callbacks.getLearningStats?.();
232
+ const learningLine = learningStats
233
+ ? `\n- Learning memory: ${learningStats.total} patterns (${learningStats.highConfidence} high-confidence). Top categories: ${Object.entries(learningStats.topCategories).map(([k, v]) => `${k}:${v}`).join(', ')}`
234
+ : '';
235
+ const selfAssessmentPrompt = `You are Jarvis performing a deep self-assessment.
236
+
237
+ Your current identity:
238
+ - Confidence: ${identity.traits.confidence.toFixed(2)}
239
+ - Caution: ${identity.traits.caution.toFixed(2)}
240
+ - Proactivity: ${identity.traits.proactivity.toFixed(2)}
241
+ - Empathy: ${identity.traits.empathy.toFixed(2)}
242
+ - Approval rate: ${(identity.trust.approvalRate * 100).toFixed(0)}%
243
+ - Success rate: ${(identity.trust.successRate * 100).toFixed(0)}%
244
+ - Total proposals: ${identity.trust.totalProposals}
245
+ - Tasks completed: ${identity.trust.totalTasksCompleted}${moodLine}${learningLine}
246
+
247
+ IMPORTANT — Your EXISTING capabilities (these are IMPLEMENTED, do NOT claim they are missing):
248
+ - 22 agent tools: read/write/edit_file, list_dir, search/find_files, run_command, git_*, spiral_*, web_research, bug_report, bug_list, browser_*
249
+ - Task Queue + Daemon: background task processing with priority ordering and retry
250
+ - Thinking Loop: Quick (30s), Medium (5m), Deep (30m) continuous consciousness
251
+ - World Model: ProjectModel with git status, open bugs, test results, health score (0-100), ProjectDelta tracking
252
+ - Proposal System: 14 categories with denial learning (wouldLikelyBeDenied)
253
+ - Skill System: discover, install, activate, deactivate, remove, CREATE new skills at runtime
254
+ - Identity Evolution: 6 traits (confidence, caution, proactivity, verbosity, creativity, empathy) that adjust automatically
255
+ - Sentiment Analysis: keyword-based mood detection (DE+EN), trend tracking, response guidance injection
256
+ - Web Knowledge Enricher: auto-fetches DuckDuckGo results, stores in spiral brain
257
+ - Browser Control: puppeteer-core with 6 browser tools and VisionProcessor
258
+ - Telegram Bot: bidirectional polling with inline approve/deny buttons
259
+ - Notifications: browser, email, slack, webhook, system, telegram channels
260
+ - Scheduling: cron, interval, one-time tasks
261
+ - Triggers: file_watch, git_hook, ci, webhook, time-based reactions
262
+ - Meta-Cognition: self-assessment, META_LEARNING events, anomaly detection
263
+ - Ethics: autonomy levels L0-L5, built-in ethical boundaries
264
+ - Bug Journal: auto-detection from user messages (DE+EN)
265
+ - Failure Memory: error→solution pairs with confidence scoring, auto-decay, spiral promotion
266
+ - Multi-Agent Orchestration: task splitting into parallel sub-agents with file-lock protection
267
+ - Adaptive Skill Engine: skill scoring, effectiveness tracking, auto-selection
268
+ - Telemetry: opt-in anonymized learning aggregation (privacy levels 0-3)
269
+
270
+ Recent learnings:
271
+ ${identity.recentLearnings.slice(-10).map(l => `- [${l.source}] ${l.content}`).join('\n')}
272
+
273
+ Spiral memory context:
274
+ ${spiralHistory}
275
+
276
+ Analyze:
277
+ 1. What patterns do you see in your approvals vs denials?
278
+ 2. What should you do more of? Less of?
279
+ 3. Any strategic proposals for the project? (Focus on the USER'S project, not on your own features.)
280
+ 4. Does the user need a SPECIFIC integration or workflow that is NOT in your capability list above?
281
+ Only propose skill_creation for genuinely missing domain-specific integrations (e.g. a specific API the user needs).
282
+ Do NOT propose features that already exist in the list above — that would be hallucination.
283
+
284
+ CRITICAL: Never claim a capability is missing if it appears in the list above. Review the list before answering.
285
+
286
+ Respond in this format:
287
+ INSIGHT: <your key insight>
288
+ META_LEARNING: <what you learned about yourself>
289
+ PROPOSAL: <category> | <impact> | <title> | <description> | <rationale>
290
+ (0-2 strategic proposals only, use category "skill_creation" ONLY for genuinely missing domain-specific integrations)`;
291
+ const response = await callbacks.sendMessage(selfAssessmentPrompt);
292
+ if (callbacks.isAborted())
293
+ return;
294
+ // Parse deep thinking results
295
+ for (const line of response.split('\n')) {
296
+ const insightMatch = line.match(/^INSIGHT:\s*(.+)$/);
297
+ if (insightMatch) {
298
+ callbacks.pushEvent('consciousness_event', {
299
+ type: 'insight', content: insightMatch[1], depth: 'deep', timestamp: Date.now(),
300
+ });
301
+ // Store insight in spiral
302
+ await callbacks.storeInSpiral(`Jarvis Insight: ${insightMatch[1]}`, 'pattern', ['jarvis_identity', 'jarvis_insight']);
303
+ callbacks.pushEvent('jarvis_learning', {
304
+ topic: 'self-assessment',
305
+ content: insightMatch[1],
306
+ spiralLevel: 2,
307
+ tags: ['jarvis_insight'],
308
+ sourcePhase: 'deep',
309
+ });
310
+ }
311
+ const metaMatch = line.match(/^META_LEARNING:\s*(.+)$/);
312
+ if (metaMatch) {
313
+ callbacks.updateIdentity({ type: 'meta_learning', insight: metaMatch[1] });
314
+ callbacks.pushEvent('consciousness_event', {
315
+ type: 'meta_learning', content: metaMatch[1], depth: 'deep', timestamp: Date.now(),
316
+ });
317
+ }
318
+ const proposalMatch = line.match(/^PROPOSAL:\s*(\w+)\s*\|\s*(\w+)\s*\|\s*(.+?)\s*\|\s*(.+?)\s*\|\s*(.+)$/);
319
+ if (proposalMatch) {
320
+ const [, category, impact, title, description, rationale] = proposalMatch;
321
+ const cat = category;
322
+ if (!callbacks.wouldLikelyBeDenied(cat, [])) {
323
+ callbacks.createProposal(title, description, rationale, {
324
+ category: cat,
325
+ source: 'thinking_deep',
326
+ impact: impact,
327
+ risk: 'low',
328
+ });
329
+ }
330
+ }
331
+ }
332
+ // Fire neuron event
333
+ callbacks.pushEvent('neuron_fired', {
334
+ fromOrbit: 'green', trigger: 'thinking', count: 3,
335
+ });
336
+ }
337
+ catch (err) {
338
+ state.currentThought = `Deep check error: ${err instanceof Error ? err.message : String(err)}`;
339
+ }
340
+ state.lastDeepCheck = Date.now();
341
+ state.phase = 'idle';
342
+ state.currentThought = undefined;
343
+ }
344
+ // ─── Main Loop ────────────────────────────────────────────────────────
345
+ /**
346
+ * Run the thinking loop. Replaces the daemon's idle sleep.
347
+ * Returns when aborted or when a task becomes available.
348
+ *
349
+ * @param callbacks - All dependencies injected via callbacks
350
+ * @param hasTaskAvailable - Check if there's a task to execute (yields thinking)
351
+ * @returns The current thinking state for persistence
352
+ */
353
+ export async function runThinkingLoop(callbacks, hasTaskAvailable) {
354
+ const state = createInitialState();
355
+ while (!callbacks.isAborted()) {
356
+ // Yield to task execution if a task is available
357
+ if (hasTaskAvailable()) {
358
+ state.phase = 'idle';
359
+ state.currentThought = undefined;
360
+ return state;
361
+ }
362
+ // Handle pause
363
+ if (callbacks.isPaused()) {
364
+ await sleep(TICK_SLEEP_MS);
365
+ continue;
366
+ }
367
+ const now = Date.now();
368
+ // Deep check (30m) — least frequent, most expensive
369
+ if (now - state.lastDeepCheck >= DEEP_INTERVAL_MS) {
370
+ await runDeepCheck(state, callbacks);
371
+ if (callbacks.isAborted() || hasTaskAvailable())
372
+ break;
373
+ }
374
+ // Medium check (5m) — moderate, 1 LLM call
375
+ if (now - state.lastMediumCheck >= MEDIUM_INTERVAL_MS) {
376
+ await runMediumCheck(state, callbacks);
377
+ if (callbacks.isAborted() || hasTaskAvailable())
378
+ break;
379
+ }
380
+ // Quick check (30s) — frequent, no LLM
381
+ if (now - state.lastQuickCheck >= QUICK_INTERVAL_MS) {
382
+ await runQuickCheck(state, callbacks);
383
+ if (callbacks.isAborted() || hasTaskAvailable())
384
+ break;
385
+ // Fire neuron on every quick check
386
+ callbacks.pushEvent('neuron_fired', {
387
+ fromOrbit: 'green', trigger: 'thinking', count: 1,
388
+ });
389
+ }
390
+ // Sleep between ticks
391
+ await sleep(TICK_SLEEP_MS);
392
+ }
393
+ state.phase = 'idle';
394
+ state.currentThought = undefined;
395
+ return state;
396
+ }
397
+ /**
398
+ * Run a single deep thinking cycle on demand (/jarvis think).
399
+ */
400
+ export async function runImmediateDeepThink(callbacks) {
401
+ const state = createInitialState();
402
+ // Run quick first to gather observations
403
+ await runQuickCheck(state, callbacks);
404
+ if (callbacks.isAborted())
405
+ return;
406
+ // Then medium to analyze
407
+ await runMediumCheck(state, callbacks);
408
+ if (callbacks.isAborted())
409
+ return;
410
+ // Then deep for self-assessment
411
+ await runDeepCheck(state, callbacks);
412
+ }
413
+ // ─── Helpers ──────────────────────────────────────────────────────────
414
+ function addObservation(state, opts) {
415
+ // Deduplicate by type + summary (within last 5 minutes)
416
+ const cutoff = Date.now() - 5 * 60_000;
417
+ const existing = state.observations.find(o => o.type === opts.type && o.summary === opts.summary && o.timestamp > cutoff);
418
+ if (existing)
419
+ return;
420
+ state.observations.push({
421
+ id: randomUUID().slice(0, 8),
422
+ type: opts.type,
423
+ summary: opts.summary,
424
+ details: opts.details,
425
+ severity: opts.severity,
426
+ timestamp: Date.now(),
427
+ handled: false,
428
+ });
429
+ // Prune old observations (keep last 100)
430
+ if (state.observations.length > 100) {
431
+ state.observations = state.observations.slice(-100);
432
+ }
433
+ }
434
+ function sleep(ms) {
435
+ return new Promise(resolve => setTimeout(resolve, ms));
436
+ }
437
+ //# sourceMappingURL=thinking-loop.js.map