agentrix 0.0.1

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 (402) hide show
  1. package/README.md +235 -0
  2. package/bin/agentrix.js +5 -0
  3. package/dist/api/auth.d.ts +10 -0
  4. package/dist/api/auth.d.ts.map +1 -0
  5. package/dist/api/auth.js +30 -0
  6. package/dist/api/auth.js.map +1 -0
  7. package/dist/api/automation.d.ts +52 -0
  8. package/dist/api/automation.d.ts.map +1 -0
  9. package/dist/api/automation.js +181 -0
  10. package/dist/api/automation.js.map +1 -0
  11. package/dist/api/base-handler.d.ts +62 -0
  12. package/dist/api/base-handler.d.ts.map +1 -0
  13. package/dist/api/base-handler.js +55 -0
  14. package/dist/api/base-handler.js.map +1 -0
  15. package/dist/api/config.d.ts +5 -0
  16. package/dist/api/config.d.ts.map +1 -0
  17. package/dist/api/config.js +14 -0
  18. package/dist/api/config.js.map +1 -0
  19. package/dist/api/create-plan.d.ts +8 -0
  20. package/dist/api/create-plan.d.ts.map +1 -0
  21. package/dist/api/create-plan.js +77 -0
  22. package/dist/api/create-plan.js.map +1 -0
  23. package/dist/api/git-status.d.ts +6 -0
  24. package/dist/api/git-status.d.ts.map +1 -0
  25. package/dist/api/git-status.js +57 -0
  26. package/dist/api/git-status.js.map +1 -0
  27. package/dist/api/plans.d.ts +6 -0
  28. package/dist/api/plans.d.ts.map +1 -0
  29. package/dist/api/plans.js +75 -0
  30. package/dist/api/plans.js.map +1 -0
  31. package/dist/api/repo-dashboard.d.ts +13 -0
  32. package/dist/api/repo-dashboard.d.ts.map +1 -0
  33. package/dist/api/repo-dashboard.js +47 -0
  34. package/dist/api/repo-dashboard.js.map +1 -0
  35. package/dist/api/repo-issue.d.ts +12 -0
  36. package/dist/api/repo-issue.d.ts.map +1 -0
  37. package/dist/api/repo-issue.js +47 -0
  38. package/dist/api/repo-issue.js.map +1 -0
  39. package/dist/api/repos.d.ts +9 -0
  40. package/dist/api/repos.d.ts.map +1 -0
  41. package/dist/api/repos.js +46 -0
  42. package/dist/api/repos.js.map +1 -0
  43. package/dist/api/sessions.d.ts +5 -0
  44. package/dist/api/sessions.d.ts.map +1 -0
  45. package/dist/api/sessions.js +19 -0
  46. package/dist/api/sessions.js.map +1 -0
  47. package/dist/api/tasks.d.ts +6 -0
  48. package/dist/api/tasks.d.ts.map +1 -0
  49. package/dist/api/tasks.js +22 -0
  50. package/dist/api/tasks.js.map +1 -0
  51. package/dist/api/terminal.d.ts +7 -0
  52. package/dist/api/terminal.d.ts.map +1 -0
  53. package/dist/api/terminal.js +16 -0
  54. package/dist/api/terminal.js.map +1 -0
  55. package/dist/api/worktrees.d.ts +7 -0
  56. package/dist/api/worktrees.d.ts.map +1 -0
  57. package/dist/api/worktrees.js +26 -0
  58. package/dist/api/worktrees.js.map +1 -0
  59. package/dist/cli/arg-parser.d.ts +3 -0
  60. package/dist/cli/arg-parser.d.ts.map +1 -0
  61. package/dist/cli/arg-parser.js +243 -0
  62. package/dist/cli/arg-parser.js.map +1 -0
  63. package/dist/cli/config-resolver.d.ts +29 -0
  64. package/dist/cli/config-resolver.d.ts.map +1 -0
  65. package/dist/cli/config-resolver.js +139 -0
  66. package/dist/cli/config-resolver.js.map +1 -0
  67. package/dist/cli/config.d.ts +5 -0
  68. package/dist/cli/config.d.ts.map +1 -0
  69. package/dist/cli/config.js +224 -0
  70. package/dist/cli/config.js.map +1 -0
  71. package/dist/cli/constants.d.ts +7 -0
  72. package/dist/cli/constants.d.ts.map +1 -0
  73. package/dist/cli/constants.js +15 -0
  74. package/dist/cli/constants.js.map +1 -0
  75. package/dist/cli/help.d.ts +3 -0
  76. package/dist/cli/help.d.ts.map +1 -0
  77. package/dist/cli/help.js +35 -0
  78. package/dist/cli/help.js.map +1 -0
  79. package/dist/cli/index.d.ts +23 -0
  80. package/dist/cli/index.d.ts.map +1 -0
  81. package/dist/cli/index.js +23 -0
  82. package/dist/cli/index.js.map +1 -0
  83. package/dist/cli/plans-command.d.ts +3 -0
  84. package/dist/cli/plans-command.d.ts.map +1 -0
  85. package/dist/cli/plans-command.js +151 -0
  86. package/dist/cli/plans-command.js.map +1 -0
  87. package/dist/cli/server-starter.d.ts +26 -0
  88. package/dist/cli/server-starter.d.ts.map +1 -0
  89. package/dist/cli/server-starter.js +72 -0
  90. package/dist/cli/server-starter.js.map +1 -0
  91. package/dist/cli/types.d.ts +46 -0
  92. package/dist/cli/types.d.ts.map +1 -0
  93. package/dist/cli/types.js +2 -0
  94. package/dist/cli/types.js.map +1 -0
  95. package/dist/cli/validation.d.ts +14 -0
  96. package/dist/cli/validation.d.ts.map +1 -0
  97. package/dist/cli/validation.js +99 -0
  98. package/dist/cli/validation.js.map +1 -0
  99. package/dist/cli.d.ts +5 -0
  100. package/dist/cli.d.ts.map +1 -0
  101. package/dist/cli.js +73 -0
  102. package/dist/cli.js.map +1 -0
  103. package/dist/config/agent-commands.d.ts +27 -0
  104. package/dist/config/agent-commands.d.ts.map +1 -0
  105. package/dist/config/agent-commands.js +56 -0
  106. package/dist/config/agent-commands.js.map +1 -0
  107. package/dist/config/constants.d.ts +35 -0
  108. package/dist/config/constants.d.ts.map +1 -0
  109. package/dist/config/constants.js +35 -0
  110. package/dist/config/constants.js.map +1 -0
  111. package/dist/config/developer-messages.d.ts +2 -0
  112. package/dist/config/developer-messages.d.ts.map +1 -0
  113. package/dist/config/developer-messages.js +43 -0
  114. package/dist/config/developer-messages.js.map +1 -0
  115. package/dist/core/agents.d.ts +23 -0
  116. package/dist/core/agents.d.ts.map +1 -0
  117. package/dist/core/agents.js +91 -0
  118. package/dist/core/agents.js.map +1 -0
  119. package/dist/core/auth.d.ts +3 -0
  120. package/dist/core/auth.d.ts.map +1 -0
  121. package/dist/core/auth.js +69 -0
  122. package/dist/core/auth.js.map +1 -0
  123. package/dist/core/automation/branch.d.ts +18 -0
  124. package/dist/core/automation/branch.d.ts.map +1 -0
  125. package/dist/core/automation/branch.js +29 -0
  126. package/dist/core/automation/branch.js.map +1 -0
  127. package/dist/core/automation/git-orchestration.d.ts +51 -0
  128. package/dist/core/automation/git-orchestration.d.ts.map +1 -0
  129. package/dist/core/automation/git-orchestration.js +25 -0
  130. package/dist/core/automation/git-orchestration.js.map +1 -0
  131. package/dist/core/automation/plan.d.ts +15 -0
  132. package/dist/core/automation/plan.d.ts.map +1 -0
  133. package/dist/core/automation/plan.js +25 -0
  134. package/dist/core/automation/plan.js.map +1 -0
  135. package/dist/core/automation/request-validation.d.ts +45 -0
  136. package/dist/core/automation/request-validation.d.ts.map +1 -0
  137. package/dist/core/automation/request-validation.js +144 -0
  138. package/dist/core/automation/request-validation.js.map +1 -0
  139. package/dist/core/automation/task-runner.d.ts +42 -0
  140. package/dist/core/automation/task-runner.d.ts.map +1 -0
  141. package/dist/core/automation/task-runner.js +215 -0
  142. package/dist/core/automation/task-runner.js.map +1 -0
  143. package/dist/core/branch-name.d.ts +13 -0
  144. package/dist/core/branch-name.d.ts.map +1 -0
  145. package/dist/core/branch-name.js +429 -0
  146. package/dist/core/branch-name.js.map +1 -0
  147. package/dist/core/default-branch.d.ts +12 -0
  148. package/dist/core/default-branch.d.ts.map +1 -0
  149. package/dist/core/default-branch.js +78 -0
  150. package/dist/core/default-branch.js.map +1 -0
  151. package/dist/core/event-bus.d.ts +73 -0
  152. package/dist/core/event-bus.d.ts.map +1 -0
  153. package/dist/core/event-bus.js +127 -0
  154. package/dist/core/event-bus.js.map +1 -0
  155. package/dist/core/git.d.ts +13 -0
  156. package/dist/core/git.d.ts.map +1 -0
  157. package/dist/core/git.js +15 -0
  158. package/dist/core/git.js.map +1 -0
  159. package/dist/core/github.d.ts +10 -0
  160. package/dist/core/github.d.ts.map +1 -0
  161. package/dist/core/github.js +245 -0
  162. package/dist/core/github.js.map +1 -0
  163. package/dist/core/plan-storage.d.ts +46 -0
  164. package/dist/core/plan-storage.d.ts.map +1 -0
  165. package/dist/core/plan-storage.js +237 -0
  166. package/dist/core/plan-storage.js.map +1 -0
  167. package/dist/core/plan.d.ts +23 -0
  168. package/dist/core/plan.d.ts.map +1 -0
  169. package/dist/core/plan.js +445 -0
  170. package/dist/core/plan.js.map +1 -0
  171. package/dist/core/repositories.d.ts +2 -0
  172. package/dist/core/repositories.d.ts.map +1 -0
  173. package/dist/core/repositories.js +58 -0
  174. package/dist/core/repositories.js.map +1 -0
  175. package/dist/core/repository-config.d.ts +9 -0
  176. package/dist/core/repository-config.d.ts.map +1 -0
  177. package/dist/core/repository-config.js +65 -0
  178. package/dist/core/repository-config.js.map +1 -0
  179. package/dist/core/task-store.d.ts +14 -0
  180. package/dist/core/task-store.d.ts.map +1 -0
  181. package/dist/core/task-store.js +105 -0
  182. package/dist/core/task-store.js.map +1 -0
  183. package/dist/core/tasks.d.ts +62 -0
  184. package/dist/core/tasks.d.ts.map +1 -0
  185. package/dist/core/tasks.js +582 -0
  186. package/dist/core/tasks.js.map +1 -0
  187. package/dist/core/terminal-sessions.d.ts +18 -0
  188. package/dist/core/terminal-sessions.d.ts.map +1 -0
  189. package/dist/core/terminal-sessions.js +539 -0
  190. package/dist/core/terminal-sessions.js.map +1 -0
  191. package/dist/core/tmux.d.ts +29 -0
  192. package/dist/core/tmux.d.ts.map +1 -0
  193. package/dist/core/tmux.js +151 -0
  194. package/dist/core/tmux.js.map +1 -0
  195. package/dist/core/workdir.d.ts +8 -0
  196. package/dist/core/workdir.d.ts.map +1 -0
  197. package/dist/core/workdir.js +26 -0
  198. package/dist/core/workdir.js.map +1 -0
  199. package/dist/domain/branch-validator.d.ts +51 -0
  200. package/dist/domain/branch-validator.d.ts.map +1 -0
  201. package/dist/domain/branch-validator.js +88 -0
  202. package/dist/domain/branch-validator.js.map +1 -0
  203. package/dist/domain/git-url-parser.d.ts +27 -0
  204. package/dist/domain/git-url-parser.d.ts.map +1 -0
  205. package/dist/domain/git-url-parser.js +84 -0
  206. package/dist/domain/git-url-parser.js.map +1 -0
  207. package/dist/domain/index.d.ts +8 -0
  208. package/dist/domain/index.d.ts.map +1 -0
  209. package/dist/domain/index.js +5 -0
  210. package/dist/domain/index.js.map +1 -0
  211. package/dist/domain/repository.d.ts +55 -0
  212. package/dist/domain/repository.d.ts.map +1 -0
  213. package/dist/domain/repository.js +73 -0
  214. package/dist/domain/repository.js.map +1 -0
  215. package/dist/domain/worktree.d.ts +43 -0
  216. package/dist/domain/worktree.d.ts.map +1 -0
  217. package/dist/domain/worktree.js +57 -0
  218. package/dist/domain/worktree.js.map +1 -0
  219. package/dist/infrastructure/cookies/cookie-manager.d.ts +18 -0
  220. package/dist/infrastructure/cookies/cookie-manager.d.ts.map +1 -0
  221. package/dist/infrastructure/cookies/cookie-manager.js +20 -0
  222. package/dist/infrastructure/cookies/cookie-manager.js.map +1 -0
  223. package/dist/infrastructure/cookies/cookie-parser.d.ts +43 -0
  224. package/dist/infrastructure/cookies/cookie-parser.d.ts.map +1 -0
  225. package/dist/infrastructure/cookies/cookie-parser.js +88 -0
  226. package/dist/infrastructure/cookies/cookie-parser.js.map +1 -0
  227. package/dist/infrastructure/cookies/cookie-security.d.ts +15 -0
  228. package/dist/infrastructure/cookies/cookie-security.d.ts.map +1 -0
  229. package/dist/infrastructure/cookies/cookie-security.js +35 -0
  230. package/dist/infrastructure/cookies/cookie-security.js.map +1 -0
  231. package/dist/infrastructure/cookies/index.d.ts +7 -0
  232. package/dist/infrastructure/cookies/index.d.ts.map +1 -0
  233. package/dist/infrastructure/cookies/index.js +4 -0
  234. package/dist/infrastructure/cookies/index.js.map +1 -0
  235. package/dist/infrastructure/errors/error-handler.d.ts +22 -0
  236. package/dist/infrastructure/errors/error-handler.d.ts.map +1 -0
  237. package/dist/infrastructure/errors/error-handler.js +89 -0
  238. package/dist/infrastructure/errors/error-handler.js.map +1 -0
  239. package/dist/infrastructure/errors/http-error.d.ts +30 -0
  240. package/dist/infrastructure/errors/http-error.d.ts.map +1 -0
  241. package/dist/infrastructure/errors/http-error.js +46 -0
  242. package/dist/infrastructure/errors/http-error.js.map +1 -0
  243. package/dist/infrastructure/errors/index.d.ts +5 -0
  244. package/dist/infrastructure/errors/index.d.ts.map +1 -0
  245. package/dist/infrastructure/errors/index.js +5 -0
  246. package/dist/infrastructure/errors/index.js.map +1 -0
  247. package/dist/infrastructure/errors/not-found-error.d.ts +8 -0
  248. package/dist/infrastructure/errors/not-found-error.d.ts.map +1 -0
  249. package/dist/infrastructure/errors/not-found-error.js +13 -0
  250. package/dist/infrastructure/errors/not-found-error.js.map +1 -0
  251. package/dist/infrastructure/errors/validation-error.d.ts +21 -0
  252. package/dist/infrastructure/errors/validation-error.d.ts.map +1 -0
  253. package/dist/infrastructure/errors/validation-error.js +31 -0
  254. package/dist/infrastructure/errors/validation-error.js.map +1 -0
  255. package/dist/infrastructure/logging/index.d.ts +3 -0
  256. package/dist/infrastructure/logging/index.d.ts.map +1 -0
  257. package/dist/infrastructure/logging/index.js +2 -0
  258. package/dist/infrastructure/logging/index.js.map +1 -0
  259. package/dist/infrastructure/logging/logger.d.ts +21 -0
  260. package/dist/infrastructure/logging/logger.d.ts.map +1 -0
  261. package/dist/infrastructure/logging/logger.js +49 -0
  262. package/dist/infrastructure/logging/logger.js.map +1 -0
  263. package/dist/repositories/git-repository.d.ts +67 -0
  264. package/dist/repositories/git-repository.d.ts.map +1 -0
  265. package/dist/repositories/git-repository.js +111 -0
  266. package/dist/repositories/git-repository.js.map +1 -0
  267. package/dist/repositories/git-status-repository.d.ts +22 -0
  268. package/dist/repositories/git-status-repository.d.ts.map +1 -0
  269. package/dist/repositories/git-status-repository.js +620 -0
  270. package/dist/repositories/git-status-repository.js.map +1 -0
  271. package/dist/repositories/repository-repository.d.ts +44 -0
  272. package/dist/repositories/repository-repository.d.ts.map +1 -0
  273. package/dist/repositories/repository-repository.js +155 -0
  274. package/dist/repositories/repository-repository.js.map +1 -0
  275. package/dist/repositories/worktree-repository.d.ts +66 -0
  276. package/dist/repositories/worktree-repository.d.ts.map +1 -0
  277. package/dist/repositories/worktree-repository.js +330 -0
  278. package/dist/repositories/worktree-repository.js.map +1 -0
  279. package/dist/server/cookies.d.ts +6 -0
  280. package/dist/server/cookies.d.ts.map +1 -0
  281. package/dist/server/cookies.js +6 -0
  282. package/dist/server/cookies.js.map +1 -0
  283. package/dist/server/events.d.ts +8 -0
  284. package/dist/server/events.d.ts.map +1 -0
  285. package/dist/server/events.js +128 -0
  286. package/dist/server/events.js.map +1 -0
  287. package/dist/server/index.d.ts +18 -0
  288. package/dist/server/index.d.ts.map +1 -0
  289. package/dist/server/index.js +173 -0
  290. package/dist/server/index.js.map +1 -0
  291. package/dist/server/router.d.ts +16 -0
  292. package/dist/server/router.d.ts.map +1 -0
  293. package/dist/server/router.js +256 -0
  294. package/dist/server/router.js.map +1 -0
  295. package/dist/server/ui.d.ts +8 -0
  296. package/dist/server/ui.d.ts.map +1 -0
  297. package/dist/server/ui.js +211 -0
  298. package/dist/server/ui.js.map +1 -0
  299. package/dist/server/websocket.d.ts +9 -0
  300. package/dist/server/websocket.d.ts.map +1 -0
  301. package/dist/server/websocket.js +116 -0
  302. package/dist/server/websocket.js.map +1 -0
  303. package/dist/services/auth-service.d.ts +49 -0
  304. package/dist/services/auth-service.d.ts.map +1 -0
  305. package/dist/services/auth-service.js +53 -0
  306. package/dist/services/auth-service.js.map +1 -0
  307. package/dist/services/index.d.ts +11 -0
  308. package/dist/services/index.d.ts.map +1 -0
  309. package/dist/services/index.js +6 -0
  310. package/dist/services/index.js.map +1 -0
  311. package/dist/services/repository-service.d.ts +57 -0
  312. package/dist/services/repository-service.d.ts.map +1 -0
  313. package/dist/services/repository-service.js +62 -0
  314. package/dist/services/repository-service.js.map +1 -0
  315. package/dist/services/session-service.d.ts +31 -0
  316. package/dist/services/session-service.d.ts.map +1 -0
  317. package/dist/services/session-service.js +134 -0
  318. package/dist/services/session-service.js.map +1 -0
  319. package/dist/services/terminal-service.d.ts +43 -0
  320. package/dist/services/terminal-service.d.ts.map +1 -0
  321. package/dist/services/terminal-service.js +85 -0
  322. package/dist/services/terminal-service.js.map +1 -0
  323. package/dist/services/worktree-service.d.ts +39 -0
  324. package/dist/services/worktree-service.d.ts.map +1 -0
  325. package/dist/services/worktree-service.js +208 -0
  326. package/dist/services/worktree-service.js.map +1 -0
  327. package/dist/types/auth.d.ts +35 -0
  328. package/dist/types/auth.d.ts.map +1 -0
  329. package/dist/types/auth.js +2 -0
  330. package/dist/types/auth.js.map +1 -0
  331. package/dist/types/config.d.ts +46 -0
  332. package/dist/types/config.d.ts.map +1 -0
  333. package/dist/types/config.js +5 -0
  334. package/dist/types/config.js.map +1 -0
  335. package/dist/types/git.d.ts +190 -0
  336. package/dist/types/git.d.ts.map +1 -0
  337. package/dist/types/git.js +5 -0
  338. package/dist/types/git.js.map +1 -0
  339. package/dist/types/http.d.ts +46 -0
  340. package/dist/types/http.d.ts.map +1 -0
  341. package/dist/types/http.js +2 -0
  342. package/dist/types/http.js.map +1 -0
  343. package/dist/types/index.d.ts +8 -0
  344. package/dist/types/index.d.ts.map +1 -0
  345. package/dist/types/index.js +2 -0
  346. package/dist/types/index.js.map +1 -0
  347. package/dist/types/plan.d.ts +31 -0
  348. package/dist/types/plan.d.ts.map +1 -0
  349. package/dist/types/plan.js +5 -0
  350. package/dist/types/plan.js.map +1 -0
  351. package/dist/types/services.d.ts +99 -0
  352. package/dist/types/services.d.ts.map +1 -0
  353. package/dist/types/services.js +2 -0
  354. package/dist/types/services.js.map +1 -0
  355. package/dist/types/tasks.d.ts +68 -0
  356. package/dist/types/tasks.d.ts.map +1 -0
  357. package/dist/types/tasks.js +5 -0
  358. package/dist/types/tasks.js.map +1 -0
  359. package/dist/types/terminal.d.ts +60 -0
  360. package/dist/types/terminal.d.ts.map +1 -0
  361. package/dist/types/terminal.js +2 -0
  362. package/dist/types/terminal.js.map +1 -0
  363. package/dist/utils/cookies.d.ts +7 -0
  364. package/dist/utils/cookies.d.ts.map +1 -0
  365. package/dist/utils/cookies.js +6 -0
  366. package/dist/utils/cookies.js.map +1 -0
  367. package/dist/utils/http.d.ts +23 -0
  368. package/dist/utils/http.d.ts.map +1 -0
  369. package/dist/utils/http.js +58 -0
  370. package/dist/utils/http.js.map +1 -0
  371. package/dist/utils/random.d.ts +12 -0
  372. package/dist/utils/random.d.ts.map +1 -0
  373. package/dist/utils/random.js +25 -0
  374. package/dist/utils/random.js.map +1 -0
  375. package/dist/utils/repository-cache.d.ts +8 -0
  376. package/dist/utils/repository-cache.d.ts.map +1 -0
  377. package/dist/utils/repository-cache.js +13 -0
  378. package/dist/utils/repository-cache.js.map +1 -0
  379. package/dist/validation/index.d.ts +9 -0
  380. package/dist/validation/index.d.ts.map +1 -0
  381. package/dist/validation/index.js +6 -0
  382. package/dist/validation/index.js.map +1 -0
  383. package/dist/validation/request-validator.d.ts +99 -0
  384. package/dist/validation/request-validator.d.ts.map +1 -0
  385. package/dist/validation/request-validator.js +189 -0
  386. package/dist/validation/request-validator.js.map +1 -0
  387. package/dist/validation/schemas/repository-schema.d.ts +26 -0
  388. package/dist/validation/schemas/repository-schema.d.ts.map +1 -0
  389. package/dist/validation/schemas/repository-schema.js +31 -0
  390. package/dist/validation/schemas/repository-schema.js.map +1 -0
  391. package/dist/validation/schemas/terminal-schema.d.ts +21 -0
  392. package/dist/validation/schemas/terminal-schema.d.ts.map +1 -0
  393. package/dist/validation/schemas/terminal-schema.js +38 -0
  394. package/dist/validation/schemas/terminal-schema.js.map +1 -0
  395. package/dist/validation/schemas/worktree-schema.d.ts +21 -0
  396. package/dist/validation/schemas/worktree-schema.d.ts.map +1 -0
  397. package/dist/validation/schemas/worktree-schema.js +29 -0
  398. package/dist/validation/schemas/worktree-schema.js.map +1 -0
  399. package/package.json +79 -0
  400. package/ui/dist/assets/index-BDDrbP3l.js +354 -0
  401. package/ui/dist/assets/index-CwB7gOl4.css +41 -0
  402. package/ui/dist/index.html +13 -0
