@intrect/openswarm 0.2.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.
Files changed (437) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +544 -0
  3. package/config.example.yaml +107 -0
  4. package/dist/adapters/base.d.ts +8 -0
  5. package/dist/adapters/base.d.ts.map +1 -0
  6. package/dist/adapters/base.js +104 -0
  7. package/dist/adapters/base.js.map +1 -0
  8. package/dist/adapters/claude.d.ts +13 -0
  9. package/dist/adapters/claude.d.ts.map +1 -0
  10. package/dist/adapters/claude.js +318 -0
  11. package/dist/adapters/claude.js.map +1 -0
  12. package/dist/adapters/codex.d.ts +14 -0
  13. package/dist/adapters/codex.d.ts.map +1 -0
  14. package/dist/adapters/codex.js +366 -0
  15. package/dist/adapters/codex.js.map +1 -0
  16. package/dist/adapters/cryptoQuantAdapter.d.ts +85 -0
  17. package/dist/adapters/cryptoQuantAdapter.d.ts.map +1 -0
  18. package/dist/adapters/cryptoQuantAdapter.js +238 -0
  19. package/dist/adapters/cryptoQuantAdapter.js.map +1 -0
  20. package/dist/adapters/index.d.ts +17 -0
  21. package/dist/adapters/index.d.ts.map +1 -0
  22. package/dist/adapters/index.js +47 -0
  23. package/dist/adapters/index.js.map +1 -0
  24. package/dist/adapters/processRegistry.d.ts +38 -0
  25. package/dist/adapters/processRegistry.d.ts.map +1 -0
  26. package/dist/adapters/processRegistry.js +147 -0
  27. package/dist/adapters/processRegistry.js.map +1 -0
  28. package/dist/adapters/streamBuffer.d.ts +59 -0
  29. package/dist/adapters/streamBuffer.d.ts.map +1 -0
  30. package/dist/adapters/streamBuffer.js +123 -0
  31. package/dist/adapters/streamBuffer.js.map +1 -0
  32. package/dist/adapters/types.d.ts +65 -0
  33. package/dist/adapters/types.d.ts.map +1 -0
  34. package/dist/adapters/types.js +6 -0
  35. package/dist/adapters/types.js.map +1 -0
  36. package/dist/agents/agentBus.d.ts +160 -0
  37. package/dist/agents/agentBus.d.ts.map +1 -0
  38. package/dist/agents/agentBus.js +350 -0
  39. package/dist/agents/agentBus.js.map +1 -0
  40. package/dist/agents/agentPair.d.ts +210 -0
  41. package/dist/agents/agentPair.d.ts.map +1 -0
  42. package/dist/agents/agentPair.js +420 -0
  43. package/dist/agents/agentPair.js.map +1 -0
  44. package/dist/agents/auditor.d.ts +27 -0
  45. package/dist/agents/auditor.d.ts.map +1 -0
  46. package/dist/agents/auditor.js +237 -0
  47. package/dist/agents/auditor.js.map +1 -0
  48. package/dist/agents/cliStreamParser.d.ts +18 -0
  49. package/dist/agents/cliStreamParser.d.ts.map +1 -0
  50. package/dist/agents/cliStreamParser.js +156 -0
  51. package/dist/agents/cliStreamParser.js.map +1 -0
  52. package/dist/agents/documenter.d.ts +31 -0
  53. package/dist/agents/documenter.d.ts.map +1 -0
  54. package/dist/agents/documenter.js +285 -0
  55. package/dist/agents/documenter.js.map +1 -0
  56. package/dist/agents/index.d.ts +10 -0
  57. package/dist/agents/index.d.ts.map +1 -0
  58. package/dist/agents/index.js +10 -0
  59. package/dist/agents/index.js.map +1 -0
  60. package/dist/agents/pairMetrics.d.ts +63 -0
  61. package/dist/agents/pairMetrics.d.ts.map +1 -0
  62. package/dist/agents/pairMetrics.js +231 -0
  63. package/dist/agents/pairMetrics.js.map +1 -0
  64. package/dist/agents/pairPipeline.d.ts +155 -0
  65. package/dist/agents/pairPipeline.d.ts.map +1 -0
  66. package/dist/agents/pairPipeline.js +793 -0
  67. package/dist/agents/pairPipeline.js.map +1 -0
  68. package/dist/agents/pairWebhook.d.ts +59 -0
  69. package/dist/agents/pairWebhook.d.ts.map +1 -0
  70. package/dist/agents/pairWebhook.js +242 -0
  71. package/dist/agents/pairWebhook.js.map +1 -0
  72. package/dist/agents/pipelineFormat.d.ts +11 -0
  73. package/dist/agents/pipelineFormat.d.ts.map +1 -0
  74. package/dist/agents/pipelineFormat.js +164 -0
  75. package/dist/agents/pipelineFormat.js.map +1 -0
  76. package/dist/agents/pipelineGuards.d.ts +23 -0
  77. package/dist/agents/pipelineGuards.d.ts.map +1 -0
  78. package/dist/agents/pipelineGuards.js +175 -0
  79. package/dist/agents/pipelineGuards.js.map +1 -0
  80. package/dist/agents/reviewer.d.ts +37 -0
  81. package/dist/agents/reviewer.d.ts.map +1 -0
  82. package/dist/agents/reviewer.js +213 -0
  83. package/dist/agents/reviewer.js.map +1 -0
  84. package/dist/agents/skillDocumenter.d.ts +23 -0
  85. package/dist/agents/skillDocumenter.d.ts.map +1 -0
  86. package/dist/agents/skillDocumenter.js +218 -0
  87. package/dist/agents/skillDocumenter.js.map +1 -0
  88. package/dist/agents/tester.d.ts +37 -0
  89. package/dist/agents/tester.d.ts.map +1 -0
  90. package/dist/agents/tester.js +308 -0
  91. package/dist/agents/tester.js.map +1 -0
  92. package/dist/agents/worker.d.ts +30 -0
  93. package/dist/agents/worker.d.ts.map +1 -0
  94. package/dist/agents/worker.js +128 -0
  95. package/dist/agents/worker.js.map +1 -0
  96. package/dist/automation/autonomousRunner.d.ts +123 -0
  97. package/dist/automation/autonomousRunner.d.ts.map +1 -0
  98. package/dist/automation/autonomousRunner.js +1082 -0
  99. package/dist/automation/autonomousRunner.js.map +1 -0
  100. package/dist/automation/ciWorker.d.ts +51 -0
  101. package/dist/automation/ciWorker.d.ts.map +1 -0
  102. package/dist/automation/ciWorker.js +282 -0
  103. package/dist/automation/ciWorker.js.map +1 -0
  104. package/dist/automation/conflictResolver.d.ts +29 -0
  105. package/dist/automation/conflictResolver.d.ts.map +1 -0
  106. package/dist/automation/conflictResolver.js +261 -0
  107. package/dist/automation/conflictResolver.js.map +1 -0
  108. package/dist/automation/dailyReporter.d.ts +26 -0
  109. package/dist/automation/dailyReporter.d.ts.map +1 -0
  110. package/dist/automation/dailyReporter.js +132 -0
  111. package/dist/automation/dailyReporter.js.map +1 -0
  112. package/dist/automation/index.d.ts +7 -0
  113. package/dist/automation/index.d.ts.map +1 -0
  114. package/dist/automation/index.js +7 -0
  115. package/dist/automation/index.js.map +1 -0
  116. package/dist/automation/longRunningMonitor.d.ts +26 -0
  117. package/dist/automation/longRunningMonitor.d.ts.map +1 -0
  118. package/dist/automation/longRunningMonitor.js +231 -0
  119. package/dist/automation/longRunningMonitor.js.map +1 -0
  120. package/dist/automation/prOwnership.d.ts +18 -0
  121. package/dist/automation/prOwnership.d.ts.map +1 -0
  122. package/dist/automation/prOwnership.js +61 -0
  123. package/dist/automation/prOwnership.js.map +1 -0
  124. package/dist/automation/prProcessor.d.ts +62 -0
  125. package/dist/automation/prProcessor.d.ts.map +1 -0
  126. package/dist/automation/prProcessor.js +700 -0
  127. package/dist/automation/prProcessor.js.map +1 -0
  128. package/dist/automation/runnerExecution.d.ts +49 -0
  129. package/dist/automation/runnerExecution.d.ts.map +1 -0
  130. package/dist/automation/runnerExecution.js +663 -0
  131. package/dist/automation/runnerExecution.js.map +1 -0
  132. package/dist/automation/runnerState.d.ts +170 -0
  133. package/dist/automation/runnerState.d.ts.map +1 -0
  134. package/dist/automation/runnerState.js +495 -0
  135. package/dist/automation/runnerState.js.map +1 -0
  136. package/dist/automation/runnerTypes.d.ts +46 -0
  137. package/dist/automation/runnerTypes.d.ts.map +1 -0
  138. package/dist/automation/runnerTypes.js +5 -0
  139. package/dist/automation/runnerTypes.js.map +1 -0
  140. package/dist/automation/scheduler.d.ts +75 -0
  141. package/dist/automation/scheduler.d.ts.map +1 -0
  142. package/dist/automation/scheduler.js +394 -0
  143. package/dist/automation/scheduler.js.map +1 -0
  144. package/dist/cli/promptHandler.d.ts +13 -0
  145. package/dist/cli/promptHandler.d.ts.map +1 -0
  146. package/dist/cli/promptHandler.js +189 -0
  147. package/dist/cli/promptHandler.js.map +1 -0
  148. package/dist/cli.d.ts +3 -0
  149. package/dist/cli.d.ts.map +1 -0
  150. package/dist/cli.js +138 -0
  151. package/dist/cli.js.map +1 -0
  152. package/dist/core/config.d.ts +308 -0
  153. package/dist/core/config.d.ts.map +1 -0
  154. package/dist/core/config.js +529 -0
  155. package/dist/core/config.js.map +1 -0
  156. package/dist/core/eventHub.d.ts +194 -0
  157. package/dist/core/eventHub.d.ts.map +1 -0
  158. package/dist/core/eventHub.js +136 -0
  159. package/dist/core/eventHub.js.map +1 -0
  160. package/dist/core/index.d.ts +6 -0
  161. package/dist/core/index.d.ts.map +1 -0
  162. package/dist/core/index.js +6 -0
  163. package/dist/core/index.js.map +1 -0
  164. package/dist/core/service.d.ts +27 -0
  165. package/dist/core/service.d.ts.map +1 -0
  166. package/dist/core/service.js +438 -0
  167. package/dist/core/service.js.map +1 -0
  168. package/dist/core/traceCollector.d.ts +105 -0
  169. package/dist/core/traceCollector.d.ts.map +1 -0
  170. package/dist/core/traceCollector.js +141 -0
  171. package/dist/core/traceCollector.js.map +1 -0
  172. package/dist/core/types.d.ts +413 -0
  173. package/dist/core/types.d.ts.map +1 -0
  174. package/dist/core/types.js +5 -0
  175. package/dist/core/types.js.map +1 -0
  176. package/dist/discord/discordCore.d.ts +104 -0
  177. package/dist/discord/discordCore.d.ts.map +1 -0
  178. package/dist/discord/discordCore.js +698 -0
  179. package/dist/discord/discordCore.js.map +1 -0
  180. package/dist/discord/discordHandlers.d.ts +86 -0
  181. package/dist/discord/discordHandlers.d.ts.map +1 -0
  182. package/dist/discord/discordHandlers.js +849 -0
  183. package/dist/discord/discordHandlers.js.map +1 -0
  184. package/dist/discord/discordPair.d.ts +6 -0
  185. package/dist/discord/discordPair.d.ts.map +1 -0
  186. package/dist/discord/discordPair.js +567 -0
  187. package/dist/discord/discordPair.js.map +1 -0
  188. package/dist/discord/index.d.ts +4 -0
  189. package/dist/discord/index.d.ts.map +1 -0
  190. package/dist/discord/index.js +11 -0
  191. package/dist/discord/index.js.map +1 -0
  192. package/dist/github/github.d.ts +236 -0
  193. package/dist/github/github.d.ts.map +1 -0
  194. package/dist/github/github.js +535 -0
  195. package/dist/github/github.js.map +1 -0
  196. package/dist/github/index.d.ts +2 -0
  197. package/dist/github/index.d.ts.map +1 -0
  198. package/dist/github/index.js +2 -0
  199. package/dist/github/index.js.map +1 -0
  200. package/dist/index.d.ts +3 -0
  201. package/dist/index.d.ts.map +1 -0
  202. package/dist/index.js +60 -0
  203. package/dist/index.js.map +1 -0
  204. package/dist/knowledge/analyzer.d.ts +36 -0
  205. package/dist/knowledge/analyzer.d.ts.map +1 -0
  206. package/dist/knowledge/analyzer.js +170 -0
  207. package/dist/knowledge/analyzer.js.map +1 -0
  208. package/dist/knowledge/gitInfo.d.ts +10 -0
  209. package/dist/knowledge/gitInfo.d.ts.map +1 -0
  210. package/dist/knowledge/gitInfo.js +134 -0
  211. package/dist/knowledge/gitInfo.js.map +1 -0
  212. package/dist/knowledge/graph.d.ts +45 -0
  213. package/dist/knowledge/graph.d.ts.map +1 -0
  214. package/dist/knowledge/graph.js +262 -0
  215. package/dist/knowledge/graph.js.map +1 -0
  216. package/dist/knowledge/graphqlExporter.d.ts +64 -0
  217. package/dist/knowledge/graphqlExporter.d.ts.map +1 -0
  218. package/dist/knowledge/graphqlExporter.js +333 -0
  219. package/dist/knowledge/graphqlExporter.js.map +1 -0
  220. package/dist/knowledge/index.d.ts +58 -0
  221. package/dist/knowledge/index.d.ts.map +1 -0
  222. package/dist/knowledge/index.js +212 -0
  223. package/dist/knowledge/index.js.map +1 -0
  224. package/dist/knowledge/repository.d.ts +64 -0
  225. package/dist/knowledge/repository.d.ts.map +1 -0
  226. package/dist/knowledge/repository.js +250 -0
  227. package/dist/knowledge/repository.js.map +1 -0
  228. package/dist/knowledge/riskOnAnalyzer.d.ts +79 -0
  229. package/dist/knowledge/riskOnAnalyzer.d.ts.map +1 -0
  230. package/dist/knowledge/riskOnAnalyzer.js +243 -0
  231. package/dist/knowledge/riskOnAnalyzer.js.map +1 -0
  232. package/dist/knowledge/scanner.d.ts +14 -0
  233. package/dist/knowledge/scanner.d.ts.map +1 -0
  234. package/dist/knowledge/scanner.js +350 -0
  235. package/dist/knowledge/scanner.js.map +1 -0
  236. package/dist/knowledge/store.d.ts +23 -0
  237. package/dist/knowledge/store.d.ts.map +1 -0
  238. package/dist/knowledge/store.js +86 -0
  239. package/dist/knowledge/store.js.map +1 -0
  240. package/dist/knowledge/types.d.ts +288 -0
  241. package/dist/knowledge/types.d.ts.map +1 -0
  242. package/dist/knowledge/types.js +111 -0
  243. package/dist/knowledge/types.js.map +1 -0
  244. package/dist/linear/index.d.ts +3 -0
  245. package/dist/linear/index.d.ts.map +1 -0
  246. package/dist/linear/index.js +3 -0
  247. package/dist/linear/index.js.map +1 -0
  248. package/dist/linear/linear.d.ts +160 -0
  249. package/dist/linear/linear.d.ts.map +1 -0
  250. package/dist/linear/linear.js +983 -0
  251. package/dist/linear/linear.js.map +1 -0
  252. package/dist/linear/projectUpdater.d.ts +23 -0
  253. package/dist/linear/projectUpdater.d.ts.map +1 -0
  254. package/dist/linear/projectUpdater.js +347 -0
  255. package/dist/linear/projectUpdater.js.map +1 -0
  256. package/dist/locale/en.d.ts +3 -0
  257. package/dist/locale/en.d.ts.map +1 -0
  258. package/dist/locale/en.js +436 -0
  259. package/dist/locale/en.js.map +1 -0
  260. package/dist/locale/index.d.ts +28 -0
  261. package/dist/locale/index.d.ts.map +1 -0
  262. package/dist/locale/index.js +89 -0
  263. package/dist/locale/index.js.map +1 -0
  264. package/dist/locale/ko.d.ts +3 -0
  265. package/dist/locale/ko.d.ts.map +1 -0
  266. package/dist/locale/ko.js +436 -0
  267. package/dist/locale/ko.js.map +1 -0
  268. package/dist/locale/prompts/en.d.ts +3 -0
  269. package/dist/locale/prompts/en.d.ts.map +1 -0
  270. package/dist/locale/prompts/en.js +278 -0
  271. package/dist/locale/prompts/en.js.map +1 -0
  272. package/dist/locale/prompts/ko.d.ts +3 -0
  273. package/dist/locale/prompts/ko.d.ts.map +1 -0
  274. package/dist/locale/prompts/ko.js +279 -0
  275. package/dist/locale/prompts/ko.js.map +1 -0
  276. package/dist/locale/types.d.ts +407 -0
  277. package/dist/locale/types.d.ts.map +1 -0
  278. package/dist/locale/types.js +5 -0
  279. package/dist/locale/types.js.map +1 -0
  280. package/dist/memory/codex.d.ts +93 -0
  281. package/dist/memory/codex.d.ts.map +1 -0
  282. package/dist/memory/codex.js +366 -0
  283. package/dist/memory/codex.js.map +1 -0
  284. package/dist/memory/compaction.d.ts +21 -0
  285. package/dist/memory/compaction.d.ts.map +1 -0
  286. package/dist/memory/compaction.js +205 -0
  287. package/dist/memory/compaction.js.map +1 -0
  288. package/dist/memory/index.d.ts +13 -0
  289. package/dist/memory/index.d.ts.map +1 -0
  290. package/dist/memory/index.js +13 -0
  291. package/dist/memory/index.js.map +1 -0
  292. package/dist/memory/memoryCore.d.ts +178 -0
  293. package/dist/memory/memoryCore.d.ts.map +1 -0
  294. package/dist/memory/memoryCore.js +623 -0
  295. package/dist/memory/memoryCore.js.map +1 -0
  296. package/dist/memory/memoryOps.d.ts +90 -0
  297. package/dist/memory/memoryOps.d.ts.map +1 -0
  298. package/dist/memory/memoryOps.js +606 -0
  299. package/dist/memory/memoryOps.js.map +1 -0
  300. package/dist/orchestration/conflictDetector.d.ts +15 -0
  301. package/dist/orchestration/conflictDetector.d.ts.map +1 -0
  302. package/dist/orchestration/conflictDetector.js +130 -0
  303. package/dist/orchestration/conflictDetector.js.map +1 -0
  304. package/dist/orchestration/decisionEngine.d.ts +177 -0
  305. package/dist/orchestration/decisionEngine.d.ts.map +1 -0
  306. package/dist/orchestration/decisionEngine.js +496 -0
  307. package/dist/orchestration/decisionEngine.js.map +1 -0
  308. package/dist/orchestration/index.d.ts +5 -0
  309. package/dist/orchestration/index.d.ts.map +1 -0
  310. package/dist/orchestration/index.js +5 -0
  311. package/dist/orchestration/index.js.map +1 -0
  312. package/dist/orchestration/taskParser.d.ts +67 -0
  313. package/dist/orchestration/taskParser.d.ts.map +1 -0
  314. package/dist/orchestration/taskParser.js +542 -0
  315. package/dist/orchestration/taskParser.js.map +1 -0
  316. package/dist/orchestration/taskScheduler.d.ts +141 -0
  317. package/dist/orchestration/taskScheduler.d.ts.map +1 -0
  318. package/dist/orchestration/taskScheduler.js +317 -0
  319. package/dist/orchestration/taskScheduler.js.map +1 -0
  320. package/dist/orchestration/workflow.d.ts +145 -0
  321. package/dist/orchestration/workflow.d.ts.map +1 -0
  322. package/dist/orchestration/workflow.js +301 -0
  323. package/dist/orchestration/workflow.js.map +1 -0
  324. package/dist/runners/cliRunner.d.ts +11 -0
  325. package/dist/runners/cliRunner.d.ts.map +1 -0
  326. package/dist/runners/cliRunner.js +194 -0
  327. package/dist/runners/cliRunner.js.map +1 -0
  328. package/dist/support/apiCache.d.ts +85 -0
  329. package/dist/support/apiCache.d.ts.map +1 -0
  330. package/dist/support/apiCache.js +163 -0
  331. package/dist/support/apiCache.js.map +1 -0
  332. package/dist/support/chat.d.ts +3 -0
  333. package/dist/support/chat.d.ts.map +1 -0
  334. package/dist/support/chat.js +304 -0
  335. package/dist/support/chat.js.map +1 -0
  336. package/dist/support/chatBackend.d.ts +25 -0
  337. package/dist/support/chatBackend.d.ts.map +1 -0
  338. package/dist/support/chatBackend.js +235 -0
  339. package/dist/support/chatBackend.js.map +1 -0
  340. package/dist/support/chatMemory.d.ts +71 -0
  341. package/dist/support/chatMemory.d.ts.map +1 -0
  342. package/dist/support/chatMemory.js +119 -0
  343. package/dist/support/chatMemory.js.map +1 -0
  344. package/dist/support/chatTui.d.ts +3 -0
  345. package/dist/support/chatTui.d.ts.map +1 -0
  346. package/dist/support/chatTui.js +998 -0
  347. package/dist/support/chatTui.js.map +1 -0
  348. package/dist/support/costTracker.d.ts +29 -0
  349. package/dist/support/costTracker.d.ts.map +1 -0
  350. package/dist/support/costTracker.js +113 -0
  351. package/dist/support/costTracker.js.map +1 -0
  352. package/dist/support/dashboardHtml.d.ts +3 -0
  353. package/dist/support/dashboardHtml.d.ts.map +1 -0
  354. package/dist/support/dashboardHtml.js +2070 -0
  355. package/dist/support/dashboardHtml.js.map +1 -0
  356. package/dist/support/delete-beliefs.d.ts +2 -0
  357. package/dist/support/delete-beliefs.d.ts.map +1 -0
  358. package/dist/support/delete-beliefs.js +34 -0
  359. package/dist/support/delete-beliefs.js.map +1 -0
  360. package/dist/support/dev.d.ts +55 -0
  361. package/dist/support/dev.d.ts.map +1 -0
  362. package/dist/support/dev.js +298 -0
  363. package/dist/support/dev.js.map +1 -0
  364. package/dist/support/editParser.d.ts +37 -0
  365. package/dist/support/editParser.d.ts.map +1 -0
  366. package/dist/support/editParser.js +365 -0
  367. package/dist/support/editParser.js.map +1 -0
  368. package/dist/support/gitStatus.d.ts +21 -0
  369. package/dist/support/gitStatus.d.ts.map +1 -0
  370. package/dist/support/gitStatus.js +108 -0
  371. package/dist/support/gitStatus.js.map +1 -0
  372. package/dist/support/gitTracker.d.ts +30 -0
  373. package/dist/support/gitTracker.d.ts.map +1 -0
  374. package/dist/support/gitTracker.js +143 -0
  375. package/dist/support/gitTracker.js.map +1 -0
  376. package/dist/support/index.d.ts +13 -0
  377. package/dist/support/index.d.ts.map +1 -0
  378. package/dist/support/index.js +13 -0
  379. package/dist/support/index.js.map +1 -0
  380. package/dist/support/planner.d.ts +58 -0
  381. package/dist/support/planner.d.ts.map +1 -0
  382. package/dist/support/planner.js +395 -0
  383. package/dist/support/planner.js.map +1 -0
  384. package/dist/support/projectMapper.d.ts +46 -0
  385. package/dist/support/projectMapper.d.ts.map +1 -0
  386. package/dist/support/projectMapper.js +259 -0
  387. package/dist/support/projectMapper.js.map +1 -0
  388. package/dist/support/quotaTracker.d.ts +29 -0
  389. package/dist/support/quotaTracker.d.ts.map +1 -0
  390. package/dist/support/quotaTracker.js +89 -0
  391. package/dist/support/quotaTracker.js.map +1 -0
  392. package/dist/support/rateLimiter.d.ts +101 -0
  393. package/dist/support/rateLimiter.d.ts.map +1 -0
  394. package/dist/support/rateLimiter.js +219 -0
  395. package/dist/support/rateLimiter.js.map +1 -0
  396. package/dist/support/rollback.d.ts +61 -0
  397. package/dist/support/rollback.d.ts.map +1 -0
  398. package/dist/support/rollback.js +328 -0
  399. package/dist/support/rollback.js.map +1 -0
  400. package/dist/support/stuckDetector.d.ts +68 -0
  401. package/dist/support/stuckDetector.d.ts.map +1 -0
  402. package/dist/support/stuckDetector.js +174 -0
  403. package/dist/support/stuckDetector.js.map +1 -0
  404. package/dist/support/timeWindow.d.ts +60 -0
  405. package/dist/support/timeWindow.d.ts.map +1 -0
  406. package/dist/support/timeWindow.js +236 -0
  407. package/dist/support/timeWindow.js.map +1 -0
  408. package/dist/support/web.d.ts +11 -0
  409. package/dist/support/web.d.ts.map +1 -0
  410. package/dist/support/web.js +938 -0
  411. package/dist/support/web.js.map +1 -0
  412. package/dist/support/workflowLinear.d.ts +99 -0
  413. package/dist/support/workflowLinear.d.ts.map +1 -0
  414. package/dist/support/workflowLinear.js +257 -0
  415. package/dist/support/workflowLinear.js.map +1 -0
  416. package/dist/support/worktreeManager.d.ts +20 -0
  417. package/dist/support/worktreeManager.d.ts.map +1 -0
  418. package/dist/support/worktreeManager.js +144 -0
  419. package/dist/support/worktreeManager.js.map +1 -0
  420. package/dist/taskState/store.d.ts +101 -0
  421. package/dist/taskState/store.d.ts.map +1 -0
  422. package/dist/taskState/store.js +346 -0
  423. package/dist/taskState/store.js.map +1 -0
  424. package/package.json +70 -0
  425. package/templates/AGENTS.md +432 -0
  426. package/templates/BOOT.md +25 -0
  427. package/templates/BOOTSTRAP.md +50 -0
  428. package/templates/CHANGELOG_AUDIT.md +74 -0
  429. package/templates/HEARTBEAT.md +86 -0
  430. package/templates/IDENTITY.md +27 -0
  431. package/templates/ISSUE_ANALYSIS.md +31 -0
  432. package/templates/PR_LAND.md +75 -0
  433. package/templates/PR_REVIEW.md +97 -0
  434. package/templates/SOUL.dev.md +52 -0
  435. package/templates/SOUL.md +81 -0
  436. package/templates/TOOLS.md +52 -0
  437. package/templates/USER.md +22 -0
