@shepai/cli 1.116.0-pr335.2f39275 → 1.116.0-pr367.8e10c48

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 (373) hide show
  1. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts +0 -14
  2. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts.map +1 -1
  3. package/dist/packages/core/src/application/ports/output/services/index.d.ts +2 -0
  4. package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
  5. package/dist/packages/core/src/application/ports/output/services/tunnel-service.interface.d.ts +41 -0
  6. package/dist/packages/core/src/application/ports/output/services/tunnel-service.interface.d.ts.map +1 -0
  7. package/dist/packages/core/src/application/ports/output/services/tunnel-service.interface.js +14 -0
  8. package/dist/packages/core/src/application/ports/output/services/webhook-service.interface.d.ts +65 -0
  9. package/dist/packages/core/src/application/ports/output/services/webhook-service.interface.d.ts.map +1 -0
  10. package/dist/packages/core/src/application/ports/output/services/webhook-service.interface.js +10 -0
  11. package/dist/packages/core/src/application/ports/output/services/worktree-service.interface.d.ts +1 -2
  12. package/dist/packages/core/src/application/ports/output/services/worktree-service.interface.d.ts.map +1 -1
  13. package/dist/packages/core/src/application/use-cases/features/cleanup-feature-worktree.use-case.js +1 -1
  14. package/dist/packages/core/src/application/use-cases/features/delete-feature.use-case.js +1 -1
  15. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  16. package/dist/packages/core/src/infrastructure/di/container.js +20 -4
  17. package/dist/packages/core/src/infrastructure/services/agents/common/executors/cursor-executor.service.d.ts +1 -12
  18. package/dist/packages/core/src/infrastructure/services/agents/common/executors/cursor-executor.service.d.ts.map +1 -1
  19. package/dist/packages/core/src/infrastructure/services/agents/common/executors/cursor-executor.service.js +25 -92
  20. package/dist/packages/core/src/infrastructure/services/agents/common/executors/gemini-cli-executor.service.d.ts.map +1 -1
  21. package/dist/packages/core/src/infrastructure/services/agents/common/executors/gemini-cli-executor.service.js +0 -7
  22. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts.map +1 -1
  23. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.js +0 -1
  24. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
  25. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +0 -1
  26. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.d.ts.map +1 -1
  27. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.js +0 -1
  28. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.d.ts.map +1 -1
  29. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.js +0 -1
  30. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/implement.node.d.ts.map +1 -1
  31. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/implement.node.js +0 -1
  32. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/ci-watch-fix-loop.d.ts.map +1 -1
  33. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/ci-watch-fix-loop.js +1 -13
  34. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts +0 -4
  35. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts.map +1 -1
  36. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.js +17 -9
  37. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts +0 -2
  38. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
  39. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +4 -8
  40. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/prompts/implement.prompt.js +4 -7
  41. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/repair.node.d.ts.map +1 -1
  42. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/repair.node.js +0 -1
  43. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/validate.node.d.ts.map +1 -1
  44. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/validate.node.js +0 -1
  45. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts +0 -1
  46. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts.map +1 -1
  47. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.js +1 -71
  48. package/dist/packages/core/src/infrastructure/services/git/worktree.service.d.ts +1 -1
  49. package/dist/packages/core/src/infrastructure/services/git/worktree.service.d.ts.map +1 -1
  50. package/dist/packages/core/src/infrastructure/services/git/worktree.service.js +3 -5
  51. package/dist/packages/core/src/infrastructure/services/ide-launchers/compute-worktree-path.d.ts.map +1 -1
  52. package/dist/packages/core/src/infrastructure/services/ide-launchers/compute-worktree-path.js +1 -3
  53. package/dist/packages/core/src/infrastructure/services/ide-launchers/json-driven-ide-launcher.service.d.ts.map +1 -1
  54. package/dist/packages/core/src/infrastructure/services/ide-launchers/json-driven-ide-launcher.service.js +1 -5
  55. package/dist/packages/core/src/infrastructure/services/tunnel/cloudflare-tunnel.service.d.ts +36 -0
  56. package/dist/packages/core/src/infrastructure/services/tunnel/cloudflare-tunnel.service.d.ts.map +1 -0
  57. package/dist/packages/core/src/infrastructure/services/tunnel/cloudflare-tunnel.service.js +148 -0
  58. package/dist/packages/core/src/infrastructure/services/webhook/github-webhook.service.d.ts +75 -0
  59. package/dist/packages/core/src/infrastructure/services/webhook/github-webhook.service.d.ts.map +1 -0
  60. package/dist/packages/core/src/infrastructure/services/webhook/github-webhook.service.js +372 -0
  61. package/dist/packages/core/src/infrastructure/services/webhook/webhook-manager.service.d.ts +82 -0
  62. package/dist/packages/core/src/infrastructure/services/webhook/webhook-manager.service.d.ts.map +1 -0
  63. package/dist/packages/core/src/infrastructure/services/webhook/webhook-manager.service.js +192 -0
  64. package/dist/src/presentation/cli/commands/ui.command.d.ts.map +1 -1
  65. package/dist/src/presentation/cli/commands/ui.command.js +15 -0
  66. package/dist/src/presentation/web/app/actions/load-webhook-status.d.ts +3 -0
  67. package/dist/src/presentation/web/app/actions/load-webhook-status.d.ts.map +1 -0
  68. package/dist/src/presentation/web/app/actions/load-webhook-status.js +19 -0
  69. package/dist/src/presentation/web/app/api/webhooks/deliveries/route.d.ts +9 -0
  70. package/dist/src/presentation/web/app/api/webhooks/deliveries/route.d.ts.map +1 -0
  71. package/dist/src/presentation/web/app/api/webhooks/deliveries/route.js +27 -0
  72. package/dist/src/presentation/web/app/api/webhooks/github/route.d.ts +17 -0
  73. package/dist/src/presentation/web/app/api/webhooks/github/route.d.ts.map +1 -0
  74. package/dist/src/presentation/web/app/api/webhooks/github/route.js +70 -0
  75. package/dist/src/presentation/web/app/api/webhooks/status/route.d.ts +9 -0
  76. package/dist/src/presentation/web/app/api/webhooks/status/route.d.ts.map +1 -0
  77. package/dist/src/presentation/web/app/api/webhooks/status/route.js +26 -0
  78. package/dist/src/presentation/web/app/webhooks/page.d.ts +4 -0
  79. package/dist/src/presentation/web/app/webhooks/page.d.ts.map +1 -0
  80. package/dist/src/presentation/web/app/webhooks/page.js +9 -0
  81. package/dist/src/presentation/web/components/features/webhooks/types.d.ts +32 -0
  82. package/dist/src/presentation/web/components/features/webhooks/types.d.ts.map +1 -0
  83. package/dist/src/presentation/web/components/features/webhooks/types.js +1 -0
  84. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.d.ts +6 -0
  85. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.d.ts.map +1 -0
  86. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.js +38 -0
  87. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.stories.d.ts +9 -0
  88. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.stories.d.ts.map +1 -0
  89. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.stories.js +69 -0
  90. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.d.ts +7 -0
  91. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.d.ts.map +1 -0
  92. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.js +11 -0
  93. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.stories.d.ts +9 -0
  94. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.stories.d.ts.map +1 -0
  95. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.stories.js +31 -0
  96. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.d.ts +6 -0
  97. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.d.ts.map +1 -0
  98. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.js +21 -0
  99. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.stories.d.ts +9 -0
  100. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.stories.d.ts.map +1 -0
  101. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.stories.js +56 -0
  102. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.d.ts +6 -0
  103. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.d.ts.map +1 -0
  104. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.js +39 -0
  105. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.stories.d.ts +8 -0
  106. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.stories.d.ts.map +1 -0
  107. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.stories.js +59 -0
  108. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
  109. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +2 -2
  110. package/dist/src/presentation/web/dev-server.js +20 -0
  111. package/dist/tsconfig.build.tsbuildinfo +1 -1
  112. package/package.json +1 -1
  113. package/web/.next/BUILD_ID +1 -1
  114. package/web/.next/app-path-routes-manifest.json +5 -1
  115. package/web/.next/build-manifest.json +6 -6
  116. package/web/.next/fallback-build-manifest.json +2 -2
  117. package/web/.next/prerender-manifest.json +3 -3
  118. package/web/.next/required-server-files.js +1 -1
  119. package/web/.next/required-server-files.json +1 -1
  120. package/web/.next/routes-manifest.json +24 -0
  121. package/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +4 -4
  122. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +20 -20
  123. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  124. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  125. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/build-manifest.json +4 -4
  126. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +26 -26
  127. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  128. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  129. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +4 -4
  130. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +26 -26
  131. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  132. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  133. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +4 -4
  134. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +18 -18
  135. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  136. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  137. package/web/.next/server/app/(dashboard)/create/page/build-manifest.json +4 -4
  138. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +20 -20
  139. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  140. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  141. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/build-manifest.json +4 -4
  142. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +26 -26
  143. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  144. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  145. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +4 -4
  146. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +26 -26
  147. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  148. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  149. package/web/.next/server/app/(dashboard)/page/build-manifest.json +4 -4
  150. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +18 -18
  151. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  152. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  153. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +4 -4
  154. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +18 -18
  155. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  156. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  157. package/web/.next/server/app/_global-error/page/build-manifest.json +4 -4
  158. package/web/.next/server/app/_global-error.html +2 -2
  159. package/web/.next/server/app/_global-error.rsc +1 -1
  160. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  161. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  162. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  163. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  164. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  165. package/web/.next/server/app/_not-found/page/build-manifest.json +4 -4
  166. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  167. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  168. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  169. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  170. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  171. package/web/.next/server/app/api/webhooks/deliveries/route/app-paths-manifest.json +3 -0
  172. package/web/.next/server/app/api/webhooks/deliveries/route/build-manifest.json +11 -0
  173. package/web/.next/server/app/api/webhooks/deliveries/route/server-reference-manifest.json +4 -0
  174. package/web/.next/server/app/api/webhooks/deliveries/route.js +6 -0
  175. package/web/.next/server/app/api/webhooks/deliveries/route.js.map +5 -0
  176. package/web/.next/server/app/api/webhooks/deliveries/route.js.nft.json +1 -0
  177. package/web/.next/server/app/api/webhooks/deliveries/route_client-reference-manifest.js +2 -0
  178. package/web/.next/server/app/api/webhooks/github/route/app-paths-manifest.json +3 -0
  179. package/web/.next/server/app/api/webhooks/github/route/build-manifest.json +11 -0
  180. package/web/.next/server/app/api/webhooks/github/route/server-reference-manifest.json +4 -0
  181. package/web/.next/server/app/api/webhooks/github/route.js +6 -0
  182. package/web/.next/server/app/api/webhooks/github/route.js.map +5 -0
  183. package/web/.next/server/app/api/webhooks/github/route.js.nft.json +1 -0
  184. package/web/.next/server/app/api/webhooks/github/route_client-reference-manifest.js +2 -0
  185. package/web/.next/server/app/api/webhooks/status/route/app-paths-manifest.json +3 -0
  186. package/web/.next/server/app/api/webhooks/status/route/build-manifest.json +11 -0
  187. package/web/.next/server/app/api/webhooks/status/route/server-reference-manifest.json +4 -0
  188. package/web/.next/server/app/api/webhooks/status/route.js +6 -0
  189. package/web/.next/server/app/api/webhooks/status/route.js.map +5 -0
  190. package/web/.next/server/app/api/webhooks/status/route.js.nft.json +1 -0
  191. package/web/.next/server/app/api/webhooks/status/route_client-reference-manifest.js +2 -0
  192. package/web/.next/server/app/settings/page/build-manifest.json +4 -4
  193. package/web/.next/server/app/settings/page/server-reference-manifest.json +5 -5
  194. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  195. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  196. package/web/.next/server/app/skills/page/build-manifest.json +4 -4
  197. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  198. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  199. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  200. package/web/.next/server/app/tools/page/build-manifest.json +4 -4
  201. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  202. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  203. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  204. package/web/.next/server/app/version/page/build-manifest.json +4 -4
  205. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  206. package/web/.next/server/app/version/page.js.nft.json +1 -1
  207. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  208. package/web/.next/server/app/webhooks/page/app-paths-manifest.json +3 -0
  209. package/web/.next/server/app/webhooks/page/build-manifest.json +18 -0
  210. package/web/.next/server/app/webhooks/page/next-font-manifest.json +6 -0
  211. package/web/.next/server/app/webhooks/page/react-loadable-manifest.json +1 -0
  212. package/web/.next/server/app/webhooks/page/server-reference-manifest.json +35 -0
  213. package/web/.next/server/app/webhooks/page.js +16 -0
  214. package/web/.next/server/app/webhooks/page.js.map +5 -0
  215. package/web/.next/server/app/webhooks/page.js.nft.json +1 -0
  216. package/web/.next/server/app/webhooks/page_client-reference-manifest.js +2 -0
  217. package/web/.next/server/app-paths-manifest.json +5 -1
  218. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_deliveries_route_actions_d9e34c8d.js +3 -0
  219. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_deliveries_route_actions_d9e34c8d.js.map +1 -0
  220. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_github_route_actions_1b0d0c38.js +3 -0
  221. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_github_route_actions_1b0d0c38.js.map +1 -0
  222. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_status_route_actions_1a0d86a1.js +3 -0
  223. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_status_route_actions_1a0d86a1.js.map +1 -0
  224. package/web/.next/server/chunks/[root-of-the-server]__15e5d45c._.js +3 -0
  225. package/web/.next/server/chunks/[root-of-the-server]__15e5d45c._.js.map +1 -0
  226. package/web/.next/server/chunks/[root-of-the-server]__23be381e._.js +3 -0
  227. package/web/.next/server/chunks/[root-of-the-server]__23be381e._.js.map +1 -0
  228. package/web/.next/server/chunks/[root-of-the-server]__9fc760c0._.js +3 -0
  229. package/web/.next/server/chunks/[root-of-the-server]__9fc760c0._.js.map +1 -0
  230. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  231. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  232. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  233. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_activity_22f9667f.js +3 -0
  234. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_activity_22f9667f.js.map +1 -0
  235. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_a1104008.js +1 -1
  236. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_a1104008.js.map +1 -1
  237. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_92642200.js +1 -1
  238. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_92642200.js.map +1 -1
  239. package/web/.next/server/chunks/ssr/[root-of-the-server]__039967e3._.js +1 -1
  240. package/web/.next/server/chunks/ssr/[root-of-the-server]__039967e3._.js.map +1 -1
  241. package/web/.next/server/chunks/ssr/[root-of-the-server]__07a39ff2._.js +1 -1
  242. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js +1 -1
  243. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js.map +1 -1
  244. package/web/.next/server/chunks/ssr/[root-of-the-server]__24dd0927._.js +2 -2
  245. package/web/.next/server/chunks/ssr/[root-of-the-server]__24dd0927._.js.map +1 -1
  246. package/web/.next/server/chunks/ssr/[root-of-the-server]__2773312c._.js +1 -1
  247. package/web/.next/server/chunks/ssr/[root-of-the-server]__2773312c._.js.map +1 -1
  248. package/web/.next/server/chunks/ssr/[root-of-the-server]__5d847b7b._.js +3 -0
  249. package/web/.next/server/chunks/ssr/[root-of-the-server]__5d847b7b._.js.map +1 -0
  250. package/web/.next/server/chunks/ssr/[root-of-the-server]__5d87af2e._.js +1 -1
  251. package/web/.next/server/chunks/ssr/[root-of-the-server]__87a7ae30._.js +3 -0
  252. package/web/.next/server/chunks/ssr/[root-of-the-server]__87a7ae30._.js.map +1 -0
  253. package/web/.next/server/chunks/ssr/[root-of-the-server]__89e8a5cc._.js +2 -2
  254. package/web/.next/server/chunks/ssr/[root-of-the-server]__89e8a5cc._.js.map +1 -1
  255. package/web/.next/server/chunks/ssr/[root-of-the-server]__920dccd5._.js +4 -0
  256. package/web/.next/server/chunks/ssr/[root-of-the-server]__920dccd5._.js.map +1 -0
  257. package/web/.next/server/chunks/ssr/[root-of-the-server]__a42f5a88._.js +3 -0
  258. package/web/.next/server/chunks/ssr/[root-of-the-server]__a42f5a88._.js.map +1 -0
  259. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +2 -2
  260. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  261. package/web/.next/server/chunks/ssr/[root-of-the-server]__cbd8062c._.js +1 -1
  262. package/web/.next/server/chunks/ssr/[root-of-the-server]__cbd8062c._.js.map +1 -1
  263. package/web/.next/server/chunks/ssr/[root-of-the-server]__e70c5627._.js +1 -1
  264. package/web/.next/server/chunks/ssr/[root-of-the-server]__e70c5627._.js.map +1 -1
  265. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js +1 -1
  266. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js.map +1 -1
  267. package/web/.next/server/chunks/ssr/_135edb9c._.js +1 -1
  268. package/web/.next/server/chunks/ssr/_135edb9c._.js.map +1 -1
  269. package/web/.next/server/chunks/ssr/_26b2c311._.js +3 -0
  270. package/web/.next/server/chunks/ssr/_26b2c311._.js.map +1 -0
  271. package/web/.next/server/chunks/ssr/_27dd06aa._.js +3 -0
  272. package/web/.next/server/chunks/ssr/_27dd06aa._.js.map +1 -0
  273. package/web/.next/server/chunks/ssr/_28862ed0._.js +3 -0
  274. package/web/.next/server/chunks/ssr/{_cbeb0c13._.js.map → _28862ed0._.js.map} +1 -1
  275. package/web/.next/server/chunks/ssr/{_e34e1c0f._.js → _383572e0._.js} +2 -2
  276. package/web/.next/server/chunks/ssr/_383572e0._.js.map +1 -0
  277. package/web/.next/server/chunks/ssr/_809c53f6._.js +9 -0
  278. package/web/.next/server/chunks/ssr/_809c53f6._.js.map +1 -0
  279. package/web/.next/server/chunks/ssr/_8dacd1e7._.js +1 -1
  280. package/web/.next/server/chunks/ssr/_8dacd1e7._.js.map +1 -1
  281. package/web/.next/server/chunks/ssr/_9eea4c51._.js +3 -0
  282. package/web/.next/server/chunks/ssr/_9eea4c51._.js.map +1 -0
  283. package/web/.next/server/chunks/ssr/_a4899a76._.js +3 -0
  284. package/web/.next/server/chunks/ssr/_a4899a76._.js.map +1 -0
  285. package/web/.next/server/chunks/ssr/_b7eb93fc._.js +4 -0
  286. package/web/.next/server/chunks/ssr/_b7eb93fc._.js.map +1 -0
  287. package/web/.next/server/chunks/ssr/_cc77a143._.js +1 -1
  288. package/web/.next/server/chunks/ssr/_cc77a143._.js.map +1 -1
  289. package/web/.next/server/chunks/ssr/_e0a01382._.js +3 -0
  290. package/web/.next/server/chunks/ssr/_e0a01382._.js.map +1 -0
  291. package/web/.next/server/chunks/ssr/_f8b36e2c._.js +3 -0
  292. package/web/.next/server/chunks/ssr/_f8b36e2c._.js.map +1 -0
  293. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  294. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  295. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_webhooks_webhooks-page-client_tsx_b2662ea3._.js +3 -0
  296. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_webhooks_webhooks-page-client_tsx_b2662ea3._.js.map +1 -0
  297. package/web/.next/server/chunks/ssr/{_1bb131c4._.js → node_modules__pnpm_747b43ac._.js} +2 -2
  298. package/web/.next/server/chunks/ssr/node_modules__pnpm_747b43ac._.js.map +1 -0
  299. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_888633e1.js +1 -1
  300. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_888633e1.js.map +1 -1
  301. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +1 -1
  302. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -1
  303. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +1 -1
  304. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -1
  305. package/web/.next/server/chunks/ssr/src_presentation_web_ce7cbc3c._.js +2 -2
  306. package/web/.next/server/chunks/ssr/src_presentation_web_ce7cbc3c._.js.map +1 -1
  307. package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js +1 -1
  308. package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js +1 -1
  309. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  310. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  311. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  312. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  313. package/web/.next/server/chunks/ssr/src_presentation_web_e2604413._.js +2 -2
  314. package/web/.next/server/chunks/ssr/src_presentation_web_e2604413._.js.map +1 -1
  315. package/web/.next/server/middleware-build-manifest.js +4 -4
  316. package/web/.next/server/pages/500.html +2 -2
  317. package/web/.next/server/server-reference-manifest.js +1 -1
  318. package/web/.next/server/server-reference-manifest.json +54 -32
  319. package/web/.next/static/chunks/06b948216df083c1.js +1 -0
  320. package/web/.next/static/chunks/2bdc11361b8f2602.js +1 -0
  321. package/web/.next/static/chunks/31f35710932542ef.js +1 -0
  322. package/web/.next/static/chunks/{9db1079a54477d79.js → 385710675a1d06c9.js} +1 -1
  323. package/web/.next/static/chunks/40b6bcf1a2de4a0f.js +1 -0
  324. package/web/.next/static/chunks/4714eb891fa4fd81.js +1 -0
  325. package/web/.next/static/chunks/{6c0ab19387b3e408.js → 51ca7e4cad588da4.js} +1 -1
  326. package/web/.next/static/chunks/523340641468b5f2.js +1 -0
  327. package/web/.next/static/chunks/5f6161ceb4263319.js +1 -0
  328. package/web/.next/static/chunks/{cbab8123171799fc.js → 604d36c352fff6c0.js} +2 -2
  329. package/web/.next/static/chunks/{672e3da3ad26005b.js → 98e3a7cf58fc912a.js} +1 -1
  330. package/web/.next/static/chunks/9a7361e2365b2d8e.js +1 -0
  331. package/web/.next/static/chunks/9af45e885bd4ccef.js +1 -0
  332. package/web/.next/static/chunks/bbfb591f6aaa7255.css +1 -0
  333. package/web/.next/static/chunks/{30ce4b3487507499.js → c6dc0749ac370da4.js} +2 -2
  334. package/web/.next/static/chunks/c7e793951b20a67f.js +1 -0
  335. package/web/.next/static/chunks/{52d1f0533e12aab9.js → e510518c9ca6e844.js} +1 -1
  336. package/web/.next/static/chunks/e9621b096a69e4e8.js +11 -0
  337. package/web/.next/static/chunks/{895a879768664211.js → f60771797b58531f.js} +1 -1
  338. package/web/.next/static/chunks/f644140e21b75f61.js +1 -0
  339. package/web/.next/static/chunks/{turbopack-426d9bc2450816ba.js → turbopack-b1685b5f87ad1d60.js} +1 -1
  340. package/web/.next/server/chunks/ssr/[root-of-the-server]__6367aea0._.js +0 -3
  341. package/web/.next/server/chunks/ssr/[root-of-the-server]__6367aea0._.js.map +0 -1
  342. package/web/.next/server/chunks/ssr/[root-of-the-server]__b1e68e34._.js +0 -3
  343. package/web/.next/server/chunks/ssr/[root-of-the-server]__b1e68e34._.js.map +0 -1
  344. package/web/.next/server/chunks/ssr/_1bb131c4._.js.map +0 -1
  345. package/web/.next/server/chunks/ssr/_273d4632._.js +0 -3
  346. package/web/.next/server/chunks/ssr/_273d4632._.js.map +0 -1
  347. package/web/.next/server/chunks/ssr/_517336a1._.js +0 -3
  348. package/web/.next/server/chunks/ssr/_517336a1._.js.map +0 -1
  349. package/web/.next/server/chunks/ssr/_6d26a08f._.js +0 -3
  350. package/web/.next/server/chunks/ssr/_6d26a08f._.js.map +0 -1
  351. package/web/.next/server/chunks/ssr/_a68d7e1c._.js +0 -9
  352. package/web/.next/server/chunks/ssr/_a68d7e1c._.js.map +0 -1
  353. package/web/.next/server/chunks/ssr/_b5fc318a._.js +0 -3
  354. package/web/.next/server/chunks/ssr/_b5fc318a._.js.map +0 -1
  355. package/web/.next/server/chunks/ssr/_cbeb0c13._.js +0 -3
  356. package/web/.next/server/chunks/ssr/_e34e1c0f._.js.map +0 -1
  357. package/web/.next/server/chunks/ssr/_f5316e67._.js +0 -3
  358. package/web/.next/server/chunks/ssr/_f5316e67._.js.map +0 -1
  359. package/web/.next/static/chunks/24308491503e4d0a.js +0 -11
  360. package/web/.next/static/chunks/303a1217006489b9.js +0 -1
  361. package/web/.next/static/chunks/3a806cf059241bc9.js +0 -1
  362. package/web/.next/static/chunks/436261d572ace439.js +0 -1
  363. package/web/.next/static/chunks/57b45edf86522369.css +0 -1
  364. package/web/.next/static/chunks/619af41a8d3232e5.js +0 -1
  365. package/web/.next/static/chunks/84a181ff3270fd9f.js +0 -1
  366. package/web/.next/static/chunks/88be5b585abfa680.js +0 -1
  367. package/web/.next/static/chunks/902dcd700c600f34.js +0 -1
  368. package/web/.next/static/chunks/b1f3c0e8e9872ef8.js +0 -1
  369. package/web/.next/static/chunks/ed3a602003bcb31b.js +0 -1
  370. package/web/.next/static/chunks/fcde0cbb2976b933.js +0 -1
  371. /package/web/.next/static/{M00wIaTrLdfYMI9v2Z9g8 → kQ3LD6zhRbOzb0MYK2n5b}/_buildManifest.js +0 -0
  372. /package/web/.next/static/{M00wIaTrLdfYMI9v2Z9g8 → kQ3LD6zhRbOzb0MYK2n5b}/_clientMiddlewareManifest.json +0 -0
  373. /package/web/.next/static/{M00wIaTrLdfYMI9v2Z9g8 → kQ3LD6zhRbOzb0MYK2n5b}/_ssgManifest.js +0 -0
