@shepai/cli 1.116.3-pr375.ea5b2a2 → 1.117.0-pr367.ca5b6ac

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 (477) hide show
  1. package/apis/json-schema/AnalyzeRepoTimeouts.yaml +10 -0
  2. package/apis/json-schema/SdlcLifecycle.yaml +1 -0
  3. package/apis/json-schema/StageTimeouts.yaml +35 -0
  4. package/apis/json-schema/WorkflowConfig.yaml +6 -0
  5. package/dist/packages/core/src/application/ports/output/services/index.d.ts +2 -0
  6. package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
  7. package/dist/packages/core/src/application/ports/output/services/tunnel-service.interface.d.ts +41 -0
  8. package/dist/packages/core/src/application/ports/output/services/tunnel-service.interface.d.ts.map +1 -0
  9. package/dist/packages/core/src/application/ports/output/services/tunnel-service.interface.js +14 -0
  10. package/dist/packages/core/src/application/ports/output/services/webhook-service.interface.d.ts +65 -0
  11. package/dist/packages/core/src/application/ports/output/services/webhook-service.interface.d.ts.map +1 -0
  12. package/dist/packages/core/src/application/ports/output/services/webhook-service.interface.js +10 -0
  13. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  14. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +17 -8
  15. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts +2 -0
  16. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts.map +1 -1
  17. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.d.ts +1 -3
  18. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.d.ts.map +1 -1
  19. package/dist/packages/core/src/application/use-cases/features/resume-feature.use-case.js +2 -4
  20. package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.d.ts +25 -0
  21. package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.d.ts.map +1 -0
  22. package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.js +116 -0
  23. package/dist/packages/core/src/domain/generated/output.d.ts +47 -0
  24. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  25. package/dist/packages/core/src/domain/generated/output.js +1 -0
  26. package/dist/packages/core/src/domain/lifecycle-gates.d.ts +3 -0
  27. package/dist/packages/core/src/domain/lifecycle-gates.d.ts.map +1 -1
  28. package/dist/packages/core/src/domain/lifecycle-gates.js +3 -0
  29. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  30. package/dist/packages/core/src/infrastructure/di/container.js +19 -0
  31. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +7 -0
  32. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  33. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +44 -0
  34. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/035-add-stage-timeout-ms.d.ts +22 -0
  35. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/035-add-stage-timeout-ms.d.ts.map +1 -0
  36. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/035-add-stage-timeout-ms.js +53 -0
  37. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.d.ts.map +1 -1
  38. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.js +15 -6
  39. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
  40. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +15 -0
  41. package/dist/packages/core/src/infrastructure/services/agents/analyze-repo/analyze-repository-graph.d.ts.map +1 -1
  42. package/dist/packages/core/src/infrastructure/services/agents/analyze-repo/analyze-repository-graph.js +15 -0
  43. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts +11 -1
  44. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.d.ts.map +1 -1
  45. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/node-helpers.js +42 -3
  46. package/dist/packages/core/src/infrastructure/services/tunnel/cloudflare-tunnel.service.d.ts +55 -0
  47. package/dist/packages/core/src/infrastructure/services/tunnel/cloudflare-tunnel.service.d.ts.map +1 -0
  48. package/dist/packages/core/src/infrastructure/services/tunnel/cloudflare-tunnel.service.js +203 -0
  49. package/dist/packages/core/src/infrastructure/services/webhook/github-webhook.service.d.ts +75 -0
  50. package/dist/packages/core/src/infrastructure/services/webhook/github-webhook.service.d.ts.map +1 -0
  51. package/dist/packages/core/src/infrastructure/services/webhook/github-webhook.service.js +372 -0
  52. package/dist/packages/core/src/infrastructure/services/webhook/webhook-manager.service.d.ts +82 -0
  53. package/dist/packages/core/src/infrastructure/services/webhook/webhook-manager.service.d.ts.map +1 -0
  54. package/dist/packages/core/src/infrastructure/services/webhook/webhook-manager.service.js +206 -0
  55. package/dist/src/presentation/cli/commands/feat/index.d.ts.map +1 -1
  56. package/dist/src/presentation/cli/commands/feat/index.js +2 -0
  57. package/dist/src/presentation/cli/commands/feat/ls.command.d.ts.map +1 -1
  58. package/dist/src/presentation/cli/commands/feat/ls.command.js +3 -0
  59. package/dist/src/presentation/cli/commands/feat/new.command.d.ts.map +1 -1
  60. package/dist/src/presentation/cli/commands/feat/new.command.js +9 -1
  61. package/dist/src/presentation/cli/commands/feat/start.command.d.ts +12 -0
  62. package/dist/src/presentation/cli/commands/feat/start.command.d.ts.map +1 -0
  63. package/dist/src/presentation/cli/commands/feat/start.command.js +43 -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/approve-feature.d.ts.map +1 -1
  67. package/dist/src/presentation/web/app/actions/approve-feature.js +0 -9
  68. package/dist/src/presentation/web/app/actions/create-feature.d.ts +2 -0
  69. package/dist/src/presentation/web/app/actions/create-feature.d.ts.map +1 -1
  70. package/dist/src/presentation/web/app/actions/create-feature.js +3 -1
  71. package/dist/src/presentation/web/app/actions/load-webhook-status.d.ts +3 -0
  72. package/dist/src/presentation/web/app/actions/load-webhook-status.d.ts.map +1 -0
  73. package/dist/src/presentation/web/app/actions/load-webhook-status.js +19 -0
  74. package/dist/src/presentation/web/app/actions/reject-feature.d.ts.map +1 -1
  75. package/dist/src/presentation/web/app/actions/reject-feature.js +0 -9
  76. package/dist/src/presentation/web/app/actions/start-feature.d.ts +5 -0
  77. package/dist/src/presentation/web/app/actions/start-feature.d.ts.map +1 -0
  78. package/dist/src/presentation/web/app/actions/start-feature.js +16 -0
  79. package/dist/src/presentation/web/app/api/agent-events/route.d.ts.map +1 -1
  80. package/dist/src/presentation/web/app/api/agent-events/route.js +1 -0
  81. package/dist/src/presentation/web/app/api/webhooks/deliveries/route.d.ts +9 -0
  82. package/dist/src/presentation/web/app/api/webhooks/deliveries/route.d.ts.map +1 -0
  83. package/dist/src/presentation/web/app/api/webhooks/deliveries/route.js +27 -0
  84. package/dist/src/presentation/web/app/api/webhooks/github/route.d.ts +17 -0
  85. package/dist/src/presentation/web/app/api/webhooks/github/route.d.ts.map +1 -0
  86. package/dist/src/presentation/web/app/api/webhooks/github/route.js +70 -0
  87. package/dist/src/presentation/web/app/api/webhooks/status/route.d.ts +9 -0
  88. package/dist/src/presentation/web/app/api/webhooks/status/route.d.ts.map +1 -0
  89. package/dist/src/presentation/web/app/api/webhooks/status/route.js +26 -0
  90. package/dist/src/presentation/web/app/webhooks/page.d.ts +4 -0
  91. package/dist/src/presentation/web/app/webhooks/page.d.ts.map +1 -0
  92. package/dist/src/presentation/web/app/webhooks/page.js +9 -0
  93. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.js +1 -1
  94. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.stories.js +1 -1
  95. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
  96. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +20 -1
  97. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts +2 -0
  98. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
  99. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +6 -2
  100. package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.d.ts.map +1 -1
  101. package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.js +6 -0
  102. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts +3 -2
  103. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.d.ts.map +1 -1
  104. package/dist/src/presentation/web/components/common/feature-node/feature-node-state-config.js +13 -1
  105. package/dist/src/presentation/web/components/common/feature-node/feature-node.d.ts.map +1 -1
  106. package/dist/src/presentation/web/components/common/feature-node/feature-node.js +12 -3
  107. package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.d.ts +2 -0
  108. package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.d.ts.map +1 -1
  109. package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.js +36 -2
  110. package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
  111. package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +3 -1
  112. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts +1 -0
  113. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
  114. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +23 -0
  115. package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
  116. package/dist/src/presentation/web/components/features/settings/settings-page-client.js +75 -2
  117. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts +1 -0
  118. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts.map +1 -1
  119. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.js +23 -0
  120. package/dist/src/presentation/web/components/features/settings/timeout-slider.d.ts +11 -0
  121. package/dist/src/presentation/web/components/features/settings/timeout-slider.d.ts.map +1 -0
  122. package/dist/src/presentation/web/components/features/settings/timeout-slider.js +63 -0
  123. package/dist/src/presentation/web/components/features/settings/timeout-slider.stories.d.ts +10 -0
  124. package/dist/src/presentation/web/components/features/settings/timeout-slider.stories.d.ts.map +1 -0
  125. package/dist/src/presentation/web/components/features/settings/timeout-slider.stories.js +24 -0
  126. package/dist/src/presentation/web/components/features/settings/workflow-settings-section.d.ts.map +1 -1
  127. package/dist/src/presentation/web/components/features/settings/workflow-settings-section.js +97 -2
  128. package/dist/src/presentation/web/components/features/settings/workflow-settings-section.stories.d.ts.map +1 -1
  129. package/dist/src/presentation/web/components/features/settings/workflow-settings-section.stories.js +22 -0
  130. package/dist/src/presentation/web/components/features/webhooks/types.d.ts +32 -0
  131. package/dist/src/presentation/web/components/features/webhooks/types.d.ts.map +1 -0
  132. package/dist/src/presentation/web/components/features/webhooks/types.js +1 -0
  133. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.d.ts +6 -0
  134. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.d.ts.map +1 -0
  135. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.js +38 -0
  136. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.stories.d.ts +9 -0
  137. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.stories.d.ts.map +1 -0
  138. package/dist/src/presentation/web/components/features/webhooks/webhook-delivery-table.stories.js +69 -0
  139. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.d.ts +7 -0
  140. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.d.ts.map +1 -0
  141. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.js +11 -0
  142. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.stories.d.ts +9 -0
  143. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.stories.d.ts.map +1 -0
  144. package/dist/src/presentation/web/components/features/webhooks/webhook-repo-list.stories.js +31 -0
  145. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.d.ts +6 -0
  146. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.d.ts.map +1 -0
  147. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.js +21 -0
  148. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.stories.d.ts +9 -0
  149. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.stories.d.ts.map +1 -0
  150. package/dist/src/presentation/web/components/features/webhooks/webhook-status-cards.stories.js +56 -0
  151. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.d.ts +6 -0
  152. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.d.ts.map +1 -0
  153. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.js +39 -0
  154. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.stories.d.ts +8 -0
  155. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.stories.d.ts.map +1 -0
  156. package/dist/src/presentation/web/components/features/webhooks/webhooks-page-client.stories.js +59 -0
  157. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
  158. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +2 -2
  159. package/dist/src/presentation/web/components/ui/slider.d.ts +5 -0
  160. package/dist/src/presentation/web/components/ui/slider.d.ts.map +1 -0
  161. package/dist/src/presentation/web/components/ui/slider.js +10 -0
  162. package/dist/src/presentation/web/components/ui/slider.stories.d.ts +7 -0
  163. package/dist/src/presentation/web/components/ui/slider.stories.d.ts.map +1 -0
  164. package/dist/src/presentation/web/components/ui/slider.stories.js +15 -0
  165. package/dist/src/presentation/web/dev-server.js +20 -0
  166. package/dist/src/presentation/web/hooks/sidebar-features-context.d.ts.map +1 -1
  167. package/dist/src/presentation/web/hooks/sidebar-features-context.js +1 -0
  168. package/dist/src/presentation/web/hooks/use-graph-state.d.ts.map +1 -1
  169. package/dist/src/presentation/web/hooks/use-graph-state.js +1 -0
  170. package/dist/src/presentation/web/lib/derive-graph.d.ts +2 -0
  171. package/dist/src/presentation/web/lib/derive-graph.d.ts.map +1 -1
  172. package/dist/src/presentation/web/lib/derive-graph.js +5 -0
  173. package/dist/tsconfig.build.tsbuildinfo +1 -1
  174. package/package.json +3 -1
  175. package/web/.next/BUILD_ID +1 -1
  176. package/web/.next/app-path-routes-manifest.json +5 -1
  177. package/web/.next/build-manifest.json +6 -6
  178. package/web/.next/fallback-build-manifest.json +2 -2
  179. package/web/.next/prerender-manifest.json +3 -3
  180. package/web/.next/required-server-files.js +2 -2
  181. package/web/.next/required-server-files.json +2 -2
  182. package/web/.next/routes-manifest.json +24 -0
  183. package/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +4 -4
  184. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +55 -40
  185. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  186. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  187. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  188. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/build-manifest.json +4 -4
  189. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +67 -52
  190. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +1 -1
  191. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  192. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  193. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +4 -4
  194. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +67 -52
  195. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
  196. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  197. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  198. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +4 -4
  199. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +51 -36
  200. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  201. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  202. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  203. package/web/.next/server/app/(dashboard)/create/page/build-manifest.json +4 -4
  204. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +55 -40
  205. package/web/.next/server/app/(dashboard)/create/page.js +1 -1
  206. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  207. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  208. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/build-manifest.json +4 -4
  209. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +67 -52
  210. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +1 -1
  211. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  212. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  213. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +4 -4
  214. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +67 -52
  215. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
  216. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  217. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  218. package/web/.next/server/app/(dashboard)/page/build-manifest.json +4 -4
  219. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +51 -36
  220. package/web/.next/server/app/(dashboard)/page.js +1 -1
  221. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  222. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  223. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +4 -4
  224. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +51 -36
  225. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  226. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  227. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  228. package/web/.next/server/app/_global-error/page/build-manifest.json +4 -4
  229. package/web/.next/server/app/_global-error.html +2 -2
  230. package/web/.next/server/app/_global-error.rsc +1 -1
  231. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  232. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  233. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  234. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  235. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  236. package/web/.next/server/app/_not-found/page/build-manifest.json +4 -4
  237. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  238. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  239. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  240. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  241. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  242. package/web/.next/server/app/api/webhooks/deliveries/route/app-paths-manifest.json +3 -0
  243. package/web/.next/server/app/api/webhooks/deliveries/route/build-manifest.json +11 -0
  244. package/web/.next/server/app/api/webhooks/deliveries/route/server-reference-manifest.json +4 -0
  245. package/web/.next/server/app/api/webhooks/deliveries/route.js +6 -0
  246. package/web/.next/server/app/api/webhooks/deliveries/route.js.map +5 -0
  247. package/web/.next/server/app/api/webhooks/deliveries/route.js.nft.json +1 -0
  248. package/web/.next/server/app/api/webhooks/deliveries/route_client-reference-manifest.js +2 -0
  249. package/web/.next/server/app/api/webhooks/github/route/app-paths-manifest.json +3 -0
  250. package/web/.next/server/app/api/webhooks/github/route/build-manifest.json +11 -0
  251. package/web/.next/server/app/api/webhooks/github/route/server-reference-manifest.json +4 -0
  252. package/web/.next/server/app/api/webhooks/github/route.js +6 -0
  253. package/web/.next/server/app/api/webhooks/github/route.js.map +5 -0
  254. package/web/.next/server/app/api/webhooks/github/route.js.nft.json +1 -0
  255. package/web/.next/server/app/api/webhooks/github/route_client-reference-manifest.js +2 -0
  256. package/web/.next/server/app/api/webhooks/status/route/app-paths-manifest.json +3 -0
  257. package/web/.next/server/app/api/webhooks/status/route/build-manifest.json +11 -0
  258. package/web/.next/server/app/api/webhooks/status/route/server-reference-manifest.json +4 -0
  259. package/web/.next/server/app/api/webhooks/status/route.js +6 -0
  260. package/web/.next/server/app/api/webhooks/status/route.js.map +5 -0
  261. package/web/.next/server/app/api/webhooks/status/route.js.nft.json +1 -0
  262. package/web/.next/server/app/api/webhooks/status/route_client-reference-manifest.js +2 -0
  263. package/web/.next/server/app/settings/page/build-manifest.json +4 -4
  264. package/web/.next/server/app/settings/page/server-reference-manifest.json +5 -5
  265. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  266. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  267. package/web/.next/server/app/skills/page/build-manifest.json +4 -4
  268. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  269. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  270. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  271. package/web/.next/server/app/tools/page/build-manifest.json +4 -4
  272. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  273. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  274. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  275. package/web/.next/server/app/version/page/build-manifest.json +4 -4
  276. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  277. package/web/.next/server/app/version/page.js.nft.json +1 -1
  278. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  279. package/web/.next/server/app/webhooks/page/app-paths-manifest.json +3 -0
  280. package/web/.next/server/app/webhooks/page/build-manifest.json +18 -0
  281. package/web/.next/server/app/webhooks/page/next-font-manifest.json +6 -0
  282. package/web/.next/server/app/webhooks/page/react-loadable-manifest.json +1 -0
  283. package/web/.next/server/app/webhooks/page/server-reference-manifest.json +35 -0
  284. package/web/.next/server/app/webhooks/page.js +16 -0
  285. package/web/.next/server/app/webhooks/page.js.map +5 -0
  286. package/web/.next/server/app/webhooks/page.js.nft.json +1 -0
  287. package/web/.next/server/app/webhooks/page_client-reference-manifest.js +2 -0
  288. package/web/.next/server/app-paths-manifest.json +5 -1
  289. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
  290. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
  291. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js +2 -2
  292. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js.map +1 -1
  293. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_deliveries_route_actions_d9e34c8d.js +3 -0
  294. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_deliveries_route_actions_d9e34c8d.js.map +1 -0
  295. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_github_route_actions_1b0d0c38.js +3 -0
  296. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_github_route_actions_1b0d0c38.js.map +1 -0
  297. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_status_route_actions_1a0d86a1.js +3 -0
  298. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_webhooks_status_route_actions_1a0d86a1.js.map +1 -0
  299. package/web/.next/server/chunks/[root-of-the-server]__15e5d45c._.js +3 -0
  300. package/web/.next/server/chunks/[root-of-the-server]__15e5d45c._.js.map +1 -0
  301. package/web/.next/server/chunks/[root-of-the-server]__23be381e._.js +3 -0
  302. package/web/.next/server/chunks/[root-of-the-server]__23be381e._.js.map +1 -0
  303. package/web/.next/server/chunks/[root-of-the-server]__7d5492a0._.js +1 -1
  304. package/web/.next/server/chunks/[root-of-the-server]__7d5492a0._.js.map +1 -1
  305. package/web/.next/server/chunks/[root-of-the-server]__9fc760c0._.js +3 -0
  306. package/web/.next/server/chunks/[root-of-the-server]__9fc760c0._.js.map +1 -0
  307. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  308. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +1 -1
  309. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
  310. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  311. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  312. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_activity_22f9667f.js +3 -0
  313. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_activity_22f9667f.js.map +1 -0
  314. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_ed372306.js +3 -0
  315. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_ed372306.js.map +1 -0
  316. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_32e26434.js +3 -0
  317. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_32e26434.js.map +1 -0
  318. package/web/.next/server/chunks/ssr/[root-of-the-server]__07a39ff2._.js +1 -1
  319. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js +1 -1
  320. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js.map +1 -1
  321. package/web/.next/server/chunks/ssr/[root-of-the-server]__172d9576._.js +3 -0
  322. package/web/.next/server/chunks/ssr/[root-of-the-server]__172d9576._.js.map +1 -0
  323. package/web/.next/server/chunks/ssr/[root-of-the-server]__24dd0927._.js +2 -2
  324. package/web/.next/server/chunks/ssr/[root-of-the-server]__24dd0927._.js.map +1 -1
  325. package/web/.next/server/chunks/ssr/[root-of-the-server]__2a5592d5._.js +3 -0
  326. package/web/.next/server/chunks/ssr/[root-of-the-server]__2a5592d5._.js.map +1 -0
  327. package/web/.next/server/chunks/ssr/[root-of-the-server]__5d847b7b._.js +3 -0
  328. package/web/.next/server/chunks/ssr/[root-of-the-server]__5d847b7b._.js.map +1 -0
  329. package/web/.next/server/chunks/ssr/[root-of-the-server]__5d87af2e._.js +1 -1
  330. package/web/.next/server/chunks/ssr/[root-of-the-server]__87a7ae30._.js +3 -0
  331. package/web/.next/server/chunks/ssr/[root-of-the-server]__87a7ae30._.js.map +1 -0
  332. package/web/.next/server/chunks/ssr/[root-of-the-server]__89e8a5cc._.js +2 -2
  333. package/web/.next/server/chunks/ssr/[root-of-the-server]__89e8a5cc._.js.map +1 -1
  334. package/web/.next/server/chunks/ssr/[root-of-the-server]__920dccd5._.js +4 -0
  335. package/web/.next/server/chunks/ssr/[root-of-the-server]__920dccd5._.js.map +1 -0
  336. package/web/.next/server/chunks/ssr/[root-of-the-server]__a42f5a88._.js +3 -0
  337. package/web/.next/server/chunks/ssr/[root-of-the-server]__a42f5a88._.js.map +1 -0
  338. package/web/.next/server/chunks/ssr/[root-of-the-server]__a93289b0._.js +3 -0
  339. package/web/.next/server/chunks/ssr/[root-of-the-server]__a93289b0._.js.map +1 -0
  340. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +2 -2
  341. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  342. package/web/.next/server/chunks/ssr/[root-of-the-server]__ac0304e7._.js +3 -0
  343. package/web/.next/server/chunks/ssr/[root-of-the-server]__ac0304e7._.js.map +1 -0
  344. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js +1 -1
  345. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js.map +1 -1
  346. package/web/.next/server/chunks/ssr/_135edb9c._.js +1 -1
  347. package/web/.next/server/chunks/ssr/_135edb9c._.js.map +1 -1
  348. package/web/.next/server/chunks/ssr/_250a63ae._.js +1 -1
  349. package/web/.next/server/chunks/ssr/_250a63ae._.js.map +1 -1
  350. package/web/.next/server/chunks/ssr/_26b2c311._.js +3 -0
  351. package/web/.next/server/chunks/ssr/_26b2c311._.js.map +1 -0
  352. package/web/.next/server/chunks/ssr/{_f2f36bf9._.js → _719ef347._.js} +2 -2
  353. package/web/.next/server/chunks/ssr/_719ef347._.js.map +1 -0
  354. package/web/.next/server/chunks/ssr/_809c53f6._.js +9 -0
  355. package/web/.next/server/chunks/ssr/_809c53f6._.js.map +1 -0
  356. package/web/.next/server/chunks/ssr/_8dacd1e7._.js +1 -1
  357. package/web/.next/server/chunks/ssr/_8dacd1e7._.js.map +1 -1
  358. package/web/.next/server/chunks/ssr/_98047ffd._.js +3 -0
  359. package/web/.next/server/chunks/ssr/_98047ffd._.js.map +1 -0
  360. package/web/.next/server/chunks/ssr/_9eea4c51._.js +3 -0
  361. package/web/.next/server/chunks/ssr/_9eea4c51._.js.map +1 -0
  362. package/web/.next/server/chunks/ssr/_a4899a76._.js +3 -0
  363. package/web/.next/server/chunks/ssr/_a4899a76._.js.map +1 -0
  364. package/web/.next/server/chunks/ssr/_b715515b._.js +3 -0
  365. package/web/.next/server/chunks/ssr/{_86617fb9._.js.map → _b715515b._.js.map} +1 -1
  366. package/web/.next/server/chunks/ssr/_b7eb93fc._.js +4 -0
  367. package/web/.next/server/chunks/ssr/_b7eb93fc._.js.map +1 -0
  368. package/web/.next/server/chunks/ssr/_cc77a143._.js +1 -1
  369. package/web/.next/server/chunks/ssr/_cc77a143._.js.map +1 -1
  370. package/web/.next/server/chunks/ssr/_e0a01382._.js +3 -0
  371. package/web/.next/server/chunks/ssr/_e0a01382._.js.map +1 -0
  372. package/web/.next/server/chunks/ssr/_f8b36e2c._.js +3 -0
  373. package/web/.next/server/chunks/ssr/_f8b36e2c._.js.map +1 -0
  374. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  375. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  376. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_webhooks_webhooks-page-client_tsx_b2662ea3._.js +3 -0
  377. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_webhooks_webhooks-page-client_tsx_b2662ea3._.js.map +1 -0
  378. package/web/.next/server/chunks/ssr/{_1bb131c4._.js → node_modules__pnpm_747b43ac._.js} +2 -2
  379. package/web/.next/server/chunks/ssr/node_modules__pnpm_747b43ac._.js.map +1 -0
  380. package/web/.next/server/chunks/ssr/src_presentation_web_0835b28e._.js +5 -0
  381. package/web/.next/server/chunks/ssr/src_presentation_web_0835b28e._.js.map +1 -0
  382. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_e99d78dd.js +3 -0
  383. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_e99d78dd.js.map +1 -0
  384. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +1 -1
  385. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -1
  386. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +1 -1
  387. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -1
  388. package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js +1 -1
  389. package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js.map +1 -1
  390. package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js +1 -1
  391. package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js.map +1 -1
  392. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  393. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  394. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  395. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  396. package/web/.next/server/chunks/ssr/src_presentation_web_e8034a29._.js +5 -0
  397. package/web/.next/server/chunks/ssr/src_presentation_web_e8034a29._.js.map +1 -0
  398. package/web/.next/server/middleware-build-manifest.js +4 -4
  399. package/web/.next/server/pages/500.html +2 -2
  400. package/web/.next/server/server-reference-manifest.js +1 -1
  401. package/web/.next/server/server-reference-manifest.json +323 -230
  402. package/web/.next/static/chunks/06b948216df083c1.js +1 -0
  403. package/web/.next/static/chunks/{763f6ecc4593dc10.js → 2ac228556e3d1db4.js} +1 -1
  404. package/web/.next/static/chunks/31f35710932542ef.js +1 -0
  405. package/web/.next/static/chunks/40b6bcf1a2de4a0f.js +1 -0
  406. package/web/.next/static/chunks/4714eb891fa4fd81.js +1 -0
  407. package/web/.next/static/chunks/57094e1cbd326d6c.css +1 -0
  408. package/web/.next/static/chunks/{5225e7b93df59de9.js → 5856c588eb7f21fd.js} +1 -1
  409. package/web/.next/static/chunks/5f6161ceb4263319.js +1 -0
  410. package/web/.next/static/chunks/81f470d21748eafd.js +2 -0
  411. package/web/.next/static/chunks/829305a6e02eff1f.js +1 -0
  412. package/web/.next/static/chunks/97aaeeee72be634b.js +1 -0
  413. package/web/.next/static/chunks/{672e3da3ad26005b.js → 98e3a7cf58fc912a.js} +1 -1
  414. package/web/.next/static/chunks/9a7361e2365b2d8e.js +1 -0
  415. package/web/.next/static/chunks/9af45e885bd4ccef.js +1 -0
  416. package/web/.next/static/chunks/{f32b896b3ceae18d.js → ab8b8f80cbc8366f.js} +2 -2
  417. package/web/.next/static/chunks/c3c3f2c9eb309920.js +1 -0
  418. package/web/.next/static/chunks/c7e793951b20a67f.js +1 -0
  419. package/web/.next/static/chunks/cb2824954c3975b0.js +1 -0
  420. package/web/.next/static/chunks/{053b644519f721f1.js → d3db43fcdbbd9b68.js} +1 -1
  421. package/web/.next/static/chunks/e9621b096a69e4e8.js +11 -0
  422. package/web/.next/static/chunks/fb99c57e6d28a274.js +1 -0
  423. package/web/.next/static/chunks/{turbopack-426d9bc2450816ba.js → turbopack-b1685b5f87ad1d60.js} +1 -1
  424. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_a1104008.js +0 -3
  425. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_a1104008.js.map +0 -1
  426. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_92642200.js +0 -3
  427. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_92642200.js.map +0 -1
  428. package/web/.next/server/chunks/ssr/[root-of-the-server]__039967e3._.js +0 -3
  429. package/web/.next/server/chunks/ssr/[root-of-the-server]__039967e3._.js.map +0 -1
  430. package/web/.next/server/chunks/ssr/[root-of-the-server]__2773312c._.js +0 -3
  431. package/web/.next/server/chunks/ssr/[root-of-the-server]__2773312c._.js.map +0 -1
  432. package/web/.next/server/chunks/ssr/[root-of-the-server]__6367aea0._.js +0 -3
  433. package/web/.next/server/chunks/ssr/[root-of-the-server]__6367aea0._.js.map +0 -1
  434. package/web/.next/server/chunks/ssr/[root-of-the-server]__b1e68e34._.js +0 -3
  435. package/web/.next/server/chunks/ssr/[root-of-the-server]__b1e68e34._.js.map +0 -1
  436. package/web/.next/server/chunks/ssr/[root-of-the-server]__cbd8062c._.js +0 -3
  437. package/web/.next/server/chunks/ssr/[root-of-the-server]__cbd8062c._.js.map +0 -1
  438. package/web/.next/server/chunks/ssr/[root-of-the-server]__e70c5627._.js +0 -3
  439. package/web/.next/server/chunks/ssr/[root-of-the-server]__e70c5627._.js.map +0 -1
  440. package/web/.next/server/chunks/ssr/_1bb131c4._.js.map +0 -1
  441. package/web/.next/server/chunks/ssr/_273d4632._.js +0 -3
  442. package/web/.next/server/chunks/ssr/_273d4632._.js.map +0 -1
  443. package/web/.next/server/chunks/ssr/_6d26a08f._.js +0 -3
  444. package/web/.next/server/chunks/ssr/_6d26a08f._.js.map +0 -1
  445. package/web/.next/server/chunks/ssr/_86617fb9._.js +0 -3
  446. package/web/.next/server/chunks/ssr/_a68d7e1c._.js +0 -9
  447. package/web/.next/server/chunks/ssr/_a68d7e1c._.js.map +0 -1
  448. package/web/.next/server/chunks/ssr/_b5d0b00e._.js +0 -3
  449. package/web/.next/server/chunks/ssr/_b5d0b00e._.js.map +0 -1
  450. package/web/.next/server/chunks/ssr/_b5fc318a._.js +0 -3
  451. package/web/.next/server/chunks/ssr/_b5fc318a._.js.map +0 -1
  452. package/web/.next/server/chunks/ssr/_f2f36bf9._.js.map +0 -1
  453. package/web/.next/server/chunks/ssr/_f5316e67._.js +0 -3
  454. package/web/.next/server/chunks/ssr/_f5316e67._.js.map +0 -1
  455. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_888633e1.js +0 -3
  456. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_888633e1.js.map +0 -1
  457. package/web/.next/server/chunks/ssr/src_presentation_web_ce7cbc3c._.js +0 -5
  458. package/web/.next/server/chunks/ssr/src_presentation_web_ce7cbc3c._.js.map +0 -1
  459. package/web/.next/server/chunks/ssr/src_presentation_web_e2604413._.js +0 -5
  460. package/web/.next/server/chunks/ssr/src_presentation_web_e2604413._.js.map +0 -1
  461. package/web/.next/static/chunks/121a2e602cb9df92.js +0 -11
  462. package/web/.next/static/chunks/303a1217006489b9.js +0 -1
  463. package/web/.next/static/chunks/3a806cf059241bc9.js +0 -1
  464. package/web/.next/static/chunks/57b45edf86522369.css +0 -1
  465. package/web/.next/static/chunks/619af41a8d3232e5.js +0 -1
  466. package/web/.next/static/chunks/6770c61692fe5605.js +0 -1
  467. package/web/.next/static/chunks/84a181ff3270fd9f.js +0 -1
  468. package/web/.next/static/chunks/8c3ff8561102a386.js +0 -1
  469. package/web/.next/static/chunks/a1b3371ef3ffd58b.js +0 -2
  470. package/web/.next/static/chunks/b1f3c0e8e9872ef8.js +0 -1
  471. package/web/.next/static/chunks/bec349a77c5c5796.js +0 -1
  472. package/web/.next/static/chunks/e85bcc69a4ceb89e.js +0 -1
  473. package/web/.next/static/chunks/ed3a602003bcb31b.js +0 -1
  474. package/web/.next/static/chunks/fcde0cbb2976b933.js +0 -1
  475. /package/web/.next/static/{Ci7i00ReHDH8Xv9NQW3By → T6bpRqj4p37ell4NNYIUl}/_buildManifest.js +0 -0
  476. /package/web/.next/static/{Ci7i00ReHDH8Xv9NQW3By → T6bpRqj4p37ell4NNYIUl}/_clientMiddlewareManifest.json +0 -0
  477. /package/web/.next/static/{Ci7i00ReHDH8Xv9NQW3By → T6bpRqj4p37ell4NNYIUl}/_ssgManifest.js +0 -0
