@shepai/cli 1.116.0-pr367.8e10c48 → 1.116.1-pr369.ea52340

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 (419) hide show
  1. package/dist/eslint.config.mjs +3 -0
  2. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts +14 -0
  3. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts.map +1 -1
  4. package/dist/packages/core/src/application/ports/output/services/index.d.ts +0 -2
  5. package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
  6. package/dist/packages/core/src/application/ports/output/services/worktree-service.interface.d.ts +2 -1
  7. package/dist/packages/core/src/application/ports/output/services/worktree-service.interface.d.ts.map +1 -1
  8. package/dist/packages/core/src/application/use-cases/features/cleanup-feature-worktree.use-case.d.ts.map +1 -1
  9. package/dist/packages/core/src/application/use-cases/features/cleanup-feature-worktree.use-case.js +6 -1
  10. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts +3 -1
  11. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  12. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +30 -2
  13. package/dist/packages/core/src/application/use-cases/features/delete-feature.use-case.js +1 -1
  14. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  15. package/dist/packages/core/src/infrastructure/di/container.js +4 -20
  16. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts.map +1 -1
  17. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.js +6 -1
  18. package/dist/packages/core/src/infrastructure/services/agents/common/executors/cursor-executor.service.d.ts +12 -1
  19. package/dist/packages/core/src/infrastructure/services/agents/common/executors/cursor-executor.service.d.ts.map +1 -1
  20. package/dist/packages/core/src/infrastructure/services/agents/common/executors/cursor-executor.service.js +98 -26
  21. package/dist/packages/core/src/infrastructure/services/agents/common/executors/gemini-cli-executor.service.d.ts.map +1 -1
  22. package/dist/packages/core/src/infrastructure/services/agents/common/executors/gemini-cli-executor.service.js +13 -1
  23. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts.map +1 -1
  24. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.js +1 -0
  25. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
  26. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +18 -1
  27. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.d.ts.map +1 -1
  28. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.js +1 -0
  29. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.d.ts.map +1 -1
  30. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.js +1 -0
  31. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/implement.node.d.ts.map +1 -1
  32. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/implement.node.js +1 -0
  33. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/ci-watch-fix-loop.d.ts.map +1 -1
  34. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/ci-watch-fix-loop.js +13 -1
  35. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts +4 -0
  36. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts.map +1 -1
  37. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.js +9 -17
  38. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts +2 -0
  39. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
  40. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +8 -4
  41. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/implement.prompt.js +7 -4
  42. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/repair.node.d.ts.map +1 -1
  43. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/repair.node.js +1 -0
  44. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/validate.node.d.ts.map +1 -1
  45. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/validate.node.js +1 -0
  46. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts +1 -0
  47. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts.map +1 -1
  48. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.js +71 -1
  49. package/dist/packages/core/src/infrastructure/services/git/worktree.service.d.ts +1 -1
  50. package/dist/packages/core/src/infrastructure/services/git/worktree.service.d.ts.map +1 -1
  51. package/dist/packages/core/src/infrastructure/services/git/worktree.service.js +5 -3
  52. package/dist/packages/core/src/infrastructure/services/ide-launchers/compute-worktree-path.d.ts.map +1 -1
  53. package/dist/packages/core/src/infrastructure/services/ide-launchers/compute-worktree-path.js +3 -1
  54. package/dist/packages/core/src/infrastructure/services/ide-launchers/json-driven-ide-launcher.service.d.ts.map +1 -1
  55. package/dist/packages/core/src/infrastructure/services/ide-launchers/json-driven-ide-launcher.service.js +5 -1
  56. package/dist/packages/core/src/infrastructure/services/pr-sync/pr-sync-watcher.service.d.ts +5 -0
  57. package/dist/packages/core/src/infrastructure/services/pr-sync/pr-sync-watcher.service.d.ts.map +1 -1
  58. package/dist/packages/core/src/infrastructure/services/pr-sync/pr-sync-watcher.service.js +56 -0
  59. package/dist/packages/core/src/infrastructure/services/webhooks/github-webhook-runtime.service.d.ts +43 -0
  60. package/dist/packages/core/src/infrastructure/services/webhooks/github-webhook-runtime.service.d.ts.map +1 -0
  61. package/dist/packages/core/src/infrastructure/services/webhooks/github-webhook-runtime.service.js +208 -0
  62. package/dist/packages/core/src/infrastructure/services/webhooks/github-webhook.service.d.ts +25 -0
  63. package/dist/packages/core/src/infrastructure/services/webhooks/github-webhook.service.d.ts.map +1 -0
  64. package/dist/packages/core/src/infrastructure/services/webhooks/github-webhook.service.js +99 -0
  65. package/dist/packages/core/src/infrastructure/services/webhooks/webhook-secret.service.d.ts +3 -0
  66. package/dist/packages/core/src/infrastructure/services/webhooks/webhook-secret.service.d.ts.map +1 -0
  67. package/dist/packages/core/src/infrastructure/services/webhooks/webhook-secret.service.js +19 -0
  68. package/dist/src/presentation/cli/commands/_serve.command.d.ts.map +1 -1
  69. package/dist/src/presentation/cli/commands/_serve.command.js +23 -0
  70. package/dist/src/presentation/cli/commands/ui.command.d.ts.map +1 -1
  71. package/dist/src/presentation/cli/commands/ui.command.js +15 -14
  72. package/dist/src/presentation/web/app/api/webhooks/github/route.d.ts +0 -14
  73. package/dist/src/presentation/web/app/api/webhooks/github/route.d.ts.map +1 -1
  74. package/dist/src/presentation/web/app/api/webhooks/github/route.js +26 -58
  75. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
  76. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +2 -2
  77. package/dist/src/presentation/web/dev-server.js +18 -15
  78. package/dist/tsconfig.build.tsbuildinfo +1 -1
  79. package/package.json +1 -1
  80. package/web/.next/BUILD_ID +1 -1
  81. package/web/.next/app-path-routes-manifest.json +1 -4
  82. package/web/.next/build-manifest.json +6 -6
  83. package/web/.next/fallback-build-manifest.json +2 -2
  84. package/web/.next/prerender-manifest.json +3 -3
  85. package/web/.next/required-server-files.js +2 -2
  86. package/web/.next/required-server-files.json +2 -2
  87. package/web/.next/routes-manifest.json +0 -18
  88. package/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +4 -4
  89. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +20 -20
  90. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  91. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  92. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  93. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/build-manifest.json +4 -4
  94. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +26 -26
  95. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +1 -1
  96. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  97. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  98. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +4 -4
  99. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +26 -26
  100. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
  101. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  102. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  103. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +4 -4
  104. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +18 -18
  105. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  106. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  107. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  108. package/web/.next/server/app/(dashboard)/create/page/build-manifest.json +4 -4
  109. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +20 -20
  110. package/web/.next/server/app/(dashboard)/create/page.js +1 -1
  111. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  112. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  113. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/build-manifest.json +4 -4
  114. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +26 -26
  115. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +1 -1
  116. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  117. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  118. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +4 -4
  119. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +26 -26
  120. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
  121. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  122. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  123. package/web/.next/server/app/(dashboard)/page/build-manifest.json +4 -4
  124. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +18 -18
  125. package/web/.next/server/app/(dashboard)/page.js +1 -1
  126. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  127. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  128. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +4 -4
  129. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +18 -18
  130. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  131. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  132. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  133. package/web/.next/server/app/_global-error/page/build-manifest.json +4 -4
  134. package/web/.next/server/app/_global-error.html +2 -2
  135. package/web/.next/server/app/_global-error.rsc +1 -1
  136. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  137. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  138. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  139. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  140. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  141. package/web/.next/server/app/_not-found/page/build-manifest.json +4 -4
  142. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  143. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  144. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  145. package/web/.next/server/app/api/agent-events/route.js +1 -1
  146. package/web/.next/server/app/api/agent-events/route.js.nft.json +1 -1
  147. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  148. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  149. package/web/.next/server/app/api/graph-data/route.js +1 -1
  150. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  151. package/web/.next/server/app/api/webhooks/github/route.js +2 -1
  152. package/web/.next/server/app/api/webhooks/github/route.js.nft.json +1 -1
  153. package/web/.next/server/app/settings/page/build-manifest.json +4 -4
  154. package/web/.next/server/app/settings/page/server-reference-manifest.json +5 -5
  155. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  156. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  157. package/web/.next/server/app/skills/page/build-manifest.json +4 -4
  158. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  159. package/web/.next/server/app/skills/page.js +1 -1
  160. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  161. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  162. package/web/.next/server/app/tools/page/build-manifest.json +4 -4
  163. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  164. package/web/.next/server/app/tools/page.js +1 -1
  165. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  166. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  167. package/web/.next/server/app/version/page/build-manifest.json +4 -4
  168. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  169. package/web/.next/server/app/version/page.js.nft.json +1 -1
  170. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  171. package/web/.next/server/app-paths-manifest.json +1 -4
  172. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_0ab2579c.js +4 -0
  173. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_0ab2579c.js.map +1 -0
  174. package/web/.next/server/chunks/[root-of-the-server]__1fd12120._.js +3 -0
  175. package/web/.next/server/chunks/{[root-of-the-server]__7d5492a0._.js.map → [root-of-the-server]__1fd12120._.js.map} +1 -1
  176. package/web/.next/server/chunks/[root-of-the-server]__67fab82a._.js +3 -0
  177. package/web/.next/server/chunks/{[root-of-the-server]__cd67a84c._.js.map → [root-of-the-server]__67fab82a._.js.map} +1 -1
  178. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  179. package/web/.next/server/chunks/[root-of-the-server]__ea37e7e1._.js +3 -0
  180. package/web/.next/server/chunks/[root-of-the-server]__ea37e7e1._.js.map +1 -0
  181. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  182. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  183. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_a1104008.js +1 -1
  184. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_a1104008.js.map +1 -1
  185. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_92642200.js +1 -1
  186. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_92642200.js.map +1 -1
  187. package/web/.next/server/chunks/ssr/[root-of-the-server]__039967e3._.js +1 -1
  188. package/web/.next/server/chunks/ssr/[root-of-the-server]__039967e3._.js.map +1 -1
  189. package/web/.next/server/chunks/ssr/[root-of-the-server]__07a39ff2._.js +1 -1
  190. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js +1 -1
  191. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js.map +1 -1
  192. package/web/.next/server/chunks/ssr/[root-of-the-server]__2773312c._.js +1 -1
  193. package/web/.next/server/chunks/ssr/[root-of-the-server]__2773312c._.js.map +1 -1
  194. package/web/.next/server/chunks/ssr/[root-of-the-server]__5836d236._.js +4 -0
  195. package/web/.next/server/chunks/ssr/{[root-of-the-server]__24dd0927._.js.map → [root-of-the-server]__5836d236._.js.map} +1 -1
  196. package/web/.next/server/chunks/ssr/[root-of-the-server]__5d87af2e._.js +1 -1
  197. package/web/.next/server/chunks/ssr/[root-of-the-server]__6367aea0._.js +3 -0
  198. package/web/.next/server/chunks/ssr/[root-of-the-server]__6367aea0._.js.map +1 -0
  199. package/web/.next/server/chunks/ssr/[root-of-the-server]__8cb3333c._.js +4 -0
  200. package/web/.next/server/chunks/ssr/[root-of-the-server]__8cb3333c._.js.map +1 -0
  201. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +2 -2
  202. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  203. package/web/.next/server/chunks/ssr/[root-of-the-server]__b1e68e34._.js +3 -0
  204. package/web/.next/server/chunks/ssr/[root-of-the-server]__b1e68e34._.js.map +1 -0
  205. package/web/.next/server/chunks/ssr/[root-of-the-server]__cbd8062c._.js +1 -1
  206. package/web/.next/server/chunks/ssr/[root-of-the-server]__cbd8062c._.js.map +1 -1
  207. package/web/.next/server/chunks/ssr/[root-of-the-server]__e70c5627._.js +1 -1
  208. package/web/.next/server/chunks/ssr/[root-of-the-server]__e70c5627._.js.map +1 -1
  209. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js +1 -1
  210. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js.map +1 -1
  211. package/web/.next/server/chunks/ssr/_135edb9c._.js +1 -1
  212. package/web/.next/server/chunks/ssr/_135edb9c._.js.map +1 -1
  213. package/web/.next/server/chunks/ssr/{node_modules__pnpm_747b43ac._.js → _1bb131c4._.js} +2 -2
  214. package/web/.next/server/chunks/ssr/_1bb131c4._.js.map +1 -0
  215. package/web/.next/server/chunks/ssr/_273d4632._.js +3 -0
  216. package/web/.next/server/chunks/ssr/_273d4632._.js.map +1 -0
  217. package/web/.next/server/chunks/ssr/_5fceca1d._.js +3 -0
  218. package/web/.next/server/chunks/ssr/{_28862ed0._.js.map → _5fceca1d._.js.map} +1 -1
  219. package/web/.next/server/chunks/ssr/_6d26a08f._.js +3 -0
  220. package/web/.next/server/chunks/ssr/_6d26a08f._.js.map +1 -0
  221. package/web/.next/server/chunks/ssr/{_383572e0._.js → _74b6a797._.js} +2 -2
  222. package/web/.next/server/chunks/ssr/_74b6a797._.js.map +1 -0
  223. package/web/.next/server/chunks/ssr/_8dacd1e7._.js +1 -1
  224. package/web/.next/server/chunks/ssr/_8dacd1e7._.js.map +1 -1
  225. package/web/.next/server/chunks/ssr/_a68d7e1c._.js +9 -0
  226. package/web/.next/server/chunks/ssr/_a68d7e1c._.js.map +1 -0
  227. package/web/.next/server/chunks/ssr/_b5fc318a._.js +3 -0
  228. package/web/.next/server/chunks/ssr/_b5fc318a._.js.map +1 -0
  229. package/web/.next/server/chunks/ssr/_bbb7316f._.js +3 -0
  230. package/web/.next/server/chunks/ssr/_bbb7316f._.js.map +1 -0
  231. package/web/.next/server/chunks/ssr/_cc77a143._.js +1 -1
  232. package/web/.next/server/chunks/ssr/_cc77a143._.js.map +1 -1
  233. package/web/.next/server/chunks/ssr/_f5316e67._.js +3 -0
  234. package/web/.next/server/chunks/ssr/_f5316e67._.js.map +1 -0
  235. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  236. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  237. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_888633e1.js +1 -1
  238. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_888633e1.js.map +1 -1
  239. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +1 -1
  240. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -1
  241. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +1 -1
  242. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -1
  243. package/web/.next/server/chunks/ssr/src_presentation_web_ce7cbc3c._.js +2 -2
  244. package/web/.next/server/chunks/ssr/src_presentation_web_ce7cbc3c._.js.map +1 -1
  245. package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js +1 -1
  246. package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js.map +1 -1
  247. package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js +1 -1
  248. package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js.map +1 -1
  249. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  250. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  251. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  252. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  253. package/web/.next/server/chunks/ssr/src_presentation_web_e2604413._.js +2 -2
  254. package/web/.next/server/chunks/ssr/src_presentation_web_e2604413._.js.map +1 -1
  255. package/web/.next/server/middleware-build-manifest.js +4 -4
  256. package/web/.next/server/pages/500.html +2 -2
  257. package/web/.next/server/server-reference-manifest.js +1 -1
  258. package/web/.next/server/server-reference-manifest.json +32 -54
  259. package/web/.next/static/chunks/0aebffb399bbb9ed.js +1 -0
  260. package/web/.next/static/chunks/2e8262cd524e9f0c.js +2 -0
  261. package/web/.next/static/chunks/{f60771797b58531f.js → 2fbf145a6771f83d.js} +1 -1
  262. package/web/.next/static/chunks/303a1217006489b9.js +1 -0
  263. package/web/.next/static/chunks/3a806cf059241bc9.js +1 -0
  264. package/web/.next/static/chunks/{51ca7e4cad588da4.js → 55f4d0cdbd44c85c.js} +1 -1
  265. package/web/.next/static/chunks/57b45edf86522369.css +1 -0
  266. package/web/.next/static/chunks/619af41a8d3232e5.js +1 -0
  267. package/web/.next/static/chunks/{e510518c9ca6e844.js → 64fff64abb23a98a.js} +1 -1
  268. package/web/.next/static/chunks/{98e3a7cf58fc912a.js → 672e3da3ad26005b.js} +1 -1
  269. package/web/.next/static/chunks/692809ab808fb5b0.js +1 -0
  270. package/web/.next/static/chunks/{c6dc0749ac370da4.js → 739ad28b1bd6139f.js} +1 -1
  271. package/web/.next/static/chunks/79cb8d40234e2dae.js +11 -0
  272. package/web/.next/static/chunks/80027601774ec110.js +1 -0
  273. package/web/.next/static/chunks/84a181ff3270fd9f.js +1 -0
  274. package/web/.next/static/chunks/b1f3c0e8e9872ef8.js +1 -0
  275. package/web/.next/static/chunks/e8c2d1bb5972372a.js +1 -0
  276. package/web/.next/static/chunks/ed3a602003bcb31b.js +1 -0
  277. package/web/.next/static/chunks/fcde0cbb2976b933.js +1 -0
  278. package/web/.next/static/chunks/{turbopack-b1685b5f87ad1d60.js → turbopack-426d9bc2450816ba.js} +1 -1
  279. package/dist/packages/core/src/application/ports/output/services/tunnel-service.interface.d.ts +0 -41
  280. package/dist/packages/core/src/application/ports/output/services/tunnel-service.interface.d.ts.map +0 -1
  281. package/dist/packages/core/src/application/ports/output/services/tunnel-service.interface.js +0 -14
  282. package/dist/packages/core/src/application/ports/output/services/webhook-service.interface.d.ts +0 -65
  283. package/dist/packages/core/src/application/ports/output/services/webhook-service.interface.d.ts.map +0 -1
  284. package/dist/packages/core/src/application/ports/output/services/webhook-service.interface.js +0 -10
  285. package/dist/packages/core/src/infrastructure/services/tunnel/cloudflare-tunnel.service.d.ts +0 -36
  286. package/dist/packages/core/src/infrastructure/services/tunnel/cloudflare-tunnel.service.d.ts.map +0 -1
  287. package/dist/packages/core/src/infrastructure/services/tunnel/cloudflare-tunnel.service.js +0 -148
  288. package/dist/packages/core/src/infrastructure/services/webhook/github-webhook.service.d.ts +0 -75
  289. package/dist/packages/core/src/infrastructure/services/webhook/github-webhook.service.d.ts.map +0 -1
  290. package/dist/packages/core/src/infrastructure/services/webhook/github-webhook.service.js +0 -372
  291. package/dist/packages/core/src/infrastructure/services/webhook/webhook-manager.service.d.ts +0 -82
  292. package/dist/packages/core/src/infrastructure/services/webhook/webhook-manager.service.d.ts.map +0 -1
  293. package/dist/packages/core/src/infrastructure/services/webhook/webhook-manager.service.js +0 -192
  294. package/dist/src/presentation/web/app/actions/load-webhook-status.d.ts +0 -3
  295. package/dist/src/presentation/web/app/actions/load-webhook-status.d.ts.map +0 -1
  296. package/dist/src/presentation/web/app/actions/load-webhook-status.js +0 -19
  297. package/dist/src/presentation/web/app/api/webhooks/deliveries/route.d.ts +0 -9
  298. package/dist/src/presentation/web/app/api/webhooks/deliveries/route.d.ts.map +0 -1
  299. package/dist/src/presentation/web/app/api/webhooks/deliveries/route.js +0 -27
  300. package/dist/src/presentation/web/app/api/webhooks/status/route.d.ts +0 -9
  301. package/dist/src/presentation/web/app/api/webhooks/status/route.d.ts.map +0 -1
  302. package/dist/src/presentation/web/app/api/webhooks/status/route.js +0 -26
  303. package/dist/src/presentation/web/app/webhooks/page.d.ts +0 -4
  304. package/dist/src/presentation/web/app/webhooks/page.d.ts.map +0 -1
  305. package/dist/src/presentation/web/app/webhooks/page.js +0 -9
  306. package/dist/src/presentation/web/components/features/webhooks/types.d.ts +0 -32
  307. package/dist/src/presentation/web/components/features/webhooks/types.d.ts.map +0 -1
  308. package/dist/src/presentation/web/components/features/webhooks/types.js +0 -1
  309. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.d.ts +0 -6
  310. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.d.ts.map +0 -1
  311. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.js +0 -38
  312. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.stories.d.ts +0 -9
  313. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.stories.d.ts.map +0 -1
  314. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.stories.js +0 -69
  315. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.d.ts +0 -7
  316. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.d.ts.map +0 -1
  317. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.js +0 -11
  318. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.stories.d.ts +0 -9
  319. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.stories.d.ts.map +0 -1
  320. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.stories.js +0 -31
  321. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.d.ts +0 -6
  322. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.d.ts.map +0 -1
  323. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.js +0 -21
  324. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.stories.d.ts +0 -9
  325. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.stories.d.ts.map +0 -1
  326. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.stories.js +0 -56
  327. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.d.ts +0 -6
  328. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.d.ts.map +0 -1
  329. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.js +0 -39
  330. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.stories.d.ts +0 -8
  331. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.stories.d.ts.map +0 -1
  332. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.stories.js +0 -59
  333. package/web/.next/server/app/api/webhooks/deliveries/route/app-paths-manifest.json +0 -3
  334. package/web/.next/server/app/api/webhooks/deliveries/route/build-manifest.json +0 -11
  335. package/web/.next/server/app/api/webhooks/deliveries/route/server-reference-manifest.json +0 -4
  336. package/web/.next/server/app/api/webhooks/deliveries/route.js +0 -6
  337. package/web/.next/server/app/api/webhooks/deliveries/route.js.map +0 -5
  338. package/web/.next/server/app/api/webhooks/deliveries/route.js.nft.json +0 -1
  339. package/web/.next/server/app/api/webhooks/deliveries/route_client-reference-manifest.js +0 -2
  340. package/web/.next/server/app/api/webhooks/status/route/app-paths-manifest.json +0 -3
  341. package/web/.next/server/app/api/webhooks/status/route/build-manifest.json +0 -11
  342. package/web/.next/server/app/api/webhooks/status/route/server-reference-manifest.json +0 -4
  343. package/web/.next/server/app/api/webhooks/status/route.js +0 -6
  344. package/web/.next/server/app/api/webhooks/status/route.js.map +0 -5
  345. package/web/.next/server/app/api/webhooks/status/route.js.nft.json +0 -1
  346. package/web/.next/server/app/api/webhooks/status/route_client-reference-manifest.js +0 -2
  347. package/web/.next/server/app/webhooks/page/app-paths-manifest.json +0 -3
  348. package/web/.next/server/app/webhooks/page/build-manifest.json +0 -18
  349. package/web/.next/server/app/webhooks/page/next-font-manifest.json +0 -6
  350. package/web/.next/server/app/webhooks/page/react-loadable-manifest.json +0 -1
  351. package/web/.next/server/app/webhooks/page/server-reference-manifest.json +0 -35
  352. package/web/.next/server/app/webhooks/page.js +0 -16
  353. package/web/.next/server/app/webhooks/page.js.map +0 -5
  354. package/web/.next/server/app/webhooks/page.js.nft.json +0 -1
  355. package/web/.next/server/app/webhooks/page_client-reference-manifest.js +0 -2
  356. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_deliveries_route_actions_d9e34c8d.js +0 -3
  357. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_deliveries_route_actions_d9e34c8d.js.map +0 -1
  358. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_status_route_actions_1a0d86a1.js +0 -3
  359. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_status_route_actions_1a0d86a1.js.map +0 -1
  360. package/web/.next/server/chunks/[root-of-the-server]__15e5d45c._.js +0 -3
  361. package/web/.next/server/chunks/[root-of-the-server]__15e5d45c._.js.map +0 -1
  362. package/web/.next/server/chunks/[root-of-the-server]__23be381e._.js +0 -3
  363. package/web/.next/server/chunks/[root-of-the-server]__23be381e._.js.map +0 -1
  364. package/web/.next/server/chunks/[root-of-the-server]__7d5492a0._.js +0 -3
  365. package/web/.next/server/chunks/[root-of-the-server]__9fc760c0._.js +0 -3
  366. package/web/.next/server/chunks/[root-of-the-server]__9fc760c0._.js.map +0 -1
  367. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +0 -3
  368. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_activity_22f9667f.js +0 -3
  369. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_activity_22f9667f.js.map +0 -1
  370. package/web/.next/server/chunks/ssr/[root-of-the-server]__24dd0927._.js +0 -4
  371. package/web/.next/server/chunks/ssr/[root-of-the-server]__5d847b7b._.js +0 -3
  372. package/web/.next/server/chunks/ssr/[root-of-the-server]__5d847b7b._.js.map +0 -1
  373. package/web/.next/server/chunks/ssr/[root-of-the-server]__87a7ae30._.js +0 -3
  374. package/web/.next/server/chunks/ssr/[root-of-the-server]__87a7ae30._.js.map +0 -1
  375. package/web/.next/server/chunks/ssr/[root-of-the-server]__89e8a5cc._.js +0 -4
  376. package/web/.next/server/chunks/ssr/[root-of-the-server]__89e8a5cc._.js.map +0 -1
  377. package/web/.next/server/chunks/ssr/[root-of-the-server]__920dccd5._.js +0 -4
  378. package/web/.next/server/chunks/ssr/[root-of-the-server]__920dccd5._.js.map +0 -1
  379. package/web/.next/server/chunks/ssr/[root-of-the-server]__a42f5a88._.js +0 -3
  380. package/web/.next/server/chunks/ssr/[root-of-the-server]__a42f5a88._.js.map +0 -1
  381. package/web/.next/server/chunks/ssr/_26b2c311._.js +0 -3
  382. package/web/.next/server/chunks/ssr/_26b2c311._.js.map +0 -1
  383. package/web/.next/server/chunks/ssr/_27dd06aa._.js +0 -3
  384. package/web/.next/server/chunks/ssr/_27dd06aa._.js.map +0 -1
  385. package/web/.next/server/chunks/ssr/_28862ed0._.js +0 -3
  386. package/web/.next/server/chunks/ssr/_383572e0._.js.map +0 -1
  387. package/web/.next/server/chunks/ssr/_809c53f6._.js +0 -9
  388. package/web/.next/server/chunks/ssr/_809c53f6._.js.map +0 -1
  389. package/web/.next/server/chunks/ssr/_9eea4c51._.js +0 -3
  390. package/web/.next/server/chunks/ssr/_9eea4c51._.js.map +0 -1
  391. package/web/.next/server/chunks/ssr/_a4899a76._.js +0 -3
  392. package/web/.next/server/chunks/ssr/_a4899a76._.js.map +0 -1
  393. package/web/.next/server/chunks/ssr/_b7eb93fc._.js +0 -4
  394. package/web/.next/server/chunks/ssr/_b7eb93fc._.js.map +0 -1
  395. package/web/.next/server/chunks/ssr/_e0a01382._.js +0 -3
  396. package/web/.next/server/chunks/ssr/_e0a01382._.js.map +0 -1
  397. package/web/.next/server/chunks/ssr/_f8b36e2c._.js +0 -3
  398. package/web/.next/server/chunks/ssr/_f8b36e2c._.js.map +0 -1
  399. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_webhooks_webhooks-page-client_tsx_b2662ea3._.js +0 -3
  400. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_webhooks_webhooks-page-client_tsx_b2662ea3._.js.map +0 -1
  401. package/web/.next/server/chunks/ssr/node_modules__pnpm_747b43ac._.js.map +0 -1
  402. package/web/.next/static/chunks/06b948216df083c1.js +0 -1
  403. package/web/.next/static/chunks/2bdc11361b8f2602.js +0 -1
  404. package/web/.next/static/chunks/31f35710932542ef.js +0 -1
  405. package/web/.next/static/chunks/385710675a1d06c9.js +0 -1
  406. package/web/.next/static/chunks/40b6bcf1a2de4a0f.js +0 -1
  407. package/web/.next/static/chunks/4714eb891fa4fd81.js +0 -1
  408. package/web/.next/static/chunks/523340641468b5f2.js +0 -1
  409. package/web/.next/static/chunks/5f6161ceb4263319.js +0 -1
  410. package/web/.next/static/chunks/604d36c352fff6c0.js +0 -2
  411. package/web/.next/static/chunks/9a7361e2365b2d8e.js +0 -1
  412. package/web/.next/static/chunks/9af45e885bd4ccef.js +0 -1
  413. package/web/.next/static/chunks/bbfb591f6aaa7255.css +0 -1
  414. package/web/.next/static/chunks/c7e793951b20a67f.js +0 -1
  415. package/web/.next/static/chunks/e9621b096a69e4e8.js +0 -11
  416. package/web/.next/static/chunks/f644140e21b75f61.js +0 -1
  417. /package/web/.next/static/{kQ3LD6zhRbOzb0MYK2n5b → uDyTlPWSuePQAmkQTwP4z}/_buildManifest.js +0 -0
  418. /package/web/.next/static/{kQ3LD6zhRbOzb0MYK2n5b → uDyTlPWSuePQAmkQTwP4z}/_clientMiddlewareManifest.json +0 -0
  419. /package/web/.next/static/{kQ3LD6zhRbOzb0MYK2n5b → uDyTlPWSuePQAmkQTwP4z}/_ssgManifest.js +0 -0