@@ -0,0 +1,44 @@
1
+ export interface RepositoryPaths {
2
+ repoRoot: string;
3
+ repositoryPath: string;
4
+ }
5
+ export interface CloneResult {
6
+ org: string;
7
+ repo: string;
8
+ }
9
+ export interface CloneOptions {
10
+ initCommand?: string;
11
+ }
12
+ export interface RepositoriesMap {
13
+ [org: string]: {
14
+ [repo: string]: {
15
+ branches: string[];
16
+ initCommand: string;
17
+ };
18
+ };
19
+ }
20
+ /**
21
+ * Ensures a repository exists and returns its paths
22
+ * @param workdir - Work directory root
23
+ * @param org - Organization name
24
+ * @param repo - Repository name
25
+ * @returns Repository paths
26
+ * @throws {Error} If repository doesn't exist or is invalid
27
+ */
28
+ export declare function ensureRepository(workdir: string, org: string, repo: string): Promise<RepositoryPaths>;
29
+ /**
30
+ * Clones a repository
31
+ * @param workdir - Work directory root
32
+ * @param repositoryUrl - Git repository URL
33
+ * @param options - Options
34
+ * @returns Clone result with org and repo
35
+ * @throws {Error} If clone fails or repository already exists
36
+ */
37
+ export declare function cloneRepository(workdir: string, repositoryUrl: string, options?: CloneOptions): Promise<CloneResult>;
38
+ /**
39
+ * Discovers all repositories in the work directory
40
+ * @param workdir - Work directory root
41
+ * @returns Nested object: {org: {repo: {branches, initCommand}}}
42
+ */
43
+ export declare function discoverRepositories(workdir: string): Promise<RepositoriesMap>;
44
+ //# sourceMappingURL=repository-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository-repository.d.ts","sourceRoot":"","sources":["../../src/repositories/repository-repository.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,CAAC,IAAI,EAAE,MAAM,GAAG;YACd,QAAQ,EAAE,MAAM,EAAE,CAAC;YACnB,WAAW,EAAE,MAAM,CAAC;SACrB,CAAC;KACH,CAAC;CACH;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAwB3G;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,WAAW,CAAC,CAwCtB;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA8EpF"}
@@ -0,0 +1,155 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { executeGitCommand, extractGitErrorMessage, GIT_BUFFER_SIZES } from './git-repository.js';
4
+ import { listWorktrees } from './worktree-repository.js';
5
+ import { parseRepositoryUrl } from '../domain/index.js';
6
+ import { getRepositoryInitCommand } from '../core/repository-config.js';
7
+ import { normaliseInitCommand, setRepositoryInitCommand } from '../core/repository-config.js';
8
+ /**
9
+ * Ensures a repository exists and returns its paths
10
+ * @param workdir - Work directory root
11
+ * @param org - Organization name
12
+ * @param repo - Repository name
13
+ * @returns Repository paths
14
+ * @throws {Error} If repository doesn't exist or is invalid
15
+ */
16
+ export async function ensureRepository(workdir, org, repo) {
17
+ if (!org || !repo) {
18
+ throw new Error('Repository identifier is incomplete');
19
+ }
20
+ const repoRoot = path.join(workdir, org, repo);
21
+ const repositoryPath = path.join(repoRoot, 'repository');
22
+ let stats;
23
+ try {
24
+ stats = await fs.stat(repositoryPath);
25
+ }
26
+ catch (error) {
27
+ const err = error;
28
+ if (err && err.code === 'ENOENT') {
29
+ throw new Error(`Repository not found for ${org}/${repo}`);
30
+ }
31
+ throw new Error(`Unable to access repository ${org}/${repo}: ${err.message}`);
32
+ }
33
+ if (!stats.isDirectory()) {
34
+ throw new Error(`Repository path is not a directory: ${repositoryPath}`);
35
+ }
36
+ return { repoRoot, repositoryPath };
37
+ }
38
+ /**
39
+ * Clones a repository
40
+ * @param workdir - Work directory root
41
+ * @param repositoryUrl - Git repository URL
42
+ * @param options - Options
43
+ * @returns Clone result with org and repo
44
+ * @throws {Error} If clone fails or repository already exists
45
+ */
46
+ export async function cloneRepository(workdir, repositoryUrl, options = {}) {
47
+ const { org, repo, url } = parseRepositoryUrl(repositoryUrl);
48
+ const repoRoot = path.join(workdir, org, repo);
49
+ const repositoryPath = path.join(repoRoot, 'repository');
50
+ await fs.mkdir(repoRoot, { recursive: true });
51
+ try {
52
+ const stats = await fs.stat(repositoryPath);
53
+ if (stats.isDirectory()) {
54
+ throw new Error(`Repository already exists for ${org}/${repo}`);
55
+ }
56
+ throw new Error(`Cannot create repository at ${repositoryPath}`);
57
+ }
58
+ catch (error) {
59
+ const err = error;
60
+ if (!err || err.code !== 'ENOENT') {
61
+ throw error;
62
+ }
63
+ }
64
+ try {
65
+ await executeGitCommand(['clone', url, repositoryPath], {
66
+ maxBuffer: GIT_BUFFER_SIZES.MEDIUM,
67
+ });
68
+ }
69
+ catch (error) {
70
+ const message = extractGitErrorMessage(error);
71
+ throw new Error(`Failed to clone repository: ${message}`);
72
+ }
73
+ if (options && Object.prototype.hasOwnProperty.call(options, 'initCommand')) {
74
+ const initCommand = normaliseInitCommand(options.initCommand);
75
+ try {
76
+ await setRepositoryInitCommand(repoRoot, initCommand);
77
+ }
78
+ catch (error) {
79
+ const err = error;
80
+ throw new Error(`Failed to persist repository settings: ${err?.message || error}`);
81
+ }
82
+ }
83
+ return { org, repo };
84
+ }
85
+ /**
86
+ * Discovers all repositories in the work directory
87
+ * @param workdir - Work directory root
88
+ * @returns Nested object: {org: {repo: {branches, initCommand}}}
89
+ */
90
+ export async function discoverRepositories(workdir) {
91
+ const result = {};
92
+ let organisations;
93
+ try {
94
+ organisations = await fs.readdir(workdir, { withFileTypes: true });
95
+ }
96
+ catch (error) {
97
+ const err = error;
98
+ if (err.code === 'ENOENT') {
99
+ return result;
100
+ }
101
+ throw error;
102
+ }
103
+ for (const orgEntry of organisations) {
104
+ if (!orgEntry.isDirectory()) {
105
+ continue;
106
+ }
107
+ const orgName = orgEntry.name;
108
+ const orgPath = path.join(workdir, orgName);
109
+ let repoEntries;
110
+ try {
111
+ repoEntries = await fs.readdir(orgPath, { withFileTypes: true });
112
+ }
113
+ catch {
114
+ continue;
115
+ }
116
+ for (const repoEntry of repoEntries) {
117
+ if (!repoEntry.isDirectory()) {
118
+ continue;
119
+ }
120
+ const repoName = repoEntry.name;
121
+ const repoRoot = path.join(orgPath, repoName);
122
+ const repositoryPath = path.join(repoRoot, 'repository');
123
+ try {
124
+ const stats = await fs.stat(repositoryPath);
125
+ if (!stats.isDirectory()) {
126
+ continue;
127
+ }
128
+ }
129
+ catch {
130
+ continue;
131
+ }
132
+ // eslint-disable-next-line no-await-in-loop
133
+ const worktrees = await listWorktrees(repositoryPath);
134
+ const branches = Array.from(new Set(worktrees
135
+ .map((entry) => entry.branch)
136
+ .filter((branch) => typeof branch === 'string' && branch.length > 0)));
137
+ let initCommand = '';
138
+ try {
139
+ // eslint-disable-next-line no-await-in-loop
140
+ initCommand = await getRepositoryInitCommand(repoRoot);
141
+ }
142
+ catch (error) {
143
+ const err = error;
144
+ console.warn(`[agentrix] Failed to load repository config for ${orgName}/${repoName}:`, err?.message || error);
145
+ initCommand = '';
146
+ }
147
+ if (!result[orgName]) {
148
+ result[orgName] = {};
149
+ }
150
+ result[orgName][repoName] = { branches, initCommand };
151
+ }
152
+ }
153
+ return result;
154
+ }
155
+ //# sourceMappingURL=repository-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository-repository.js","sourceRoot":"","sources":["../../src/repositories/repository-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Custom error for worktree operations
3
+ */
4
+ export declare class GitWorktreeError extends Error {
5
+ readonly repositoryPath: string;
6
+ constructor(repositoryPath: string, message: string, cause?: Error | unknown);
7
+ }
8
+ export interface WorktreeEntry {
9
+ path: string | null;
10
+ branch: string | null;
11
+ }
12
+ /**
13
+ * Lists all worktrees for a repository
14
+ * @param repositoryPath - Path to the repository
15
+ * @returns Array of {path, branch} objects
16
+ * @throws {GitWorktreeError}
17
+ */
18
+ export declare function listWorktrees(repositoryPath: string): Promise<WorktreeEntry[]>;
19
+ /**
20
+ * Counts local worktrees (optionally excluding main)
21
+ * @param repositoryPath - Path to the repository
22
+ * @param options - Options
23
+ * @returns Count of worktrees
24
+ */
25
+ export declare function countLocalWorktrees(repositoryPath: string, { includeMain }?: {
26
+ includeMain?: boolean;
27
+ }): Promise<number>;
28
+ export interface InitCommandResult {
29
+ ran: boolean;
30
+ command: string;
31
+ }
32
+ export interface CreateWorktreeOptions {
33
+ defaultBranchOverride?: string;
34
+ progress?: unknown;
35
+ }
36
+ /**
37
+ * Creates a new worktree
38
+ * @param workdir - Work directory root
39
+ * @param org - Organization name
40
+ * @param repo - Repository name
41
+ * @param branch - Branch name
42
+ * @param options - Options
43
+ */
44
+ export declare function createWorktree(workdir: string, org: string, repo: string, branch: string, options?: CreateWorktreeOptions): Promise<void>;
45
+ export interface WorktreePathResult {
46
+ repositoryPath: string;
47
+ worktreePath: string;
48
+ }
49
+ /**
50
+ * Gets the path to a worktree for a specific branch
51
+ * @param workdir - Work directory root
52
+ * @param org - Organization name
53
+ * @param repo - Repository name
54
+ * @param branch - Branch name
55
+ * @returns Worktree paths
56
+ */
57
+ export declare function getWorktreePath(workdir: string, org: string, repo: string, branch: string): Promise<WorktreePathResult>;
58
+ /**
59
+ * Removes a worktree
60
+ * @param workdir - Work directory root
61
+ * @param org - Organization name
62
+ * @param repo - Repository name
63
+ * @param branch - Branch name
64
+ */
65
+ export declare function removeWorktree(workdir: string, org: string, repo: string, branch: string): Promise<void>;
66
+ //# sourceMappingURL=worktree-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-repository.d.ts","sourceRoot":"","sources":["../../src/repositories/worktree-repository.ts"],"names":[],"mappings":"AAaA;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,SAAgB,cAAc,EAAE,MAAM,CAAC;gBAE3B,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,GAAG,OAAO;CAQ7E;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAsB,aAAa,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAuCpF;AAED;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACvC,cAAc,EAAE,MAAM,EACtB,EAAE,WAAmB,EAAE,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACtD,OAAO,CAAC,MAAM,CAAC,CAWjB;AAqBD,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,OAAO,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAsDD,MAAM,WAAW,qBAAqB;IACpC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,IAAI,CAAC,CA0Jf;AAED,MAAM,WAAW,kBAAkB;IACjC,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,kBAAkB,CAAC,CAU7B;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CA8Bf"}
@@ -0,0 +1,330 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { executeGitCommandInRepo, extractGitErrorMessage, GIT_BUFFER_SIZES, } from './git-repository.js';
4
+ import { normalizeBranchName, deriveWorktreeFolderName } from '../domain/index.js';
5
+ import { resolveDefaultBranch } from '../core/default-branch.js';
6
+ import { getRepositoryInitCommand, } from '../core/repository-config.js';
7
+ /**
8
+ * Custom error for worktree operations
9
+ */
10
+ export class GitWorktreeError extends Error {
11
+ repositoryPath;
12
+ constructor(repositoryPath, message, cause) {
13
+ super(`Failed to list worktrees for ${repositoryPath}: ${message}`);
14
+ this.name = 'GitWorktreeError';
15
+ this.repositoryPath = repositoryPath;
16
+ if (cause) {
17
+ this.cause = cause;
18
+ }
19
+ }
20
+ }
21
+ /**
22
+ * Lists all worktrees for a repository
23
+ * @param repositoryPath - Path to the repository
24
+ * @returns Array of {path, branch} objects
25
+ * @throws {GitWorktreeError}
26
+ */
27
+ export async function listWorktrees(repositoryPath) {
28
+ try {
29
+ const { stdout } = await executeGitCommandInRepo(repositoryPath, ['worktree', 'list', '--porcelain'], { maxBuffer: GIT_BUFFER_SIZES.MEDIUM });
30
+ if (!stdout.trim()) {
31
+ return [];
32
+ }
33
+ const worktrees = [];
34
+ const blocks = stdout.trim().split(/\n\n+/);
35
+ blocks.forEach((block) => {
36
+ let worktreePath = null;
37
+ let branchName = null;
38
+ block.split('\n').forEach((line) => {
39
+ if (line.startsWith('worktree ')) {
40
+ worktreePath = line.slice('worktree '.length).trim();
41
+ }
42
+ else if (line.startsWith('branch ')) {
43
+ const ref = line.slice('branch '.length).trim();
44
+ branchName = ref.replace(/^refs\/heads\//, '');
45
+ }
46
+ });
47
+ worktrees.push({ path: worktreePath, branch: branchName });
48
+ });
49
+ return worktrees;
50
+ }
51
+ catch (error) {
52
+ const message = extractGitErrorMessage(error);
53
+ console.error(`[agentrix] Failed to list worktrees for ${repositoryPath}: ${message}`);
54
+ throw new GitWorktreeError(repositoryPath, message, error);
55
+ }
56
+ }
57
+ /**
58
+ * Counts local worktrees (optionally excluding main)
59
+ * @param repositoryPath - Path to the repository
60
+ * @param options - Options
61
+ * @returns Count of worktrees
62
+ */
63
+ export async function countLocalWorktrees(repositoryPath, { includeMain = false } = {}) {
64
+ const worktrees = await listWorktrees(repositoryPath);
65
+ return worktrees.reduce((total, entry) => {
66
+ if (!entry || typeof entry.branch !== 'string') {
67
+ return total;
68
+ }
69
+ if (!includeMain && entry.branch === 'main') {
70
+ return total;
71
+ }
72
+ return total + 1;
73
+ }, 0);
74
+ }
75
+ /**
76
+ * Checks if a branch exists in the repository
77
+ * @param repositoryPath - Path to the repository
78
+ * @param branch - Branch name
79
+ * @returns True if branch exists
80
+ */
81
+ async function branchExists(repositoryPath, branch) {
82
+ try {
83
+ await executeGitCommandInRepo(repositoryPath, ['rev-parse', '--verify', `refs/heads/${branch}`], { maxBuffer: GIT_BUFFER_SIZES.MEDIUM });
84
+ return true;
85
+ }
86
+ catch {
87
+ return false;
88
+ }
89
+ }
90
+ /**
91
+ * Runs the repository init command in a worktree
92
+ * @param repoRoot - Repository root directory
93
+ * @param worktreePath - Path to the worktree
94
+ * @returns Init command result
95
+ */
96
+ async function runRepositoryInitCommand(repoRoot, worktreePath) {
97
+ let initCommand = '';
98
+ try {
99
+ initCommand = await getRepositoryInitCommand(repoRoot);
100
+ }
101
+ catch (error) {
102
+ const err = error;
103
+ console.warn(`[agentrix] Failed to read repository config for ${repoRoot}:`, err?.message || error);
104
+ initCommand = '';
105
+ }
106
+ if (!initCommand) {
107
+ return { ran: false, command: '' };
108
+ }
109
+ const candidateShell = typeof process.env['SHELL'] === 'string' ? process.env['SHELL'].trim() : '';
110
+ const shell = candidateShell || '/bin/sh';
111
+ const shellName = path.basename(shell);
112
+ const shellArgs = ['-l', '-c', initCommand];
113
+ if (['bash', 'zsh', 'fish'].includes(shellName)) {
114
+ shellArgs.splice(1, 0, '-i');
115
+ }
116
+ try {
117
+ const { execFile } = await import('node:child_process');
118
+ const { promisify } = await import('node:util');
119
+ const execFileAsync = promisify(execFile);
120
+ await execFileAsync(shell, shellArgs, {
121
+ cwd: worktreePath,
122
+ maxBuffer: GIT_BUFFER_SIZES.XLARGE,
123
+ env: { ...process.env },
124
+ });
125
+ return { ran: true, command: initCommand };
126
+ }
127
+ catch (error) {
128
+ const err = error;
129
+ const stderr = err?.stderr ? err.stderr.toString() : '';
130
+ const stdout = err?.stdout ? err.stdout.toString() : '';
131
+ const details = stderr || stdout || err?.message || 'Unknown repository init error';
132
+ throw new Error(`Repository init command failed: ${details.trim()}`);
133
+ }
134
+ }
135
+ /**
136
+ * Creates a new worktree
137
+ * @param workdir - Work directory root
138
+ * @param org - Organization name
139
+ * @param repo - Repository name
140
+ * @param branch - Branch name
141
+ * @param options - Options
142
+ */
143
+ export async function createWorktree(workdir, org, repo, branch, options = {}) {
144
+ const { defaultBranchOverride, progress } = options || {};
145
+ const branchName = normalizeBranchName(branch);
146
+ if (!branchName) {
147
+ throw new Error('Branch name cannot be empty');
148
+ }
149
+ // We need to import ensureRepository from repository-repository
150
+ // For now, construct paths directly
151
+ const repoRoot = path.join(workdir, org, repo);
152
+ const repositoryPath = path.join(repoRoot, 'repository');
153
+ const folderName = deriveWorktreeFolderName(branchName);
154
+ const targetPath = path.join(repoRoot, folderName);
155
+ try {
156
+ await fs.access(targetPath);
157
+ throw new Error(`Worktree directory already exists at ${targetPath}`);
158
+ }
159
+ catch (error) {
160
+ const err = error;
161
+ if (!err || err.code !== 'ENOENT') {
162
+ throw error;
163
+ }
164
+ }
165
+ const describeError = (error, fallback = 'Unknown git error') => {
166
+ return extractGitErrorMessage(error, fallback);
167
+ };
168
+ const prog = progress;
169
+ prog?.ensureStep?.('sync-default-branch', 'Sync default branch');
170
+ prog?.ensureStep?.('create-worktree', 'Create worktree');
171
+ prog?.ensureStep?.('run-init-script', 'Run init script');
172
+ prog?.startStep?.('sync-default-branch', {
173
+ label: 'Sync default branch',
174
+ message: 'Preparing repository and syncing default branch.',
175
+ });
176
+ let defaultBranch = '';
177
+ try {
178
+ defaultBranch = await resolveDefaultBranch(repositoryPath, {
179
+ override: defaultBranchOverride,
180
+ });
181
+ if (defaultBranch) {
182
+ prog?.logStep?.('sync-default-branch', `Resolved default branch: ${defaultBranch}`);
183
+ }
184
+ await executeGitCommandInRepo(repositoryPath, ['checkout', defaultBranch]);
185
+ prog?.logStep?.('sync-default-branch', `Checked out default branch ${defaultBranch}.`);
186
+ await executeGitCommandInRepo(repositoryPath, [
187
+ 'pull',
188
+ '--ff-only',
189
+ 'origin',
190
+ defaultBranch,
191
+ ]);
192
+ prog?.completeStep?.('sync-default-branch', {
193
+ label: 'Sync default branch',
194
+ message: `Default branch ${defaultBranch} is up to date.`,
195
+ });
196
+ }
197
+ catch (error) {
198
+ const message = describeError(error);
199
+ prog?.failStep?.('sync-default-branch', {
200
+ label: 'Sync default branch',
201
+ message,
202
+ });
203
+ throw new Error(`Failed to create worktree: ${message}`);
204
+ }
205
+ prog?.startStep?.('create-worktree', {
206
+ label: 'Create worktree',
207
+ message: `Adding worktree at ${targetPath}`,
208
+ });
209
+ let worktreeAdded = false;
210
+ try {
211
+ const exists = await branchExists(repositoryPath, branchName);
212
+ const args = ['worktree', 'add'];
213
+ if (!exists) {
214
+ args.push('-b', branchName);
215
+ }
216
+ args.push(targetPath);
217
+ if (exists) {
218
+ args.push(branchName);
219
+ }
220
+ await executeGitCommandInRepo(repositoryPath, args);
221
+ worktreeAdded = true;
222
+ prog?.completeStep?.('create-worktree', {
223
+ label: 'Create worktree',
224
+ message: exists
225
+ ? `Attached existing branch ${branchName} to ${targetPath}.`
226
+ : `Created new branch ${branchName} at ${targetPath}.`,
227
+ });
228
+ }
229
+ catch (error) {
230
+ const message = describeError(error);
231
+ prog?.failStep?.('create-worktree', {
232
+ label: 'Create worktree',
233
+ message,
234
+ });
235
+ throw new Error(`Failed to create worktree: ${message}`);
236
+ }
237
+ prog?.startStep?.('run-init-script', {
238
+ label: 'Run init script',
239
+ message: 'Checking for repository init command.',
240
+ });
241
+ try {
242
+ const initResult = await runRepositoryInitCommand(repoRoot, targetPath);
243
+ if (!initResult?.ran) {
244
+ prog?.skipStep?.('run-init-script', {
245
+ label: 'Run init script',
246
+ message: 'No init command configured for this repository.',
247
+ });
248
+ }
249
+ else {
250
+ prog?.completeStep?.('run-init-script', {
251
+ label: 'Run init script',
252
+ message: 'Init command completed successfully.',
253
+ });
254
+ }
255
+ }
256
+ catch (error) {
257
+ const message = describeError(error, 'Repository init command failed');
258
+ prog?.failStep?.('run-init-script', {
259
+ label: 'Run init script',
260
+ message,
261
+ });
262
+ if (worktreeAdded) {
263
+ try {
264
+ await executeGitCommandInRepo(repositoryPath, [
265
+ 'worktree',
266
+ 'remove',
267
+ '--force',
268
+ targetPath,
269
+ ]);
270
+ }
271
+ catch (cleanupError) {
272
+ const cleanupErr = cleanupError;
273
+ console.warn(`[agentrix] Failed to clean up worktree at ${targetPath} after init command failure:`, cleanupErr?.message || cleanupError);
274
+ }
275
+ }
276
+ throw new Error(`Failed to create worktree: ${message}`);
277
+ }
278
+ }
279
+ /**
280
+ * Gets the path to a worktree for a specific branch
281
+ * @param workdir - Work directory root
282
+ * @param org - Organization name
283
+ * @param repo - Repository name
284
+ * @param branch - Branch name
285
+ * @returns Worktree paths
286
+ */
287
+ export async function getWorktreePath(workdir, org, repo, branch) {
288
+ const repositoryPath = path.join(workdir, org, repo, 'repository');
289
+ const worktrees = await listWorktrees(repositoryPath);
290
+ const match = worktrees.find((item) => item.branch === branch);
291
+ if (!match || !match.path) {
292
+ throw new Error(`Worktree for ${org}/${repo} branch ${branch} not found`);
293
+ }
294
+ return { repositoryPath, worktreePath: match.path };
295
+ }
296
+ /**
297
+ * Removes a worktree
298
+ * @param workdir - Work directory root
299
+ * @param org - Organization name
300
+ * @param repo - Repository name
301
+ * @param branch - Branch name
302
+ */
303
+ export async function removeWorktree(workdir, org, repo, branch) {
304
+ const branchName = normalizeBranchName(branch);
305
+ if (!branchName) {
306
+ throw new Error('Branch name cannot be empty');
307
+ }
308
+ if (branchName.toLowerCase() === 'main') {
309
+ throw new Error('Cannot remove the main worktree');
310
+ }
311
+ const repositoryPath = path.join(workdir, org, repo, 'repository');
312
+ const worktrees = await listWorktrees(repositoryPath);
313
+ const entry = worktrees.find((item) => item.branch === branchName);
314
+ if (!entry || !entry.path) {
315
+ return;
316
+ }
317
+ try {
318
+ await executeGitCommandInRepo(repositoryPath, [
319
+ 'worktree',
320
+ 'remove',
321
+ '--force',
322
+ entry.path,
323
+ ]);
324
+ }
325
+ catch (error) {
326
+ const message = extractGitErrorMessage(error);
327
+ throw new Error(`Failed to remove worktree: ${message}`);
328
+ }
329
+ }
330
+ //# sourceMappingURL=worktree-repository.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-repository.js","sourceRoot":"","sources":["../../src/repositories/worktree-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @deprecated Use infrastructure/cookies instead
3
+ * This file re-exports for backward compatibility
4
+ */
5
+ export { createCookieManager } from '../infrastructure/cookies/index.js';
6
+ //# sourceMappingURL=cookies.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookies.d.ts","sourceRoot":"","sources":["../../src/server/cookies.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * @deprecated Use infrastructure/cookies instead
3
+ * This file re-exports for backward compatibility
4
+ */
5
+ export { createCookieManager } from '../infrastructure/cookies/index.js';
6
+ //# sourceMappingURL=cookies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookies.js","sourceRoot":"","sources":["../../src/server/cookies.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { AuthManager } from '../types/auth.js';
2
+ import type { RequestContext } from '../types/http.js';
3
+ export interface EventStreamConfig {
4
+ authManager: AuthManager;
5
+ workdir: string;
6
+ }
7
+ export declare function createEventStreamHandler({ authManager, workdir }: EventStreamConfig): (context: RequestContext) => Promise<void>;
8
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/server/events.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA+CvD,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,wBAAwB,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,iBAAiB,IAQ1C,SAAS,cAAc,KAAG,OAAO,CAAC,IAAI,CAAC,CAqFhF"}