@@ -281,20 +281,6 @@ 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>;
298
284
  /**
299
285
  * Check if a PR has merge conflicts via `gh pr view --json mergeable`.
300
286
  *
@@ -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,4 +17,6 @@ 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';
20
22
  //# 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"}
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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Tunnel Service Interface
3
+ *
4
+ * Output port for managing a reverse tunnel that exposes local endpoints
5
+ * to the public internet. Used to receive webhooks from external services
6
+ * (e.g., GitHub) when running locally.
7
+ *
8
+ * Implementations must:
9
+ * - Start a tunnel process pointing at a local port
10
+ * - Expose only a specific URL path (e.g., /api/webhooks)
11
+ * - Detect when the public URL changes (tunnel reconnection)
12
+ * - Support graceful shutdown
13
+ */
14
+ export type TunnelUrlChangeHandler = (newUrl: string) => void | Promise<void>;
15
+ export interface ITunnelService {
16
+ /**
17
+ * Start the tunnel, exposing a local port to the internet.
18
+ *
19
+ * @param localPort - Local port to tunnel traffic to
20
+ * @returns The public URL assigned by the tunnel provider
21
+ */
22
+ start(localPort: number): Promise<string>;
23
+ /**
24
+ * Stop the tunnel and clean up the child process.
25
+ */
26
+ stop(): Promise<void>;
27
+ /**
28
+ * Get the current public URL, or null if the tunnel is not running.
29
+ */
30
+ getPublicUrl(): string | null;
31
+ /**
32
+ * Register a callback that fires when the tunnel URL changes
33
+ * (e.g., after a reconnection assigns a new random subdomain).
34
+ */
35
+ onUrlChange(handler: TunnelUrlChangeHandler): void;
36
+ /**
37
+ * Whether the tunnel process is currently running.
38
+ */
39
+ isRunning(): boolean;
40
+ }
41
+ //# sourceMappingURL=tunnel-service.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tunnel-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/tunnel-service.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE9E,MAAM,WAAW,cAAc;IAC7B;;;;;OAKG;IACH,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE1C;;OAEG;IACH,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtB;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,IAAI,CAAC;IAE9B;;;OAGG;IACH,WAAW,CAAC,OAAO,EAAE,sBAAsB,GAAG,IAAI,CAAC;IAEnD;;OAEG;IACH,SAAS,IAAI,OAAO,CAAC;CACtB"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Tunnel Service Interface
3
+ *
4
+ * Output port for managing a reverse tunnel that exposes local endpoints
5
+ * to the public internet. Used to receive webhooks from external services
6
+ * (e.g., GitHub) when running locally.
7
+ *
8
+ * Implementations must:
9
+ * - Start a tunnel process pointing at a local port
10
+ * - Expose only a specific URL path (e.g., /api/webhooks)
11
+ * - Detect when the public URL changes (tunnel reconnection)
12
+ * - Support graceful shutdown
13
+ */
14
+ export {};
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Webhook Service Interface
3
+ *
4
+ * Output port for managing webhook registrations with external services
5
+ * (e.g., GitHub) and processing incoming webhook events.
6
+ *
7
+ * Works alongside the polling-based PrSyncWatcher to provide near-instant
8
+ * event delivery when a tunnel is available, with polling as fallback.
9
+ */
10
+ /**
11
+ * Parsed webhook event from an external service.
12
+ */
13
+ export interface WebhookEvent {
14
+ /** Source service (e.g., 'github') */
15
+ source: string;
16
+ /** Event type (e.g., 'pull_request', 'check_suite') */
17
+ eventType: string;
18
+ /** Delivery ID for deduplication */
19
+ deliveryId: string;
20
+ /** Full event payload */
21
+ payload: Record<string, unknown>;
22
+ }
23
+ /**
24
+ * Result of webhook signature validation.
25
+ */
26
+ export interface WebhookValidationResult {
27
+ valid: boolean;
28
+ error?: string;
29
+ }
30
+ export interface IWebhookService {
31
+ /**
32
+ * Register webhooks for all tracked repositories.
33
+ *
34
+ * @param publicUrl - The public tunnel URL where webhooks will be received
35
+ */
36
+ registerWebhooks(publicUrl: string): Promise<void>;
37
+ /**
38
+ * Update the webhook URL for all registered webhooks.
39
+ * Called when the tunnel reconnects with a new URL.
40
+ *
41
+ * @param newUrl - The new public tunnel URL
42
+ */
43
+ updateWebhookUrl(newUrl: string): Promise<void>;
44
+ /**
45
+ * Remove all registered webhooks (cleanup on shutdown).
46
+ */
47
+ removeWebhooks(): Promise<void>;
48
+ /**
49
+ * Validate an incoming webhook request signature.
50
+ *
51
+ * @param payload - Raw request body
52
+ * @param signature - Signature header value
53
+ * @param secret - The webhook secret used for HMAC
54
+ * @returns Validation result
55
+ */
56
+ validateSignature(payload: string, signature: string, secret: string): WebhookValidationResult;
57
+ /**
58
+ * Process an incoming webhook event.
59
+ * Routes the event to the appropriate handler (e.g., PR status update).
60
+ *
61
+ * @param event - The parsed webhook event
62
+ */
63
+ handleEvent(event: WebhookEvent): Promise<void>;
64
+ }
65
+ //# sourceMappingURL=webhook-service.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/webhook-service.interface.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,SAAS,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,yBAAyB;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD;;;;;OAKG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhD;;OAEG;IACH,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEhC;;;;;;;OAOG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,uBAAuB,CAAC;IAE/F;;;;;OAKG;IACH,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Webhook Service Interface
3
+ *
4
+ * Output port for managing webhook registrations with external services
5
+ * (e.g., GitHub) and processing incoming webhook events.
6
+ *
7
+ * Works alongside the polling-based PrSyncWatcher to provide near-instant
8
+ * event delivery when a tunnel is available, with polling as fallback.
9
+ */
10
+ export {};
@@ -53,12 +53,11 @@ 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)
57
56
  * @param worktreePath - Path to the worktree to remove