@@ -198,6 +198,9 @@ eslint.configs.recommended,
198
198
  },
199
199
  },
200
200
  settings: {
201
+ next: {
202
+ rootDir: 'src/presentation/web',
203
+ },
201
204
  react: {
202
205
  version: 'detect',
203
206
  },
@@ -281,6 +281,20 @@ export interface IGitPrService {
281
281
  * @returns True if featureBranch is an ancestor of baseBranch
282
282
  */
283
283
  verifyMerge(cwd: string, featureBranch: string, baseBranch: string, premergeBaseSha?: string): Promise<boolean>;
284
+ /**
285
+ * Perform a local squash merge: checkout baseBranch, merge --squash featureBranch,
286
+ * commit with the given message, and optionally delete the feature branch.
287
+ *
288
+ * This is a deterministic operation that does not require an AI agent.
289
+ *
290
+ * @param cwd - Working directory path (the original repository, NOT a worktree)
291
+ * @param featureBranch - Branch to merge from
292
+ * @param baseBranch - Branch to merge into
293
+ * @param commitMessage - Commit message for the squash merge
294
+ * @param hasRemote - Whether the repo has a remote (controls git fetch)
295
+ * @throws GitPrError with MERGE_CONFLICT or GIT_ERROR code
296
+ */
297
+ localMergeSquash(cwd: string, featureBranch: string, baseBranch: string, commitMessage: string, hasRemote?: boolean): Promise<void>;
284
298
  /**
285
299
  * Check if a PR has merge conflicts via `gh pr view --json mergeable`.
286
300
  *
@@ -1 +1 @@
1
- {"version":3,"file":"git-pr-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/git-pr-service.interface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-pr-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/git-pr-service.interface.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,4 @@ export { GitPrError, GitPrErrorCode } from './git-pr-service.interface.js';
17
17
  export type { IIdeLauncherService, LaunchIdeInput, LaunchIdeResult, LaunchIdeSuccess, LaunchIdeFailed, } from './ide-launcher-service.interface.js';
18
18
  export type { IDaemonService, DaemonState } from './daemon-service.interface.js';
19
19
  export type { IDeploymentService, DeploymentStatus } from './deployment-service.interface.js';
20
- export type { ITunnelService, TunnelUrlChangeHandler } from './tunnel-service.interface.js';
21
- export type { IWebhookService, WebhookEvent, WebhookValidationResult, } from './webhook-service.interface.js';
22
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAClG,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EACV,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACnF,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,YAAY,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChF,YAAY,EACV,aAAa,EACb,QAAQ,EACR,cAAc,EACd,WAAW,EACX,aAAa,EACb,cAAc,GACf,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC3E,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjF,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAC9F,YAAY,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5F,YAAY,EACV,eAAe,EACf,YAAY,EACZ,uBAAuB,GACxB,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAClG,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,wBAAwB,EACxB,4BAA4B,GAC7B,MAAM,uCAAuC,CAAC;AAC/C,YAAY,EACV,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,YAAY,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACnF,YAAY,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACzE,YAAY,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChF,YAAY,EACV,aAAa,EACb,QAAQ,EACR,cAAc,EACd,WAAW,EACX,aAAa,EACb,cAAc,GACf,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC3E,YAAY,EACV,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,qCAAqC,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjF,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC"}
@@ -53,11 +53,12 @@ export interface IWorktreeService {
53
53
  /**
54
54
  * Remove an existing worktree.
55
55
  *
56
+ * @param repoPath - Absolute path to the main repository (used as cwd for git)
56
57
  * @param worktreePath - Path to the worktree to remove
57
58
  * @param force - When true, passes --force to git worktree remove (handles dirty worktrees)
58
59
  * @throws WorktreeError if worktree not found or has uncommitted changes
59
60
  */
60
- remove(worktreePath: string, force?: boolean): Promise<void>;
61
+ remove(repoPath: string, worktreePath: string, force?: boolean): Promise<void>;
61
62
  /**
62
63
  * List all worktrees in a repository.
63
64
  *
@@ -1 +1 @@
1
- {"version":3,"file":"worktree-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/worktree-service.interface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,oBAAY,iBAAiB;IAC3B,cAAc,mBAAmB;IACjC,aAAa,kBAAkB;IAC/B,SAAS,cAAc;IACvB,cAAc,mBAAmB;IACjC,SAAS,cAAc;CACxB;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;aAGpB,IAAI,EAAE,iBAAiB;aACvB,KAAK,CAAC,EAAE,KAAK;gBAF7B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,iBAAiB,EACvB,KAAK,CAAC,EAAE,KAAK,YAAA;CAKhC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;OASG;IACH,MAAM,CACJ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB;;;;;;OAMG;IACH,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7D;;;;;OAKG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAEhD;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3D;;;;;;OAMG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjE;;;;;;OAMG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvE;;;;;;OAMG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAE1D;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC;;;;;;;OAOG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD"}
1
+ {"version":3,"file":"worktree-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/worktree-service.interface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,oBAAY,iBAAiB;IAC3B,cAAc,mBAAmB;IACjC,aAAa,kBAAkB;IAC/B,SAAS,cAAc;IACvB,cAAc,mBAAmB;IACjC,SAAS,cAAc;CACxB;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;aAGpB,IAAI,EAAE,iBAAiB;aACvB,KAAK,CAAC,EAAE,KAAK;gBAF7B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,iBAAiB,EACvB,KAAK,CAAC,EAAE,KAAK,YAAA;CAKhC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;OASG;IACH,MAAM,CACJ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE/E;;;;;OAKG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAEhD;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3D;;;;;;OAMG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjE;;;;;;OAMG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvE;;;;;;OAMG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAE1D;;;;OAIG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEvC;;;;;;;OAOG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD"}
@@ -1 +1 @@
1
- {"version":3,"file":"cleanup-feature-worktree.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/cleanup-feature-worktree.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAClG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yDAAyD,CAAC;AAE7F,qBACa,6BAA6B;IAER,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC9B,OAAO,CAAC,QAAQ,CAAC,eAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAFP,WAAW,EAAE,kBAAkB,EACjC,eAAe,EAAE,gBAAgB,EACpC,YAAY,EAAE,aAAa;IAGjE,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA4ChD"}
1
+ {"version":3,"file":"cleanup-feature-worktree.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/cleanup-feature-worktree.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAClG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yDAAyD,CAAC;AAE7F,qBACa,6BAA6B;IAER,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC9B,OAAO,CAAC,QAAQ,CAAC,eAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAFP,WAAW,EAAE,kBAAkB,EACjC,eAAe,EAAE,gBAAgB,EACpC,YAAY,EAAE,aAAa;IAGjE,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAgDhD"}
@@ -22,6 +22,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
22
22
  return function (target, key) { decorator(target, key, paramIndex); }
23
23
  };
24
24
  import { injectable, inject } from 'tsyringe';
25
+ import { SdlcLifecycle } from '../../../domain/generated/output.js';
25
26
  let CleanupFeatureWorktreeUseCase = class CleanupFeatureWorktreeUseCase {
26
27
  featureRepo;
27
28
  worktreeService;
@@ -35,11 +36,15 @@ let CleanupFeatureWorktreeUseCase = class CleanupFeatureWorktreeUseCase {
35
36
  const feature = await this.featureRepo.findById(featureId);
36
37
  if (!feature)
37
38
  return;
39
+ // Idempotency guard: skip cleanup if already in Deleting lifecycle
40
+ // (another code path — e.g. DeleteFeatureUseCase — already handles cleanup)
41
+ if (feature.lifecycle === SdlcLifecycle.Deleting)
42
+ return;
38
43
  // Step 1: Unlink the git worktree (directory contents are preserved on disk)
39
44
  const worktreePath = feature.worktreePath ??
40
45
  this.worktreeService.getWorktreePath(feature.repositoryPath, feature.branch);
41
46
  try {
42
- await this.worktreeService.remove(worktreePath, true);
47
+ await this.worktreeService.remove(feature.repositoryPath, worktreePath, true);
43
48
  }
44
49
  catch (err) {
45
50
  // eslint-disable-next-line no-console
@@ -23,6 +23,7 @@ import type { IAgentRunRepository } from '../../../ports/output/agents/agent-run
23
23
  import type { ISpecInitializerService } from '../../../ports/output/services/spec-initializer.interface.js';
24
24
  import type { IRepositoryRepository } from '../../../ports/output/repositories/repository-repository.interface.js';
25
25
  import type { IGitPrService } from '../../../ports/output/services/git-pr-service.interface.js';
26
+ import type { IAgentValidator } from '../../../ports/output/agents/agent-validator.interface.js';
26
27
  import { AttachmentStorageService } from '../../../../infrastructure/services/attachment-storage.service.js';
27
28
  import { MetadataGenerator } from './metadata-generator.js';
28
29
  import { SlugResolver } from './slug-resolver.js';
@@ -38,7 +39,8 @@ export declare class CreateFeatureUseCase {
38
39
  private readonly repositoryRepo;
39
40
  private readonly gitPrService;
40
41
  private readonly attachmentStorage;
41
- constructor(featureRepo: IFeatureRepository, worktreeService: IWorktreeService, agentProcess: IFeatureAgentProcessService, runRepository: IAgentRunRepository, specInitializer: ISpecInitializerService, metadataGenerator: MetadataGenerator, slugResolver: SlugResolver, repositoryRepo: IRepositoryRepository, gitPrService: IGitPrService, attachmentStorage: AttachmentStorageService);
42
+ private readonly agentValidator;
43
+ constructor(featureRepo: IFeatureRepository, worktreeService: IWorktreeService, agentProcess: IFeatureAgentProcessService, runRepository: IAgentRunRepository, specInitializer: ISpecInitializerService, metadataGenerator: MetadataGenerator, slugResolver: SlugResolver, repositoryRepo: IRepositoryRepository, gitPrService: IGitPrService, attachmentStorage: AttachmentStorageService, agentValidator: IAgentValidator);
42
44
  /**
43
45
  * Full synchronous execution: creates record, initializes worktree/spec, spawns agent.
44
46
  * Used by the CLI which shows a spinner and needs everything done before returning.
@@ -1 +1 @@
1
- {"version":3,"file":"create-feature.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/use-cases/features/create/create-feature.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAMtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oEAAoE,CAAC;AAC7G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8DAA8D,CAAC;AACrG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iEAAiE,CAAC;AACnH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gEAAgE,CAAC;AAC1G,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8DAA8D,CAAC;AAC5G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uEAAuE,CAAC;AACnH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4DAA4D,CAAC;AAGhG,OAAO,EAAE,wBAAwB,EAAE,MAAM,mEAAmE,CAAC;AAC7G,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE9F,qBACa,oBAAoB;IAG7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAElC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;gBAlBjB,WAAW,EAAE,kBAAkB,EAE/B,eAAe,EAAE,gBAAgB,EAEjC,YAAY,EAAE,2BAA2B,EAEzC,aAAa,EAAE,mBAAmB,EAElC,eAAe,EAAE,uBAAuB,EAExC,iBAAiB,EAAE,iBAAiB,EAEpC,YAAY,EAAE,YAAY,EAE1B,cAAc,EAAE,qBAAqB,EAErC,YAAY,EAAE,aAAa,EAE3B,iBAAiB,EAAE,wBAAwB;IAG9D;;;OAGG;IACG,OAAO,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAMtE;;;;OAIG;IACG,YAAY,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAyH1E;;;OAGG;IACG,kBAAkB,CACtB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,kBAAkB,EACzB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,CAAC;CAoG1D"}
1
+ {"version":3,"file":"create-feature.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/use-cases/features/create/create-feature.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAMtE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oEAAoE,CAAC;AAC7G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8DAA8D,CAAC;AACrG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iEAAiE,CAAC;AACnH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gEAAgE,CAAC;AAC1G,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,8DAA8D,CAAC;AAC5G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uEAAuE,CAAC;AACnH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4DAA4D,CAAC;AAChG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2DAA2D,CAAC;AAGjG,OAAO,EAAE,wBAAwB,EAAE,MAAM,mEAAmE,CAAC;AAC7G,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE9F,qBACa,oBAAoB;IAG7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAEhC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAElC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAE7B,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAElC,OAAO,CAAC,QAAQ,CAAC,cAAc;gBApBd,WAAW,EAAE,kBAAkB,EAE/B,eAAe,EAAE,gBAAgB,EAEjC,YAAY,EAAE,2BAA2B,EAEzC,aAAa,EAAE,mBAAmB,EAElC,eAAe,EAAE,uBAAuB,EAExC,iBAAiB,EAAE,iBAAiB,EAEpC,YAAY,EAAE,YAAY,EAE1B,cAAc,EAAE,qBAAqB,EAErC,YAAY,EAAE,aAAa,EAE3B,iBAAiB,EAAE,wBAAwB,EAE3C,cAAc,EAAE,eAAe;IAGlD;;;OAGG;IACG,OAAO,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAMtE;;;;OAIG;IACG,YAAY,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAyH1E;;;OAGG;IACG,kBAAkB,CACtB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,kBAAkB,EACzB,WAAW,EAAE,OAAO,GACnB,OAAO,CAAC;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,CAAC;CAgI1D"}
@@ -46,7 +46,8 @@ let CreateFeatureUseCase = class CreateFeatureUseCase {
46
46
  repositoryRepo;
47
47
  gitPrService;
48
48
  attachmentStorage;
49
- constructor(featureRepo, worktreeService, agentProcess, runRepository, specInitializer, metadataGenerator, slugResolver, repositoryRepo, gitPrService, attachmentStorage) {
49
+ agentValidator;
50
+ constructor(featureRepo, worktreeService, agentProcess, runRepository, specInitializer, metadataGenerator, slugResolver, repositoryRepo, gitPrService, attachmentStorage, agentValidator) {
50
51
  this.featureRepo = featureRepo;
51
52
  this.worktreeService = worktreeService;
52
53
  this.agentProcess = agentProcess;
@@ -57,6 +58,7 @@ let CreateFeatureUseCase = class CreateFeatureUseCase {
57
58
  this.repositoryRepo = repositoryRepo;
58
59
  this.gitPrService = gitPrService;
59
60
  this.attachmentStorage = attachmentStorage;
61
+ this.agentValidator = agentValidator;
60
62
  }
61
63
  /**
62
64
  * Full synchronous execution: creates record, initializes worktree/spec, spawns agent.
@@ -241,6 +243,31 @@ let CreateFeatureUseCase = class CreateFeatureUseCase {
241
243
  await this.featureRepo.update(updatedFeature);
242
244
  // Spawn agent if not blocked
243
245
  if (shouldSpawn) {
246
+ // Validate that the configured agent is available before spawning
247
+ // a background worker — prevents the feature from getting stuck
248
+ // with a silent failure in the detached worker process.
249
+ // Skip validation when using mock executor (E2E tests, CI without real agents).
250
+ const settings = getSettings();
251
+ const effectiveAgentType = input.agentType ?? settings.agent.type;
252
+ const isMockExecutor = process.env.SHEP_MOCK_EXECUTOR === '1';
253
+ const validation = isMockExecutor
254
+ ? { available: true }
255
+ : await this.agentValidator.isAvailable(effectiveAgentType);
256
+ if (!validation.available) {
257
+ // Mark the agent run as failed so the UI shows the error
258
+ await this.runRepository.updateStatus(feature.agentRunId, AgentRunStatus.failed, {
259
+ error: `Agent "${effectiveAgentType}" is not available: ${validation.error}`,
260
+ completedAt: new Date(),
261
+ updatedAt: new Date(),
262
+ });
263
+ // Update feature lifecycle to Started so it doesn't appear as actively running
264
+ await this.featureRepo.update({
265
+ ...updatedFeature,
266
+ lifecycle: SdlcLifecycle.Started,
267
+ updatedAt: new Date(),
268
+ });
269
+ throw new Error(`Agent "${effectiveAgentType}" is not available. ${validation.error ?? 'Please install it and try again.'}`);
270
+ }
244
271
  const agentRun = await this.runRepository.findById(feature.agentRunId);
245
272
  this.agentProcess.spawn(feature.id, feature.agentRunId, effectiveRepoPath, specDir, worktreePath, {
246
273
  ...(input.approvalGates ? { approvalGates: input.approvalGates } : {}),
@@ -267,7 +294,8 @@ CreateFeatureUseCase = __decorate([
267
294
  __param(7, inject('IRepositoryRepository')),
268
295
  __param(8, inject('IGitPrService')),
269
296
  __param(9, inject(AttachmentStorageService)),
297
+ __param(10, inject('IAgentValidator')),
270
298
  __metadata("design:paramtypes", [Object, Object, Object, Object, Object, MetadataGenerator,
271
- SlugResolver, Object, Object, AttachmentStorageService])
299
+ SlugResolver, Object, Object, AttachmentStorageService, Object])
272
300
  ], CreateFeatureUseCase);
273
301
  export { CreateFeatureUseCase };
@@ -126,7 +126,7 @@ let DeleteFeatureUseCase = class DeleteFeatureUseCase {
126
126
  const worktreePath = feature.worktreePath ??
127
127
  this.worktreeService.getWorktreePath(feature.repositoryPath, feature.branch);
128
128
  try {
129
- await this.worktreeService.remove(worktreePath, true);
129
+ await this.worktreeService.remove(feature.repositoryPath, worktreePath, true);
130
130
  }
131
131
  catch {
132
132
  // Worktree might already be removed - that's fine
@@ -1 +1 @@
1
- {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/di/container.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAuHrC;;;;;;GAMG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,SAAS,CAAC,CA6UrE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/di/container.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAmHrC;;;;;;GAMG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,SAAS,CAAC,CA6TrE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -27,8 +27,6 @@ import { JsonDrivenIdeLauncherService } from '../services/ide-launchers/json-dri
27
27
  import { DaemonPidService } from '../services/daemon/daemon-pid.service.js';
28
28
  import { DeploymentService } from '../services/deployment/deployment.service.js';
29
29
  import { AttachmentStorageService } from '../services/attachment-storage.service.js';
30
- import { CloudflareTunnelService } from '../services/tunnel/cloudflare-tunnel.service.js';
31
- import { GitHubWebhookService } from '../services/webhook/github-webhook.service.js';
32
30
  import { AgentExecutorFactory } from '../services/agents/common/agent-executor-factory.service.js';
33
31
  import { AgentExecutorProvider } from '../services/agents/common/agent-executor-provider.service.js';
34
32
  import { StructuredAgentCallerService } from '../services/agents/common/structured-agent-caller.service.js';
@@ -171,18 +169,6 @@ export async function initializeContainer() {
171
169
  container.register('AttachmentStorageService', { useToken: AttachmentStorageService });
172
170
  const deploymentService = new DeploymentService();
173
171
  container.registerInstance('IDeploymentService', deploymentService);
174
- // Register tunnel and webhook services
175
- container.register('ITunnelService', {
176
- useFactory: () => new CloudflareTunnelService(),
177
- });
178
- container.register('IWebhookService', {
179
- useFactory: (c) => {
180
- const featureRepo = c.resolve('IFeatureRepository');
181
- const gitPrService = c.resolve('IGitPrService');
182
- const notifService = c.resolve('INotificationService');
183
- return new GitHubWebhookService(featureRepo, gitPrService, notifService, execFn);
184
- },
185
- });
186
172
  // Register agent infrastructure
187
173
  container.register('IAgentRunRepository', {
188
174
  useFactory: (c) => {
@@ -204,15 +190,13 @@ export async function initializeContainer() {
204
190
  else {
205
191
  container.register('IAgentExecutorFactory', {
206
192
  useFactory: () => {
207
- // Wrap spawn to ensure stdio is explicitly set to 'pipe'.
208
- // Do NOT force shell: true here — each executor controls its own spawn
209
- // options via buildSpawnOptions(). Forcing shell: true globally causes
210
- // DEP0190 argument escaping issues on Windows that mangle long prompts.
211
- // Executors that need shell: true (e.g. cursor for .cmd scripts) set it
212
- // themselves; native executables (claude, gemini) must NOT use shell: true.
193
+ // Wrap spawn with sensible defaults: stdio piped and windowsHide on Win32.
194
+ // Each executor controls its own `shell` option — cursor needs shell: true
195
+ // for .cmd scripts, but claude-code must NOT use shell (DEP0190 / prompt mangling).
213
196
  const spawnWithPipe = (command, args, options) => {
214
197
  return spawn(command, args, {
215
198
  stdio: 'pipe',
199
+ ...(process.platform === 'win32' ? { windowsHide: true } : {}),
216
200
  ...options,
217
201
  });
218
202
  };
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code-executor.service.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,4EAA4E,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAajD;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,cAAc;IAMlD,OAAO,CAAC,QAAQ,CAAC,KAAK;IALlC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAA8B;IAE3D,4EAA4E;IAC5E,OAAO,CAAC,MAAM,CAAS;gBAEM,KAAK,EAAE,aAAa;IAEjD,4EAA4E;IAC5E,OAAO,CAAC,GAAG;IAML,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAmHtF,aAAa,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,qBAAqB,GAC9B,aAAa,CAAC,yBAAyB,CAAC;IA+F3C;;;OAGG;IACH,OAAO,CAAC,cAAc;IAmCtB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAI/C,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,eAAe;IAiCvB,OAAO,CAAC,eAAe;CAkExB"}
1
+ {"version":3,"file":"claude-code-executor.service.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,4EAA4E,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAajD;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,cAAc;IAMlD,OAAO,CAAC,QAAQ,CAAC,KAAK;IALlC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAA8B;IAE3D,4EAA4E;IAC5E,OAAO,CAAC,MAAM,CAAS;gBAEM,KAAK,EAAE,aAAa;IAEjD,4EAA4E;IAC5E,OAAO,CAAC,GAAG;IAML,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA2HtF,aAAa,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,qBAAqB,GAC9B,aAAa,CAAC,yBAAyB,CAAC;IA+F3C;;;OAGG;IACH,OAAO,CAAC,cAAc;IAmCtB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAI/C,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,eAAe;IAUvB,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,eAAe;IAiCvB,OAAO,CAAC,eAAe;CAkExB"}
@@ -107,7 +107,12 @@ export class ClaudeCodeExecutorService {
107
107
  this.log(`Process error event: ${error.message}`);
108
108
  if (timeoutId)
109
109
  clearTimeout(timeoutId);
110
- reject(error);
110
+ if (error.code === 'ENOENT') {
111
+ reject(new Error('Claude Code CLI ("claude") not found. Please install it: https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview'));
112
+ }
113
+ else {
114
+ reject(error);
115
+ }
111
116
  });
112
117
  proc.on('close', (code) => {
113
118
  // Flush remaining buffer
@@ -32,7 +32,18 @@ export declare class CursorExecutorService implements IAgentExecutor {
32
32
  private logStreamEvent;
33
33
  private buildArgs;
34
34
  private buildStreamArgs;
35
- private buildSpawnOptions;
35
+ /**
36
+ * Spawn the agent process, handling Windows specially via PowerShell.
37
+ *
38
+ * On Windows, cursor CLI ships as `agent.cmd` which requires `shell: true`,
39
+ * but cmd.exe mangles long `-p` arguments (8191-char limit + special chars).
40
+ * Solution: write prompt to a temp file, invoke agent via PowerShell which
41
+ * reads the file and passes the content as `-p`. PowerShell handles long
42
+ * strings natively (32K limit) and doesn't mangle arguments.
43
+ *
44
+ * On Linux/macOS, spawn `agent` directly — no shell needed.
45
+ */
46
+ private spawnAgent;
36
47
  private parseStreamLine;
37
48
  }
38
49
  //# sourceMappingURL=cursor-executor.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cursor-executor.service.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/common/executors/cursor-executor.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,4EAA4E,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAuBjD;;;GAGG;AACH,qBAAa,qBAAsB,YAAW,cAAc;IAM9C,OAAO,CAAC,QAAQ,CAAC,KAAK;IALlC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAyB;IAEtD,4EAA4E;IAC5E,OAAO,CAAC,MAAM,CAAS;gBAEM,KAAK,EAAE,aAAa;IAEjD,4EAA4E;IAC5E,OAAO,CAAC,GAAG;IAMX,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAIzC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA0GtF,aAAa,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,qBAAqB,GAC9B,aAAa,CAAC,yBAAyB,CAAC;IA8E3C;;OAEG;IACH,OAAO,CAAC,cAAc;IAkCtB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,iBAAiB;IAoBzB,OAAO,CAAC,eAAe;CAgDxB"}
1
+ {"version":3,"file":"cursor-executor.service.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/common/executors/cursor-executor.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,2CAA2C,CAAC;AACzF,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,4EAA4E,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAuBjD;;;GAGG;AACH,qBAAa,qBAAsB,YAAW,cAAc;IAM9C,OAAO,CAAC,QAAQ,CAAC,KAAK;IALlC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAyB;IAEtD,4EAA4E;IAC5E,OAAO,CAAC,MAAM,CAAS;gBAEM,KAAK,EAAE,aAAa;IAEjD,4EAA4E;IAC5E,OAAO,CAAC,GAAG;IAMX,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAIzC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAoItF,aAAa,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,qBAAqB,GAC9B,aAAa,CAAC,yBAAyB,CAAC;IAkF3C;;OAEG;IACH,OAAO,CAAC,cAAc;IAkCtB,OAAO,CAAC,SAAS;IASjB,OAAO,CAAC,eAAe;IAOvB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,UAAU;IA2DlB,OAAO,CAAC,eAAe;CAgDxB"}
@@ -8,6 +8,10 @@
8
8
  * Uses constructor dependency injection for the spawn function
9
9
  * to enable testability without mocking node:child_process directly.
10
10
  */
11
+ import { writeFileSync, unlinkSync } from 'node:fs';
12
+ import { execFileSync } from 'node:child_process';
13
+ import { tmpdir } from 'node:os';
14
+ import { join } from 'node:path';
11
15
  import { getCurrentPhase, getLogPrefix } from '../../feature-agent/log-context.js';
12
16
  import { IS_WINDOWS } from '../../../../platform.js';
13
17
  /**
@@ -53,13 +57,7 @@ export class CursorExecutorService {
53
57
  // Use json (not stream-json) for execute() — outputs a single JSON result line.
54
58
  // stream-json is unreliable on Windows where shell: true can mangle args.
55
59
  const args = this.buildArgs(prompt, options);
56
- const spawnOpts = this.buildSpawnOptions(options);
57
- this.log(`Spawning: agent ${args.map((a) => (a.length > 80 ? `${a.slice(0, 77)}...` : a)).join(' ')}`);
58
- this.log(`Spawn cwd: ${spawnOpts.cwd ?? '(inherited)'}`);
59
- const proc = this.spawn('agent', args, spawnOpts);
60
- this.log(`Subprocess PID: ${proc.pid ?? 'undefined (spawn may have failed)'}`);
61
- if (proc.stdin)
62
- proc.stdin.end();
60
+ const { proc, tmpFile } = this.spawnAgent(prompt, args, options);
63
61
  return new Promise((resolve, reject) => {
64
62
  let lineBuffer = '';
65
63
  let stderr = '';
@@ -73,7 +71,21 @@ export class CursorExecutorService {
73
71
  if (options?.timeout) {
74
72
  timeoutId = setTimeout(() => {
75
73
  timedOut = true;
76
- proc.kill();
74
+ // On Windows, proc.kill() may not kill the entire process tree
75
+ // (PowerShell + child agent process). Use taskkill /T for tree kill.
76
+ if (process.platform === 'win32' && proc.pid) {
77
+ try {
78
+ execFileSync('taskkill', ['/F', '/T', '/PID', String(proc.pid)], {
79
+ stdio: 'ignore',
80
+ });
81
+ }
82
+ catch {
83
+ proc.kill();
84
+ }
85
+ }
86
+ else {
87
+ proc.kill();
88
+ }
77
89
  }, options.timeout);
78
90
  }
79
91
  const processLine = (line) => {
@@ -118,14 +130,35 @@ export class CursorExecutorService {
118
130
  const data = chunk.toString();
119
131
  stderr += data;
120
132
  this.log(`stderr: ${data.trimEnd()}`);
133
+ // Detect fatal errors early so callers don't waste time retrying
134
+ if (data.includes('Cannot use this model')) {
135
+ if (timeoutId)
136
+ clearTimeout(timeoutId);
137
+ proc.kill();
138
+ reject(new Error(data.trim()));
139
+ }
121
140
  });
122
141
  proc.on('error', (error) => {
123
142
  this.log(`Process error event: ${error.message}`);
124
143
  if (timeoutId)
125
144
  clearTimeout(timeoutId);
126
- reject(error);
145
+ if (error.code === 'ENOENT') {
146
+ reject(new Error('Cursor agent CLI not found. Please install Cursor and ensure the "cursor" command is available on PATH.'));
147
+ }
148
+ else {
149
+ reject(error);
150
+ }
127
151
  });
128
152
  proc.on('close', (code) => {
153
+ // Clean up temp file on Windows
154
+ if (tmpFile) {
155
+ try {
156
+ unlinkSync(tmpFile);
157
+ }
158
+ catch {
159
+ /* already removed or inaccessible */
160
+ }
161
+ }
129
162
  if (lineBuffer.trim())