@@ -0,0 +1,10 @@
1
+ $schema: https://json-schema.org/draft/2020-12/schema
2
+ $id: AnalyzeRepoTimeouts.yaml
3
+ type: object
4
+ properties:
5
+ analyzeMs:
6
+ type: integer
7
+ minimum: -2147483648
8
+ maximum: 2147483647
9
+ description: "Timeout for the repository analysis stage (default: 600000)"
10
+ description: Timeout overrides for the analyze-repository agent (all values in milliseconds)
@@ -11,5 +11,6 @@ enum:
11
11
  - Review
12
12
  - Maintain
13
13
  - Blocked
14
+ - Pending
14
15
  - Deleting
15
16
  description: Software Development Lifecycle stages for feature progression
@@ -0,0 +1,35 @@
1
+ $schema: https://json-schema.org/draft/2020-12/schema
2
+ $id: StageTimeouts.yaml
3
+ type: object
4
+ properties:
5
+ analyzeMs:
6
+ type: integer
7
+ minimum: -2147483648
8
+ maximum: 2147483647
9
+ description: "Timeout for the analyze stage (default: 600000)"
10
+ requirementsMs:
11
+ type: integer
12
+ minimum: -2147483648
13
+ maximum: 2147483647
14
+ description: "Timeout for the requirements stage (default: 600000)"
15
+ researchMs:
16
+ type: integer
17
+ minimum: -2147483648
18
+ maximum: 2147483647
19
+ description: "Timeout for the research stage (default: 600000)"
20
+ planMs:
21
+ type: integer
22
+ minimum: -2147483648
23
+ maximum: 2147483647
24
+ description: "Timeout for the plan stage (default: 600000)"
25
+ implementMs:
26
+ type: integer
27
+ minimum: -2147483648
28
+ maximum: 2147483647
29
+ description: "Timeout for the implement stage (default: 600000)"
30
+ mergeMs:
31
+ type: integer
32
+ minimum: -2147483648
33
+ maximum: 2147483647
34
+ description: "Timeout for the merge stage (default: 600000)"
35
+ description: Per-stage timeout overrides for the feature agent workflow (all values in milliseconds)
@@ -24,6 +24,12 @@ properties:
24
24
  minimum: -2147483648