58
57
  * @param force - When true, passes --force to git worktree remove (handles dirty worktrees)
59
58
  * @throws WorktreeError if worktree not found or has uncommitted changes
60
59
  */
61
- remove(repoPath: string, worktreePath: string, force?: boolean): Promise<void>;
60
+ remove(worktreePath: string, force?: boolean): Promise<void>;
62
61
  /**
63
62
  * List all worktrees in a repository.
64
63
  *
@@ -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;;;;;;;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
+ {"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"}
@@ -39,7 +39,7 @@ let CleanupFeatureWorktreeUseCase = class CleanupFeatureWorktreeUseCase {
39
39
  const worktreePath = feature.worktreePath ??
40
40
  this.worktreeService.getWorktreePath(feature.repositoryPath, feature.branch);
41
41
  try {
42
- await this.worktreeService.remove(feature.repositoryPath, worktreePath, true);
42
+ await this.worktreeService.remove(worktreePath, true);
43
43
  }
44
44
  catch (err) {
45
45
  // eslint-disable-next-line no-console
@@ -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(feature.repositoryPath, worktreePath, true);
129
+ await this.worktreeService.remove(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;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"}
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"}
@@ -27,6 +27,8 @@ 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';
30
32
  import { AgentExecutorFactory } from '../services/agents/common/agent-executor-factory.service.js';
31
33
  import { AgentExecutorProvider } from '../services/agents/common/agent-executor-provider.service.js';
32
34
  import { StructuredAgentCallerService } from '../services/agents/common/structured-agent-caller.service.js';
@@ -169,6 +171,18 @@ export async function initializeContainer() {
169
171
  container.register('AttachmentStorageService', { useToken: AttachmentStorageService });
170
172
  const deploymentService = new DeploymentService();
171
173
  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
+ });
172
186
  // Register agent infrastructure
173
187
  container.register('IAgentRunRepository', {
174
188
  useFactory: (c) => {
@@ -190,13 +204,15 @@ export async function initializeContainer() {
190
204
  else {
191
205
  container.register('IAgentExecutorFactory', {
192
206
  useFactory: () => {
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).
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.
196
213
  const spawnWithPipe = (command, args, options) => {
197
214
  return spawn(command, args, {
198
215
  stdio: 'pipe',
199
- ...(process.platform === 'win32' ? { windowsHide: true } : {}),
200
216
  ...options,
201
217
  });
202
218
  };
@@ -32,18 +32,7 @@ export declare class CursorExecutorService implements IAgentExecutor {
32
32
  private logStreamEvent;
33
33
  private buildArgs;
34
34
  private buildStreamArgs;
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;
35
+ private buildSpawnOptions;
47
36
  private parseStreamLine;
48
37
  }
49
38
  //# 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;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;IA4HtF,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"}
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"}
@@ -8,10 +8,6 @@
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';
15
11
  import { getCurrentPhase, getLogPrefix } from '../../feature-agent/log-context.js';
16
12
  import { IS_WINDOWS } from '../../../../platform.js';
17
13
  /**
@@ -57,7 +53,13 @@ export class CursorExecutorService {
57
53
  // Use json (not stream-json) for execute() — outputs a single JSON result line.
58
54
  // stream-json is unreliable on Windows where shell: true can mangle args.
59
55
  const args = this.buildArgs(prompt, options);
60
- const { proc, tmpFile } = this.spawnAgent(prompt, args, 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();
61
63
  return new Promise((resolve, reject) => {
62
64
  let lineBuffer = '';
63
65
  let stderr = '';
@@ -71,21 +73,7 @@ export class CursorExecutorService {
71
73
  if (options?.timeout) {
72
74
  timeoutId = setTimeout(() => {
73
75
  timedOut = true;
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
- }
76
+ proc.kill();
89
77
  }, options.timeout);
90
78
  }
91
79
  const processLine = (line) => {
@@ -130,13 +118,6 @@ export class CursorExecutorService {
130
118
  const data = chunk.toString();
131
119
  stderr += data;
132
120
  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
- }
140
121
  });
141
122
  proc.on('error', (error) => {
142
123
  this.log(`Process error event: ${error.message}`);
@@ -145,15 +126,6 @@ export class CursorExecutorService {
145
126
  reject(error);
146
127
  });
147
128
  proc.on('close', (code) => {
148
- // Clean up temp file on Windows
149
- if (tmpFile) {
150
- try {
151
- unlinkSync(tmpFile);
152
- }
153
- catch {
154
- /* already removed or inaccessible */
155
- }
156
- }
157
129
  if (lineBuffer.trim())
