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,445 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { loadDeveloperMessage } from '../config/developer-messages.js';
3
+ export const DEFAULT_PLAN_DEVELOPER_MESSAGE = `\`\`\`
4
+ Transform any user message describing a feature request, enhancement, or bug fix into a structured PTCGO-style prompt for Codex. The resulting prompt should instruct Codex to directly implement the described change in code provided or in the target repository context.
5
+
6
+ Follow this structure strictly:
7
+
8
+ Persona: Assume the role of a senior full-stack developer working with modern frameworks. You write clean, maintainable code and follow SOLID, DRY, and YAGNI principles.
9
+
10
+ Task: Implement the feature request, enhancement, or bug fix described by the user.
11
+
12
+ Steps to Complete Task:
13
+ 1. Analyse the user’s description to determine what part of the codebase is affected and what needs to change.
14
+ 2. If code is provided, use it as the working context. Otherwise, infer where changes belong.
15
+ 3. Write complete, correct, and self-contained code implementing the change.
16
+ 4. Include inline documentation and clear commit-style explanations if relevant.
17
+
18
+ Context / Constraints:
19
+ - Do not add boilerplate or unrelated refactors.
20
+ - Maintain existing coding conventions, folder structure, and architectural boundaries.
21
+ - Use concise, idiomatic, production-grade TypeScript or the language of the provided code.
22
+
23
+ Goal: Produce the minimal and correct code modification that fulfils the request as described. The result must be ready to paste or commit directly.
24
+
25
+ Format Output: Provide only the final prompt Codex should act on — no extra commentary or metadata. The output must be plain text starting with 'Implement the following change:' followed by the fully structured Codex instruction.
26
+ \`\`\``;
27
+ const SUPPORTED_LLMS = new Set(['codex', 'claude', 'cursor']);
28
+ const DEFAULT_LLM = 'codex';
29
+ const COMMAND_TIMEOUT_MS = 5 * 60 * 1000;
30
+ const COMMAND_MAX_BUFFER = 2 * 1024 * 1024;
31
+ const COMMAND_NAMES = {
32
+ codex: 'codex',
33
+ claude: 'claude',
34
+ cursor: 'cursor-agent',
35
+ };
36
+ function shellQuote(value) {
37
+ const str = String(value ?? '');
38
+ if (str === '') {
39
+ return "''";
40
+ }
41
+ return `'${str.replace(/'/g, `'\\''`)}'`;
42
+ }
43
+ function buildCommandString(baseCommand, args = []) {
44
+ const trimmedBase = typeof baseCommand === 'string' && baseCommand.trim() ? baseCommand.trim() : '';
45
+ if (!trimmedBase) {
46
+ throw new Error('Command is not configured for plan generation.');
47
+ }
48
+ const serializedArgs = args.map((arg) => shellQuote(arg));
49
+ return [trimmedBase, ...serializedArgs].join(' ');
50
+ }
51
+ function normaliseLlm(input) {
52
+ if (typeof input !== 'string') {
53
+ return DEFAULT_LLM;
54
+ }
55
+ const trimmed = input.trim().toLowerCase();
56
+ if (!trimmed) {
57
+ return DEFAULT_LLM;
58
+ }
59
+ if (!SUPPORTED_LLMS.has(trimmed)) {
60
+ return DEFAULT_LLM;
61
+ }
62
+ return trimmed;
63
+ }
64
+ function resolveShellInvocation() {
65
+ const shellPath = typeof process.env["SHELL"] === 'string' && process.env["SHELL"].trim()
66
+ ? process.env["SHELL"].trim()
67
+ : '/bin/sh';
68
+ const name = shellPath.split('/').pop();
69
+ const shellArgs = [];
70
+ if (name === 'bash' || name === 'zsh' || name === 'fish') {
71
+ shellArgs.push('-il');
72
+ }
73
+ shellArgs.push('-c');
74
+ return { shellPath, shellArgs };
75
+ }
76
+ function buildCommandForLlm(llm, promptText, { dangerousMode = false, rawPrompt = false } = {}) {
77
+ const baseCommand = COMMAND_NAMES[llm];
78
+ if (!baseCommand) {
79
+ throw new Error(`No command configured for LLM "${llm}".`);
80
+ }
81
+ const commandPrefix = `command ${baseCommand}`;
82
+ switch (llm) {
83
+ case 'claude':
84
+ return buildCommandString(commandPrefix, [
85
+ '-p',
86
+ promptText,
87
+ ...(dangerousMode ? ['--dangerously-skip-permissions'] : []),
88
+ ]);
89
+ case 'cursor':
90
+ return buildCommandString(commandPrefix, ['-p', promptText]);
91
+ case 'codex':
92
+ default:
93
+ return buildCommandString(commandPrefix, [
94
+ 'exec',
95
+ promptText,
96
+ ...(!rawPrompt ? ['--skip-git-repo-check'] : []),
97
+ ...(dangerousMode ? ['--dangerously-bypass-approvals-and-sandbox'] : []),
98
+ ]);
99
+ }
100
+ }
101
+ async function executePlanCommand(command, { cwd, signal, onProcessStart } = {}) {
102
+ const { shellPath, shellArgs } = resolveShellInvocation();
103
+ const resolvedCwd = typeof cwd === 'string' ? cwd.trim() : '';
104
+ const isPosix = process.platform !== 'win32';
105
+ return new Promise((resolve, reject) => {
106
+ let stdout = '';
107
+ let stderr = '';
108
+ let totalOutput = 0;
109
+ let timedOut = false;
110
+ let aborted = false;
111
+ let killTimer = null;
112
+ let overflowed = false;
113
+ const child = spawn(shellPath, [...shellArgs, command], {
114
+ cwd: resolvedCwd || undefined,
115
+ stdio: ['ignore', 'pipe', 'pipe'],
116
+ env: process.env,
117
+ detached: isPosix,
118
+ });
119
+ if (typeof onProcessStart === 'function') {
120
+ try {
121
+ onProcessStart(child);
122
+ }
123
+ catch {
124
+ // ignore observer errors
125
+ }
126
+ }
127
+ const cleanup = () => {
128
+ if (timeoutId) {
129
+ clearTimeout(timeoutId);
130
+ }
131
+ if (killTimer) {
132
+ clearTimeout(killTimer);
133
+ }
134
+ if (abortListener && signal) {
135
+ signal.removeEventListener('abort', abortListener);
136
+ }
137
+ if (child.stdout) {
138
+ child.stdout.off('data', handleStdout);
139
+ }
140
+ if (child.stderr) {
141
+ child.stderr.off('data', handleStderr);
142
+ }
143
+ child.off('error', handleError);
144
+ child.off('close', handleClose);
145
+ };
146
+ const abortError = new Error('Command aborted');
147
+ abortError.name = 'AbortError';
148
+ const terminateChild = (code = 'SIGTERM') => {
149
+ if (isPosix && typeof child.pid === 'number' && child.pid > 0) {
150
+ try {
151
+ process.kill(-child.pid, code);
152
+ }
153
+ catch {
154
+ // ignore group kill errors
155
+ }
156
+ }
157
+ if (!child.killed) {
158
+ try {
159
+ child.kill(code);
160
+ }
161
+ catch {
162
+ // ignore kill errors
163
+ }
164
+ }
165
+ killTimer = setTimeout(() => {
166
+ if (isPosix && typeof child.pid === 'number' && child.pid > 0) {
167
+ try {
168
+ process.kill(-child.pid, 'SIGKILL');
169
+ }
170
+ catch {
171
+ // ignore group kill errors
172
+ }
173
+ }
174
+ if (!child.killed) {
175
+ try {
176
+ child.kill('SIGKILL');
177
+ }
178
+ catch {
179
+ // ignore kill errors
180
+ }
181
+ }
182
+ }, 1000);
183
+ killTimer.unref?.();
184
+ };
185
+ const handleAbort = () => {
186
+ if (aborted) {
187
+ return;
188
+ }
189
+ aborted = true;
190
+ terminateChild();
191
+ };
192
+ let abortListener = null;
193
+ if (signal) {
194
+ if (signal.aborted) {
195
+ handleAbort();
196
+ }
197
+ else {
198
+ abortListener = handleAbort;
199
+ signal.addEventListener('abort', abortListener);
200
+ }
201
+ }
202
+ const timeoutId = COMMAND_TIMEOUT_MS
203
+ ? setTimeout(() => {
204
+ timedOut = true;
205
+ terminateChild();
206
+ }, COMMAND_TIMEOUT_MS)
207
+ : null;
208
+ timeoutId?.unref?.();
209
+ child.stdout?.setEncoding('utf8');
210
+ child.stderr?.setEncoding('utf8');
211
+ const handleStdout = (chunk) => {
212
+ stdout += chunk;
213
+ totalOutput += Buffer.byteLength(chunk, 'utf8');
214
+ if (totalOutput > COMMAND_MAX_BUFFER) {
215
+ overflowed = true;
216
+ terminateChild();
217
+ }
218
+ };
219
+ const handleStderr = (chunk) => {
220
+ stderr += chunk;
221
+ totalOutput += Buffer.byteLength(chunk, 'utf8');
222
+ if (totalOutput > COMMAND_MAX_BUFFER) {
223
+ overflowed = true;
224
+ terminateChild();
225
+ }
226
+ };
227
+ if (child.stdout) {
228
+ child.stdout.on('data', handleStdout);
229
+ }
230
+ if (child.stderr) {
231
+ child.stderr.on('data', handleStderr);
232
+ }
233
+ const handleError = (error) => {
234
+ cleanup();
235
+ reject(error);
236
+ };
237
+ child.on('error', handleError);
238
+ const handleClose = (code, signalCode) => {
239
+ cleanup();
240
+ if (overflowed) {
241
+ reject(new Error('Command output exceeded maximum buffer size.'));
242
+ return;
243
+ }
244
+ if (aborted) {
245
+ reject(abortError);
246
+ return;
247
+ }
248
+ if (timedOut) {
249
+ reject(new Error('Command timed out.'));
250
+ return;
251
+ }
252
+ if (signalCode) {
253
+ reject(new Error(`Command terminated due to signal ${signalCode}`));
254
+ return;
255
+ }
256
+ if (code !== 0) {
257
+ const message = stderr.trim() || stdout.trim() || `Command exited with code ${code}`;
258
+ reject(new Error(message));
259
+ return;
260
+ }
261
+ const trimmedStdout = stdout.trim();
262
+ if (trimmedStdout) {
263
+ resolve(trimmedStdout);
264
+ return;
265
+ }
266
+ const trimmedStderr = stderr.trim();
267
+ if (trimmedStderr) {
268
+ resolve(trimmedStderr);
269
+ return;
270
+ }
271
+ resolve(stdout);
272
+ };
273
+ child.once('close', handleClose);
274
+ });
275
+ }
276
+ function buildPlanPrompt({ developerMessage, userPrompt }) {
277
+ const sections = [];
278
+ const cleanedDeveloper = typeof developerMessage === 'string' ? developerMessage.trim() : '';
279
+ if (cleanedDeveloper) {
280
+ sections.push(cleanedDeveloper);
281
+ }
282
+ const cleanedPrompt = typeof userPrompt === 'string' ? userPrompt.trim() : '';
283
+ if (cleanedPrompt) {
284
+ sections.push(`User Request:\n${cleanedPrompt}`);
285
+ }
286
+ sections.push('Respond with the Codex-ready prompt only.');
287
+ return sections.join('\n\n');
288
+ }
289
+ export function createPlanService({ defaultLlm, execPlanCommand: customExecutor, } = {}) {
290
+ const chosenLlm = normaliseLlm(defaultLlm);
291
+ let developerMessagePromise = null;
292
+ const runPlanCommand = typeof customExecutor === 'function' ? customExecutor : executePlanCommand;
293
+ const activeControllers = new Set();
294
+ const runningCommands = new Set();
295
+ const activeProcesses = new Set();
296
+ async function getDeveloperMessage() {
297
+ if (!developerMessagePromise) {
298
+ developerMessagePromise = loadDeveloperMessage('create-plan', DEFAULT_PLAN_DEVELOPER_MESSAGE);
299
+ }
300
+ return developerMessagePromise;
301
+ }
302
+ async function generatePlan({ prompt, llm, cwd, rawPrompt = false, dangerousMode = false, } = {}) {
303
+ if (typeof prompt !== 'string' || !prompt.trim()) {
304
+ throw new Error('prompt is required');
305
+ }
306
+ const shouldUseDangerousMode = Boolean(dangerousMode || rawPrompt);
307
+ let promptText;
308
+ if (rawPrompt) {
309
+ promptText = prompt;
310
+ }
311
+ else {
312
+ const developerMessage = await getDeveloperMessage();
313
+ promptText = buildPlanPrompt({ developerMessage, userPrompt: prompt });
314
+ }
315
+ const requestedLlm = normaliseLlm(llm || chosenLlm);
316
+ const controller = new AbortController();
317
+ activeControllers.add(controller);
318
+ let commandPromise;
319
+ try {
320
+ const command = buildCommandForLlm(requestedLlm, promptText, {
321
+ dangerousMode: shouldUseDangerousMode,
322
+ rawPrompt,
323
+ });
324
+ try {
325
+ commandPromise = Promise.resolve(runPlanCommand(command, {
326
+ cwd,
327
+ signal: controller.signal,
328
+ onProcessStart: (childProcess) => {
329
+ if (!childProcess) {
330
+ return;
331
+ }
332
+ activeProcesses.add(childProcess);
333
+ const proc = childProcess;
334
+ proc.once('close', () => {
335
+ activeProcesses.delete(childProcess);
336
+ });
337
+ },
338
+ }));
339
+ }
340
+ catch (error) {
341
+ const err = error;
342
+ if (controller.signal.aborted || err?.name === 'AbortError' || err?.code === 'ABORT_ERR') {
343
+ throw new Error('Plan generation was cancelled.');
344
+ }
345
+ throw error;
346
+ }
347
+ runningCommands.add(commandPromise);
348
+ let output;
349
+ try {
350
+ output = await commandPromise;
351
+ }
352
+ finally {
353
+ runningCommands.delete(commandPromise);
354
+ }
355
+ const plan = typeof output === 'string'
356
+ ? output
357
+ : output == null
358
+ ? ''
359
+ : String(output);
360
+ if (!plan.trim()) {
361
+ throw new Error('Generated plan was empty.');
362
+ }
363
+ return plan;
364
+ }
365
+ catch (error) {
366
+ const err = error;
367
+ if (controller.signal.aborted || err?.name === 'AbortError' || err?.code === 'ABORT_ERR') {
368
+ throw new Error('Plan generation was cancelled.');
369
+ }
370
+ const message = error instanceof Error ? error.message : String(error);
371
+ throw new Error(`Failed to generate plan using ${requestedLlm}: ${message}`);
372
+ }
373
+ finally {
374
+ activeControllers.delete(controller);
375
+ }
376
+ }
377
+ async function disposeAll() {
378
+ if (activeControllers.size === 0 && runningCommands.size === 0 && activeProcesses.size === 0) {
379
+ return;
380
+ }
381
+ const controllers = Array.from(activeControllers);
382
+ controllers.forEach((controller) => {
383
+ try {
384
+ controller.abort();
385
+ }
386
+ catch {
387
+ // ignore abort errors during disposal
388
+ }
389
+ });
390
+ activeControllers.clear();
391
+ const processes = Array.from(activeProcesses);
392
+ activeProcesses.clear();
393
+ processes.forEach((child) => {
394
+ try {
395
+ if (!child.killed && child.kill) {
396
+ child.kill('SIGTERM');
397
+ }
398
+ }
399
+ catch {
400
+ // ignore kill errors during disposal
401
+ }
402
+ });
403
+ if (processes.length > 0) {
404
+ await Promise.allSettled(processes.map((child) => new Promise((resolve) => {
405
+ if (child.exitCode !== null || child.signalCode) {
406
+ resolve();
407
+ return;
408
+ }
409
+ const handleResolve = () => resolve();
410
+ if (child.once) {
411
+ child.once('close', handleResolve);
412
+ child.once('exit', handleResolve);
413
+ }
414
+ else {
415
+ resolve();
416
+ }
417
+ })));
418
+ }
419
+ const pending = Array.from(runningCommands);
420
+ runningCommands.clear();
421
+ if (pending.length > 0) {
422
+ await Promise.allSettled(pending);
423
+ }
424
+ }
425
+ return {
426
+ isConfigured: true,
427
+ async createPlanText(options) {
428
+ return generatePlan(options);
429
+ },
430
+ async createPlanStream(options) {
431
+ const plan = await generatePlan(options);
432
+ const chunkSize = 2048;
433
+ async function* iterator() {
434
+ for (let offset = 0; offset < plan.length; offset += chunkSize) {
435
+ yield plan.slice(offset, offset + chunkSize);
436
+ }
437
+ }
438
+ return iterator();
439
+ },
440
+ async dispose() {
441
+ await disposeAll();
442
+ },
443
+ };
444
+ }
445
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/core/plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function removeRepository(workdir: string, orgInput: string, repoInput: string): Promise<void>;
2
+ //# sourceMappingURL=repositories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repositories.d.ts","sourceRoot":"","sources":["../../src/core/repositories.ts"],"names":[],"mappings":"AAgBA,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwD1G"}
@@ -0,0 +1,58 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { promisify } from 'node:util';
4
+ import { execFile } from 'node:child_process';
5
+ import { ensureRepository, listWorktrees } from './git.js';
6
+ import { disposeSessionsForRepository } from './terminal-sessions.js';
7
+ import { tmuxKillSessionsForRepository } from './tmux.js';
8
+ const execFileAsync = promisify(execFile);
9
+ const GIT_MAX_BUFFER = 1024 * 1024;
10
+ function normalise(value) {
11
+ return typeof value === 'string' ? value.trim() : '';
12
+ }
13
+ export async function removeRepository(workdir, orgInput, repoInput) {
14
+ const org = normalise(orgInput);
15
+ const repo = normalise(repoInput);
16
+ if (!org || !repo) {
17
+ throw new Error('org and repo are required');
18
+ }
19
+ const { repoRoot, repositoryPath } = await ensureRepository(workdir, org, repo);
20
+ const worktrees = await listWorktrees(repositoryPath);
21
+ const branches = Array.from(new Set(worktrees
22
+ .map((entry) => entry.branch)
23
+ .filter((branch) => typeof branch === 'string' && branch.length > 0)));
24
+ await disposeSessionsForRepository(org, repo);
25
+ await tmuxKillSessionsForRepository(org, repo, branches);
26
+ const repositoryRealPath = path.resolve(repositoryPath);
27
+ for (const entry of worktrees) {
28
+ if (!entry?.path) {
29
+ continue;
30
+ }
31
+ const targetPath = path.resolve(entry.path);
32
+ if (targetPath === repositoryRealPath) {
33
+ continue;
34
+ }
35
+ try {
36
+ // eslint-disable-next-line no-await-in-loop
37
+ await execFileAsync('git', ['-C', repositoryPath, 'worktree', 'remove', '--force', targetPath], { maxBuffer: GIT_MAX_BUFFER });
38
+ }
39
+ catch (error) {
40
+ const err = error;
41
+ const stderr = err && err.stderr ? err.stderr.toString() : '';
42
+ const message = stderr || err.message || 'Unknown git error';
43
+ throw new Error(`Failed to remove worktree ${targetPath}: ${message.trim()}`);
44
+ }
45
+ }
46
+ await fs.rm(repoRoot, { recursive: true, force: true });
47
+ const orgPath = path.dirname(repoRoot);
48
+ try {
49
+ const remaining = await fs.readdir(orgPath);
50
+ if (remaining.length === 0) {
51
+ await fs.rmdir(orgPath);
52
+ }
53
+ }
54
+ catch {
55
+ // ignore cleanup errors
56
+ }
57
+ }
58
+ //# sourceMappingURL=repositories.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repositories.js","sourceRoot":"","sources":["../../src/core/repositories.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export interface RepositoryConfig {
2
+ initCommand: string;
3
+ }
4
+ export declare function loadRepositoryConfig(repoRoot: string): Promise<RepositoryConfig>;
5
+ export declare function updateRepositoryConfig(repoRoot: string, updates: Partial<RepositoryConfig>): Promise<RepositoryConfig>;
6
+ export declare function getRepositoryInitCommand(repoRoot: string): Promise<string>;
7
+ export declare function setRepositoryInitCommand(repoRoot: string, initCommand: string): Promise<RepositoryConfig>;
8
+ export declare function normaliseInitCommand(value: unknown): string;
9
+ //# sourceMappingURL=repository-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository-config.d.ts","sourceRoot":"","sources":["../../src/core/repository-config.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;CACrB;AAqBD,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA2BtF;AAED,wBAAsB,sBAAsB,CAC1C,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,OAAO,CAAC,gBAAgB,CAAC,GACjC,OAAO,CAAC,gBAAgB,CAAC,CAU3B;AAED,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGhF;AAED,wBAAsB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAE/G;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAE3D"}
@@ -0,0 +1,65 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ const CONFIG_FILENAME = '.agentrix.json';
4
+ const DEFAULT_CONFIG = Object.freeze({
5
+ initCommand: '',
6
+ });
7
+ function getConfigPath(repoRoot) {
8
+ if (!repoRoot) {
9
+ throw new Error('repoRoot is required to resolve repository config path');
10
+ }
11
+ return path.join(repoRoot, CONFIG_FILENAME);
12
+ }
13
+ function sanitiseConfig(input) {
14
+ const inp = input;
15
+ const initCommand = typeof inp?.initCommand === 'string' ? inp.initCommand.trim() : '';
16
+ return {
17
+ initCommand,
18
+ };
19
+ }
20
+ export async function loadRepositoryConfig(repoRoot) {
21
+ if (!repoRoot) {
22
+ throw new Error('repoRoot is required to load repository config');
23
+ }
24
+ const configPath = getConfigPath(repoRoot);
25
+ try {
26
+ const raw = await fs.readFile(configPath, 'utf8');
27
+ try {
28
+ const parsed = JSON.parse(raw);
29
+ return sanitiseConfig(parsed);
30
+ }
31
+ catch (error) {
32
+ const err = error;
33
+ console.warn(`[agentrix] Failed to parse repository config at ${configPath}:`, err?.message || error);
34
+ return { ...DEFAULT_CONFIG };
35
+ }
36
+ }
37
+ catch (error) {
38
+ const err = error;
39
+ if (err && err.code === 'ENOENT') {
40
+ return { ...DEFAULT_CONFIG };
41
+ }
42
+ throw error;
43
+ }
44
+ }
45
+ export async function updateRepositoryConfig(repoRoot, updates) {
46
+ if (!repoRoot) {
47
+ throw new Error('repoRoot is required to update repository config');
48
+ }
49
+ const configPath = getConfigPath(repoRoot);
50
+ const base = await loadRepositoryConfig(repoRoot);
51
+ const next = sanitiseConfig({ ...base, ...updates });
52
+ await fs.writeFile(configPath, `${JSON.stringify(next, null, 2)}\n`, 'utf8');
53
+ return next;
54
+ }
55
+ export async function getRepositoryInitCommand(repoRoot) {
56
+ const config = await loadRepositoryConfig(repoRoot);
57
+ return config.initCommand || '';
58
+ }
59
+ export async function setRepositoryInitCommand(repoRoot, initCommand) {
60
+ return updateRepositoryConfig(repoRoot, { initCommand });
61
+ }
62
+ export function normaliseInitCommand(value) {
63
+ return typeof value === 'string' ? value.trim() : '';
64
+ }
65
+ //# sourceMappingURL=repository-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository-config.js","sourceRoot":"","sources":["../../src/core/repository-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface TaskStoreConfig {
2
+ root: string;
3
+ filename?: string;
4
+ logger?: Console;
5
+ now?: () => Date;
6
+ }
7
+ export interface TaskStore {
8
+ loadSnapshot(): Promise<unknown[]>;
9
+ saveSnapshot(tasks: unknown): Promise<void>;
10
+ readonly filePath: string;
11
+ readonly directory: string;
12
+ }
13
+ export declare function createTaskStore({ root, filename, logger, now, }: TaskStoreConfig): TaskStore;
14
+ //# sourceMappingURL=task-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-store.d.ts","sourceRoot":"","sources":["../../src/core/task-store.ts"],"names":[],"mappings":"AAuCA,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACnC,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,QAAuB,EACvB,MAAgB,EAChB,GAAsB,GACvB,EAAE,eAAe,GAAG,SAAS,CAuE7B"}