25
25
  maximum: 2147483647
26
26
  description: "Maximum characters of CI failure logs to pass to the executor (default: 50000)"
27
+ stageTimeouts:
28
+ $ref: StageTimeouts.yaml
29
+ description: "Per-stage timeout overrides for the feature agent (default: 600000 = 10 minutes per stage)"
30
+ analyzeRepoTimeouts:
31
+ $ref: AnalyzeRepoTimeouts.yaml
32
+ description: "Timeout overrides for the analyze-repository agent (default: 600000 = 10 minutes)"
27
33
  enableEvidence:
28
34
  type: boolean
29
35
  default: false
@@ -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 {};
@@ -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;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"}
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;IAmI1E;;;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"}
@@ -80,6 +80,12 @@ let CreateFeatureUseCase = class CreateFeatureUseCase {
80
80
  : SdlcLifecycle.Requirements;
81
81
  let shouldSpawn = true;
82
82
  let effectiveRepoPath = input.repositoryPath.replace(/\\/g, '/');
83
+ // Pending flag takes precedence — user explicitly defers agent execution.
84
+ // Parent gate validation is deferred to StartFeatureUseCase.
85
+ if (input.pending) {
86
+ initialLifecycle = SdlcLifecycle.Pending;
87
+ shouldSpawn = false;
88
+ }
83
89
  if (input.parentId) {
84
90
  const parent = await this.featureRepo.findById(input.parentId);
85
91
  if (!parent) {
@@ -97,14 +103,17 @@ let CreateFeatureUseCase = class CreateFeatureUseCase {
97
103
  const ancestor = await this.featureRepo.findById(cursor);
98
104
  cursor = ancestor?.parentId ?? undefined;
99
105
  }
100
- if (parent.lifecycle === SdlcLifecycle.Blocked ||
101
- !POST_IMPLEMENTATION.has(parent.lifecycle)) {
102
- initialLifecycle = SdlcLifecycle.Blocked;
103
- shouldSpawn = false;
104
- }
105
- else {
106
- initialLifecycle = SdlcLifecycle.Started;
107
- shouldSpawn = true;
106
+ // Skip gate logic when pending — parent gate is deferred to start time
107
+ if (!input.pending) {
108
+ if (parent.lifecycle === SdlcLifecycle.Blocked ||
109
+ !POST_IMPLEMENTATION.has(parent.lifecycle)) {
110
+ initialLifecycle = SdlcLifecycle.Blocked;
111
+ shouldSpawn = false;
112
+ }
113
+ else {
114
+ initialLifecycle = SdlcLifecycle.Started;
115
+ shouldSpawn = true;
116
+ }
108
117
  }
109
118
  }
110
119
  // Resolve or create repository entity for this path
@@ -13,6 +13,8 @@ export interface CreateFeatureInput {
13
13
  description?: string;
14
14
  /** When true, skip SDLC phases and implement directly from the user prompt. */
15
15
  fast?: boolean;
16
+ /** When true, create feature in Pending state — fully initialized but agent not spawned. */
17
+ pending?: boolean;
16
18
  /** Optional agent type override (overrides settings.agent.type). */
17
19
  agentType?: string;
18
20
  /** Optional model identifier forwarded to the agent executor for this invocation. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/use-cases/features/create/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAEjG,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,8EAA8E;AAC9E,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,WAAW,EAAE,OAAO,CAAC;CACtB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/use-cases/features/create/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,wCAAwC,CAAC;AAEjG,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,4FAA4F;IAC5F,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qFAAqF;IACrF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,8EAA8E;AAC9E,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,WAAW,EAAE,OAAO,CAAC;CACtB"}
@@ -19,8 +19,6 @@ export declare class ResumeFeatureUseCase {
19
19
  private readonly processService;
20
20
  private readonly worktreeService;
21
21
  constructor(featureRepo: IFeatureRepository, runRepo: IAgentRunRepository, processService: IFeatureAgentProcessService, worktreeService: IWorktreeService);
22
- execute(featureId: string, options?: {
23
- promptPrefix?: string;
24
- }): Promise<ResumeFeatureResult>;
22
+ execute(featureId: string): Promise<ResumeFeatureResult>;
25
23
  }
26
24
  //# sourceMappingURL=resume-feature.use-case.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resume-feature.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/resume-feature.use-case.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAE7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6DAA6D,CAAC;AACvG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8DAA8D,CAAC;AAChH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAQlG,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,QAAQ,CAAC;CAClB;AAED,qBACa,oBAAoB;IAG7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,eAAe;gBANf,WAAW,EAAE,kBAAkB,EAE/B,OAAO,EAAE,mBAAmB,EAE5B,cAAc,EAAE,2BAA2B,EAE3C,eAAe,EAAE,gBAAgB;IAG9C,OAAO,CACX,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAClC,OAAO,CAAC,mBAAmB,CAAC;CAuGhC"}
1
+ {"version":3,"file":"resume-feature.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/resume-feature.use-case.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAE7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6DAA6D,CAAC;AACvG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8DAA8D,CAAC;AAChH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAQlG,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,QAAQ,CAAC;CAClB;AAED,qBACa,oBAAoB;IAG7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,eAAe;gBANf,WAAW,EAAE,kBAAkB,EAE/B,OAAO,EAAE,mBAAmB,EAE5B,cAAc,EAAE,2BAA2B,EAE3C,eAAe,EAAE,gBAAgB;IAG9C,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAqG/D"}
@@ -35,7 +35,7 @@ let ResumeFeatureUseCase = class ResumeFeatureUseCase {
35
35
  this.processService = processService;
36
36
  this.worktreeService = worktreeService;
37
37
  }
38
- async execute(featureId, options) {
38
+ async execute(featureId) {
39
39
  // Resolve feature by exact ID or prefix
40
40
  const feature = (await this.featureRepo.findById(featureId)) ??
41
41
  (await this.featureRepo.findByIdPrefix(featureId));
@@ -79,9 +79,7 @@ let ResumeFeatureUseCase = class ResumeFeatureUseCase {
79
79
  agentType: lastRun.agentType,
80
80
  agentName: lastRun.agentName,
81
81
  status: AgentRunStatus.pending,
82
- prompt: options?.promptPrefix
83
- ? `${options.promptPrefix}\n\n${lastRun.prompt}`
84
- : lastRun.prompt,
82
+ prompt: lastRun.prompt,
85
83
  threadId: lastRun.threadId, // Same thread for checkpoint continuity
86
84
  featureId: feature.id,
87
85
  repositoryPath: feature.repositoryPath,
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Start Feature Use Case
3
+ *
4
+ * Transitions a Pending feature to its active lifecycle and spawns
5
+ * the agent. Validates lifecycle state, checks parent dependency
6
+ * gates, and reuses the existing AgentRun record.
7
+ */
8
+ import type { Feature, AgentRun } from '../../../domain/generated/output.js';
9
+ import type { IFeatureRepository } from '../../ports/output/repositories/feature-repository.interface.js';
10
+ import type { IAgentRunRepository } from '../../ports/output/agents/agent-run-repository.interface.js';
11
+ import type { IFeatureAgentProcessService } from '../../ports/output/agents/feature-agent-process.interface.js';
12
+ import type { IWorktreeService } from '../../ports/output/services/worktree-service.interface.js';
13
+ export interface StartFeatureResult {
14
+ feature: Feature;
15
+ agentRun: AgentRun;
16
+ }
17
+ export declare class StartFeatureUseCase {
18
+ private readonly featureRepo;
19
+ private readonly runRepo;
20
+ private readonly processService;
21
+ private readonly worktreeService;
22
+ constructor(featureRepo: IFeatureRepository, runRepo: IAgentRunRepository, processService: IFeatureAgentProcessService, worktreeService: IWorktreeService);
23
+ execute(featureId: string): Promise<StartFeatureResult>;
24
+ }
25
+ //# sourceMappingURL=start-feature.use-case.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start-feature.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/start-feature.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAE7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6DAA6D,CAAC;AACvG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8DAA8D,CAAC;AAChH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAGlG,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,qBACa,mBAAmB;IAG5B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAExB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAE/B,OAAO,CAAC,QAAQ,CAAC,eAAe;gBANf,WAAW,EAAE,kBAAkB,EAE/B,OAAO,EAAE,mBAAmB,EAE5B,cAAc,EAAE,2BAA2B,EAE3C,eAAe,EAAE,gBAAgB;IAG9C,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAoG9D"}
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Start Feature Use Case
3
+ *
4
+ * Transitions a Pending feature to its active lifecycle and spawns
5
+ * the agent. Validates lifecycle state, checks parent dependency
6
+ * gates, and reuses the existing AgentRun record.
7
+ */
8
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
9
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
10
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
11
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
12
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
13
+ };
14
+ var __metadata = (this && this.__metadata) || function (k, v) {
15
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
16
+ };
17
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
18
+ return function (target, key) { decorator(target, key, paramIndex); }
19
+ };
20
+ import { injectable, inject } from 'tsyringe';
21
+ import { SdlcLifecycle } from '../../../domain/generated/output.js';
22
+ import { POST_IMPLEMENTATION } from '../../../domain/lifecycle-gates.js';
23
+ let StartFeatureUseCase = class StartFeatureUseCase {
24
+ featureRepo;
25
+ runRepo;
26
+ processService;
27
+ worktreeService;
28
+ constructor(featureRepo, runRepo, processService, worktreeService) {
29
+ this.featureRepo = featureRepo;
30
+ this.runRepo = runRepo;
31
+ this.processService = processService;
32
+ this.worktreeService = worktreeService;
33
+ }
34
+ async execute(featureId) {
35
+ // Resolve feature by exact ID or prefix
36
+ const feature = (await this.featureRepo.findById(featureId)) ??
37
+ (await this.featureRepo.findByIdPrefix(featureId));
38
+ if (!feature) {
39
+ throw new Error(`Feature not found: ${featureId}`);
40
+ }
41
+ // Validate lifecycle is Pending
42
+ if (feature.lifecycle !== SdlcLifecycle.Pending) {
43
+ throw new Error(`Feature "${feature.name}" is not in Pending state (current: ${feature.lifecycle}). Only pending features can be started.`);
44
+ }
45
+ // Validate agentRunId exists
46
+ if (!feature.agentRunId) {
47
+ throw new Error(`No agent run found for feature "${feature.name}"`);
48
+ }
49
+ const agentRun = await this.runRepo.findById(feature.agentRunId);
50
+ if (!agentRun) {
51
+ throw new Error(`No agent run found for feature "${feature.name}"`);
52
+ }
53
+ // Wait for specPath — the web UI creates features in two phases: a fast
54
+ // DB record (specPath: '') followed by background initialization that
55
+ // populates specPath. If the user clicks "Start" before Phase 2 finishes,
56
+ // specPath will still be empty. Poll the DB briefly to let it complete.
57
+ let resolved = feature;
58
+ if (!resolved.specPath) {
59
+ const MAX_POLLS = 20;
60
+ const POLL_INTERVAL_MS = 500;
61
+ for (let i = 0; i < MAX_POLLS; i++) {
62
+ await new Promise((r) => setTimeout(r, POLL_INTERVAL_MS));
63
+ const refreshed = await this.featureRepo.findById(resolved.id);
64
+ if (refreshed?.specPath) {
65
+ resolved = refreshed;
66
+ break;
67
+ }
68
+ }
69
+ if (!resolved.specPath) {
70
+ throw new Error(`Feature "${resolved.name}" is still being initialized — please try again shortly`);
71
+ }
72
+ }
73
+ // Check parent gate if feature has a parent
74
+ let targetLifecycle = resolved.fast ? SdlcLifecycle.Implementation : SdlcLifecycle.Requirements;
75
+ let shouldSpawn = true;
76
+ if (resolved.parentId) {
77
+ const parent = await this.featureRepo.findById(resolved.parentId);
78
+ if (!parent ||
79
+ parent.lifecycle === SdlcLifecycle.Blocked ||
80
+ !POST_IMPLEMENTATION.has(parent.lifecycle)) {
81
+ targetLifecycle = SdlcLifecycle.Blocked;
82
+ shouldSpawn = false;
83
+ }
84
+ }
85
+ // Transition lifecycle
86
+ const updatedFeature = {
87
+ ...resolved,
88
+ lifecycle: targetLifecycle,
89
+ updatedAt: new Date(),
90
+ };
91
+ await this.featureRepo.update(updatedFeature);
92
+ // Spawn agent if not blocked
93
+ if (shouldSpawn) {
94
+ const worktreePath = this.worktreeService.getWorktreePath(resolved.repositoryPath, resolved.branch);
95
+ this.processService.spawn(resolved.id, resolved.agentRunId, resolved.repositoryPath, resolved.specPath, worktreePath, {
96
+ approvalGates: resolved.approvalGates,
97
+ threadId: agentRun.threadId,
98
+ push: resolved.push,
99
+ openPr: resolved.openPr,
100
+ agentType: agentRun.agentType,
101
+ ...(resolved.fast ? { fast: true } : {}),
102
+ ...(agentRun.modelId ? { model: agentRun.modelId } : {}),
103
+ });
104
+ }
105
+ return { feature: updatedFeature, agentRun };
106
+ }
107
+ };
108
+ StartFeatureUseCase = __decorate([
109
+ injectable(),
110
+ __param(0, inject('IFeatureRepository')),
111
+ __param(1, inject('IAgentRunRepository')),
112
+ __param(2, inject('IFeatureAgentProcessService')),
113
+ __param(3, inject('IWorktreeService')),
114
+ __metadata("design:paramtypes", [Object, Object, Object, Object])
115
+ ], StartFeatureUseCase);
116
+ export { StartFeatureUseCase };
@@ -308,6 +308,44 @@ export type ApprovalGateDefaults = {
308
308
  */
309
309
  pushOnImplementationComplete: boolean;
310
310
  };
311
+ /**
312
+ * Per-stage timeout overrides for the feature agent workflow (all values in milliseconds)
313
+ */
314
+ export type StageTimeouts = {
315
+ /**
316
+ * Timeout for the analyze stage (default: 600000)
317
+ */
318
+ analyzeMs?: number;
319
+ /**
320
+ * Timeout for the requirements stage (default: 600000)
321
+ */
322
+ requirementsMs?: number;
323
+ /**
324
+ * Timeout for the research stage (default: 600000)
325
+ */
326
+ researchMs?: number;
327
+ /**
328
+ * Timeout for the plan stage (default: 600000)
329
+ */
330
+ planMs?: number;
331
+ /**
332
+ * Timeout for the implement stage (default: 600000)
333
+ */
334
+ implementMs?: number;
335
+ /**
336
+ * Timeout for the merge stage (default: 600000)
337
+ */
338
+ mergeMs?: number;
339
+ };
340
+ /**
341
+ * Timeout overrides for the analyze-repository agent (all values in milliseconds)
342
+ */
343
+ export type AnalyzeRepoTimeouts = {
344
+ /**
345
+ * Timeout for the repository analysis stage (default: 600000)
346
+ */
347
+ analyzeMs?: number;
348
+ };
311
349
  /**
312
350
  * Global workflow configuration defaults
313
351
  */
@@ -332,6 +370,14 @@ export type WorkflowConfig = {
332
370
  * Maximum characters of CI failure logs to pass to the executor (default: 50000)
333
371
  */
334
372
  ciLogMaxChars?: number;
373
+ /**
374
+ * Per-stage timeout overrides for the feature agent (default: 600000 = 10 minutes per stage)
375
+ */
376
+ stageTimeouts?: StageTimeouts;
377
+ /**
378
+ * Timeout overrides for the analyze-repository agent (default: 600000 = 10 minutes)
379
+ */
380
+ analyzeRepoTimeouts?: AnalyzeRepoTimeouts;
335
381
  /**
336
382
  * Enable evidence collection after implementation (default: false)
337
383
  */
@@ -649,6 +695,7 @@ export declare enum SdlcLifecycle {
649
695
  Review = "Review",
650
696
  Maintain = "Maintain",
651
697
  Blocked = "Blocked",
698
+ Pending = "Pending",
652
699
  Deleting = "Deleting"
653
700
  }
654
701
  /**