158
130
  processLine(lineBuffer.trim());
159
131
  // Use raw text as fallback when no JSON result was captured
@@ -180,7 +152,10 @@ export class CursorExecutorService {
180
152
  }
181
153
  async *executeStream(prompt, options) {
182
154
  const args = this.buildStreamArgs(prompt, options);
183
- const { proc, tmpFile } = this.spawnAgent(prompt, args, options);
155
+ const spawnOpts = this.buildSpawnOptions(options);
156
+ const proc = this.spawn('agent', args, spawnOpts);
157
+ if (proc.stdin)
158
+ proc.stdin.end();
184
159
  let lineBuffer = '';
185
160
  let stderr = '';
186
161
  const queue = [];
@@ -221,14 +196,6 @@ export class CursorExecutorService {
221
196
  enqueue(null);
222
197
  });
223
198
  proc.on('close', (code) => {
224
- if (tmpFile) {
225
- try {
226
- unlinkSync(tmpFile);
227
- }
228
- catch {
229
- /* already removed */
230
- }
231
- }
232
199
  if (lineBuffer.trim()) {
233
200
  const event = this.parseStreamLine(lineBuffer.trim());
234
201
  if (event)
@@ -304,55 +271,21 @@ export class CursorExecutorService {
304
271
  args[fmtIdx + 1] = 'stream-json';
305
272
  return args;
306
273
  }
307
- /**
308
- * Spawn the agent process, handling Windows specially via PowerShell.
309
- *
310
- * On Windows, cursor CLI ships as `agent.cmd` which requires `shell: true`,
311
- * but cmd.exe mangles long `-p` arguments (8191-char limit + special chars).
312
- * Solution: write prompt to a temp file, invoke agent via PowerShell which
313
- * reads the file and passes the content as `-p`. PowerShell handles long
314
- * strings natively (32K limit) and doesn't mangle arguments.
315
- *
316
- * On Linux/macOS, spawn `agent` directly — no shell needed.
317
- */
318
- spawnAgent(prompt, args, options) {
319
- const { CLAUDECODE: _, ...cleanEnv } = process.env;
320
- const cwd = options?.cwd;
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.
321
280
  if (IS_WINDOWS) {
322
- // Write prompt to temp file to bypass cmd.exe argument mangling
323
- const tmpFile = join(tmpdir(), `shep-cursor-${Date.now()}-${Math.random().toString(36).slice(2, 6)}.txt`);
324
- writeFileSync(tmpFile, prompt, 'utf8');
325
- // Build the agent args WITHOUT -p and the prompt (they go via temp file)
326
- const agentFlags = args.filter((a) => a !== '-p' && a !== prompt).join(' ');
327
- const safePath = tmpFile.replace(/'/g, "''");
328
- const psCmd = `$p = Get-Content -Raw '${safePath}'; & agent ${agentFlags} -p $p`;
329
- this.log(`Windows PowerShell mode: wrote ${prompt.length} chars to ${tmpFile}`);
330
- this.log(`PS command: ${psCmd.replace(prompt, `<${prompt.length} chars>`)}`);
331
- const proc = this.spawn('powershell.exe', ['-NoProfile', '-NonInteractive', '-Command', psCmd], {
332
- cwd,
333
- stdio: ['pipe', 'pipe', 'pipe'],
334
- windowsHide: true,
335
- env: cleanEnv,
336
- });
337
- this.log(`PowerShell PID: ${proc.pid ?? 'undefined (spawn may have failed)'}`);
338
- if (proc.stdin)
339
- proc.stdin.end();
340
- return { proc, tmpFile };
281
+ spawnOpts.shell = true;
282
+ spawnOpts.windowsHide = true;
341
283
  }
342
- // Linux/macOS: spawn agent directly, no shell needed
343
- const spawnOpts = {
344
- stdio: ['pipe', 'pipe', 'pipe'],
345
- env: cleanEnv,
346
- };
347
- if (cwd)
348
- spawnOpts.cwd = cwd;
349
- this.log(`Spawning: agent ${args.map((a) => (a.length > 80 ? `${a.slice(0, 77)}...` : a)).join(' ')}`);
350
- this.log(`Spawn cwd: ${cwd ?? '(inherited)'}`);
351
- const proc = this.spawn('agent', args, spawnOpts);
352
- this.log(`Subprocess PID: ${proc.pid ?? 'undefined (spawn may have failed)'}`);
353
- if (proc.stdin)
354
- proc.stdin.end();
355
- return { proc, tmpFile: undefined };
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;
356
289
  }
357
290
  parseStreamLine(line) {
358
291
  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;CA0B1B"}
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"}
@@ -323,13 +323,6 @@ export class GeminiCliExecutorService {
323
323
  const spawnOpts = {};
324
324
  if (options?.cwd)
325
325
  spawnOpts.cwd = options.cwd;
326
- // Explicitly pipe stdio so streams are available even when parent disconnects
327
- spawnOpts.stdio = ['pipe', 'pipe', 'pipe'];
328
- // On Windows: windowsHide=true to prevent blank console windows.
329
- // Gemini CLI is a native binary, so shell=true is NOT needed.
330
- if (process.platform === 'win32') {
331
- spawnOpts.windowsHide = true;
332
- }
333
326
  // Strip CLAUDECODE env var to prevent "nested session" error when shep
334
327
  // is invoked from within a Claude Code session.
335
328
  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;AA0HD;;;;;;;;;;;;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;AAyHD;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,qBAAqB,GAAG,cAAc,EACtD,YAAY,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAwEnC"}
@@ -53,7 +53,6 @@ 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();
57
56
  log.info('Validating plan.yaml and tasks.yaml');
58
57
  const allErrors = [];
59
58
  // 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,CAuQ/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,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"}
@@ -182,7 +182,6 @@ export async function runWorker(args) {
182
182
  getDefaultBranch: (cwd) => gitPrService.getDefaultBranch(cwd),
183
183
  verifyMerge: (cwd, featureBranch, baseBranch, premergeBaseSha) => gitPrService.verifyMerge(cwd, featureBranch, baseBranch, premergeBaseSha),
184
184
  revParse: (cwd, ref) => gitPrService.revParse(cwd, ref),
185
- localMergeSquash: (cwd, featureBranch, baseBranch, commitMessage, hasRemote) => gitPrService.localMergeSquash(cwd, featureBranch, baseBranch, commitMessage, hasRemote),
186
185
  featureRepository,
187
186
  gitPrService,
188
187
  cleanupFeatureWorktreeUseCase,
@@ -1 +1 @@
1
- {"version":3,"file":"evidence.node.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAEpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAerD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,IAG3C,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAuE7E"}
1
+ {"version":3,"file":"evidence.node.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAEpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAerD;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,IAG3C,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAsE7E"}
@@ -33,7 +33,6 @@ import { hasSettings, getSettings } from '../../../settings.service.js';
33
33
  export function createEvidenceNode(executor) {
34
34
  const log = createNodeLogger('evidence');
35
35
  return async (state) => {
36
- log.activate();
37
36
  log.info('Starting evidence collection');
38
37
  reportNodeStart('evidence');
39
38
  await updateNodeLifecycle('evidence');
@@ -1 +1 @@
1
- {"version":3,"file":"fast-implement.node.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAEpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAUrD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,cAAc,IAGhD,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAoD7E"}
1
+ {"version":3,"file":"fast-implement.node.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAEpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAUrD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,cAAc,IAGhD,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAmD7E"}
@@ -29,7 +29,6 @@ import { hasSettings, getSettings } from '../../../settings.service.js';
29
29
  export function createFastImplementNode(executor) {
30
30
  const log = createNodeLogger('fast-implement');
31
31
  return async (state) => {
32
- log.activate();
33
32
  log.info('Starting fast implementation');
34
33
  reportNodeStart('fast-implement');
35
34
  await updateNodeLifecycle('fast-implement');
@@ -1 +1 @@
1
- {"version":3,"file":"implement.node.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/implement.node.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAEpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAwErD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,cAAc,IAG5C,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAyL7E"}
1
+ {"version":3,"file":"implement.node.d.ts","sourceRoot":"","sources":["../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/implement.node.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAEpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAwErD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,cAAc,IAG5C,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAwL7E"}
@@ -52,7 +52,6 @@ function updateFeatureProgress(specDir, completedCount, totalCount, currentPhase
52
52
  export function createImplementNode(executor) {
53
53
  const log = createNodeLogger('implement');
54
54
  return async (state) => {
55
- log.activate();
56
55
  log.info('Starting implementation phase orchestration');
57
56
  reportNodeStart('implement');
58
57
  await updateNodeLifecycle('implement');