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,224 @@
1
+ import fs from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { getConfigFilePath } from './constants.js';
4
+ import { validatePort, validateString, validateBranchLlm, validateTerminalSessionMode, validateCookieSecure, pickFirst, warnConfig, } from './validation.js';
5
+ function pickString(sources, configPath) {
6
+ return pickFirst(sources, validateString, configPath);
7
+ }
8
+ function pickLlm(sources, configPath) {
9
+ return pickFirst(sources, validateBranchLlm, configPath);
10
+ }
11
+ function normalizeDefaultBranches(config, configPath) {
12
+ const defaultBranchesOverride = config['defaultBranches'] && typeof config['defaultBranches'] === 'object'
13
+ ? config['defaultBranches']
14
+ : null;
15
+ if (!defaultBranchesOverride) {
16
+ return undefined;
17
+ }
18
+ const overrides = {};
19
+ for (const [key, value] of Object.entries(defaultBranchesOverride)) {
20
+ if (typeof value === 'string') {
21
+ const trimmed = value.trim();
22
+ if (trimmed) {
23
+ overrides[key.trim()] = trimmed;
24
+ }
25
+ }
26
+ else {
27
+ warnConfig(`Ignoring non-string defaultBranches entry for ${key} in ${configPath || 'config'}.`);
28
+ }
29
+ }
30
+ return Object.keys(overrides).length > 0 ? overrides : undefined;
31
+ }
32
+ function extractNestedObject(config, key) {
33
+ return config[key] && typeof config[key] === 'object'
34
+ ? config[key]
35
+ : null;
36
+ }
37
+ export function normalizeConfig(rawConfig, configPath) {
38
+ if (!rawConfig || typeof rawConfig !== 'object') {
39
+ if (rawConfig !== undefined) {
40
+ warnConfig(`Ignoring config at ${configPath || 'config'} because it is not a JSON object.`);
41
+ }
42
+ return {};
43
+ }
44
+ const config = rawConfig;
45
+ const normalized = {};
46
+ const commands = extractNestedObject(config, 'commands');
47
+ const branchName = extractNestedObject(config, 'branchName');
48
+ const plan = extractNestedObject(config, 'plan');
49
+ const openai = extractNestedObject(config, 'openai');
50
+ const automation = extractNestedObject(config, 'automation');
51
+ const ngrok = extractNestedObject(config, 'ngrok');
52
+ const cookieConfig = extractNestedObject(config, 'cookies');
53
+ // Port
54
+ const port = validatePort(config['port'], 'port', configPath);
55
+ if (port !== undefined)
56
+ normalized['port'] = port;
57
+ // Host
58
+ const host = validateString(config['host'], 'host', configPath);
59
+ if (host !== undefined)
60
+ normalized['host'] = host;
61
+ // UI path
62
+ const ui = pickString([
63
+ { value: config['ui'], name: 'ui' },
64
+ { value: config['uiPath'], name: 'uiPath' },
65
+ ], configPath);
66
+ if (ui !== undefined)
67
+ normalized['ui'] = ui;
68
+ // Working directory
69
+ const workdir = pickString([
70
+ { value: config['workdir'], name: 'workdir' },
71
+ { value: config['workDir'], name: 'workDir' },
72
+ ], configPath);
73
+ if (workdir !== undefined)
74
+ normalized['workdir'] = workdir;
75
+ // Default branch
76
+ const defaultBranch = validateString(config['defaultBranch'], 'defaultBranch', configPath);
77
+ if (defaultBranch !== undefined)
78
+ normalized['defaultBranch'] = defaultBranch;
79
+ // Default branches overrides
80
+ const defaultBranches = normalizeDefaultBranches(config, configPath);
81
+ if (defaultBranches)
82
+ normalized['defaultBranches'] = defaultBranches;
83
+ // Cookie secure
84
+ const cookieSecureRaw = cookieConfig?.['secure'] ?? config['cookieSecure'];
85
+ const cookieSecure = validateCookieSecure(cookieSecureRaw, 'cookieSecure', configPath);
86
+ if (cookieSecure !== undefined)
87
+ normalized['cookieSecure'] = cookieSecure;
88
+ // Password
89
+ const password = validateString(config['password'], 'password', configPath);
90
+ if (password !== undefined)
91
+ normalized['password'] = password;
92
+ // Commands
93
+ const codexCommand = pickString([
94
+ { value: config['codexCommand'], name: 'codexCommand' },
95
+ { value: commands?.['codex'], name: 'commands.codex' },
96
+ ], configPath);
97
+ if (codexCommand !== undefined)
98
+ normalized['codexCommand'] = codexCommand;
99
+ const claudeCommand = pickString([
100
+ { value: config['claudeCommand'], name: 'claudeCommand' },
101
+ { value: commands?.['claude'], name: 'commands.claude' },
102
+ ], configPath);
103
+ if (claudeCommand !== undefined)
104
+ normalized['claudeCommand'] = claudeCommand;
105
+ const cursorCommand = pickString([
106
+ { value: config['cursorCommand'], name: 'cursorCommand' },
107
+ { value: commands?.['cursor'], name: 'commands.cursor' },
108
+ ], configPath);
109
+ if (cursorCommand !== undefined)
110
+ normalized['cursorCommand'] = cursorCommand;
111
+ const ideCommand = pickString([
112
+ { value: config['ideCommand'], name: 'ideCommand' },
113
+ { value: commands?.['ide'], name: 'commands.ide' },
114
+ ], configPath);
115
+ if (ideCommand !== undefined)
116
+ normalized['ideCommand'] = ideCommand;
117
+ const vscodeCommand = pickString([
118
+ { value: config['vscodeCommand'], name: 'vscodeCommand' },
119
+ { value: commands?.['vscode'], name: 'commands.vscode' },
120
+ ], configPath);
121
+ if (vscodeCommand !== undefined)
122
+ normalized['vscodeCommand'] = vscodeCommand;
123
+ // LLM configuration
124
+ const branchNameLlm = pickLlm([
125
+ { value: config['branchNameLlm'], name: 'branchNameLlm' },
126
+ { value: config['branchNameLLM'], name: 'branchNameLLM' },
127
+ { value: config['branchLlm'], name: 'branchLlm' },
128
+ { value: config['branchLLM'], name: 'branchLLM' },
129
+ { value: config['defaultBranchLlm'], name: 'defaultBranchLlm' },
130
+ { value: config['defaultBranchLLM'], name: 'defaultBranchLLM' },
131
+ { value: branchName?.['llm'], name: 'branchName.llm' },
132
+ { value: branchName?.['default'], name: 'branchName.default' },
133
+ { value: branchName?.['model'], name: 'branchName.model' },
134
+ ], configPath);
135
+ if (branchNameLlm !== undefined)
136
+ normalized['branchNameLlm'] = branchNameLlm;
137
+ const planLlm = pickLlm([
138
+ { value: config['planLlm'], name: 'planLlm' },
139
+ { value: config['planLLM'], name: 'planLLM' },
140
+ { value: config['createPlanLlm'], name: 'createPlanLlm' },
141
+ { value: config['createPlanLLM'], name: 'createPlanLLM' },
142
+ { value: config['defaultPlanLlm'], name: 'defaultPlanLlm' },
143
+ { value: config['defaultPlanLLM'], name: 'defaultPlanLLM' },
144
+ { value: plan?.['llm'], name: 'plan.llm' },
145
+ { value: plan?.['default'], name: 'plan.default' },
146
+ { value: plan?.['model'], name: 'plan.model' },
147
+ ], configPath);
148
+ if (planLlm !== undefined)
149
+ normalized['planLlm'] = planLlm;
150
+ // Terminal session mode
151
+ const terminalSessionMode = validateTerminalSessionMode(config['terminalSessionMode'], 'terminalSessionMode', configPath);
152
+ if (terminalSessionMode !== undefined)
153
+ normalized['terminalSessionMode'] = terminalSessionMode;
154
+ // ngrok
155
+ const ngrokApiKey = pickString([
156
+ { value: config['ngrokApiKey'], name: 'ngrokApiKey' },
157
+ { value: ngrok?.['apiKey'], name: 'ngrok.apiKey' },
158
+ { value: ngrok?.['authtoken'], name: 'ngrok.authtoken' },
159
+ { value: ngrok?.['token'], name: 'ngrok.token' },
160
+ ], configPath);
161
+ if (ngrokApiKey !== undefined)
162
+ normalized['ngrokApiKey'] = ngrokApiKey;
163
+ const ngrokDomain = pickString([
164
+ { value: config['ngrokDomain'], name: 'ngrokDomain' },
165
+ { value: ngrok?.['domain'], name: 'ngrok.domain' },
166
+ ], configPath);
167
+ if (ngrokDomain !== undefined)
168
+ normalized['ngrokDomain'] = ngrokDomain;
169
+ // API keys
170
+ const automationApiKey = pickString([
171
+ { value: config['automationApiKey'], name: 'automationApiKey' },
172
+ { value: config['apiKey'], name: 'apiKey' },
173
+ { value: automation?.['apiKey'], name: 'automation.apiKey' },
174
+ ], configPath);
175
+ if (automationApiKey !== undefined)
176
+ normalized['automationApiKey'] = automationApiKey;
177
+ const openaiApiKey = pickString([
178
+ { value: config['openaiApiKey'], name: 'openaiApiKey' },
179
+ { value: openai?.['apiKey'], name: 'openai.apiKey' },
180
+ ], configPath);
181
+ if (openaiApiKey !== undefined)
182
+ normalized['openaiApiKey'] = openaiApiKey;
183
+ return normalized;
184
+ }
185
+ export async function loadConfig() {
186
+ const configPath = getConfigFilePath();
187
+ if (!configPath) {
188
+ return { values: {}, path: null };
189
+ }
190
+ let raw;
191
+ try {
192
+ raw = await fs.readFile(configPath, 'utf8');
193
+ }
194
+ catch (error) {
195
+ const err = error;
196
+ if (err && (err.code === 'ENOENT' || err.code === 'ENOTDIR')) {
197
+ return { values: {}, path: configPath };
198
+ }
199
+ warnConfig(`Failed to read config at ${configPath}: ${err?.message || String(error)}`);
200
+ return { values: {}, path: configPath };
201
+ }
202
+ let parsed;
203
+ try {
204
+ parsed = JSON.parse(raw);
205
+ }
206
+ catch (error) {
207
+ const err = error;
208
+ warnConfig(`Failed to parse config at ${configPath}: ${err?.message || String(error)}`);
209
+ return { values: {}, path: configPath };
210
+ }
211
+ return { values: normalizeConfig(parsed, configPath), path: configPath };
212
+ }
213
+ export async function saveConfig(configValues) {
214
+ const configPath = getConfigFilePath();
215
+ if (!configPath) {
216
+ throw new Error('Unable to resolve config file path (home directory not found).');
217
+ }
218
+ const dir = path.dirname(configPath);
219
+ await fs.mkdir(dir, { recursive: true });
220
+ const serialized = `${JSON.stringify(configValues, null, 2)}\n`;
221
+ await fs.writeFile(configPath, serialized, 'utf8');
222
+ return configPath;
223
+ }
224
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export declare const CONFIG_DIR_NAME = ".agentrix";
2
+ export declare const CONFIG_FILE_NAME = "config.json";
3
+ export declare const VALID_BRANCH_LLMS: Set<string>;
4
+ export declare const VALID_TERMINAL_SESSION_MODES: Set<string>;
5
+ export declare const VALID_COOKIE_SECURE_MODES: Set<string>;
6
+ export declare function getConfigFilePath(): string | null;
7
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/cli/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,eAAe,cAAc,CAAC;AAC3C,eAAO,MAAM,gBAAgB,gBAAgB,CAAC;AAE9C,eAAO,MAAM,iBAAiB,aAAyC,CAAC;AACxE,eAAO,MAAM,4BAA4B,aAAmC,CAAC;AAC7E,eAAO,MAAM,yBAAyB,aAAqC,CAAC;AAE5E,wBAAgB,iBAAiB,IAAI,MAAM,GAAG,IAAI,CAMjD"}
@@ -0,0 +1,15 @@
1
+ import os from 'node:os';
2
+ import path from 'node:path';
3
+ export const CONFIG_DIR_NAME = '.agentrix';
4
+ export const CONFIG_FILE_NAME = 'config.json';
5
+ export const VALID_BRANCH_LLMS = new Set(['codex', 'claude', 'cursor']);
6
+ export const VALID_TERMINAL_SESSION_MODES = new Set(['auto', 'tmux', 'pty']);
7
+ export const VALID_COOKIE_SECURE_MODES = new Set(['true', 'false', 'auto']);
8
+ export function getConfigFilePath() {
9
+ const homeDir = os.homedir();
10
+ if (!homeDir) {
11
+ return null;
12
+ }
13
+ return path.join(homeDir, CONFIG_DIR_NAME, CONFIG_FILE_NAME);
14
+ }
15
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/cli/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAC;AAC3C,MAAM,CAAC,MAAM,gBAAgB,GAAG,aAAa,CAAC;AAE9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAC7E,MAAM,CAAC,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAE5E,MAAM,UAAU,iBAAiB;IAC/B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,gBAAgB,CAAC,CAAC;AAC/D,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function printHelp(): void;
2
+ export declare function printVersion(): Promise<void>;
3
+ //# sourceMappingURL=help.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,IAAI,IAAI,CA4BhC;AAED,wBAAsB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAGlD"}
@@ -0,0 +1,35 @@
1
+ import { DEFAULT_HOST, DEFAULT_PORT } from '../server/index.js';
2
+ export function printHelp() {
3
+ const helpText = `Usage: agentrix [options]
4
+
5
+ Options:
6
+ -p, --port <number> Port to bind the HTTP server (default: ${DEFAULT_PORT})
7
+ -H, --host <host> Host interface to bind (default: ${DEFAULT_HOST})
8
+ -u, --ui <path> Path to the UI directory or entry file (default: bundled build)
9
+ -w, --workdir <path> Working directory root (default: current directory)
10
+ -P, --password <string> Password for login (default: randomly generated)
11
+ --default-branch <name> Override default branch used when syncing repositories
12
+ --cookie-secure <mode> Set session cookie security (true, false, auto)
13
+ --terminal-session-mode <mode> Terminal backend preference: auto, tmux, pty (default: auto)
14
+ --force-tmux Shortcut for --terminal-session-mode tmux (fail if tmux unavailable)
15
+ --no-tmux Shortcut for --terminal-session-mode pty (disable tmux usage)
16
+ --show-password Print the resolved password even if provided via config or flag
17
+ --codex-command <cmd> Command executed when launching Codex (default: codex)
18
+ --claude-command <cmd> Command executed when launching Claude (default: claude)
19
+ --cursor-command <cmd> Command executed when launching Cursor (default: cursor-agent)
20
+ --ide-command <cmd> (deprecated) Alias for --cursor-command
21
+ --vscode-command <cmd> Command executed when launching VS Code (default: code .)
22
+ --ngrok-api-key <token> Authtoken used when establishing an ngrok tunnel
23
+ --ngrok-domain <domain> Reserved ngrok domain to expose the server publicly
24
+ --openai-api-key <token> OpenAI API key forwarded to local LLM commands
25
+ --save Persist the effective configuration and exit
26
+ -h, --help Display this help message
27
+ -v, --version Output the version number
28
+ `;
29
+ process.stdout.write(helpText);
30
+ }
31
+ export async function printVersion() {
32
+ const pkg = await import('../../package.json', { with: { type: 'json' } });
33
+ process.stdout.write(`${pkg.default.version}\n`);
34
+ }
35
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEhE,MAAM,UAAU,SAAS;IACvB,MAAM,QAAQ,GAAG;;;kEAG+C,YAAY;4DAClB,YAAY;;;;;;;;;;;;;;;;;;;;;CAqBvE,CAAC;IACA,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,oBAAoB,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAC3E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,CAAC,CAAC;AACnD,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * CLI Module
3
+ *
4
+ * This module provides a clean, modular CLI interface following SOLID principles:
5
+ * - arg-parser: Command-line argument parsing
6
+ * - config: Configuration file loading, normalization, and saving
7
+ * - config-resolver: Merges CLI args with file config and resolves final values
8
+ * - validation: Reusable validation utilities for config values
9
+ * - plans-command: Handler for the 'plans' subcommand
10
+ * - server-starter: Server initialization and lifecycle management
11
+ * - help: Help text and version display
12
+ * - types: TypeScript type definitions
13
+ * - constants: Shared constants
14
+ */
15
+ export { parseArgs } from './arg-parser.js';
16
+ export { loadConfig, saveConfig, normalizeConfig } from './config.js';
17
+ export { resolveConfig, validateNgrokConfig, buildConfigToSave } from './config-resolver.js';
18
+ export { printHelp, printVersion } from './help.js';
19
+ export { handlePlansCommand } from './plans-command.js';
20
+ export { startAppServer } from './server-starter.js';
21
+ export * from './types.js';
22
+ export * from './constants.js';
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * CLI Module
3
+ *
4
+ * This module provides a clean, modular CLI interface following SOLID principles:
5
+ * - arg-parser: Command-line argument parsing
6
+ * - config: Configuration file loading, normalization, and saving
7
+ * - config-resolver: Merges CLI args with file config and resolves final values
8
+ * - validation: Reusable validation utilities for config values
9
+ * - plans-command: Handler for the 'plans' subcommand
10
+ * - server-starter: Server initialization and lifecycle management
11
+ * - help: Help text and version display
12
+ * - types: TypeScript type definitions
13
+ * - constants: Shared constants
14
+ */
15
+ export { parseArgs } from './arg-parser.js';
16
+ export { loadConfig, saveConfig, normalizeConfig } from './config.js';
17
+ export { resolveConfig, validateNgrokConfig, buildConfigToSave } from './config-resolver.js';
18
+ export { printHelp, printVersion } from './help.js';
19
+ export { handlePlansCommand } from './plans-command.js';
20
+ export { startAppServer } from './server-starter.js';
21
+ export * from './types.js';
22
+ export * from './constants.js';
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function printPlansHelp(): void;
2
+ export declare function handlePlansCommand(argv: string[]): Promise<void>;
3
+ //# sourceMappingURL=plans-command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plans-command.d.ts","sourceRoot":"","sources":["../../src/cli/plans-command.ts"],"names":[],"mappings":"AAKA,wBAAgB,cAAc,IAAI,IAAI,CAiBrC;AA2GD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+CtE"}
@@ -0,0 +1,151 @@
1
+ import path from 'node:path';
2
+ import { getWorktreePath } from '../core/git.js';
3
+ import { listPlansForWorktree, readPlanFromWorktree } from '../core/plan-storage.js';
4
+ export function printPlansHelp() {
5
+ const helpText = `Usage: agentrix plans <command> [options]
6
+
7
+ Commands:
8
+ list List saved plans for a worktree
9
+ show Print the contents of a saved plan
10
+
11
+ Options:
12
+ --org <name> Repository organisation
13
+ --repo <name> Repository name
14
+ --branch <branch> Branch/worktree name
15
+ --plan-id <file> Identifier returned by the list command (show only)
16
+ --limit <number> Maximum number of plans to list (list only)
17
+ --workdir <path> Override workdir root (defaults to current directory)
18
+ -h, --help Show this help message
19
+ `;
20
+ process.stdout.write(helpText);
21
+ }
22
+ function parsePlansOptions(args) {
23
+ const options = {
24
+ org: '',
25
+ repo: '',
26
+ branch: '',
27
+ planId: '',
28
+ limit: undefined,
29
+ workdir: process.cwd(),
30
+ help: false,
31
+ };
32
+ for (let i = 0; i < args.length; i += 1) {
33
+ const token = args[i];
34
+ switch (token) {
35
+ case '--org':
36
+ options.org = (args[++i] || '').trim();
37
+ break;
38
+ case '--repo':
39
+ options.repo = (args[++i] || '').trim();
40
+ break;
41
+ case '--branch':
42
+ options.branch = (args[++i] || '').trim();
43
+ break;
44
+ case '--plan-id':
45
+ options.planId = (args[++i] || '').trim();
46
+ break;
47
+ case '--limit': {
48
+ const value = args[++i];
49
+ if (!value) {
50
+ throw new Error('Expected value after --limit');
51
+ }
52
+ const parsed = Number.parseInt(value, 10);
53
+ if (!Number.isInteger(parsed) || parsed < 1) {
54
+ throw new Error('limit must be a positive integer');
55
+ }
56
+ options.limit = parsed;
57
+ break;
58
+ }
59
+ case '--workdir': {
60
+ const value = args[++i];
61
+ if (!value) {
62
+ throw new Error('Expected value after --workdir');
63
+ }
64
+ options.workdir = path.resolve(process.cwd(), value);
65
+ break;
66
+ }
67
+ case '-h':
68
+ case '--help':
69
+ options.help = true;
70
+ break;
71
+ default:
72
+ throw new Error(`Unknown option for plans command: ${token}`);
73
+ }
74
+ }
75
+ return options;
76
+ }
77
+ async function handleListCommand(options) {
78
+ const { worktreePath } = await getWorktreePath(options.workdir, options.org, options.repo, options.branch);
79
+ const plans = await listPlansForWorktree({
80
+ worktreePath,
81
+ branch: options.branch,
82
+ limit: options.limit,
83
+ });
84
+ if (plans.length === 0) {
85
+ process.stdout.write('No plans found.\n');
86
+ return;
87
+ }
88
+ plans.forEach((plan) => {
89
+ process.stdout.write(`${plan.createdAt}\t${plan.id}\n`);
90
+ });
91
+ }
92
+ async function handleShowCommand(options) {
93
+ if (!options.planId) {
94
+ process.stderr.write('planId is required for the show command.\n');
95
+ process.exitCode = 1;
96
+ return;
97
+ }
98
+ const { worktreePath } = await getWorktreePath(options.workdir, options.org, options.repo, options.branch);
99
+ const plan = await readPlanFromWorktree({
100
+ worktreePath,
101
+ branch: options.branch,
102
+ id: options.planId,
103
+ });
104
+ process.stdout.write(`# ${plan.id}\n\n${plan.content}`);
105
+ }
106
+ export async function handlePlansCommand(argv) {
107
+ const [command, ...rest] = argv;
108
+ if (!command || command === '--help' || command === '-h') {
109
+ printPlansHelp();
110
+ return;
111
+ }
112
+ if (command !== 'list' && command !== 'show') {
113
+ process.stderr.write(`Unknown plans command: ${command}\n`);
114
+ printPlansHelp();
115
+ process.exitCode = 1;
116
+ return;
117
+ }
118
+ let options;
119
+ try {
120
+ options = parsePlansOptions(rest);
121
+ }
122
+ catch (error) {
123
+ const err = error;
124
+ process.stderr.write(`${err.message}\n`);
125
+ process.exitCode = 1;
126
+ return;
127
+ }
128
+ if (options.help) {
129
+ printPlansHelp();
130
+ return;
131
+ }
132
+ if (!options.org || !options.repo || !options.branch) {
133
+ process.stderr.write('org, repo, and branch are required.\n');
134
+ process.exitCode = 1;
135
+ return;
136
+ }
137
+ try {
138
+ if (command === 'list') {
139
+ await handleListCommand(options);
140
+ }
141
+ else {
142
+ await handleShowCommand(options);
143
+ }
144
+ }
145
+ catch (error) {
146
+ const err = error;
147
+ process.stderr.write(`${err?.message || error}\n`);
148
+ process.exitCode = 1;
149
+ }
150
+ }
151
+ //# sourceMappingURL=plans-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plans-command.js","sourceRoot":"","sources":["../../src/cli/plans-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ interface ServerConfig {
2
+ uiPath: string;
3
+ port: number;
4
+ host: string;
5
+ workdir: string;
6
+ password: string | null;
7
+ showPassword: boolean;
8
+ defaultBranch: string | null;
9
+ defaultBranches: Record<string, string> | null;
10
+ cookieSecure: string;
11
+ codexCommand: string | null;
12
+ claudeCommand: string | null;
13
+ cursorCommand: string | null;
14
+ ideCommand: string | null;
15
+ vscodeCommand: string | null;
16
+ ngrokApiKey: string | null;
17
+ ngrokDomain: string | null;
18
+ automationApiKey: string | null;
19
+ openaiApiKey: string | null;
20
+ branchNameLlm: string | null;
21
+ planLlm: string | null;
22
+ terminalSessionMode: string;
23
+ }
24
+ export declare function startAppServer(config: ServerConfig): Promise<void>;
25
+ export {};
26
+ //# sourceMappingURL=server-starter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-starter.d.ts","sourceRoot":"","sources":["../../src/cli/server-starter.ts"],"names":[],"mappings":"AAEA,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAC/C,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAsExE"}