helixmind 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (479) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +207 -0
  3. package/dist/cli/agent/autonomous.d.ts +10 -0
  4. package/dist/cli/agent/autonomous.d.ts.map +1 -0
  5. package/dist/cli/agent/autonomous.js +172 -0
  6. package/dist/cli/agent/autonomous.js.map +1 -0
  7. package/dist/cli/agent/loop.d.ts +76 -0
  8. package/dist/cli/agent/loop.d.ts.map +1 -0
  9. package/dist/cli/agent/loop.js +333 -0
  10. package/dist/cli/agent/loop.js.map +1 -0
  11. package/dist/cli/agent/permissions.d.ts +28 -0
  12. package/dist/cli/agent/permissions.d.ts.map +1 -0
  13. package/dist/cli/agent/permissions.js +180 -0
  14. package/dist/cli/agent/permissions.js.map +1 -0
  15. package/dist/cli/agent/sandbox.d.ts +17 -0
  16. package/dist/cli/agent/sandbox.d.ts.map +1 -0
  17. package/dist/cli/agent/sandbox.js +124 -0
  18. package/dist/cli/agent/sandbox.js.map +1 -0
  19. package/dist/cli/agent/tools/edit-file.d.ts +2 -0
  20. package/dist/cli/agent/tools/edit-file.d.ts.map +1 -0
  21. package/dist/cli/agent/tools/edit-file.js +49 -0
  22. package/dist/cli/agent/tools/edit-file.js.map +1 -0
  23. package/dist/cli/agent/tools/find.d.ts +2 -0
  24. package/dist/cli/agent/tools/find.d.ts.map +1 -0
  25. package/dist/cli/agent/tools/find.js +35 -0
  26. package/dist/cli/agent/tools/find.js.map +1 -0
  27. package/dist/cli/agent/tools/git-commit.d.ts +2 -0
  28. package/dist/cli/agent/tools/git-commit.d.ts.map +1 -0
  29. package/dist/cli/agent/tools/git-commit.js +51 -0
  30. package/dist/cli/agent/tools/git-commit.js.map +1 -0
  31. package/dist/cli/agent/tools/git-diff.d.ts +2 -0
  32. package/dist/cli/agent/tools/git-diff.d.ts.map +1 -0
  33. package/dist/cli/agent/tools/git-diff.js +36 -0
  34. package/dist/cli/agent/tools/git-diff.js.map +1 -0
  35. package/dist/cli/agent/tools/git-log.d.ts +2 -0
  36. package/dist/cli/agent/tools/git-log.d.ts.map +1 -0
  37. package/dist/cli/agent/tools/git-log.js +32 -0
  38. package/dist/cli/agent/tools/git-log.js.map +1 -0
  39. package/dist/cli/agent/tools/git-status.d.ts +2 -0
  40. package/dist/cli/agent/tools/git-status.d.ts.map +1 -0
  41. package/dist/cli/agent/tools/git-status.js +38 -0
  42. package/dist/cli/agent/tools/git-status.js.map +1 -0
  43. package/dist/cli/agent/tools/list-dir.d.ts +2 -0
  44. package/dist/cli/agent/tools/list-dir.d.ts.map +1 -0
  45. package/dist/cli/agent/tools/list-dir.js +73 -0
  46. package/dist/cli/agent/tools/list-dir.js.map +1 -0
  47. package/dist/cli/agent/tools/read-file.d.ts +2 -0
  48. package/dist/cli/agent/tools/read-file.d.ts.map +1 -0
  49. package/dist/cli/agent/tools/read-file.js +45 -0
  50. package/dist/cli/agent/tools/read-file.js.map +1 -0
  51. package/dist/cli/agent/tools/registry.d.ts +18 -0
  52. package/dist/cli/agent/tools/registry.d.ts.map +1 -0
  53. package/dist/cli/agent/tools/registry.js +31 -0
  54. package/dist/cli/agent/tools/registry.js.map +1 -0
  55. package/dist/cli/agent/tools/run-command.d.ts +2 -0
  56. package/dist/cli/agent/tools/run-command.d.ts.map +1 -0
  57. package/dist/cli/agent/tools/run-command.js +79 -0
  58. package/dist/cli/agent/tools/run-command.js.map +1 -0
  59. package/dist/cli/agent/tools/search.d.ts +2 -0
  60. package/dist/cli/agent/tools/search.d.ts.map +1 -0
  61. package/dist/cli/agent/tools/search.js +104 -0
  62. package/dist/cli/agent/tools/search.js.map +1 -0
  63. package/dist/cli/agent/tools/spiral-query.d.ts +2 -0
  64. package/dist/cli/agent/tools/spiral-query.d.ts.map +1 -0
  65. package/dist/cli/agent/tools/spiral-query.js +52 -0
  66. package/dist/cli/agent/tools/spiral-query.js.map +1 -0
  67. package/dist/cli/agent/tools/spiral-store.d.ts +2 -0
  68. package/dist/cli/agent/tools/spiral-store.d.ts.map +1 -0
  69. package/dist/cli/agent/tools/spiral-store.js +37 -0
  70. package/dist/cli/agent/tools/spiral-store.js.map +1 -0
  71. package/dist/cli/agent/tools/web-research.d.ts +2 -0
  72. package/dist/cli/agent/tools/web-research.d.ts.map +1 -0
  73. package/dist/cli/agent/tools/web-research.js +96 -0
  74. package/dist/cli/agent/tools/web-research.js.map +1 -0
  75. package/dist/cli/agent/tools/write-file.d.ts +2 -0
  76. package/dist/cli/agent/tools/write-file.d.ts.map +1 -0
  77. package/dist/cli/agent/tools/write-file.js +91 -0
  78. package/dist/cli/agent/tools/write-file.js.map +1 -0
  79. package/dist/cli/agent/undo.d.ts +30 -0
  80. package/dist/cli/agent/undo.d.ts.map +1 -0
  81. package/dist/cli/agent/undo.js +48 -0
  82. package/dist/cli/agent/undo.js.map +1 -0
  83. package/dist/cli/auth/callback-server.d.ts +15 -0
  84. package/dist/cli/auth/callback-server.d.ts.map +1 -0
  85. package/dist/cli/auth/callback-server.js +168 -0
  86. package/dist/cli/auth/callback-server.js.map +1 -0
  87. package/dist/cli/auth/feature-gate.d.ts +19 -0
  88. package/dist/cli/auth/feature-gate.d.ts.map +1 -0
  89. package/dist/cli/auth/feature-gate.js +74 -0
  90. package/dist/cli/auth/feature-gate.js.map +1 -0
  91. package/dist/cli/auth/guard.d.ts +10 -0
  92. package/dist/cli/auth/guard.d.ts.map +1 -0
  93. package/dist/cli/auth/guard.js +46 -0
  94. package/dist/cli/auth/guard.js.map +1 -0
  95. package/dist/cli/auth/login.d.ts +22 -0
  96. package/dist/cli/auth/login.d.ts.map +1 -0
  97. package/dist/cli/auth/login.js +194 -0
  98. package/dist/cli/auth/login.js.map +1 -0
  99. package/dist/cli/auth/logout.d.ts +6 -0
  100. package/dist/cli/auth/logout.d.ts.map +1 -0
  101. package/dist/cli/auth/logout.js +36 -0
  102. package/dist/cli/auth/logout.js.map +1 -0
  103. package/dist/cli/bench/dataset.d.ts +13 -0
  104. package/dist/cli/bench/dataset.d.ts.map +1 -0
  105. package/dist/cli/bench/dataset.js +97 -0
  106. package/dist/cli/bench/dataset.js.map +1 -0
  107. package/dist/cli/bench/harness.d.ts +7 -0
  108. package/dist/cli/bench/harness.d.ts.map +1 -0
  109. package/dist/cli/bench/harness.js +135 -0
  110. package/dist/cli/bench/harness.js.map +1 -0
  111. package/dist/cli/bench/metrics.d.ts +15 -0
  112. package/dist/cli/bench/metrics.d.ts.map +1 -0
  113. package/dist/cli/bench/metrics.js +98 -0
  114. package/dist/cli/bench/metrics.js.map +1 -0
  115. package/dist/cli/bench/output.d.ts +42 -0
  116. package/dist/cli/bench/output.d.ts.map +1 -0
  117. package/dist/cli/bench/output.js +140 -0
  118. package/dist/cli/bench/output.js.map +1 -0
  119. package/dist/cli/bench/prompt.d.ts +13 -0
  120. package/dist/cli/bench/prompt.d.ts.map +1 -0
  121. package/dist/cli/bench/prompt.js +106 -0
  122. package/dist/cli/bench/prompt.js.map +1 -0
  123. package/dist/cli/bench/runner.d.ts +14 -0
  124. package/dist/cli/bench/runner.d.ts.map +1 -0
  125. package/dist/cli/bench/runner.js +334 -0
  126. package/dist/cli/bench/runner.js.map +1 -0
  127. package/dist/cli/bench/types.d.ts +109 -0
  128. package/dist/cli/bench/types.d.ts.map +1 -0
  129. package/dist/cli/bench/types.js +2 -0
  130. package/dist/cli/bench/types.js.map +1 -0
  131. package/dist/cli/bench/ui.d.ts +12 -0
  132. package/dist/cli/bench/ui.d.ts.map +1 -0
  133. package/dist/cli/bench/ui.js +126 -0
  134. package/dist/cli/bench/ui.js.map +1 -0
  135. package/dist/cli/brain/archive.d.ts +33 -0
  136. package/dist/cli/brain/archive.d.ts.map +1 -0
  137. package/dist/cli/brain/archive.js +159 -0
  138. package/dist/cli/brain/archive.js.map +1 -0
  139. package/dist/cli/brain/control-protocol.d.ts +159 -0
  140. package/dist/cli/brain/control-protocol.d.ts.map +1 -0
  141. package/dist/cli/brain/control-protocol.js +41 -0
  142. package/dist/cli/brain/control-protocol.js.map +1 -0
  143. package/dist/cli/brain/exporter.d.ts +34 -0
  144. package/dist/cli/brain/exporter.d.ts.map +1 -0
  145. package/dist/cli/brain/exporter.js +37 -0
  146. package/dist/cli/brain/exporter.js.map +1 -0
  147. package/dist/cli/brain/generator.d.ts +67 -0
  148. package/dist/cli/brain/generator.d.ts.map +1 -0
  149. package/dist/cli/brain/generator.js +239 -0
  150. package/dist/cli/brain/generator.js.map +1 -0
  151. package/dist/cli/brain/relay-client.d.ts +8 -0
  152. package/dist/cli/brain/relay-client.d.ts.map +1 -0
  153. package/dist/cli/brain/relay-client.js +173 -0
  154. package/dist/cli/brain/relay-client.js.map +1 -0
  155. package/dist/cli/brain/server.d.ts +34 -0
  156. package/dist/cli/brain/server.d.ts.map +1 -0
  157. package/dist/cli/brain/server.js +425 -0
  158. package/dist/cli/brain/server.js.map +1 -0
  159. package/dist/cli/brain/template.d.ts +3 -0
  160. package/dist/cli/brain/template.d.ts.map +1 -0
  161. package/dist/cli/brain/template.js +2072 -0
  162. package/dist/cli/brain/template.js.map +1 -0
  163. package/dist/cli/checkpoints/browser.d.ts +27 -0
  164. package/dist/cli/checkpoints/browser.d.ts.map +1 -0
  165. package/dist/cli/checkpoints/browser.js +238 -0
  166. package/dist/cli/checkpoints/browser.js.map +1 -0
  167. package/dist/cli/checkpoints/keybinding.d.ts +22 -0
  168. package/dist/cli/checkpoints/keybinding.d.ts.map +1 -0
  169. package/dist/cli/checkpoints/keybinding.js +43 -0
  170. package/dist/cli/checkpoints/keybinding.js.map +1 -0
  171. package/dist/cli/checkpoints/revert.d.ts +37 -0
  172. package/dist/cli/checkpoints/revert.d.ts.map +1 -0
  173. package/dist/cli/checkpoints/revert.js +144 -0
  174. package/dist/cli/checkpoints/revert.js.map +1 -0
  175. package/dist/cli/checkpoints/store.d.ts +48 -0
  176. package/dist/cli/checkpoints/store.d.ts.map +1 -0
  177. package/dist/cli/checkpoints/store.js +188 -0
  178. package/dist/cli/checkpoints/store.js.map +1 -0
  179. package/dist/cli/commands/archive.d.ts +7 -0
  180. package/dist/cli/commands/archive.d.ts.map +1 -0
  181. package/dist/cli/commands/archive.js +66 -0
  182. package/dist/cli/commands/archive.js.map +1 -0
  183. package/dist/cli/commands/auth.d.ts +10 -0
  184. package/dist/cli/commands/auth.d.ts.map +1 -0
  185. package/dist/cli/commands/auth.js +44 -0
  186. package/dist/cli/commands/auth.js.map +1 -0
  187. package/dist/cli/commands/bench.d.ts +25 -0
  188. package/dist/cli/commands/bench.d.ts.map +1 -0
  189. package/dist/cli/commands/bench.js +114 -0
  190. package/dist/cli/commands/bench.js.map +1 -0
  191. package/dist/cli/commands/chat.d.ts +11 -0
  192. package/dist/cli/commands/chat.d.ts.map +1 -0
  193. package/dist/cli/commands/chat.js +2321 -0
  194. package/dist/cli/commands/chat.js.map +1 -0
  195. package/dist/cli/commands/config.d.ts +4 -0
  196. package/dist/cli/commands/config.d.ts.map +1 -0
  197. package/dist/cli/commands/config.js +41 -0
  198. package/dist/cli/commands/config.js.map +1 -0
  199. package/dist/cli/commands/feed.d.ts +6 -0
  200. package/dist/cli/commands/feed.d.ts.map +1 -0
  201. package/dist/cli/commands/feed.js +95 -0
  202. package/dist/cli/commands/feed.js.map +1 -0
  203. package/dist/cli/commands/helix-menu.d.ts +4 -0
  204. package/dist/cli/commands/helix-menu.d.ts.map +1 -0
  205. package/dist/cli/commands/helix-menu.js +400 -0
  206. package/dist/cli/commands/helix-menu.js.map +1 -0
  207. package/dist/cli/commands/init.d.ts +2 -0
  208. package/dist/cli/commands/init.d.ts.map +1 -0
  209. package/dist/cli/commands/init.js +26 -0
  210. package/dist/cli/commands/init.js.map +1 -0
  211. package/dist/cli/commands/setup.d.ts +20 -0
  212. package/dist/cli/commands/setup.d.ts.map +1 -0
  213. package/dist/cli/commands/setup.js +314 -0
  214. package/dist/cli/commands/setup.js.map +1 -0
  215. package/dist/cli/commands/spiral.d.ts +4 -0
  216. package/dist/cli/commands/spiral.d.ts.map +1 -0
  217. package/dist/cli/commands/spiral.js +81 -0
  218. package/dist/cli/commands/spiral.js.map +1 -0
  219. package/dist/cli/config/store.d.ts +72 -0
  220. package/dist/cli/config/store.d.ts.map +1 -0
  221. package/dist/cli/config/store.js +241 -0
  222. package/dist/cli/config/store.js.map +1 -0
  223. package/dist/cli/context/assembler.d.ts +8 -0
  224. package/dist/cli/context/assembler.d.ts.map +1 -0
  225. package/dist/cli/context/assembler.js +124 -0
  226. package/dist/cli/context/assembler.js.map +1 -0
  227. package/dist/cli/context/project.d.ts +13 -0
  228. package/dist/cli/context/project.d.ts.map +1 -0
  229. package/dist/cli/context/project.js +126 -0
  230. package/dist/cli/context/project.js.map +1 -0
  231. package/dist/cli/context/session-buffer.d.ts +57 -0
  232. package/dist/cli/context/session-buffer.d.ts.map +1 -0
  233. package/dist/cli/context/session-buffer.js +268 -0
  234. package/dist/cli/context/session-buffer.js.map +1 -0
  235. package/dist/cli/context/trimmer.d.ts +26 -0
  236. package/dist/cli/context/trimmer.d.ts.map +1 -0
  237. package/dist/cli/context/trimmer.js +105 -0
  238. package/dist/cli/context/trimmer.js.map +1 -0
  239. package/dist/cli/feed/analyzer.d.ts +17 -0
  240. package/dist/cli/feed/analyzer.d.ts.map +1 -0
  241. package/dist/cli/feed/analyzer.js +220 -0
  242. package/dist/cli/feed/analyzer.js.map +1 -0
  243. package/dist/cli/feed/intent.d.ts +8 -0
  244. package/dist/cli/feed/intent.d.ts.map +1 -0
  245. package/dist/cli/feed/intent.js +70 -0
  246. package/dist/cli/feed/intent.js.map +1 -0
  247. package/dist/cli/feed/parser.d.ts +23 -0
  248. package/dist/cli/feed/parser.d.ts.map +1 -0
  249. package/dist/cli/feed/parser.js +166 -0
  250. package/dist/cli/feed/parser.js.map +1 -0
  251. package/dist/cli/feed/pipeline.d.ts +32 -0
  252. package/dist/cli/feed/pipeline.d.ts.map +1 -0
  253. package/dist/cli/feed/pipeline.js +242 -0
  254. package/dist/cli/feed/pipeline.js.map +1 -0
  255. package/dist/cli/feed/reader.d.ts +10 -0
  256. package/dist/cli/feed/reader.d.ts.map +1 -0
  257. package/dist/cli/feed/reader.js +61 -0
  258. package/dist/cli/feed/reader.js.map +1 -0
  259. package/dist/cli/feed/scanner.d.ts +10 -0
  260. package/dist/cli/feed/scanner.d.ts.map +1 -0
  261. package/dist/cli/feed/scanner.js +124 -0
  262. package/dist/cli/feed/scanner.js.map +1 -0
  263. package/dist/cli/feed/watcher.d.ts +14 -0
  264. package/dist/cli/feed/watcher.d.ts.map +1 -0
  265. package/dist/cli/feed/watcher.js +76 -0
  266. package/dist/cli/feed/watcher.js.map +1 -0
  267. package/dist/cli/index.d.ts +3 -0
  268. package/dist/cli/index.d.ts.map +1 -0
  269. package/dist/cli/index.js +204 -0
  270. package/dist/cli/index.js.map +1 -0
  271. package/dist/cli/providers/anthropic.d.ts +10 -0
  272. package/dist/cli/providers/anthropic.d.ts.map +1 -0
  273. package/dist/cli/providers/anthropic.js +117 -0
  274. package/dist/cli/providers/anthropic.js.map +1 -0
  275. package/dist/cli/providers/ollama.d.ts +37 -0
  276. package/dist/cli/providers/ollama.d.ts.map +1 -0
  277. package/dist/cli/providers/ollama.js +151 -0
  278. package/dist/cli/providers/ollama.js.map +1 -0
  279. package/dist/cli/providers/openai.d.ts +13 -0
  280. package/dist/cli/providers/openai.d.ts.map +1 -0
  281. package/dist/cli/providers/openai.js +283 -0
  282. package/dist/cli/providers/openai.js.map +1 -0
  283. package/dist/cli/providers/rate-limiter.d.ts +51 -0
  284. package/dist/cli/providers/rate-limiter.d.ts.map +1 -0
  285. package/dist/cli/providers/rate-limiter.js +164 -0
  286. package/dist/cli/providers/rate-limiter.js.map +1 -0
  287. package/dist/cli/providers/registry.d.ts +16 -0
  288. package/dist/cli/providers/registry.d.ts.map +1 -0
  289. package/dist/cli/providers/registry.js +99 -0
  290. package/dist/cli/providers/registry.js.map +1 -0
  291. package/dist/cli/providers/types.d.ts +61 -0
  292. package/dist/cli/providers/types.d.ts.map +1 -0
  293. package/dist/cli/providers/types.js +2 -0
  294. package/dist/cli/providers/types.js.map +1 -0
  295. package/dist/cli/sessions/manager.d.ts +69 -0
  296. package/dist/cli/sessions/manager.d.ts.map +1 -0
  297. package/dist/cli/sessions/manager.js +200 -0
  298. package/dist/cli/sessions/manager.js.map +1 -0
  299. package/dist/cli/sessions/session.d.ts +54 -0
  300. package/dist/cli/sessions/session.d.ts.map +1 -0
  301. package/dist/cli/sessions/session.js +70 -0
  302. package/dist/cli/sessions/session.js.map +1 -0
  303. package/dist/cli/sessions/tab-view.d.ts +18 -0
  304. package/dist/cli/sessions/tab-view.d.ts.map +1 -0
  305. package/dist/cli/sessions/tab-view.js +134 -0
  306. package/dist/cli/sessions/tab-view.js.map +1 -0
  307. package/dist/cli/ui/activity.d.ts +82 -0
  308. package/dist/cli/ui/activity.d.ts.map +1 -0
  309. package/dist/cli/ui/activity.js +309 -0
  310. package/dist/cli/ui/activity.js.map +1 -0
  311. package/dist/cli/ui/chat-view.d.ts +10 -0
  312. package/dist/cli/ui/chat-view.d.ts.map +1 -0
  313. package/dist/cli/ui/chat-view.js +165 -0
  314. package/dist/cli/ui/chat-view.js.map +1 -0
  315. package/dist/cli/ui/command-suggest.d.ts +22 -0
  316. package/dist/cli/ui/command-suggest.d.ts.map +1 -0
  317. package/dist/cli/ui/command-suggest.js +115 -0
  318. package/dist/cli/ui/command-suggest.js.map +1 -0
  319. package/dist/cli/ui/logo.d.ts +3 -0
  320. package/dist/cli/ui/logo.d.ts.map +1 -0
  321. package/dist/cli/ui/logo.js +25 -0
  322. package/dist/cli/ui/logo.js.map +1 -0
  323. package/dist/cli/ui/progress.d.ts +21 -0
  324. package/dist/cli/ui/progress.d.ts.map +1 -0
  325. package/dist/cli/ui/progress.js +125 -0
  326. package/dist/cli/ui/progress.js.map +1 -0
  327. package/dist/cli/ui/select-menu.d.ts +22 -0
  328. package/dist/cli/ui/select-menu.d.ts.map +1 -0
  329. package/dist/cli/ui/select-menu.js +152 -0
  330. package/dist/cli/ui/select-menu.js.map +1 -0
  331. package/dist/cli/ui/spinner.d.ts +3 -0
  332. package/dist/cli/ui/spinner.d.ts.map +1 -0
  333. package/dist/cli/ui/spinner.js +14 -0
  334. package/dist/cli/ui/spinner.js.map +1 -0
  335. package/dist/cli/ui/statusbar.d.ts +65 -0
  336. package/dist/cli/ui/statusbar.d.ts.map +1 -0
  337. package/dist/cli/ui/statusbar.js +272 -0
  338. package/dist/cli/ui/statusbar.js.map +1 -0
  339. package/dist/cli/ui/theme.d.ts +20 -0
  340. package/dist/cli/ui/theme.d.ts.map +1 -0
  341. package/dist/cli/ui/theme.js +25 -0
  342. package/dist/cli/ui/theme.js.map +1 -0
  343. package/dist/cli/ui/tool-output.d.ts +25 -0
  344. package/dist/cli/ui/tool-output.d.ts.map +1 -0
  345. package/dist/cli/ui/tool-output.js +171 -0
  346. package/dist/cli/ui/tool-output.js.map +1 -0
  347. package/dist/cli/validation/autofix.d.ts +32 -0
  348. package/dist/cli/validation/autofix.d.ts.map +1 -0
  349. package/dist/cli/validation/autofix.js +148 -0
  350. package/dist/cli/validation/autofix.js.map +1 -0
  351. package/dist/cli/validation/classifier.d.ts +17 -0
  352. package/dist/cli/validation/classifier.d.ts.map +1 -0
  353. package/dist/cli/validation/classifier.js +174 -0
  354. package/dist/cli/validation/classifier.js.map +1 -0
  355. package/dist/cli/validation/criteria.d.ts +22 -0
  356. package/dist/cli/validation/criteria.d.ts.map +1 -0
  357. package/dist/cli/validation/criteria.js +188 -0
  358. package/dist/cli/validation/criteria.js.map +1 -0
  359. package/dist/cli/validation/dynamic-checks.d.ts +16 -0
  360. package/dist/cli/validation/dynamic-checks.d.ts.map +1 -0
  361. package/dist/cli/validation/dynamic-checks.js +109 -0
  362. package/dist/cli/validation/dynamic-checks.js.map +1 -0
  363. package/dist/cli/validation/model.d.ts +16 -0
  364. package/dist/cli/validation/model.d.ts.map +1 -0
  365. package/dist/cli/validation/model.js +59 -0
  366. package/dist/cli/validation/model.js.map +1 -0
  367. package/dist/cli/validation/reporter.d.ts +18 -0
  368. package/dist/cli/validation/reporter.d.ts.map +1 -0
  369. package/dist/cli/validation/reporter.js +167 -0
  370. package/dist/cli/validation/reporter.js.map +1 -0
  371. package/dist/cli/validation/spiral-checks.d.ts +12 -0
  372. package/dist/cli/validation/spiral-checks.d.ts.map +1 -0
  373. package/dist/cli/validation/spiral-checks.js +167 -0
  374. package/dist/cli/validation/spiral-checks.js.map +1 -0
  375. package/dist/cli/validation/static-checks.d.ts +26 -0
  376. package/dist/cli/validation/static-checks.d.ts.map +1 -0
  377. package/dist/cli/validation/static-checks.js +492 -0
  378. package/dist/cli/validation/static-checks.js.map +1 -0
  379. package/dist/cli/validation/stats.d.ts +29 -0
  380. package/dist/cli/validation/stats.d.ts.map +1 -0
  381. package/dist/cli/validation/stats.js +137 -0
  382. package/dist/cli/validation/stats.js.map +1 -0
  383. package/dist/index.d.ts +3 -0
  384. package/dist/index.d.ts.map +1 -0
  385. package/dist/index.js +35 -0
  386. package/dist/index.js.map +1 -0
  387. package/dist/server.d.ts +8 -0
  388. package/dist/server.d.ts.map +1 -0
  389. package/dist/server.js +43 -0
  390. package/dist/server.js.map +1 -0
  391. package/dist/spiral/cloud/content-extractor.d.ts +27 -0
  392. package/dist/spiral/cloud/content-extractor.d.ts.map +1 -0
  393. package/dist/spiral/cloud/content-extractor.js +175 -0
  394. package/dist/spiral/cloud/content-extractor.js.map +1 -0
  395. package/dist/spiral/cloud/search-provider.d.ts +22 -0
  396. package/dist/spiral/cloud/search-provider.d.ts.map +1 -0
  397. package/dist/spiral/cloud/search-provider.js +212 -0
  398. package/dist/spiral/cloud/search-provider.js.map +1 -0
  399. package/dist/spiral/cloud/topic-detector.d.ts +25 -0
  400. package/dist/spiral/cloud/topic-detector.d.ts.map +1 -0
  401. package/dist/spiral/cloud/topic-detector.js +196 -0
  402. package/dist/spiral/cloud/topic-detector.js.map +1 -0
  403. package/dist/spiral/cloud/web-enricher.d.ts +58 -0
  404. package/dist/spiral/cloud/web-enricher.d.ts.map +1 -0
  405. package/dist/spiral/cloud/web-enricher.js +170 -0
  406. package/dist/spiral/cloud/web-enricher.js.map +1 -0
  407. package/dist/spiral/compression.d.ts +54 -0
  408. package/dist/spiral/compression.d.ts.map +1 -0
  409. package/dist/spiral/compression.js +175 -0
  410. package/dist/spiral/compression.js.map +1 -0
  411. package/dist/spiral/embeddings.d.ts +24 -0
  412. package/dist/spiral/embeddings.d.ts.map +1 -0
  413. package/dist/spiral/embeddings.js +69 -0
  414. package/dist/spiral/embeddings.js.map +1 -0
  415. package/dist/spiral/engine.d.ts +95 -0
  416. package/dist/spiral/engine.d.ts.map +1 -0
  417. package/dist/spiral/engine.js +271 -0
  418. package/dist/spiral/engine.js.map +1 -0
  419. package/dist/spiral/injection.d.ts +29 -0
  420. package/dist/spiral/injection.d.ts.map +1 -0
  421. package/dist/spiral/injection.js +164 -0
  422. package/dist/spiral/injection.js.map +1 -0
  423. package/dist/spiral/relevance.d.ts +37 -0
  424. package/dist/spiral/relevance.d.ts.map +1 -0
  425. package/dist/spiral/relevance.js +75 -0
  426. package/dist/spiral/relevance.js.map +1 -0
  427. package/dist/storage/database.d.ts +11 -0
  428. package/dist/storage/database.d.ts.map +1 -0
  429. package/dist/storage/database.js +141 -0
  430. package/dist/storage/database.js.map +1 -0
  431. package/dist/storage/edges.d.ts +25 -0
  432. package/dist/storage/edges.d.ts.map +1 -0
  433. package/dist/storage/edges.js +69 -0
  434. package/dist/storage/edges.js.map +1 -0
  435. package/dist/storage/nodes.d.ts +45 -0
  436. package/dist/storage/nodes.d.ts.map +1 -0
  437. package/dist/storage/nodes.js +124 -0
  438. package/dist/storage/nodes.js.map +1 -0
  439. package/dist/storage/vectors.d.ts +25 -0
  440. package/dist/storage/vectors.d.ts.map +1 -0
  441. package/dist/storage/vectors.js +110 -0
  442. package/dist/storage/vectors.js.map +1 -0
  443. package/dist/tools/spiral-compact.d.ts +14 -0
  444. package/dist/tools/spiral-compact.d.ts.map +1 -0
  445. package/dist/tools/spiral-compact.js +14 -0
  446. package/dist/tools/spiral-compact.js.map +1 -0
  447. package/dist/tools/spiral-query.d.ts +18 -0
  448. package/dist/tools/spiral-query.d.ts.map +1 -0
  449. package/dist/tools/spiral-query.js +16 -0
  450. package/dist/tools/spiral-query.js.map +1 -0
  451. package/dist/tools/spiral-relate.d.ts +21 -0
  452. package/dist/tools/spiral-relate.d.ts.map +1 -0
  453. package/dist/tools/spiral-relate.js +21 -0
  454. package/dist/tools/spiral-relate.js.map +1 -0
  455. package/dist/tools/spiral-status.d.ts +8 -0
  456. package/dist/tools/spiral-status.d.ts.map +1 -0
  457. package/dist/tools/spiral-status.js +10 -0
  458. package/dist/tools/spiral-status.js.map +1 -0
  459. package/dist/tools/spiral-store.d.ts +41 -0
  460. package/dist/tools/spiral-store.d.ts.map +1 -0
  461. package/dist/tools/spiral-store.js +22 -0
  462. package/dist/tools/spiral-store.js.map +1 -0
  463. package/dist/types.d.ts +92 -0
  464. package/dist/types.d.ts.map +1 -0
  465. package/dist/types.js +9 -0
  466. package/dist/types.js.map +1 -0
  467. package/dist/utils/config.d.ts +14 -0
  468. package/dist/utils/config.d.ts.map +1 -0
  469. package/dist/utils/config.js +44 -0
  470. package/dist/utils/config.js.map +1 -0
  471. package/dist/utils/logger.d.ts +10 -0
  472. package/dist/utils/logger.d.ts.map +1 -0
  473. package/dist/utils/logger.js +40 -0
  474. package/dist/utils/logger.js.map +1 -0
  475. package/dist/utils/tokens.d.ts +21 -0
  476. package/dist/utils/tokens.d.ts.map +1 -0
  477. package/dist/utils/tokens.js +33 -0
  478. package/dist/utils/tokens.js.map +1 -0
  479. package/package.json +90 -0