130
163
  processLine(lineBuffer.trim());
131
164
  // Use raw text as fallback when no JSON result was captured
@@ -152,10 +185,7 @@ export class CursorExecutorService {
152
185
  }
153
186
  async *executeStream(prompt, options) {
154
187
  const args = this.buildStreamArgs(prompt, options);
155
- const spawnOpts = this.buildSpawnOptions(options);
156
- const proc = this.spawn('agent', args, spawnOpts);
157
- if (proc.stdin)
158
- proc.stdin.end();
188
+ const { proc, tmpFile } = this.spawnAgent(prompt, args, options);
159
189
  let lineBuffer = '';
160
190
  let stderr = '';
161
191
  const queue = [];
@@ -196,6 +226,14 @@ export class CursorExecutorService {
196
226
  enqueue(null);
197
227
  });
198
228
  proc.on('close', (code) => {
229
+ if (tmpFile) {
230
+ try {
231
+ unlinkSync(tmpFile);
232
+ }
233
+ catch {
234
+ /* already removed */
235
+ }
236
+ }
199
237
  if (lineBuffer.trim()) {
200
238
  const event = this.parseStreamLine(lineBuffer.trim());
201
239
  if (event)
@@ -271,21 +309,55 @@ export class CursorExecutorService {
271
309
  args[fmtIdx + 1] = 'stream-json';
272
310
  return args;
273
311
  }
274
- buildSpawnOptions(options) {
275
- const spawnOpts = {};
276
- if (options?.cwd)
277
- spawnOpts.cwd = options.cwd;
278
- // On Windows, the cursor agent is a .cmd script which requires shell: true
279
- // to resolve via PATH. Also hide the console window.
312
+ /**
313
+ * Spawn the agent process, handling Windows specially via PowerShell.
314
+ *
315
+ * On Windows, cursor CLI ships as `agent.cmd` which requires `shell: true`,
316
+ * but cmd.exe mangles long `-p` arguments (8191-char limit + special chars).
317
+ * Solution: write prompt to a temp file, invoke agent via PowerShell which
318
+ * reads the file and passes the content as `-p`. PowerShell handles long
319
+ * strings natively (32K limit) and doesn't mangle arguments.
320
+ *
321
+ * On Linux/macOS, spawn `agent` directly — no shell needed.
322
+ */
323
+ spawnAgent(prompt, args, options) {
324
+ const { CLAUDECODE: _, ...cleanEnv } = process.env;
325
+ const cwd = options?.cwd;
280
326
  if (IS_WINDOWS) {
281
- spawnOpts.shell = true;
282
- spawnOpts.windowsHide = true;
327
+ // Write prompt to temp file to bypass cmd.exe argument mangling
328
+ const tmpFile = join(tmpdir(), `shep-cursor-${Date.now()}-${Math.random().toString(36).slice(2, 6)}.txt`);
329
+ writeFileSync(tmpFile, prompt, 'utf8');
330
+ // Build the agent args WITHOUT -p and the prompt (they go via temp file)
331
+ const agentFlags = args.filter((a) => a !== '-p' && a !== prompt).join(' ');
332
+ const safePath = tmpFile.replace(/'/g, "''");
333
+ const psCmd = `$p = Get-Content -Raw '${safePath}'; & agent ${agentFlags} -p $p`;
334
+ this.log(`Windows PowerShell mode: wrote ${prompt.length} chars to ${tmpFile}`);
335
+ this.log(`PS command: ${psCmd.replace(prompt, `<${prompt.length} chars>`)}`);
336
+ const proc = this.spawn('powershell.exe', ['-NoProfile', '-NonInteractive', '-Command', psCmd], {
337
+ cwd,
338
+ stdio: ['pipe', 'pipe', 'pipe'],
339
+ windowsHide: true,
340
+ env: cleanEnv,
341
+ });
342
+ this.log(`PowerShell PID: ${proc.pid ?? 'undefined (spawn may have failed)'}`);
343
+ if (proc.stdin)
344
+ proc.stdin.end();
345
+ return { proc, tmpFile };
283
346
  }
284
- // Strip CLAUDECODE env var to prevent "nested session" error when shep
285
- // is invoked from within a Claude Code session.
286
- const { CLAUDECODE: _, ...cleanEnv } = process.env;
287
- spawnOpts.env = cleanEnv;
288
- return spawnOpts;
347
+ // Linux/macOS: spawn agent directly, no shell needed
348
+ const spawnOpts = {
349
+ stdio: ['pipe', 'pipe', 'pipe'],
350
+ env: cleanEnv,
351
+ };
352
+ if (cwd)
353
+ spawnOpts.cwd = cwd;
354
+ this.log(`Spawning: agent ${args.map((a) => (a.length > 80 ? `${a.slice(0, 77)}...` : a)).join(' ')}`);
355
+ this.log(`Spawn cwd: ${cwd ?? '(inherited)'}`);
356
+ const proc = this.spawn('agent', args, spawnOpts);
357
+ this.log(`Subprocess PID: ${proc.pid ?? 'undefined (spawn may have failed)'}`);
358
+ if (proc.stdin)
359
+ proc.stdin.end();
360
+ return { proc, tmpFile: undefined };
289
361
  }
290
362
  parseStreamLine(line) {
291
363
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"gemini-cli-executor.service.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/common/executors/gemini-cli-executor.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EACZ,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,4EAA4E,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMjD;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,cAAc;IAO3D,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAP9B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAA6B;IAE1D,4EAA4E;IAC5E,OAAO,CAAC,MAAM,CAAS;gBAGJ,KAAK,EAAE,aAAa,EACpB,UAAU,CAAC,EAAE,WAAW,YAAA;IAG3C,4EAA4E;IAC5E,OAAO,CAAC,GAAG;IAMX,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAIzC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAsFtF,aAAa,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,qBAAqB,GAC9B,aAAa,CAAC,yBAAyB,CAAC;IAsG3C;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAmDxB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAI3C;IAEF;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAY9B;;;OAGG;IACH,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,SAAS;IAsBjB,OAAO,CAAC,iBAAiB;CAiB1B"}
1
+ {"version":3,"file":"gemini-cli-executor.service.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/common/executors/gemini-cli-executor.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,WAAW,EACZ,MAAM,2CAA2C,CAAC;AACnD,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EAC1B,MAAM,4EAA4E,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAMjD;;;GAGG;AACH,qBAAa,wBAAyB,YAAW,cAAc;IAO3D,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;IAP9B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAA6B;IAE1D,4EAA4E;IAC5E,OAAO,CAAC,MAAM,CAAS;gBAGJ,KAAK,EAAE,aAAa,EACpB,UAAU,CAAC,EAAE,WAAW,YAAA;IAG3C,4EAA4E;IAC5E,OAAO,CAAC,GAAG;IAMX,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAIzC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA8FtF,aAAa,CAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,qBAAqB,GAC9B,aAAa,CAAC,yBAAyB,CAAC;IAsG3C;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAmDxB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAI3C;IAEF;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAY9B;;;OAGG;IACH,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,SAAS;IAsBjB,OAAO,CAAC,iBAAiB;CA0B1B"}
@@ -67,7 +67,12 @@ export class GeminiCliExecutorService {
67
67
  this.log(`Process error event: ${error.message}`);
68
68
  if (timeoutId)
69
69
  clearTimeout(timeoutId);
70
- reject(error);
70
+ if (error.code === 'ENOENT') {
71
+ reject(new Error('Gemini CLI ("gemini") not found. Please install it: https://github.com/google-gemini/gemini-cli'));
72
+ }
73
+ else {
74
+ reject(error);
75
+ }
71
76
  });
72
77
  proc.on('close', (code) => {
73
78
  this.log(`Process closed with code ${code}, stdout=${stdout.length} chars`);
@@ -323,6 +328,13 @@ export class GeminiCliExecutorService {
323
328
  const spawnOpts = {};
324
329
  if (options?.cwd)
325
330
  spawnOpts.cwd = options.cwd;
331
+ // Explicitly pipe stdio so streams are available even when parent disconnects
332
+ spawnOpts.stdio = ['pipe', 'pipe', 'pipe'];
333
+ // On Windows: windowsHide=true to prevent blank console windows.
334
+ // Gemini CLI is a native binary, so shell=true is NOT needed.
335
+ if (process.platform === 'win32') {
336
+ spawnOpts.windowsHide = true;
337
+ }
326
338
  // Strip CLAUDECODE env var to prevent "nested session" error when shep
327
339
  // is invoked from within a Claude Code session.
328
340
  const { CLAUDECODE: _, ...cleanEnv } = process.env;
@@ -1 +1 @@
1
- {"version":3,"file":"feature-agent-graph.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAOpG,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AASlF,OAAO,EAAE,sBAAsB,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE5E;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;CACjD;AAyHD;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,qBAAqB,GAAG,cAAc,EACtD,YAAY,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAwEnC"}
1
+ {"version":3,"file":"feature-agent-graph.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAOpG,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AASlF,OAAO,EAAE,sBAAsB,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE5E;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;CACjD;AA0HD;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,qBAAqB,GAAG,cAAc,EACtD,YAAY,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAwEnC"}
@@ -53,6 +53,7 @@ function routeValidation(successNode, repairNode, maxRetries = 3) {
53
53
  function createPlanTasksValidator() {
54
54
  const log = createNodeLogger('validate:plan+tasks');
55
55
  return async (state) => {
56
+ log.activate();
56
57
  log.info('Validating plan.yaml and tasks.yaml');
57
58
  const allErrors = [];
58
59
  // Validate plan.yaml
@@ -1 +1 @@
1
- {"version":3,"file":"feature-agent-worker.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,kBAAkB,CAAC;AAe1B,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAW9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAwE1D;AAgCD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAgQ/D"}
1
+ {"version":3,"file":"feature-agent-worker.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,kBAAkB,CAAC;AAe1B,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAW7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAwE1D;AAgCD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA0R/D"}