@shepai/cli 1.142.0-pr453.4cfded1 → 1.142.1-pr454.60f0445

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 (258) hide show
  1. package/apis/json-schema/Feature.yaml +10 -0
  2. package/apis/json-schema/PullRequest.yaml +11 -0
  3. package/apis/json-schema/SdlcLifecycle.yaml +1 -0
  4. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts +2 -0
  5. package/dist/packages/core/src/application/ports/output/agents/feature-agent-process.interface.d.ts.map +1 -1
  6. package/dist/packages/core/src/application/ports/output/services/git-fork-service.interface.d.ts +33 -0
  7. package/dist/packages/core/src/application/ports/output/services/git-fork-service.interface.d.ts.map +1 -0
  8. package/dist/packages/core/src/application/ports/output/services/git-fork-service.interface.js +24 -0
  9. package/dist/packages/core/src/application/use-cases/features/adopt-branch.use-case.d.ts.map +1 -1
  10. package/dist/packages/core/src/application/use-cases/features/adopt-branch.use-case.js +2 -0
  11. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  12. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +16 -1
  13. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts +2 -0
  14. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts.map +1 -1
  15. package/dist/packages/core/src/application/use-cases/features/poll-upstream-pr.use-case.d.ts +29 -0
  16. package/dist/packages/core/src/application/use-cases/features/poll-upstream-pr.use-case.d.ts.map +1 -0
  17. package/dist/packages/core/src/application/use-cases/features/poll-upstream-pr.use-case.js +105 -0
  18. package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.d.ts.map +1 -1
  19. package/dist/packages/core/src/application/use-cases/features/start-feature.use-case.js +2 -0
  20. package/dist/packages/core/src/domain/generated/output.d.ts +22 -1
  21. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  22. package/dist/packages/core/src/domain/generated/output.js +1 -0
  23. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  24. package/dist/packages/core/src/infrastructure/di/container.js +2 -0
  25. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts +2 -0
  26. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts.map +1 -1
  27. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.js +4 -0
  28. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/045-add-fork-and-pr-fields.d.ts +11 -0
  29. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/045-add-fork-and-pr-fields.d.ts.map +1 -0
  30. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/045-add-fork-and-pr-fields.js +28 -0
  31. package/dist/packages/core/src/infrastructure/repositories/sqlite-feature.repository.d.ts.map +1 -1
  32. package/dist/packages/core/src/infrastructure/repositories/sqlite-feature.repository.js +6 -2
  33. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts +10 -0
  34. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.d.ts.map +1 -1
  35. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts +34 -0
  36. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.d.ts.map +1 -1
  37. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts +2 -0
  38. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.d.ts.map +1 -1
  39. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.js +6 -0
  40. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts +2 -0
  41. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
  42. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +12 -0
  43. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts +2 -0
  44. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts.map +1 -1
  45. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.js +89 -49
  46. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts +2 -0
  47. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.d.ts.map +1 -1
  48. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/state.js +8 -0
  49. package/dist/packages/core/src/infrastructure/services/git/git-fork.service.d.ts +29 -0
  50. package/dist/packages/core/src/infrastructure/services/git/git-fork.service.d.ts.map +1 -0
  51. package/dist/packages/core/src/infrastructure/services/git/git-fork.service.js +204 -0
  52. package/dist/packages/core/src/infrastructure/services/pr-sync/pr-sync-watcher.service.d.ts +13 -3
  53. package/dist/packages/core/src/infrastructure/services/pr-sync/pr-sync-watcher.service.d.ts.map +1 -1
  54. package/dist/packages/core/src/infrastructure/services/pr-sync/pr-sync-watcher.service.js +39 -10
  55. package/dist/src/presentation/cli/commands/ui.command.d.ts.map +1 -1
  56. package/dist/src/presentation/cli/commands/ui.command.js +3 -1
  57. package/dist/src/presentation/web/app/actions/create-feature.d.ts +2 -0
  58. package/dist/src/presentation/web/app/actions/create-feature.d.ts.map +1 -1
  59. package/dist/src/presentation/web/app/actions/create-feature.js +5 -1
  60. package/dist/src/presentation/web/app/api/agent-events/route.d.ts.map +1 -1
  61. package/dist/src/presentation/web/app/api/agent-events/route.js +1 -0
  62. package/dist/src/presentation/web/app/api/sessions/route.d.ts.map +1 -1
  63. package/dist/src/presentation/web/app/api/sessions/route.js +45 -13
  64. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts +2 -0
  65. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
  66. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +22 -5
  67. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts +18 -0
  68. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts.map +1 -1
  69. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.js +52 -0
  70. package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.d.ts.map +1 -1
  71. package/dist/src/presentation/web/components/common/feature-node/derive-feature-state.js +1 -0
  72. package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.d.ts +7 -0
  73. package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.d.ts.map +1 -1
  74. package/dist/src/presentation/web/components/common/feature-node/feature-node.stories.js +29 -0
  75. package/dist/src/presentation/web/components/common/feature-node/feature-sessions-dropdown.d.ts +3 -1
  76. package/dist/src/presentation/web/components/common/feature-node/feature-sessions-dropdown.d.ts.map +1 -1
  77. package/dist/src/presentation/web/components/common/feature-node/feature-sessions-dropdown.js +13 -5
  78. package/dist/src/presentation/web/components/common/repository-node/repository-node.d.ts.map +1 -1
  79. package/dist/src/presentation/web/components/common/repository-node/repository-node.js +1 -1
  80. package/dist/src/presentation/web/dev-server.js +3 -1
  81. package/dist/src/presentation/web/next.config.d.ts.map +1 -1
  82. package/dist/src/presentation/web/next.config.js +4 -0
  83. package/dist/tsconfig.build.tsbuildinfo +1 -1
  84. package/package.json +1 -1
  85. package/web/.next/BUILD_ID +1 -1
  86. package/web/.next/build-manifest.json +2 -2
  87. package/web/.next/fallback-build-manifest.json +2 -2
  88. package/web/.next/prerender-manifest.json +3 -3
  89. package/web/.next/required-server-files.js +5 -3
  90. package/web/.next/required-server-files.json +5 -3
  91. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +28 -28
  92. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +1 -1
  93. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  94. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  95. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +28 -28
  96. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  97. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  98. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  99. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +36 -36
  100. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +1 -1
  101. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  102. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  103. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +36 -36
  104. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
  105. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  106. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  107. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +26 -26
  108. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  109. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  110. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  111. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +28 -28
  112. package/web/.next/server/app/(dashboard)/create/page.js +1 -1
  113. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  114. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  115. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +36 -36
  116. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +1 -1
  117. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  118. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  119. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +36 -36
  120. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
  121. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  122. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  123. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +26 -26
  124. package/web/.next/server/app/(dashboard)/page.js +1 -1
  125. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  126. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  127. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +26 -26
  128. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  129. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  130. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  131. package/web/.next/server/app/_global-error.html +2 -2
  132. package/web/.next/server/app/_global-error.rsc +1 -1
  133. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  134. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  135. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  136. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  137. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  138. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +3 -3
  139. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  140. package/web/.next/server/app/api/sessions/route.js +3 -2
  141. package/web/.next/server/app/api/sessions/route.js.nft.json +1 -1
  142. package/web/.next/server/app/settings/page/server-reference-manifest.json +8 -8
  143. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  144. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  145. package/web/.next/server/app/skills/page/server-reference-manifest.json +8 -8
  146. package/web/.next/server/app/skills/page.js +1 -1
  147. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  148. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  149. package/web/.next/server/app/tools/page/server-reference-manifest.json +8 -8
  150. package/web/.next/server/app/tools/page.js +1 -1
  151. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  152. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  153. package/web/.next/server/app/version/page/server-reference-manifest.json +3 -3
  154. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  155. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
  156. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
  157. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js +2 -2
  158. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js.map +1 -1
  159. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_ff60e4a5.js +3 -0
  160. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_ff60e4a5.js.map +1 -0
  161. package/web/.next/server/chunks/[externals]__448264a3._.js +3 -0
  162. package/web/.next/server/chunks/[externals]__448264a3._.js.map +1 -0
  163. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  164. package/web/.next/server/chunks/[root-of-the-server]__c6e32a23._.js +1 -1
  165. package/web/.next/server/chunks/[root-of-the-server]__c6e32a23._.js.map +1 -1
  166. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js +1 -1
  167. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
  168. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  169. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  170. package/web/.next/server/chunks/ssr/[root-of-the-server]__0b150ddf._.js +3 -0
  171. package/web/.next/server/chunks/ssr/[root-of-the-server]__0b150ddf._.js.map +1 -0
  172. package/web/.next/server/chunks/ssr/{[root-of-the-server]__a5f9c6e5._.js → [root-of-the-server]__2138fa7e._.js} +3 -3
  173. package/web/.next/server/chunks/ssr/{[root-of-the-server]__a5f9c6e5._.js.map → [root-of-the-server]__2138fa7e._.js.map} +1 -1
  174. package/web/.next/server/chunks/ssr/[root-of-the-server]__29580090._.js +1 -1
  175. package/web/.next/server/chunks/ssr/[root-of-the-server]__29580090._.js.map +1 -1
  176. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  177. package/web/.next/server/chunks/ssr/[root-of-the-server]__3ef34e4c._.js +1 -1
  178. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +1 -1
  179. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +1 -1
  180. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +1 -1
  181. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +1 -1
  182. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +2 -2
  183. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  184. package/web/.next/server/chunks/ssr/[root-of-the-server]__c094882b._.js +1 -1
  185. package/web/.next/server/chunks/ssr/[root-of-the-server]__c094882b._.js.map +1 -1
  186. package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js +1 -1
  187. package/web/.next/server/chunks/ssr/[root-of-the-server]__d48c5b11._.js.map +1 -1
  188. package/web/.next/server/chunks/ssr/[root-of-the-server]__dac5dbf1._.js +1 -1
  189. package/web/.next/server/chunks/ssr/[root-of-the-server]__dac5dbf1._.js.map +1 -1
  190. package/web/.next/server/chunks/ssr/[root-of-the-server]__fae8b355._.js +1 -1
  191. package/web/.next/server/chunks/ssr/[root-of-the-server]__fae8b355._.js.map +1 -1
  192. package/web/.next/server/chunks/ssr/_0c5f56e3._.js +2 -2
  193. package/web/.next/server/chunks/ssr/_0c5f56e3._.js.map +1 -1
  194. package/web/.next/server/chunks/ssr/_1b719e7f._.js +1 -1
  195. package/web/.next/server/chunks/ssr/_1b719e7f._.js.map +1 -1
  196. package/web/.next/server/chunks/ssr/_37e8548b._.js +1 -1
  197. package/web/.next/server/chunks/ssr/_37e8548b._.js.map +1 -1
  198. package/web/.next/server/chunks/ssr/_55d763e2._.js +1 -1
  199. package/web/.next/server/chunks/ssr/_55d763e2._.js.map +1 -1
  200. package/web/.next/server/chunks/ssr/_6256a985._.js +1 -1
  201. package/web/.next/server/chunks/ssr/_6256a985._.js.map +1 -1
  202. package/web/.next/server/chunks/ssr/_64bdfc6f._.js +2 -2
  203. package/web/.next/server/chunks/ssr/_64bdfc6f._.js.map +1 -1
  204. package/web/.next/server/chunks/ssr/_67104d9e._.js +1 -1
  205. package/web/.next/server/chunks/ssr/_7dca1882._.js +1 -1
  206. package/web/.next/server/chunks/ssr/_7dca1882._.js.map +1 -1
  207. package/web/.next/server/chunks/ssr/{_be6f83dc._.js → _a8a2233a._.js} +2 -2
  208. package/web/.next/server/chunks/ssr/{_be6f83dc._.js.map → _a8a2233a._.js.map} +1 -1
  209. package/web/.next/server/chunks/ssr/_a9f57758._.js +1 -1
  210. package/web/.next/server/chunks/ssr/_a9f57758._.js.map +1 -1
  211. package/web/.next/server/chunks/ssr/_b71645b4._.js +1 -1
  212. package/web/.next/server/chunks/ssr/_b71645b4._.js.map +1 -1
  213. package/web/.next/server/chunks/ssr/_cfbd1d7e._.js +1 -1
  214. package/web/.next/server/chunks/ssr/_d4b20e29._.js.map +1 -1
  215. package/web/.next/server/chunks/ssr/_d8575088._.js +1 -1
  216. package/web/.next/server/chunks/ssr/_d8575088._.js.map +1 -1
  217. package/web/.next/server/chunks/ssr/_f39a1adb._.js +1 -1
  218. package/web/.next/server/chunks/ssr/_f39a1adb._.js.map +1 -1
  219. package/web/.next/server/chunks/ssr/{_1ac172f4._.js → _f4d19ff3._.js} +2 -2
  220. package/web/.next/server/chunks/ssr/{_1ac172f4._.js.map → _f4d19ff3._.js.map} +1 -1
  221. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  222. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  223. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +1 -1
  224. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +1 -1
  225. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +1 -1
  226. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js.map +1 -1
  227. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
  228. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  229. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  230. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  231. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  232. package/web/.next/server/chunks/ssr/src_presentation_web_d50bc654._.js +3 -0
  233. package/web/.next/server/chunks/ssr/{src_presentation_web_b3f3c105._.js.map → src_presentation_web_d50bc654._.js.map} +1 -1
  234. package/web/.next/server/pages/500.html +2 -2
  235. package/web/.next/server/server-reference-manifest.js +1 -1
  236. package/web/.next/server/server-reference-manifest.json +44 -44
  237. package/web/.next/static/chunks/{cf622541a1f71988.js → 00fd65dc10f3da0a.js} +1 -1
  238. package/web/.next/static/chunks/{cc40bfb418fa8f56.js → 024575217799dac8.js} +1 -1
  239. package/web/.next/static/chunks/101d4334f60ec83f.js +1 -0
  240. package/web/.next/static/chunks/{73a92c1924e105bd.js → 4c543e4daf8755a3.js} +2 -2
  241. package/web/.next/static/chunks/{6e4420930c0fe21c.js → 72e48a32d1f244b9.js} +1 -1
  242. package/web/.next/static/chunks/{66723d84a0b01634.js → 8a42aa668b401526.js} +1 -1
  243. package/web/.next/static/chunks/94bb64cb067c785e.js +1 -0
  244. package/web/.next/static/chunks/{f2c4d78aa6703653.js → 9e93ecdd1b445607.js} +1 -1
  245. package/web/.next/static/chunks/{a6e1538e04c9f936.js → a230d5954cc322fd.js} +1 -1
  246. package/web/.next/static/chunks/{d65caa2ba3f34f84.js → a4c2c8c731b0875f.js} +1 -1
  247. package/web/.next/static/chunks/{280686d2e1ff0649.js → d5bb1d4f97abcdd7.js} +1 -1
  248. package/web/.next/static/chunks/{770ba660d1a0d50b.js → d7425a1e8e823fb1.js} +2 -2
  249. package/web/.next/server/chunks/[root-of-the-server]__a62bd945._.js +0 -3
  250. package/web/.next/server/chunks/[root-of-the-server]__a62bd945._.js.map +0 -1
  251. package/web/.next/server/chunks/ssr/[root-of-the-server]__6ec59045._.js +0 -3
  252. package/web/.next/server/chunks/ssr/[root-of-the-server]__6ec59045._.js.map +0 -1
  253. package/web/.next/server/chunks/ssr/src_presentation_web_b3f3c105._.js +0 -3
  254. package/web/.next/static/chunks/473cac64731704c6.js +0 -1
  255. package/web/.next/static/chunks/6bd2935bef50e8c9.js +0 -1
  256. /package/web/.next/static/{tn6fdCmeXEgmEoL57Nt7c → zv3n0xrL5vsVhyfYT8O1w}/_buildManifest.js +0 -0
  257. /package/web/.next/static/{tn6fdCmeXEgmEoL57Nt7c → zv3n0xrL5vsVhyfYT8O1w}/_clientMiddlewareManifest.json +0 -0
  258. /package/web/.next/static/{tn6fdCmeXEgmEoL57Nt7c → zv3n0xrL5vsVhyfYT8O1w}/_ssgManifest.js +0 -0
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Migration 045: Add fork-and-PR fields
3
+ *
4
+ * Adds forkAndPr and commitSpecs workflow flags to features table,
5
+ * plus upstream PR tracking columns (url, number, status).
6
+ */
7
+ export async function up({ context: db }) {
8
+ const columns = db.pragma('table_info(features)');
9
+ const has = (name) => columns.some((c) => c.name === name);
10
+ if (!has('fork_and_pr')) {
11
+ db.exec('ALTER TABLE features ADD COLUMN fork_and_pr INTEGER NOT NULL DEFAULT 0');
12
+ }
13
+ if (!has('commit_specs')) {
14
+ db.exec('ALTER TABLE features ADD COLUMN commit_specs INTEGER NOT NULL DEFAULT 1');
15
+ }
16
+ if (!has('upstream_pr_url')) {
17
+ db.exec('ALTER TABLE features ADD COLUMN upstream_pr_url TEXT');
18
+ }
19
+ if (!has('upstream_pr_number')) {
20
+ db.exec('ALTER TABLE features ADD COLUMN upstream_pr_number INTEGER');
21
+ }
22
+ if (!has('upstream_pr_status')) {
23
+ db.exec('ALTER TABLE features ADD COLUMN upstream_pr_status TEXT');
24
+ }
25
+ }
26
+ export async function down({ context: db }) {
27
+ void db;
28
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite-feature.repository.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/repositories/sqlite-feature.repository.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,6EAA6E,CAAC;AACrF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAOhE;;;GAGG;AACH,qBACa,uBAAwB,YAAW,kBAAkB;IACpD,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAE5C,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BvC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAW7C,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAcvD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAazE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAa7E,IAAI,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IA8BtD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAQpD,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA0CvC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAK5C"}
1
+ {"version":3,"file":"sqlite-feature.repository.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/repositories/sqlite-feature.repository.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,6EAA6E,CAAC;AACrF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AAOhE;;;GAGG;AACH,qBACa,uBAAwB,YAAW,kBAAkB;IACpD,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAAF,EAAE,EAAE,QAAQ,CAAC,QAAQ;IAE5C,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BvC,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAW7C,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAcvD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAazE,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAa7E,IAAI,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IA8BtD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAQpD,MAAM,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IA+CvC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjC,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAK5C"}
@@ -33,7 +33,7 @@ let SQLiteFeatureRepository = class SQLiteFeatureRepository {
33
33
  lifecycle, messages, plan, related_artifacts,
34
34
  agent_run_id, spec_path,
35
35
  fast,
36
- push, open_pr, auto_merge, allow_prd, allow_plan, allow_merge,
36
+ push, open_pr, fork_and_pr, commit_specs, auto_merge, allow_prd, allow_plan, allow_merge,
37
37
  pr_url, pr_number, pr_status, commit_hash, ci_status,
38
38
  ci_fix_attempts, ci_fix_history, pr_mergeable,
39
39
  parent_id, previous_lifecycle,
@@ -43,7 +43,7 @@ let SQLiteFeatureRepository = class SQLiteFeatureRepository {
43
43
  @lifecycle, @messages, @plan, @related_artifacts,
44
44
  @agent_run_id, @spec_path,
45
45
  @fast,
46
- @push, @open_pr, @auto_merge, @allow_prd, @allow_plan, @allow_merge,
46
+ @push, @open_pr, @fork_and_pr, @commit_specs, @auto_merge, @allow_prd, @allow_plan, @allow_merge,
47
47
  @pr_url, @pr_number, @pr_status, @commit_hash, @ci_status,
48
48
  @ci_fix_attempts, @ci_fix_history, @pr_mergeable,
49
49
  @parent_id, @previous_lifecycle,
@@ -115,6 +115,10 @@ let SQLiteFeatureRepository = class SQLiteFeatureRepository {
115
115
  return rows.map(fromDatabase);
116
116
  }
117
117
  async update(feature) {
118
+ const existing = await this.findById(feature.id);
119
+ if (existing !== null && existing.commitSpecs !== feature.commitSpecs) {
120
+ throw new Error('commitSpecs is immutable after feature creation');
121
+ }
118
122
  const row = toDatabase(feature);
119
123
  const stmt = this.db.prepare(`
120
124
  UPDATE features SET
@@ -58,6 +58,8 @@ export declare function createFastFeatureAgentGraph(depsOrExecutor: FastFeatureA
58
58
  ciStatus: string | null;
59
59
  push: boolean;
60
60
  openPr: boolean;
61
+ forkAndPr: boolean;
62
+ commitSpecs: boolean;
61
63
  evidence: import("../../../../domain/index.js").Evidence[];
62
64
  evidenceRetries: number;
63
65
  resumeReason: string | undefined;
@@ -86,6 +88,8 @@ export declare function createFastFeatureAgentGraph(depsOrExecutor: FastFeatureA
86
88
  ciStatus?: string | null | undefined;
87
89
  push?: boolean | undefined;
88
90
  openPr?: boolean | undefined;
91
+ forkAndPr?: boolean | undefined;
92
+ commitSpecs?: boolean | undefined;
89
93
  evidence?: import("../../../../domain/index.js").Evidence[] | undefined;
90
94
  evidenceRetries?: number | undefined;
91
95
  resumeReason?: string | undefined;
@@ -134,6 +138,8 @@ export declare function createFastFeatureAgentGraph(depsOrExecutor: FastFeatureA
134
138
  ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
135
139
  push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
136
140
  openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
141
+ forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
142
+ commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
137
143
  evidence: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").Evidence[], import("../../../../domain/index.js").Evidence[]>;
138
144
  evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
139
145
  resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
@@ -182,6 +188,8 @@ export declare function createFastFeatureAgentGraph(depsOrExecutor: FastFeatureA
182
188
  ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
183
189
  push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
184
190
  openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
191
+ forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
192
+ commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
185
193
  evidence: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").Evidence[], import("../../../../domain/index.js").Evidence[]>;
186
194
  evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
187
195
  resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
@@ -231,6 +239,8 @@ export declare function createFastFeatureAgentGraph(depsOrExecutor: FastFeatureA
231
239
  ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
232
240
  push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
233
241
  openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
242
+ forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
243
+ commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
234
244
  evidence: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").Evidence[], import("../../../../domain/index.js").Evidence[]>;
235
245
  evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
236
246
  resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"fast-feature-agent-graph.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAA0B,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAGpG,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGlF,OAAO,EAAE,sBAAsB,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE5E;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;CACjD;AAkBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,yBAAyB,GAAG,cAAc,EAC1D,YAAY,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBA6BnC"}
1
+ {"version":3,"file":"fast-feature-agent-graph.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/fast-feature-agent-graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAA0B,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AAGpG,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGlF,OAAO,EAAE,sBAAsB,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE5E;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,cAAc,CAAC;IACzB,aAAa,CAAC,EAAE,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;CACjD;AAkBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,yBAAyB,GAAG,cAAc,EAC1D,YAAY,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBA6BnC"}
@@ -45,6 +45,8 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
45
45
  ciStatus: string | null;
46
46
  push: boolean;
47
47
  openPr: boolean;
48
+ forkAndPr: boolean;
49
+ commitSpecs: boolean;
48
50
  evidence: import("../../../../domain/index.js").Evidence[];
49
51
  evidenceRetries: number;
50
52
  resumeReason: string | undefined;
@@ -73,6 +75,8 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
73
75
  ciStatus?: string | null | undefined;
74
76
  push?: boolean | undefined;
75
77
  openPr?: boolean | undefined;
78
+ forkAndPr?: boolean | undefined;
79
+ commitSpecs?: boolean | undefined;
76
80
  evidence?: import("../../../../domain/index.js").Evidence[] | undefined;
77
81
  evidenceRetries?: number | undefined;
78
82
  resumeReason?: string | undefined;
@@ -121,6 +125,8 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
121
125
  ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
122
126
  push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
123
127
  openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
128
+ forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
129
+ commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
124
130
  evidence: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").Evidence[], import("../../../../domain/index.js").Evidence[]>;
125
131
  evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
126
132
  resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
@@ -169,6 +175,8 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
169
175
  ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
170
176
  push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
171
177
  openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
178
+ forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
179
+ commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
172
180
  evidence: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").Evidence[], import("../../../../domain/index.js").Evidence[]>;
173
181
  evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
174
182
  resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
@@ -218,6 +226,8 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
218
226
  ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
219
227
  push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
220
228
  openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
229
+ forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
230
+ commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
221
231
  evidence: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").Evidence[], import("../../../../domain/index.js").Evidence[]>;
222
232
  evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
223
233
  resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
@@ -267,6 +277,8 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
267
277
  ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
268
278
  push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
269
279
  openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
280
+ forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
281
+ commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
270
282
  evidence: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").Evidence[], import("../../../../domain/index.js").Evidence[]>;
271
283
  evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
272
284
  resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
@@ -316,6 +328,8 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
316
328
  ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
317
329
  push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
318
330
  openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
331
+ forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
332
+ commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
319
333
  evidence: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").Evidence[], import("../../../../domain/index.js").Evidence[]>;
320
334
  evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
321
335
  resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
@@ -365,6 +379,8 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
365
379
  ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
366
380
  push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
367
381
  openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
382
+ forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
383
+ commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
368
384
  evidence: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").Evidence[], import("../../../../domain/index.js").Evidence[]>;
369
385
  evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
370
386
  resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
@@ -414,6 +430,8 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
414
430
  ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
415
431
  push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
416
432
  openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
433
+ forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
434
+ commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
417
435
  evidence: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").Evidence[], import("../../../../domain/index.js").Evidence[]>;
418
436
  evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
419
437
  resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
@@ -463,6 +481,8 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
463
481
  ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
464
482
  push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
465
483
  openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
484
+ forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
485
+ commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
466
486
  evidence: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").Evidence[], import("../../../../domain/index.js").Evidence[]>;
467
487
  evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
468
488
  resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
@@ -512,6 +532,8 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
512
532
  ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
513
533
  push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
514
534
  openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
535
+ forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
536
+ commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
515
537
  evidence: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").Evidence[], import("../../../../domain/index.js").Evidence[]>;
516
538
  evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
517
539
  resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
@@ -561,6 +583,8 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
561
583
  ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
562
584
  push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
563
585
  openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
586
+ forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
587
+ commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
564
588
  evidence: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").Evidence[], import("../../../../domain/index.js").Evidence[]>;
565
589
  evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
566
590
  resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
@@ -610,6 +634,8 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
610
634
  ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
611
635
  push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
612
636
  openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
637
+ forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
638
+ commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
613
639
  evidence: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").Evidence[], import("../../../../domain/index.js").Evidence[]>;
614
640
  evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
615
641
  resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
@@ -659,6 +685,8 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
659
685
  ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
660
686
  push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
661
687
  openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
688
+ forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
689
+ commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
662
690
  evidence: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").Evidence[], import("../../../../domain/index.js").Evidence[]>;
663
691
  evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
664
692
  resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
@@ -708,6 +736,8 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
708
736
  ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
709
737
  push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
710
738
  openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
739
+ forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
740
+ commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
711
741
  evidence: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").Evidence[], import("../../../../domain/index.js").Evidence[]>;
712
742
  evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
713
743
  resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
@@ -757,6 +787,8 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
757
787
  ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
758
788
  push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
759
789
  openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
790
+ forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
791
+ commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
760
792
  evidence: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").Evidence[], import("../../../../domain/index.js").Evidence[]>;
761
793
  evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
762
794
  resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
@@ -806,6 +838,8 @@ export declare function createFeatureAgentGraph(depsOrExecutor: FeatureAgentGrap
806
838
  ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
807
839
  push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
808
840
  openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
841
+ forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
842
+ commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
809
843
  evidence: import("@langchain/langgraph").BinaryOperatorAggregate<import("../../../../domain/index.js").Evidence[], import("../../../../domain/index.js").Evidence[]>;
810
844
  evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
811
845
  resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
@@ -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;AAclF,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;AAwID;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,qBAAqB,GAAG,cAAc,EACtD,YAAY,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAgFnC"}
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;AAclF,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;AAwID;;;;;;;;;;;;GAYG;AACH,wBAAgB,uBAAuB,CACrC,cAAc,EAAE,qBAAqB,GAAG,cAAc,EACtD,YAAY,CAAC,EAAE,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAgFnC"}
@@ -18,6 +18,8 @@ export declare class FeatureAgentProcessService implements IFeatureAgentProcessS
18
18
  resumeFromInterrupt?: boolean;
19
19
  push?: boolean;
20
20
  openPr?: boolean;
21
+ forkAndPr?: boolean;
22
+ commitSpecs?: boolean;
21
23
  resumePayload?: string;
22
24
  agentType?: AgentType;
23
25
  fast?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"feature-agent-process.service.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sEAAsE,CAAC;AACxH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qEAAqE,CAAC;AAC/G,OAAO,EAAkB,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAalG,qBAAa,0BAA2B,YAAW,2BAA2B;IAChE,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAAb,aAAa,EAAE,mBAAmB;IAE/D,KAAK,CACH,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GACA,MAAM;IAuET,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IASvB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAexD"}
1
+ {"version":3,"file":"feature-agent-process.service.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-process.service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,sEAAsE,CAAC;AACxH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qEAAqE,CAAC;AAC/G,OAAO,EAAkB,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAalG,qBAAa,0BAA2B,YAAW,2BAA2B;IAChE,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAAb,aAAa,EAAE,mBAAmB;IAE/D,KAAK,CACH,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,YAAY,CAAC,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE;QACR,aAAa,CAAC,EAAE,aAAa,CAAC;QAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;QAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,GACA,MAAM;IA6ET,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IASvB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAexD"}
@@ -60,6 +60,12 @@ export class FeatureAgentProcessService {
60
60
  if (options?.openPr) {
61
61
  args.push('--open-pr');
62
62
  }
63
+ if (options?.forkAndPr) {
64
+ args.push('--fork-and-pr');
65
+ }
66
+ if (options?.commitSpecs) {
67
+ args.push('--commit-specs');
68
+ }
63
69
  if (options?.resumePayload) {
64
70
  args.push('--resume-payload', options.resumePayload);
65
71
  }
@@ -23,6 +23,8 @@ export interface WorkerArgs {
23
23
  resumeFromInterrupt?: boolean;
24
24
  push?: boolean;
25
25
  openPr?: boolean;
26
+ forkAndPr?: boolean;
27
+ commitSpecs?: boolean;
26
28
  resumePayload?: string;
27
29
  agentType?: AgentType;
28
30
  fast?: boolean;
@@ -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,EAAiC,KAAK,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAW7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAwE1D;AAgCD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA0R/D"}
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;AAgB1B,OAAO,EAAiC,KAAK,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAW7F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,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,CA4E1D;AAgCD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAiS/D"}
@@ -16,6 +16,7 @@ import { initializeContainer, container } from '../../../di/container.js';
16
16
  import { createFeatureAgentGraph } from './feature-agent-graph.js';
17
17
  import { createFastFeatureAgentGraph } from './fast-feature-agent-graph.js';
18
18
  import { createCheckpointer } from '../common/checkpointer.js';
19
+ import { GitForkService } from '../../../services/git/git-fork.service.js';
19
20
  import { AgentRunStatus, SdlcLifecycle } from '../../../../domain/generated/output.js';
20
21
  import { initializeSettings } from '../../../services/settings.service.js';
21
22
  import { InitializeSettingsUseCase } from '../../../../application/use-cases/settings/initialize-settings.use-case.js';
@@ -54,6 +55,8 @@ export function parseWorkerArgs(args) {
54
55
  const resumeFromInterrupt = args.includes('--resume-from-interrupt');
55
56
  const push = args.includes('--push');
56
57
  const openPr = args.includes('--open-pr');
58
+ const forkAndPr = args.includes('--fork-and-pr');
59
+ const commitSpecs = args.includes('--commit-specs');
57
60
  const fast = args.includes('--fast');
58
61
  const threadIdx = args.indexOf('--thread-id');
59
62
  const threadId = threadIdx !== -1 && threadIdx + 1 < args.length ? args[threadIdx + 1] : undefined;
@@ -83,6 +86,8 @@ export function parseWorkerArgs(args) {
83
86
  resumeFromInterrupt,
84
87
  push,
85
88
  openPr,
89
+ forkAndPr,
90
+ commitSpecs,
86
91
  resumePayload,
87
92
  agentType,
88
93
  fast,
@@ -143,6 +148,8 @@ export async function runWorker(args) {
143
148
  ...(args.resumeFromInterrupt ? ['--resume-from-interrupt'] : []),
144
149
  ...(args.push ? ['--push'] : []),
145
150
  ...(args.openPr ? ['--open-pr'] : []),
151
+ ...(args.forkAndPr ? ['--fork-and-pr'] : []),
152
+ ...(args.commitSpecs ? ['--commit-specs'] : []),
146
153
  ...(args.resumePayload ? ['--resume-payload', args.resumePayload] : []),
147
154
  ...(args.agentType ? ['--agent-type', args.agentType] : []),
148
155
  ...(args.fast ? ['--fast'] : []),
@@ -185,6 +192,7 @@ export async function runWorker(args) {
185
192
  localMergeSquash: (cwd, featureBranch, baseBranch, commitMessage, hasRemote) => gitPrService.localMergeSquash(cwd, featureBranch, baseBranch, commitMessage, hasRemote),
186
193
  featureRepository,
187
194
  gitPrService,
195
+ gitForkService: container.resolve(GitForkService),
188
196
  cleanupFeatureWorktreeUseCase,
189
197
  },
190
198
  };
@@ -274,6 +282,8 @@ export async function runWorker(args) {
274
282
  ...(args.resumeReason ? { resumeReason: args.resumeReason } : {}),
275
283
  push: args.push ?? false,
276
284
  openPr: args.openPr ?? false,
285
+ forkAndPr: args.forkAndPr ?? false,
286
+ commitSpecs: args.commitSpecs ?? true,
277
287
  }, graphConfig);
278
288
  }
279
289
  else {
@@ -287,6 +297,8 @@ export async function runWorker(args) {
287
297
  ...(args.model ? { model: args.model } : {}),
288
298
  push: args.push ?? false,
289
299
  openPr: args.openPr ?? false,
300
+ forkAndPr: args.forkAndPr ?? false,
301
+ commitSpecs: args.commitSpecs ?? true,
290
302
  }, graphConfig);
291
303
  }
292
304
  log(`Graph invocation completed. Error: ${result.error ?? 'none'}`);
@@ -16,6 +16,7 @@ import type { IAgentExecutor } from '../../../../../../application/ports/output/
16
16
  import type { FeatureAgentState } from '../../state.js';
17
17
  import type { IFeatureRepository } from '../../../../../../application/ports/output/repositories/feature-repository.interface.js';
18
18
  import type { DiffSummary, IGitPrService } from '../../../../../../application/ports/output/services/git-pr-service.interface.js';
19
+ import type { IGitForkService } from '../../../../../../application/ports/output/services/git-fork-service.interface.js';
19
20
  import type { CleanupFeatureWorktreeUseCase } from '../../../../../../application/use-cases/features/cleanup-feature-worktree.use-case.js';
20
21
  export interface MergeNodeDeps {
21
22
  executor: IAgentExecutor;
@@ -37,6 +38,7 @@ export interface MergeNodeDeps {
37
38
  */
38
39
  revParse: (cwd: string, ref: string) => Promise<string>;
39
40
  gitPrService: IGitPrService;
41
+ gitForkService: IGitForkService;
40
42
  cleanupFeatureWorktreeUseCase: Pick<CleanupFeatureWorktreeUseCase, 'execute'>;
41
43
  }
42
44
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"merge.node.d.ts","sourceRoot":"","sources":["../../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AACpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yEAAyE,CAAC;AAClH,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACd,MAAM,iEAAiE,CAAC;AAoBzE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,uEAAuE,CAAC;AAE3H,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,cAAc,CAAC;IACzB,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1E,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,EAAE,UAAU,GAAG,QAAQ,CAAC,CAAC;IACnE;;OAEG;IACH,gBAAgB,EAAE,CAChB,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,OAAO,KAChB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB;;;OAGG;IACH,WAAW,EAAE,CACX,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,MAAM,KACrB,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB;;OAEG;IACH,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD,YAAY,EAAE,aAAa,CAAC;IAC5B,6BAA6B,EAAE,IAAI,CAAC,6BAA6B,EAAE,SAAS,CAAC,CAAC;CAC/E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,IAGnC,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAiU7E"}
1
+ {"version":3,"file":"merge.node.d.ts","sourceRoot":"","sources":["../../../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+DAA+D,CAAC;AACpG,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yEAAyE,CAAC;AAClH,OAAO,KAAK,EACV,WAAW,EACX,aAAa,EACd,MAAM,iEAAiE,CAAC;AACzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mEAAmE,CAAC;AAoBzG,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,uEAAuE,CAAC;AAE3H,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,cAAc,CAAC;IACzB,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1E,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,EAAE,UAAU,GAAG,QAAQ,CAAC,CAAC;IACnE;;OAEG;IACH,gBAAgB,EAAE,CAChB,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,OAAO,KAChB,OAAO,CAAC,IAAI,CAAC,CAAC;IACnB;;;OAGG;IACH,WAAW,EAAE,CACX,GAAG,EAAE,MAAM,EACX,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAClB,eAAe,CAAC,EAAE,MAAM,KACrB,OAAO,CAAC,OAAO,CAAC,CAAC;IACtB;;OAEG;IACH,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD,YAAY,EAAE,aAAa,CAAC;IAC5B,cAAc,EAAE,eAAe,CAAC;IAChC,6BAA6B,EAAE,IAAI,CAAC,6BAA6B,EAAE,SAAS,CAAC,CAAC;CAC/E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,IAGnC,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAkX7E"}
@@ -220,57 +220,97 @@ export function createMergeNode(deps) {
220
220
  ciStatus = feature.pr.ciStatus ?? ciStatus;
221
221
  }
222
222
  }
223
- // --- Merge ---
224
- // Merge when: allowMerge is true (auto-merge), OR user explicitly
225
- // approved at the merge gate (isResumeAfterInterrupt means they
226
- // clicked Approve). The approval IS permission to merge.
227
- let merged = false;
228
- const userApprovedMerge = isResumeAfterInterrupt && state._approvalAction !== 'rejected';
229
- if (state.approvalGates?.allowMerge || userApprovedMerge) {
230
- if (prUrl && prNumber) {
231
- // PR exists: merge via GitHub API directly — no agent or local merge needed.
232
- // This will fail if the PR is not in a mergeable state (checks pending, reviews needed).
233
- log.info(`Merging PR #${prNumber} via GitHub API (squash)`);
234
- await deps.gitPrService.mergePr(cwd, prNumber, 'squash');
235
- messages.push(`[merge] PR #${prNumber} merged via squash`);
236
- merged = true;
237
- }
238
- else {
239
- // No PR: programmatic local squash merge in the ORIGINAL repo (not the worktree,
240
- // which IS the feature branch and must not be modified during merge).
241
- // Uses direct git commands instead of an agent for reliability.
242
- log.info('Programmatic local squash merge (no agent needed)');
243
- const commitMsg = `feat: squash merge ${branch} into ${baseBranch}`;
244
- await deps.localMergeSquash(state.repositoryPath, branch, baseBranch, commitMsg, remoteAvailable);
245
- log.info('Local squash merge completed successfully');
246
- messages.push(`[merge] Local squash merge completed`);
247
- merged = true;
223
+ // --- Fork-and-PR branch ---
224
+ // When forkAndPr is true, fork the repo and create an upstream PR
225
+ // instead of merging directly.
226
+ if (state.forkAndPr) {
227
+ log.info('Fork-and-PR mode: forking repo and creating upstream PR');
228
+ // 1. Fork the repository
229
+ await deps.gitForkService.forkRepository(cwd);
230
+ messages.push(`[merge] Forked repository`);
231
+ // 2. Push to fork
232
+ await deps.gitForkService.pushToFork(cwd, branch);
233
+ messages.push(`[merge] Pushed branch ${branch} to fork`);
234
+ // 3. Create upstream PR
235
+ const prTitle = `feat: ${state.featureId}`;
236
+ const prBody = `Automated PR for feature ${state.featureId}`;
237
+ const upstreamPrResult = await deps.gitForkService.createUpstreamPr(cwd, prTitle, prBody, branch, baseBranch);
238
+ messages.push(`[merge] Upstream PR created: ${upstreamPrResult.url}`);
239
+ // 4. Update feature with AwaitingUpstream lifecycle and upstream PR data
240
+ if (feature) {
241
+ await deps.featureRepository.update({
242
+ ...feature,
243
+ lifecycle: SdlcLifecycle.AwaitingUpstream,
244
+ pr: {
245
+ url: prUrl ?? '',
246
+ number: prNumber ?? 0,
247
+ status: PrStatus.Open,
248
+ ...(commitHash ? { commitHash } : {}),
249
+ ...(ciStatus ? { ciStatus: ciStatus } : {}),
250
+ ...(ciFixAttempts > 0 ? { ciFixAttempts } : {}),
251
+ ...(ciFixHistory.length > 0 ? { ciFixHistory } : {}),
252
+ upstreamPrUrl: upstreamPrResult.url,
253
+ upstreamPrNumber: upstreamPrResult.number,
254
+ upstreamPrStatus: PrStatus.Open,
255
+ },
256
+ updatedAt: new Date(),
257
+ });
258
+ messages.push(`[merge] Feature lifecycle → ${SdlcLifecycle.AwaitingUpstream}`);
248
259
  }
249
260
  }
250
- // --- Update feature lifecycle ---
251
- const newLifecycle = merged ? SdlcLifecycle.Maintain : SdlcLifecycle.Review;
252
- if (feature) {
253
- await deps.featureRepository.update({
254
- ...feature,
255
- lifecycle: newLifecycle,
256
- ...(prUrl && prNumber
257
- ? {
258
- pr: {
259
- url: prUrl,
260
- number: prNumber,
261
- status: merged ? PrStatus.Merged : PrStatus.Open,
262
- ...(commitHash ? { commitHash } : {}),
263
- ...(ciStatus ? { ciStatus: ciStatus } : {}),
264
- ...(ciFixAttempts > 0 ? { ciFixAttempts } : {}),
265
- ...(ciFixHistory.length > 0 ? { ciFixHistory } : {}),
266
- },
267
- }
268
- : {}),
269
- updatedAt: new Date(),
270
- });
271
- messages.push(`[merge] Feature lifecycle ${newLifecycle}`);
272
- if (merged) {
273
- await deps.cleanupFeatureWorktreeUseCase.execute(feature.id);
261
+ else {
262
+ // --- Merge ---
263
+ // Merge when: allowMerge is true (auto-merge), OR user explicitly
264
+ // approved at the merge gate (isResumeAfterInterrupt means they
265
+ // clicked Approve). The approval IS permission to merge.
266
+ let merged = false;
267
+ const userApprovedMerge = isResumeAfterInterrupt && state._approvalAction !== 'rejected';
268
+ if (state.approvalGates?.allowMerge || userApprovedMerge) {
269
+ if (prUrl && prNumber) {
270
+ // PR exists: merge via GitHub API directly — no agent or local merge needed.
271
+ // This will fail if the PR is not in a mergeable state (checks pending, reviews needed).
272
+ log.info(`Merging PR #${prNumber} via GitHub API (squash)`);
273
+ await deps.gitPrService.mergePr(cwd, prNumber, 'squash');
274
+ messages.push(`[merge] PR #${prNumber} merged via squash`);
275
+ merged = true;
276
+ }
277
+ else {
278
+ // No PR: programmatic local squash merge in the ORIGINAL repo (not the worktree,
279
+ // which IS the feature branch and must not be modified during merge).
280
+ // Uses direct git commands instead of an agent for reliability.
281
+ log.info('Programmatic local squash merge (no agent needed)');
282
+ const commitMsg = `feat: squash merge ${branch} into ${baseBranch}`;
283
+ await deps.localMergeSquash(state.repositoryPath, branch, baseBranch, commitMsg, remoteAvailable);
284
+ log.info('Local squash merge completed successfully');
285
+ messages.push(`[merge] Local squash merge completed`);
286
+ merged = true;
287
+ }
288
+ }
289
+ // --- Update feature lifecycle ---
290
+ const newLifecycle = merged ? SdlcLifecycle.Maintain : SdlcLifecycle.Review;
291
+ if (feature) {
292
+ await deps.featureRepository.update({
293
+ ...feature,
294
+ lifecycle: newLifecycle,
295
+ ...(prUrl && prNumber
296
+ ? {
297
+ pr: {
298
+ url: prUrl,
299
+ number: prNumber,
300
+ status: merged ? PrStatus.Merged : PrStatus.Open,
301
+ ...(commitHash ? { commitHash } : {}),
302
+ ...(ciStatus ? { ciStatus: ciStatus } : {}),
303
+ ...(ciFixAttempts > 0 ? { ciFixAttempts } : {}),
304
+ ...(ciFixHistory.length > 0 ? { ciFixHistory } : {}),
305
+ },
306
+ }
307
+ : {}),
308
+ updatedAt: new Date(),
309
+ });
310
+ messages.push(`[merge] Feature lifecycle → ${newLifecycle}`);
311
+ if (merged) {
312
+ await deps.cleanupFeatureWorktreeUseCase.execute(feature.id);
313
+ }
274
314
  }
275
315
  }
276
316
  const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
@@ -48,6 +48,8 @@ export declare const FeatureAgentAnnotation: import("@langchain/langgraph").Anno
48
48
  ciStatus: import("@langchain/langgraph").BinaryOperatorAggregate<string | null, string | null>;
49
49
  push: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
50
50
  openPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
51
+ forkAndPr: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
52
+ commitSpecs: import("@langchain/langgraph").BinaryOperatorAggregate<boolean, boolean>;
51
53
  evidence: import("@langchain/langgraph").BinaryOperatorAggregate<Evidence[], Evidence[]>;
52
54
  evidenceRetries: import("@langchain/langgraph").BinaryOperatorAggregate<number, number>;
53
55
  resumeReason: import("@langchain/langgraph").BinaryOperatorAggregate<string | undefined, string | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAEzF;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoGjC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,OAAO,sBAAsB,CAAC,KAAK,CAAC"}
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/state.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAEzF;;;;;;GAMG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4GjC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,OAAO,sBAAsB,CAAC,KAAK,CAAC"}
@@ -79,6 +79,14 @@ export const FeatureAgentAnnotation = Annotation.Root({
79
79
  reducer: (_prev, next) => next,
80
80
  default: () => false,
81
81
  }),
82
+ forkAndPr: Annotation({
83
+ reducer: (_prev, next) => next,
84
+ default: () => false,
85
+ }),
86
+ commitSpecs: Annotation({
87
+ reducer: (_prev, next) => next,
88
+ default: () => true,
89
+ }),
82
90
  // --- Evidence state ---
83
91
  evidence: Annotation({
84
92
  reducer: (prev, next) => [...prev, ...next],