@@ -0,0 +1,140 @@
1
+ import { appendFileSync, writeFileSync, readFileSync, readdirSync, existsSync, mkdirSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ /**
4
+ * Append a single prediction to the JSONL file (SWE-bench compatible).
5
+ */
6
+ export function appendPrediction(outputDir, prediction) {
7
+ mkdirSync(outputDir, { recursive: true });
8
+ appendFileSync(join(outputDir, 'predictions.jsonl'), JSON.stringify(prediction) + '\n', 'utf-8');
9
+ }
10
+ /**
11
+ * Append a task result to the detailed results JSONL.
12
+ */
13
+ export function appendTaskResult(outputDir, result) {
14
+ mkdirSync(outputDir, { recursive: true });
15
+ // Write a compact version without the full patch/agentText
16
+ const compact = {
17
+ instance_id: result.instance_id,
18
+ status: result.status,
19
+ tokens: result.tokens,
20
+ toolCalls: result.toolCalls,
21
+ durationMs: result.durationMs,
22
+ errors: result.errors,
23
+ stepCount: result.steps.length,
24
+ };
25
+ appendFileSync(join(outputDir, 'results.jsonl'), JSON.stringify(compact) + '\n', 'utf-8');
26
+ }
27
+ /**
28
+ * Write the final run summary.
29
+ */
30
+ export function writeSummary(outputDir, metrics) {
31
+ mkdirSync(outputDir, { recursive: true });
32
+ // Don't include taskResults in summary (too large)
33
+ const { taskResults: _, ...summary } = metrics;
34
+ writeFileSync(join(outputDir, 'summary.json'), JSON.stringify(summary, null, 2), 'utf-8');
35
+ }
36
+ /**
37
+ * List all past benchmark runs from the bench/runs/ directory.
38
+ */
39
+ export function listRuns(benchDir) {
40
+ const runsDir = join(benchDir, 'runs');
41
+ if (!existsSync(runsDir))
42
+ return [];
43
+ const runs = [];
44
+ try {
45
+ const dirs = readdirSync(runsDir, { withFileTypes: true })
46
+ .filter(d => d.isDirectory())
47
+ .map(d => d.name)
48
+ .sort()
49
+ .reverse(); // Newest first
50
+ for (const dir of dirs) {
51
+ const summaryPath = join(runsDir, dir, 'summary.json');
52
+ if (!existsSync(summaryPath))
53
+ continue;
54
+ try {
55
+ const data = JSON.parse(readFileSync(summaryPath, 'utf-8'));
56
+ runs.push({
57
+ runId: data.runId ?? dir,
58
+ timestamp: data.timestamp ?? '',
59
+ dataset: data.dataset ?? '',
60
+ provider: data.provider ?? '',
61
+ model: data.model ?? '',
62
+ resolved: data.resolved ?? 0,
63
+ totalTasks: data.totalTasks ?? 0,
64
+ resolutionRate: data.resolutionRate ?? 0,
65
+ totalCostEstimate: data.totalCostEstimate ?? 0,
66
+ spiralMode: data.spiralMode,
67
+ });
68
+ }
69
+ catch {
70
+ // Corrupted summary, skip
71
+ }
72
+ }
73
+ }
74
+ catch {
75
+ // Runs directory doesn't exist or can't be read
76
+ }
77
+ return runs;
78
+ }
79
+ /**
80
+ * Get IDs of tasks that were already completed (resolved/failed) in a previous run.
81
+ * Reads results.jsonl line by line and returns Set of instance_ids.
82
+ */
83
+ export function getCompletedTaskIds(outputDir) {
84
+ const resultsPath = join(outputDir, 'results.jsonl');
85
+ const completed = new Set();
86
+ if (!existsSync(resultsPath))
87
+ return completed;
88
+ try {
89
+ const lines = readFileSync(resultsPath, 'utf-8').split('\n').filter(l => l.trim());
90
+ for (const line of lines) {
91
+ try {
92
+ const data = JSON.parse(line);
93
+ // Only skip tasks that actually completed (resolved or failed)
94
+ // Re-run errored/timed-out tasks (they might succeed with budget)
95
+ if (data.instance_id && (data.status === 'resolved' || data.status === 'failed')) {
96
+ completed.add(data.instance_id);
97
+ }
98
+ }
99
+ catch { /* skip malformed lines */ }
100
+ }
101
+ }
102
+ catch { /* file read error */ }
103
+ return completed;
104
+ }
105
+ /**
106
+ * Load previous run's task results for merging into resumed run.
107
+ */
108
+ export function loadPreviousResults(outputDir) {
109
+ const resultsPath = join(outputDir, 'results.jsonl');
110
+ if (!existsSync(resultsPath))
111
+ return [];
112
+ const results = [];
113
+ try {
114
+ const lines = readFileSync(resultsPath, 'utf-8').split('\n').filter(l => l.trim());
115
+ for (const line of lines) {
116
+ try {
117
+ results.push(JSON.parse(line));
118
+ }
119
+ catch { /* skip */ }
120
+ }
121
+ }
122
+ catch { /* ignore */ }
123
+ return results;
124
+ }
125
+ /**
126
+ * Load a specific run's summary metrics.
127
+ */
128
+ export function loadRunSummary(benchDir, runId) {
129
+ const summaryPath = join(benchDir, 'runs', runId, 'summary.json');
130
+ if (!existsSync(summaryPath))
131
+ return null;
132
+ try {
133
+ const data = JSON.parse(readFileSync(summaryPath, 'utf-8'));
134
+ return { ...data, taskResults: [] };
135
+ }
136
+ catch {
137
+ return null;
138
+ }
139
+ }
140
+ //# sourceMappingURL=output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../../../src/cli/bench/output.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { SWETask } from './types.js';
2
+ import type { SpiralQueryResult } from '../../types.js';
3
+ /**
4
+ * Build a system prompt optimized for SWE-bench task resolution.
5
+ * Focused on minimal, targeted bug fixes.
6
+ */
7
+ export declare function buildBenchSystemPrompt(task: SWETask, projectRoot: string): string;
8
+ /**
9
+ * Build a system prompt with Spiral Memory context for enhanced SWE-bench solving.
10
+ * Combines standard bench instructions with spiral context sections.
11
+ */
12
+ export declare function buildBenchSystemPromptWithSpiral(task: SWETask, projectRoot: string, spiralContext: SpiralQueryResult): string;
13
+ //# sourceMappingURL=prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../src/cli/bench/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAExD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CA0CjF;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAC9C,IAAI,EAAE,OAAO,EACb,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,iBAAiB,GAC/B,MAAM,CAmER"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Build a system prompt optimized for SWE-bench task resolution.
3
+ * Focused on minimal, targeted bug fixes.
4
+ */
5
+ export function buildBenchSystemPrompt(task, projectRoot) {
6
+ const sections = [];
7
+ sections.push(`You are an expert software engineer. Your task is to fix a GitHub issue in a real codebase.
8
+
9
+ ## Repository
10
+ - Repo: ${task.repo}
11
+ - Working directory: ${projectRoot}
12
+ - The repository has been checked out at the exact commit where the issue exists.
13
+
14
+ ## Issue to Fix
15
+ ${task.problem_statement}`);
16
+ if (task.hints_text && task.hints_text.trim()) {
17
+ sections.push(`## Hints
18
+ ${task.hints_text}`);
19
+ }
20
+ sections.push(`## Instructions
21
+ 1. Read the issue carefully and understand what is expected.
22
+ 2. Explore the codebase to find the relevant files using search_files and find_files.
23
+ 3. Read and understand the existing code before making changes.
24
+ 4. Make the MINIMAL changes needed to fix the issue. Do not refactor, do not add features.
25
+ 5. Do NOT modify any test files. Only fix the source code.
26
+ 6. After making changes, verify your fix by reading the modified files.
27
+ 7. Do NOT run the test suite — that happens automatically after your fix.
28
+
29
+ ## Rules
30
+ - Change as few files as possible.
31
+ - Change as few lines as possible.
32
+ - Do not add type annotations, docstrings, or comments unless they are part of the fix.
33
+ - Do not rename variables or move code unless required by the fix.
34
+ - Do not use git commit — just edit the files directly.
35
+ - If the issue mentions a specific file, start there.
36
+ - If unsure, search for error messages or class/function names from the issue.`);
37
+ sections.push(`## Available Tools
38
+ You have: read_file, write_file, edit_file, list_directory, search_files, find_files, run_command, git_status, git_diff, git_log.
39
+
40
+ Use edit_file for targeted changes. Use search_files to find relevant code. Use run_command for exploring (e.g., grep, python -c).`);
41
+ return sections.join('\n\n');
42
+ }
43
+ /**
44
+ * Build a system prompt with Spiral Memory context for enhanced SWE-bench solving.
45
+ * Combines standard bench instructions with spiral context sections.
46
+ */
47
+ export function buildBenchSystemPromptWithSpiral(task, projectRoot, spiralContext) {
48
+ const sections = [];
49
+ sections.push(`You are an expert software engineer with access to a spiral memory system that provides contextual knowledge from similar codebases and past bug fixes.
50
+
51
+ ## Repository
52
+ - Repo: ${task.repo}
53
+ - Working directory: ${projectRoot}
54
+ - The repository has been checked out at the exact commit where the issue exists.
55
+
56
+ ## Issue to Fix
57
+ ${task.problem_statement}`);
58
+ if (task.hints_text && task.hints_text.trim()) {
59
+ sections.push(`## Hints
60
+ ${task.hints_text}`);
61
+ }
62
+ // Inject spiral context if available
63
+ if (spiralContext.node_count > 0) {
64
+ const spiralSections = ['## Spiral Memory Context\nRelevant knowledge from the spiral memory system:'];
65
+ const levelMap = [
66
+ { label: 'Focus (highly relevant)', nodes: spiralContext.level_1 },
67
+ { label: 'Active (recent patterns)', nodes: spiralContext.level_2 },
68
+ { label: 'Reference (background)', nodes: spiralContext.level_3 },
69
+ ];
70
+ for (const { label, nodes } of levelMap) {
71
+ if (nodes.length > 0) {
72
+ spiralSections.push(`### ${label}:`);
73
+ for (const node of nodes) {
74
+ spiralSections.push(`- [${node.type}] ${node.content}`);
75
+ }
76
+ }
77
+ }
78
+ sections.push(spiralSections.join('\n'));
79
+ }
80
+ sections.push(`## Instructions
81
+ 1. Read the issue carefully and understand what is expected.
82
+ 2. Review the Spiral Memory Context above for relevant patterns and prior fixes.
83
+ 3. Explore the codebase to find the relevant files using search_files and find_files.
84
+ 4. Read and understand the existing code before making changes.
85
+ 5. Make the MINIMAL changes needed to fix the issue. Do not refactor, do not add features.
86
+ 6. Do NOT modify any test files. Only fix the source code.
87
+ 7. After making changes, verify your fix by reading the modified files.
88
+ 8. Do NOT run the test suite — that happens automatically after your fix.
89
+ 9. Use spiral_query to search for similar patterns or fixes if stuck.
90
+ 10. Use spiral_store to save important patterns you discover for future tasks.
91
+
92
+ ## Rules
93
+ - Change as few files as possible.
94
+ - Change as few lines as possible.
95
+ - Do not add type annotations, docstrings, or comments unless they are part of the fix.
96
+ - Do not rename variables or move code unless required by the fix.
97
+ - Do not use git commit — just edit the files directly.
98
+ - If the issue mentions a specific file, start there.
99
+ - If unsure, search for error messages or class/function names from the issue.`);
100
+ sections.push(`## Available Tools
101
+ You have: read_file, write_file, edit_file, list_directory, search_files, find_files, run_command, git_status, git_diff, git_log, spiral_query, spiral_store.
102
+
103
+ Use edit_file for targeted changes. Use search_files to find relevant code. Use spiral_query to leverage memory from similar fixes. Use spiral_store to save fix patterns for future reference.`);
104
+ return sections.join('\n\n');
105
+ }
106
+ //# sourceMappingURL=prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../../src/cli/bench/prompt.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAa,EAAE,WAAmB;IACvE,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,QAAQ,CAAC,IAAI,CAAC;;;UAGN,IAAI,CAAC,IAAI;uBACI,WAAW;;;;EAIhC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAE1B,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9C,QAAQ,CAAC,IAAI,CAAC;EAChB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACnB,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;+EAgB+D,CAAC,CAAC;IAE/E,QAAQ,CAAC,IAAI,CAAC;;;mIAGmH,CAAC,CAAC;IAEnI,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gCAAgC,CAC9C,IAAa,EACb,WAAmB,EACnB,aAAgC;IAEhC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,QAAQ,CAAC,IAAI,CAAC;;;UAGN,IAAI,CAAC,IAAI;uBACI,WAAW;;;;EAIhC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IAE1B,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;QAC9C,QAAQ,CAAC,IAAI,CAAC;EAChB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACnB,CAAC;IAED,qCAAqC;IACrC,IAAI,aAAa,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,cAAc,GAAa,CAAC,6EAA6E,CAAC,CAAC;QAEjH,MAAM,QAAQ,GAAkE;YAC9E,EAAE,KAAK,EAAE,yBAAyB,EAAE,KAAK,EAAE,aAAa,CAAC,OAAO,EAAE;YAClE,EAAE,KAAK,EAAE,0BAA0B,EAAE,KAAK,EAAE,aAAa,CAAC,OAAO,EAAE;YACnE,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,aAAa,CAAC,OAAO,EAAE;SAClE,CAAC;QAEF,KAAK,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,QAAQ,EAAE,CAAC;YACxC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrB,cAAc,CAAC,IAAI,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC;gBACrC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,cAAc,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC;QAED,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;+EAmB+D,CAAC,CAAC;IAE/E,QAAQ,CAAC,IAAI,CAAC;;;gMAGgL,CAAC,CAAC;IAEhM,OAAO,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { SpiralEngine } from '../../spiral/engine.js';
2
+ import type { SWETask, BenchConfig, TaskResult, TaskProgressEvent } from './types.js';
3
+ /**
4
+ * Execute a single SWE-bench task headlessly.
5
+ * 1. Clone repo at base_commit
6
+ * 2. (Optional) Initialize/use Spiral Memory
7
+ * 3. Run agent loop with problem_statement
8
+ * 4. Extract git diff as patch
9
+ * 5. Cleanup
10
+ *
11
+ * @param sharedSpiral - Pre-initialized SpiralEngine for 'learning' mode (shared across tasks)
12
+ */
13
+ export declare function runSingleTask(task: SWETask, config: BenchConfig, onProgress?: (event: TaskProgressEvent) => void, sharedSpiral?: SpiralEngine): Promise<TaskResult>;
14
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/cli/bench/runner.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAItF;;;;;;;;;GASG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,WAAW,EACnB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,EAC/C,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,UAAU,CAAC,CA+NrB"}
@@ -0,0 +1,334 @@
1
+ import { execSync } from 'node:child_process';
2
+ import { mkdirSync, rmSync, existsSync, readdirSync, readFileSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ import { tmpdir } from 'node:os';
5
+ import { createProvider } from '../providers/registry.js';
6
+ import { runAgentLoop, AgentAbortError, AgentController } from '../agent/loop.js';
7
+ import { PermissionManager } from '../agent/permissions.js';
8
+ import { UndoStack } from '../agent/undo.js';
9
+ import { initializeTools } from '../agent/tools/registry.js';
10
+ import { SessionBuffer } from '../context/session-buffer.js';
11
+ import { buildBenchSystemPrompt, buildBenchSystemPromptWithSpiral } from './prompt.js';
12
+ import { SpiralEngine } from '../../spiral/engine.js';
13
+ import { loadConfig as loadSpiralConfig } from '../../utils/config.js';
14
+ let toolsInitialized = false;
15
+ /**
16
+ * Execute a single SWE-bench task headlessly.
17
+ * 1. Clone repo at base_commit
18
+ * 2. (Optional) Initialize/use Spiral Memory
19
+ * 3. Run agent loop with problem_statement
20
+ * 4. Extract git diff as patch
21
+ * 5. Cleanup
22
+ *
23
+ * @param sharedSpiral - Pre-initialized SpiralEngine for 'learning' mode (shared across tasks)
24
+ */
25
+ export async function runSingleTask(task, config, onProgress, sharedSpiral) {
26
+ const startTime = Date.now();
27
+ // Ensure tools are loaded once
28
+ if (!toolsInitialized) {
29
+ await initializeTools();
30
+ toolsInitialized = true;
31
+ }
32
+ // Create isolated working directory
33
+ const taskDir = join(tmpdir(), 'helixmind-bench', config.runId, task.instance_id.replace(/\//g, '__'));
34
+ mkdirSync(taskDir, { recursive: true });
35
+ const repoDir = join(taskDir, 'repo');
36
+ try {
37
+ // Step 1: Clone repository
38
+ onProgress?.({ type: 'status', message: 'Cloning repository...' });
39
+ try {
40
+ execSync(`git clone --quiet https://github.com/${task.repo}.git repo`, { cwd: taskDir, timeout: 300_000, stdio: 'pipe' });
41
+ }
42
+ catch (err) {
43
+ return makeErrorResult(task, startTime, `Clone failed: ${err}`);
44
+ }
45
+ // Checkout the specific base commit
46
+ try {
47
+ execSync(`git checkout --quiet ${task.base_commit}`, {
48
+ cwd: repoDir,
49
+ timeout: 30_000,
50
+ stdio: 'pipe',
51
+ });
52
+ }
53
+ catch (err) {
54
+ return makeErrorResult(task, startTime, `Checkout failed: ${err}`);
55
+ }
56
+ // Step 2: Initialize Spiral if enabled
57
+ let spiralEngine = null;
58
+ let ownedSpiral = false; // Track if we created the spiral (for cleanup)
59
+ if (config.withSpiral) {
60
+ onProgress?.({ type: 'status', message: 'Initializing spiral memory...' });
61
+ if (config.spiralMode === 'learning' && sharedSpiral) {
62
+ // Learning mode: reuse shared spiral across tasks
63
+ spiralEngine = sharedSpiral;
64
+ }
65
+ else {
66
+ // Fresh mode: create new spiral per task
67
+ const spiralDataDir = join(taskDir, 'spiral');
68
+ mkdirSync(spiralDataDir, { recursive: true });
69
+ const spiralConfig = loadSpiralConfig(spiralDataDir);
70
+ spiralEngine = new SpiralEngine(spiralConfig);
71
+ await spiralEngine.initialize();
72
+ ownedSpiral = true;
73
+ }
74
+ // Pre-seed spiral with repo context
75
+ await preSeedSpiral(spiralEngine, repoDir, task);
76
+ onProgress?.({ type: 'status', message: 'Spiral memory ready' });
77
+ }
78
+ // Step 3: Run agent loop
79
+ onProgress?.({ type: 'status', message: 'Agent working...' });
80
+ const provider = createProvider(config.provider, config.apiKey, config.model, config.baseURL);
81
+ const permissions = new PermissionManager();
82
+ permissions.setYolo(true); // No interactive prompts
83
+ const undoStack = new UndoStack();
84
+ const controller = new AgentController();
85
+ const sessionBuffer = new SessionBuffer();
86
+ // Build system prompt: with or without spiral context
87
+ let systemPrompt;
88
+ if (spiralEngine) {
89
+ const spiralContext = await spiralEngine.query(task.problem_statement, 40000);
90
+ systemPrompt = buildBenchSystemPromptWithSpiral(task, repoDir, spiralContext);
91
+ }
92
+ else {
93
+ systemPrompt = buildBenchSystemPrompt(task, repoDir);
94
+ }
95
+ const toolContext = {
96
+ projectRoot: repoDir,
97
+ undoStack,
98
+ spiralEngine: spiralEngine ?? undefined,
99
+ };
100
+ let tokensInput = 0;
101
+ let tokensOutput = 0;
102
+ // Set up timeout
103
+ const timeoutHandle = setTimeout(() => {
104
+ controller.abort();
105
+ }, config.timeoutSeconds * 1000);
106
+ let agentResult;
107
+ try {
108
+ agentResult = await runAgentLoop(task.problem_statement, [], {
109
+ provider,
110
+ systemPrompt,
111
+ permissions,
112
+ toolContext,
113
+ sessionBuffer,
114
+ onTokensUsed: (inp, out) => {
115
+ tokensInput += inp;
116
+ tokensOutput += out;
117
+ onProgress?.({ type: 'tokens', input: inp, output: out });
118
+ },
119
+ onToolCall: (name) => {
120
+ onProgress?.({ type: 'tool', name });
121
+ },
122
+ maxIterations: config.maxIterations,
123
+ }, controller);
124
+ }
125
+ catch (err) {
126
+ clearTimeout(timeoutHandle);
127
+ // Store timeout/error learnings in spiral (learning mode)
128
+ if (spiralEngine && config.spiralMode === 'learning') {
129
+ try {
130
+ const isTimeout = err instanceof AgentAbortError;
131
+ await spiralEngine.store(`${isTimeout ? 'Timeout' : 'Error'} on ${task.instance_id} (${task.repo}): ${String(err).slice(0, 200)}. Problem: ${task.problem_statement.slice(0, 150)}`, 'pattern', { tags: [isTimeout ? 'timeout' : 'error', task.repo], file: task.instance_id });
132
+ }
133
+ catch { /* non-critical */ }
134
+ }
135
+ if (err instanceof AgentAbortError) {
136
+ return makeResult(task, startTime, 'timeout', '', tokensInput, tokensOutput, 0, [], ['Timeout reached']);
137
+ }
138
+ return makeErrorResult(task, startTime, `Agent error: ${err}`);
139
+ }
140
+ clearTimeout(timeoutHandle);
141
+ // Step 3: Extract patch
142
+ onProgress?.({ type: 'status', message: 'Extracting patch...' });
143
+ let patch = '';
144
+ try {
145
+ patch = execSync(`git diff ${task.base_commit}`, {
146
+ cwd: repoDir,
147
+ encoding: 'utf-8',
148
+ maxBuffer: 10 * 1024 * 1024,
149
+ });
150
+ }
151
+ catch {
152
+ // Also try unstaged diff as fallback
153
+ try {
154
+ patch = execSync('git diff', {
155
+ cwd: repoDir,
156
+ encoding: 'utf-8',
157
+ maxBuffer: 10 * 1024 * 1024,
158
+ });
159
+ }
160
+ catch {
161
+ patch = '';
162
+ }
163
+ }
164
+ const status = patch.trim() ? 'resolved' : 'failed';
165
+ const steps = agentResult.steps.map(s => ({
166
+ tool: s.tool,
167
+ label: s.label,
168
+ status: s.status,
169
+ }));
170
+ // Store learnings in spiral (learning mode) — fixes, errors, and failures
171
+ if (spiralEngine && config.spiralMode === 'learning') {
172
+ try {
173
+ if (patch.trim()) {
174
+ // Successful fix: store the pattern
175
+ const patchSummary = patch.split('\n').slice(0, 5).join(' ').slice(0, 200);
176
+ await spiralEngine.store(`Fixed ${task.instance_id}: ${patchSummary}`, 'pattern', { tags: ['fix', task.repo], file: task.instance_id });
177
+ }
178
+ else {
179
+ // Failed attempt: store what the agent tried so future tasks can learn
180
+ const agentSummary = agentResult.text?.slice(0, 300) ?? 'No output';
181
+ const errorSummary = agentResult.errors?.slice(0, 3).join('; ') ?? '';
182
+ await spiralEngine.store(`Failed ${task.instance_id} (${task.repo}): ${agentSummary}${errorSummary ? ` Errors: ${errorSummary}` : ''}`, 'pattern', { tags: ['failed_attempt', task.repo], file: task.instance_id });
183
+ }
184
+ }
185
+ catch {
186
+ // Non-critical: don't fail the task if spiral store fails
187
+ }
188
+ }
189
+ // Cleanup owned spiral (fresh mode)
190
+ if (ownedSpiral && spiralEngine) {
191
+ try {
192
+ spiralEngine.close();
193
+ }
194
+ catch {
195
+ // ignore
196
+ }
197
+ }
198
+ return makeResult(task, startTime, status, patch, tokensInput, tokensOutput, agentResult.toolCalls, steps, agentResult.errors, agentResult.text);
199
+ }
200
+ finally {
201
+ // Step 5: Cleanup
202
+ try {
203
+ rmSync(taskDir, { recursive: true, force: true });
204
+ }
205
+ catch {
206
+ // EBUSY on Windows — ignore
207
+ }
208
+ }
209
+ }
210
+ function makeResult(task, startTime, status, patch, tokensIn, tokensOut, toolCalls, steps, errors, agentText = '') {
211
+ return {
212
+ instance_id: task.instance_id,
213
+ status,
214
+ model_patch: patch,
215
+ tokens: { input: tokensIn, output: tokensOut },
216
+ toolCalls,
217
+ steps,
218
+ errors,
219
+ durationMs: Date.now() - startTime,
220
+ agentText,
221
+ };
222
+ }
223
+ function makeErrorResult(task, startTime, error) {
224
+ return makeResult(task, startTime, 'error', '', 0, 0, 0, [], [error]);
225
+ }
226
+ /**
227
+ * Deep-feed a SpiralEngine with repo files for contextual knowledge.
228
+ * Scans: config files, README, source directories, __init__.py, key modules.
229
+ * Much more thorough than just top-level files — mirrors `/feed` behavior.
230
+ */
231
+ async function preSeedSpiral(spiral, repoDir, task) {
232
+ const keyFiles = [];
233
+ const seen = new Set();
234
+ const add = (relPath) => {
235
+ if (!seen.has(relPath)) {
236
+ seen.add(relPath);
237
+ keyFiles.push(relPath);
238
+ }
239
+ };
240
+ // 1. Priority config/readme files at root
241
+ const priorityNames = [
242
+ 'README.md', 'README.rst', 'README.txt',
243
+ 'setup.py', 'pyproject.toml', 'setup.cfg',
244
+ 'Makefile', 'tox.ini', 'MANIFEST.in',
245
+ 'requirements.txt', 'requirements-dev.txt',
246
+ 'CONTRIBUTING.md', 'CHANGES.rst', 'CHANGELOG.md',
247
+ ];
248
+ for (const name of priorityNames) {
249
+ if (existsSync(join(repoDir, name)))
250
+ add(name);
251
+ }
252
+ // 2. Top-level .py files
253
+ try {
254
+ const entries = readdirSync(repoDir);
255
+ for (const e of entries) {
256
+ if (e.endsWith('.py'))
257
+ add(e);
258
+ }
259
+ }
260
+ catch { /* ignore */ }
261
+ // 3. Recursively scan source directories for key files (max ~80 files total)
262
+ const MAX_FILES = 80;
263
+ const sourceExtensions = ['.py', '.pyx', '.pxd'];
264
+ const importantNames = ['__init__.py', 'models.py', 'views.py', 'urls.py', 'admin.py',
265
+ 'serializers.py', 'forms.py', 'signals.py', 'middleware.py', 'managers.py',
266
+ 'utils.py', 'helpers.py', 'exceptions.py', 'constants.py', 'types.py',
267
+ 'conf.py', 'settings.py', 'apps.py'];
268
+ function scanDir(dir, relPrefix, depth) {
269
+ if (depth > 5 || keyFiles.length >= MAX_FILES)
270
+ return;
271
+ try {
272
+ const entries = readdirSync(dir, { withFileTypes: true });
273
+ // Add __init__.py first (package markers)
274
+ for (const entry of entries) {
275
+ if (keyFiles.length >= MAX_FILES)
276
+ return;
277
+ if (entry.isFile() && entry.name === '__init__.py') {
278
+ add(relPrefix ? `${relPrefix}/${entry.name}` : entry.name);
279
+ }
280
+ }
281
+ // Add important module names
282
+ for (const entry of entries) {
283
+ if (keyFiles.length >= MAX_FILES)
284
+ return;
285
+ if (entry.isFile() && importantNames.includes(entry.name)) {
286
+ add(relPrefix ? `${relPrefix}/${entry.name}` : entry.name);
287
+ }
288
+ }
289
+ // Add remaining source files
290
+ for (const entry of entries) {
291
+ if (keyFiles.length >= MAX_FILES)
292
+ return;
293
+ if (entry.isFile() && sourceExtensions.some(ext => entry.name.endsWith(ext))) {
294
+ add(relPrefix ? `${relPrefix}/${entry.name}` : entry.name);
295
+ }
296
+ }
297
+ // Recurse into subdirectories (skip hidden, __pycache__, .git, node_modules, etc.)
298
+ for (const entry of entries) {
299
+ if (keyFiles.length >= MAX_FILES)
300
+ return;
301
+ if (entry.isDirectory() && !entry.name.startsWith('.') &&
302
+ entry.name !== '__pycache__' && entry.name !== 'node_modules' &&
303
+ entry.name !== '.git' && entry.name !== 'venv' && entry.name !== '.tox') {
304
+ scanDir(join(dir, entry.name), relPrefix ? `${relPrefix}/${entry.name}` : entry.name, depth + 1);
305
+ }
306
+ }
307
+ }
308
+ catch { /* permission error or similar */ }
309
+ }
310
+ // Detect source directories (common patterns)
311
+ const repo_name = task.repo.split('/')[1]?.replace(/-/g, '_');
312
+ const sourceDirs = ['src', 'lib', repo_name ?? '', task.repo.split('/')[1] ?? ''];
313
+ for (const dir of sourceDirs) {
314
+ if (dir && existsSync(join(repoDir, dir))) {
315
+ scanDir(join(repoDir, dir), dir, 0);
316
+ }
317
+ }
318
+ // Also scan root level (some repos have source directly in root)
319
+ scanDir(repoDir, '', 0);
320
+ // 4. Store each file in spiral
321
+ for (const fileName of keyFiles) {
322
+ try {
323
+ const filePath = join(repoDir, fileName);
324
+ const content = readFileSync(filePath, 'utf-8');
325
+ // Truncate large files
326
+ const truncated = content.length > 4000 ? content.slice(0, 4000) + '\n... (truncated)' : content;
327
+ await spiral.store(`[${task.repo}] ${fileName}:\n${truncated}`, 'code', { tags: ['repo_context', task.repo], file: fileName });
328
+ }
329
+ catch {
330
+ // Skip files that can't be read
331
+ }
332
+ }
333
+ }
334
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/cli/bench/runner.ts"],"names":[],"mappings":"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"}