@@ -0,0 +1,219 @@
1
+ // ============================================
2
+ // OpenSwarm - Rate Limiter
3
+ // Prevent excessive API calls to external services
4
+ // ============================================
5
+ class RateLimiter {
6
+ name;
7
+ config;
8
+ tokens;
9
+ lastRefill;
10
+ queue = [];
11
+ metrics;
12
+ refillInterval;
13
+ constructor(name, config) {
14
+ this.name = name;
15
+ this.config = config;
16
+ this.tokens = config.maxRequests;
17
+ this.lastRefill = Date.now();
18
+ this.metrics = {
19
+ totalRequests: 0,
20
+ totalRejected: 0,
21
+ totalQueued: 0,
22
+ currentTokens: this.tokens,
23
+ queueSize: 0,
24
+ };
25
+ // Auto-refill tokens periodically
26
+ this.refillInterval = setInterval(() => {
27
+ this.refill();
28
+ this.processQueue();
29
+ }, 100); // Check every 100ms
30
+ }
31
+ /**
32
+ * Refill tokens based on elapsed time
33
+ */
34
+ refill() {
35
+ const now = Date.now();
36
+ const elapsed = now - this.lastRefill;
37
+ const tokensToAdd = (elapsed / this.config.windowMs) * this.config.maxRequests;
38
+ this.tokens = Math.min(this.config.maxRequests, this.tokens + tokensToAdd);
39
+ this.lastRefill = now;
40
+ this.metrics.currentTokens = this.tokens;
41
+ }
42
+ /**
43
+ * Process queued requests
44
+ */
45
+ processQueue() {
46
+ const now = Date.now();
47
+ const timeout = this.config.queueTimeoutMs ?? 30000;
48
+ while (this.queue.length > 0 && this.tokens >= 1) {
49
+ const request = this.queue[0];
50
+ // Check timeout
51
+ if (now - request.timestamp > timeout) {
52
+ this.queue.shift();
53
+ this.metrics.queueSize = this.queue.length;
54
+ request.reject(new Error(`[RateLimiter:${this.name}] Request timed out in queue after ${timeout}ms`));
55
+ continue;
56
+ }
57
+ // Try to acquire token
58
+ if (this.tryAcquire()) {
59
+ this.queue.shift();
60
+ this.metrics.queueSize = this.queue.length;
61
+ request.resolve();
62
+ }
63
+ else {
64
+ break; // Not enough tokens yet
65
+ }
66
+ }
67
+ }
68
+ /**
69
+ * Try to acquire a token (non-blocking)
70
+ */
71
+ tryAcquire() {
72
+ this.refill();
73
+ if (this.tokens >= 1) {
74
+ this.tokens -= 1;
75
+ this.metrics.currentTokens = this.tokens;
76
+ this.metrics.totalRequests++;
77
+ return true;
78
+ }
79
+ return false;
80
+ }
81
+ /**
82
+ * Acquire a token (async, with queuing)
83
+ * @returns Promise that resolves when token is acquired
84
+ * @throws Error if queue is full or request times out
85
+ */
86
+ async acquire() {
87
+ // Try immediate acquisition
88
+ if (this.tryAcquire()) {
89
+ return;
90
+ }
91
+ // Check queue size limit
92
+ const maxQueue = this.config.maxQueueSize ?? 100;
93
+ if (this.queue.length >= maxQueue) {
94
+ this.metrics.totalRejected++;
95
+ throw new Error(`[RateLimiter:${this.name}] Queue is full (${this.queue.length}/${maxQueue})`);
96
+ }
97
+ // Queue the request
98
+ this.metrics.totalQueued++;
99
+ return new Promise((resolve, reject) => {
100
+ this.queue.push({ resolve, reject, timestamp: Date.now() });
101
+ this.metrics.queueSize = this.queue.length;
102
+ });
103
+ }
104
+ /**
105
+ * Get current metrics
106
+ */
107
+ getMetrics() {
108
+ this.refill(); // Update current tokens
109
+ return { ...this.metrics };
110
+ }
111
+ /**
112
+ * Reset metrics (keep tokens/queue)
113
+ */
114
+ resetMetrics() {
115
+ this.metrics.totalRequests = 0;
116
+ this.metrics.totalRejected = 0;
117
+ this.metrics.totalQueued = 0;
118
+ }
119
+ /**
120
+ * Cleanup resources
121
+ */
122
+ destroy() {
123
+ clearInterval(this.refillInterval);
124
+ // Reject all queued requests
125
+ for (const request of this.queue) {
126
+ request.reject(new Error(`[RateLimiter:${this.name}] Limiter destroyed`));
127
+ }
128
+ this.queue = [];
129
+ }
130
+ }
131
+ // Global Rate Limiters
132
+ const limiters = new Map();
133
+ /**
134
+ * Initialize rate limiters for known services
135
+ */
136
+ export function initRateLimiters() {
137
+ // Claude API: Conservative limit (adjust based on tier)
138
+ // Free tier: ~50 req/min, Paid: ~1000 req/min
139
+ limiters.set('claude', new RateLimiter('claude', {
140
+ maxRequests: 20, // 20 requests per minute
141
+ windowMs: 60000,
142
+ maxQueueSize: 50,
143
+ queueTimeoutMs: 120000, // 2 minutes timeout
144
+ }));
145
+ // Linear API: 5000 req/hour (from error message)
146
+ limiters.set('linear', new RateLimiter('linear', {
147
+ maxRequests: 80, // 80 requests per minute (4800/hour with safety margin)
148
+ windowMs: 60000,
149
+ maxQueueSize: 100,
150
+ queueTimeoutMs: 60000,
151
+ }));
152
+ // GitHub API: 5000 req/hour (authenticated)
153
+ limiters.set('github', new RateLimiter('github', {
154
+ maxRequests: 80, // 80 requests per minute (4800/hour with safety margin)
155
+ windowMs: 60000,
156
+ maxQueueSize: 50,
157
+ queueTimeoutMs: 60000,
158
+ }));
159
+ console.log('[RateLimiter] Initialized limiters: claude, linear, github');
160
+ }
161
+ /**
162
+ * Get or create a rate limiter for a service
163
+ */
164
+ export function getRateLimiter(service) {
165
+ const limiter = limiters.get(service);
166
+ if (!limiter) {
167
+ throw new Error(`[RateLimiter] No limiter configured for service: ${service}`);
168
+ }
169
+ return limiter;
170
+ }
171
+ /**
172
+ * Acquire a token from a rate limiter
173
+ * @param service Service name
174
+ * @throws Error if rate limit exceeded or queue full
175
+ */
176
+ export async function acquireRateLimit(service) {
177
+ const limiter = getRateLimiter(service);
178
+ await limiter.acquire();
179
+ }
180
+ /**
181
+ * Get metrics for all rate limiters
182
+ */
183
+ export function getRateLimiterMetrics() {
184
+ const metrics = {};
185
+ for (const [name, limiter] of limiters) {
186
+ metrics[name] = limiter.getMetrics();
187
+ }
188
+ return metrics;
189
+ }
190
+ /**
191
+ * Reset all metrics
192
+ */
193
+ export function resetRateLimiterMetrics() {
194
+ for (const limiter of limiters.values()) {
195
+ limiter.resetMetrics();
196
+ }
197
+ console.log('[RateLimiter] All metrics reset');
198
+ }
199
+ /**
200
+ * Cleanup all rate limiters
201
+ */
202
+ export function destroyRateLimiters() {
203
+ for (const limiter of limiters.values()) {
204
+ limiter.destroy();
205
+ }
206
+ limiters.clear();
207
+ console.log('[RateLimiter] All limiters destroyed');
208
+ }
209
+ /**
210
+ * Wrapper function for rate-limited operations
211
+ * @param service Service name
212
+ * @param operation Async operation to execute
213
+ * @returns Result of the operation
214
+ */
215
+ export async function withRateLimit(service, operation) {
216
+ await acquireRateLimit(service);
217
+ return operation();
218
+ }
219
+ //# sourceMappingURL=rateLimiter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rateLimiter.js","sourceRoot":"","sources":["../../src/support/rateLimiter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Checkpoint information
3
+ */
4
+ export interface Checkpoint {
5
+ id: string;
6
+ executionId: string;
7
+ projectPath: string;
8
+ createdAt: number;
9
+ commitHash: string;
10
+ stashId?: string;
11
+ branchName: string;
12
+ description: string;
13
+ }
14
+ /**
15
+ * Rollback result
16
+ */
17
+ export interface RollbackResult {
18
+ success: boolean;
19
+ checkpoint: Checkpoint;
20
+ action: 'reset' | 'stash_pop' | 'checkout';
21
+ message: string;
22
+ error?: string;
23
+ }
24
+ /**
25
+ * Rollback strategy
26
+ */
27
+ export type RollbackStrategy = 'reset_hard' | 'reset_soft' | 'stash' | 'checkout_files';
28
+ /**
29
+ * Find checkpoint by execution ID
30
+ */
31
+ export declare function findCheckpointByExecution(executionId: string): Promise<Checkpoint | null>;
32
+ /**
33
+ * Create checkpoint before workflow starts
34
+ */
35
+ export declare function createCheckpoint(executionId: string, projectPath: string, description?: string): Promise<Checkpoint>;
36
+ /**
37
+ * Rollback to checkpoint
38
+ */
39
+ export declare function rollbackToCheckpoint(checkpointId: string, strategy?: RollbackStrategy): Promise<RollbackResult>;
40
+ /**
41
+ * Rollback by execution ID
42
+ */
43
+ export declare function rollbackExecution(executionId: string, strategy?: RollbackStrategy): Promise<RollbackResult>;
44
+ /**
45
+ * Clean up old checkpoints
46
+ */
47
+ export declare function cleanupOldCheckpoints(maxAgeDays?: number): Promise<number>;
48
+ /**
49
+ * List checkpoints
50
+ */
51
+ export declare function listCheckpoints(): Promise<Checkpoint[]>;
52
+ /**
53
+ * Get current git status summary
54
+ */
55
+ export declare function getGitStatus(projectPath: string): Promise<{
56
+ branch: string;
57
+ commit: string;
58
+ hasChanges: boolean;
59
+ changedFiles: string[];
60
+ }>;
61
+ //# sourceMappingURL=rollback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollback.d.ts","sourceRoot":"","sources":["../../src/support/rollback.ts"],"names":[],"mappings":"AAeA;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,OAAO,GAAG,WAAW,GAAG,UAAU,CAAC;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,YAAY,GAAG,OAAO,GAAG,gBAAgB,CAAC;AA4BxF;;GAEG;AACH,wBAAsB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAgB/F;AA+DD;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,UAAU,CAAC,CAuCrB;AAID;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,YAAY,EAAE,MAAM,EACpB,QAAQ,GAAE,gBAA+B,GACxC,OAAO,CAAC,cAAc,CAAC,CAazB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,QAAQ,GAAE,gBAA+B,GACxC,OAAO,CAAC,cAAc,CAAC,CAazB;AAmGD;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,UAAU,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CA6BnF;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC,CAiB7D;AAID;;GAEG;AACH,wBAAsB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC,CASD"}
@@ -0,0 +1,328 @@
1
+ // ============================================
2
+ // OpenSwarm - Git-based Rollback System
3
+ // Automatic recovery on workflow failure
4
+ // ============================================
5
+ import { execFile } from 'node:child_process';
6
+ import { promisify } from 'node:util';
7
+ import { resolve } from 'node:path';
8
+ import { homedir } from 'node:os';
9
+ import * as fs from 'node:fs/promises';
10
+ const execFileAsync = promisify(execFile);
11
+ // Checkpoint Storage
12
+ const CHECKPOINT_DIR = resolve(homedir(), '.openswarm/checkpoints');
13
+ /**
14
+ * Save checkpoint
15
+ */
16
+ async function saveCheckpoint(checkpoint) {
17
+ await fs.mkdir(CHECKPOINT_DIR, { recursive: true });
18
+ const filePath = resolve(CHECKPOINT_DIR, `${checkpoint.id}.json`);
19
+ await fs.writeFile(filePath, JSON.stringify(checkpoint, null, 2));
20
+ }
21
+ /**
22
+ * Load checkpoint
23
+ */
24
+ async function loadCheckpoint(checkpointId) {
25
+ try {
26
+ const filePath = resolve(CHECKPOINT_DIR, `${checkpointId}.json`);
27
+ const content = await fs.readFile(filePath, 'utf-8');
28
+ return JSON.parse(content);
29
+ }
30
+ catch {
31
+ return null;
32
+ }
33
+ }
34
+ /**
35
+ * Find checkpoint by execution ID
36
+ */
37
+ export async function findCheckpointByExecution(executionId) {
38
+ try {
39
+ const files = await fs.readdir(CHECKPOINT_DIR);
40
+ for (const file of files) {
41
+ if (file.endsWith('.json')) {
42
+ const content = await fs.readFile(resolve(CHECKPOINT_DIR, file), 'utf-8');
43
+ const checkpoint = JSON.parse(content);
44
+ if (checkpoint.executionId === executionId) {
45
+ return checkpoint;
46
+ }
47
+ }
48
+ }
49
+ return null;
50
+ }
51
+ catch {
52
+ return null;
53
+ }
54
+ }
55
+ // Git Operations
56
+ /**
57
+ * Safe git command execution (no shell)
58
+ */
59
+ async function gitExec(projectPath, ...args) {
60
+ const expandedPath = projectPath.replace('~', homedir());
61
+ try {
62
+ return await execFileAsync('git', args, { cwd: expandedPath });
63
+ }
64
+ catch (error) {
65
+ const detail = error instanceof Error ? error.message : String(error);
66
+ const stderr = error?.stderr;
67
+ throw new Error(`Git command failed: git ${args.join(' ')}\n${stderr || detail}`);
68
+ }
69
+ }
70
+ /**
71
+ * Get current commit hash
72
+ */
73
+ async function getCurrentCommit(projectPath) {
74
+ const { stdout } = await gitExec(projectPath, 'rev-parse', 'HEAD');
75
+ return stdout.trim();
76
+ }
77
+ /**
78
+ * Get current branch name
79
+ */
80
+ async function getCurrentBranch(projectPath) {
81
+ const { stdout } = await gitExec(projectPath, 'branch', '--show-current');
82
+ return stdout.trim() || 'HEAD';
83
+ }
84
+ /**
85
+ * Check if there are uncommitted changes
86
+ */
87
+ async function hasChanges(projectPath) {
88
+ try {
89
+ const { stdout } = await gitExec(projectPath, 'status', '--porcelain');
90
+ return stdout.trim().length > 0;
91
+ }
92
+ catch {
93
+ return false;
94
+ }
95
+ }
96
+ /**
97
+ * Get list of changed files
98
+ */
99
+ async function getChangedFiles(projectPath) {
100
+ try {
101
+ const { stdout } = await gitExec(projectPath, 'status', '--porcelain');
102
+ return stdout
103
+ .split('\n')
104
+ .filter(line => line.trim())
105
+ .map(line => line.slice(3).trim());
106
+ }
107
+ catch {
108
+ return [];
109
+ }
110
+ }
111
+ // Checkpoint Creation
112
+ /**
113
+ * Create checkpoint before workflow starts
114
+ */
115
+ export async function createCheckpoint(executionId, projectPath, description) {
116
+ console.log(`[Rollback] Creating checkpoint for execution: ${executionId}`);
117
+ const expandedPath = projectPath.replace('~', homedir());
118
+ const commitHash = await getCurrentCommit(expandedPath);
119
+ const branchName = await getCurrentBranch(expandedPath);
120
+ let stashId;
121
+ // Stash if there are changes
122
+ if (await hasChanges(expandedPath)) {
123
+ const changedFiles = await getChangedFiles(expandedPath);
124
+ console.log(`[Rollback] Stashing ${changedFiles.length} changed files`);
125
+ const stashMessage = `openswarm-checkpoint-${executionId}`;
126
+ await gitExec(expandedPath, 'stash', 'push', '-m', stashMessage, '--include-untracked');
127
+ // Find Stash ID
128
+ const { stdout } = await gitExec(expandedPath, 'stash', 'list');
129
+ const stashLine = stdout.split('\n').find(line => line.includes(stashMessage));
130
+ if (stashLine) {
131
+ stashId = stashLine.match(/stash@\{(\d+)\}/)?.[0];
132
+ }
133
+ }
134
+ const checkpoint = {
135
+ id: `ckpt-${Date.now()}-${Math.random().toString(36).slice(2, 8)}`,
136
+ executionId,
137
+ projectPath: expandedPath,
138
+ createdAt: Date.now(),
139
+ commitHash,
140
+ stashId,
141
+ branchName,
142
+ description: description || `Checkpoint for ${executionId}`,
143
+ };
144
+ await saveCheckpoint(checkpoint);
145
+ console.log(`[Rollback] Checkpoint created: ${checkpoint.id}`);
146
+ return checkpoint;
147
+ }
148
+ // Rollback Operations
149
+ /**
150
+ * Rollback to checkpoint
151
+ */
152
+ export async function rollbackToCheckpoint(checkpointId, strategy = 'reset_hard') {
153
+ const checkpoint = await loadCheckpoint(checkpointId);
154
+ if (!checkpoint) {
155
+ return {
156
+ success: false,
157
+ checkpoint: null,
158
+ action: 'reset',
159
+ message: 'Checkpoint not found',
160
+ error: `Checkpoint ${checkpointId} does not exist`,
161
+ };
162
+ }
163
+ return rollback(checkpoint, strategy);
164
+ }
165
+ /**
166
+ * Rollback by execution ID
167
+ */
168
+ export async function rollbackExecution(executionId, strategy = 'reset_hard') {
169
+ const checkpoint = await findCheckpointByExecution(executionId);
170
+ if (!checkpoint) {
171
+ return {
172
+ success: false,
173
+ checkpoint: null,
174
+ action: 'reset',
175
+ message: 'Checkpoint not found for execution',
176
+ error: `No checkpoint found for execution ${executionId}`,
177
+ };
178
+ }
179
+ return rollback(checkpoint, strategy);
180
+ }
181
+ /**
182
+ * Perform actual rollback
183
+ */
184
+ async function rollback(checkpoint, strategy) {
185
+ console.log(`[Rollback] Rolling back to checkpoint: ${checkpoint.id}`);
186
+ console.log(`[Rollback] Strategy: ${strategy}`);
187
+ console.log(`[Rollback] Target commit: ${checkpoint.commitHash}`);
188
+ try {
189
+ switch (strategy) {
190
+ case 'reset_hard':
191
+ // Discard all changes and restore to checkpoint
192
+ await gitExec(checkpoint.projectPath, 'reset', '--hard', checkpoint.commitHash);
193
+ // Restore stash if it existed
194
+ if (checkpoint.stashId) {
195
+ try {
196
+ await gitExec(checkpoint.projectPath, 'stash', 'pop', checkpoint.stashId);
197
+ }
198
+ catch {
199
+ console.log('[Rollback] Stash pop failed, may have conflicts');
200
+ }
201
+ }
202
+ return {
203
+ success: true,
204
+ checkpoint,
205
+ action: 'reset',
206
+ message: `Reset to ${checkpoint.commitHash.slice(0, 7)}`,
207
+ };
208
+ case 'reset_soft':
209
+ // Keep changes in staged state
210
+ await gitExec(checkpoint.projectPath, 'reset', '--soft', checkpoint.commitHash);
211
+ return {
212
+ success: true,
213
+ checkpoint,
214
+ action: 'reset',
215
+ message: `Soft reset to ${checkpoint.commitHash.slice(0, 7)}, changes staged`,
216
+ };
217
+ case 'stash':
218
+ // Stash current changes and go to checkpoint
219
+ if (await hasChanges(checkpoint.projectPath)) {
220
+ const stashMsg = `rollback-preserve-${Date.now()}`;
221
+ await gitExec(checkpoint.projectPath, 'stash', 'push', '-m', stashMsg, '--include-untracked');
222
+ }
223
+ await gitExec(checkpoint.projectPath, 'checkout', checkpoint.commitHash);
224
+ // Restore original stash
225
+ if (checkpoint.stashId) {
226
+ try {
227
+ await gitExec(checkpoint.projectPath, 'stash', 'pop', checkpoint.stashId);
228
+ }
229
+ catch {
230
+ console.log('[Rollback] Original stash pop failed');
231
+ }
232
+ }
233
+ return {
234
+ success: true,
235
+ checkpoint,
236
+ action: 'stash_pop',
237
+ message: `Checked out ${checkpoint.commitHash.slice(0, 7)}, current changes stashed`,
238
+ };
239
+ case 'checkout_files':
240
+ // Restore files to checkpoint state (keep commits)
241
+ await gitExec(checkpoint.projectPath, 'checkout', checkpoint.commitHash, '--', '.');
242
+ return {
243
+ success: true,
244
+ checkpoint,
245
+ action: 'checkout',
246
+ message: `Files restored from ${checkpoint.commitHash.slice(0, 7)}`,
247
+ };
248
+ default:
249
+ throw new Error(`Unknown rollback strategy: ${strategy}`);
250
+ }
251
+ }
252
+ catch (error) {
253
+ const msg = error instanceof Error ? error.message : String(error);
254
+ console.error('[Rollback] Failed:', msg);
255
+ return {
256
+ success: false,
257
+ checkpoint,
258
+ action: 'reset',
259
+ message: 'Rollback failed',
260
+ error: msg,
261
+ };
262
+ }
263
+ }
264
+ // Cleanup
265
+ /**
266
+ * Clean up old checkpoints
267
+ */
268
+ export async function cleanupOldCheckpoints(maxAgeDays = 7) {
269
+ try {
270
+ await fs.mkdir(CHECKPOINT_DIR, { recursive: true });
271
+ const files = await fs.readdir(CHECKPOINT_DIR);
272
+ const maxAge = maxAgeDays * 24 * 60 * 60 * 1000;
273
+ const now = Date.now();
274
+ let deleted = 0;
275
+ for (const file of files) {
276
+ if (!file.endsWith('.json'))
277
+ continue;
278
+ const filePath = resolve(CHECKPOINT_DIR, file);
279
+ const content = await fs.readFile(filePath, 'utf-8');
280
+ const checkpoint = JSON.parse(content);
281
+ if (now - checkpoint.createdAt > maxAge) {
282
+ await fs.unlink(filePath);
283
+ deleted++;
284
+ }
285
+ }
286
+ if (deleted > 0) {
287
+ console.log(`[Rollback] Cleaned up ${deleted} old checkpoints`);
288
+ }
289
+ return deleted;
290
+ }
291
+ catch {
292
+ return 0;
293
+ }
294
+ }
295
+ /**
296
+ * List checkpoints
297
+ */
298
+ export async function listCheckpoints() {
299
+ try {
300
+ await fs.mkdir(CHECKPOINT_DIR, { recursive: true });
301
+ const files = await fs.readdir(CHECKPOINT_DIR);
302
+ const checkpoints = [];
303
+ for (const file of files) {
304
+ if (file.endsWith('.json')) {
305
+ const content = await fs.readFile(resolve(CHECKPOINT_DIR, file), 'utf-8');
306
+ checkpoints.push(JSON.parse(content));
307
+ }
308
+ }
309
+ return checkpoints.sort((a, b) => b.createdAt - a.createdAt);
310
+ }
311
+ catch {
312
+ return [];
313
+ }
314
+ }
315
+ // Utility Functions
316
+ /**
317
+ * Get current git status summary
318
+ */
319
+ export async function getGitStatus(projectPath) {
320
+ const expandedPath = projectPath.replace('~', homedir());
321
+ return {
322
+ branch: await getCurrentBranch(expandedPath),
323
+ commit: await getCurrentCommit(expandedPath),
324
+ hasChanges: await hasChanges(expandedPath),
325
+ changedFiles: await getChangedFiles(expandedPath),
326
+ };
327
+ }
328
+ //# sourceMappingURL=rollback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../src/support/rollback.ts"],"names":[],"mappings":"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"}