@shepai/cli 1.130.0 → 1.130.1-pr396.844e95f

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 (286) hide show
  1. package/apis/json-schema/FeatureFlags.yaml +5 -0
  2. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts +73 -5
  3. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts.map +1 -1
  4. package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.js +6 -4
  5. package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.d.ts +28 -0
  6. package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.d.ts.map +1 -0
  7. package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.js +81 -0
  8. package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.d.ts +16 -0
  9. package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.d.ts.map +1 -0
  10. package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.js +43 -0
  11. package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
  12. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +1 -0
  13. package/dist/packages/core/src/domain/generated/output.d.ts +4 -0
  14. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  15. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  16. package/dist/packages/core/src/infrastructure/di/container.js +15 -0
  17. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +1 -0
  18. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  19. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +2 -0
  20. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/042-add-feature-flag-git-rebase-sync.d.ts +11 -0
  21. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/042-add-feature-flag-git-rebase-sync.d.ts.map +1 -0
  22. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/042-add-feature-flag-git-rebase-sync.js +17 -0
  23. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
  24. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +3 -2
  25. package/dist/packages/core/src/infrastructure/services/agents/common/agent-validator.service.js +1 -1
  26. package/dist/packages/core/src/infrastructure/services/agents/common/executors/cursor-executor.service.d.ts +5 -5
  27. package/dist/packages/core/src/infrastructure/services/agents/common/executors/cursor-executor.service.js +8 -8
  28. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.d.ts +35 -0
  29. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.d.ts.map +1 -0
  30. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.js +66 -0
  31. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.d.ts +42 -0
  32. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.d.ts.map +1 -0
  33. package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.js +169 -0
  34. package/dist/packages/core/src/infrastructure/services/deployment/deployment.service.d.ts +21 -1
  35. package/dist/packages/core/src/infrastructure/services/deployment/deployment.service.d.ts.map +1 -1
  36. package/dist/packages/core/src/infrastructure/services/deployment/deployment.service.js +152 -12
  37. package/dist/packages/core/src/infrastructure/services/deployment/detect-dev-script.d.ts +1 -0
  38. package/dist/packages/core/src/infrastructure/services/deployment/detect-dev-script.d.ts.map +1 -1
  39. package/dist/packages/core/src/infrastructure/services/deployment/detect-dev-script.js +3 -2
  40. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts +6 -0
  41. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts.map +1 -1
  42. package/dist/packages/core/src/infrastructure/services/git/git-pr.service.js +134 -0
  43. package/dist/src/presentation/web/app/(dashboard)/get-graph-data.d.ts.map +1 -1
  44. package/dist/src/presentation/web/app/(dashboard)/get-graph-data.js +5 -12
  45. package/dist/src/presentation/web/app/actions/check-agent-auth.js +1 -1
  46. package/dist/src/presentation/web/app/actions/rebase-feature.d.ts +5 -0
  47. package/dist/src/presentation/web/app/actions/rebase-feature.d.ts.map +1 -0
  48. package/dist/src/presentation/web/app/actions/rebase-feature.js +16 -0
  49. package/dist/src/presentation/web/app/actions/sync-repository.d.ts +5 -0
  50. package/dist/src/presentation/web/app/actions/sync-repository.d.ts.map +1 -0
  51. package/dist/src/presentation/web/app/actions/sync-repository.js +16 -0
  52. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
  53. package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +2 -1
  54. package/dist/src/presentation/web/components/common/control-center-drawer/repository-drawer-client.d.ts.map +1 -1
  55. package/dist/src/presentation/web/components/common/control-center-drawer/repository-drawer-client.js +4 -4
  56. package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.d.ts +4 -0
  57. package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.d.ts.map +1 -1
  58. package/dist/src/presentation/web/components/common/feature-drawer/use-feature-actions.js +32 -1
  59. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts +4 -1
  60. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts.map +1 -1
  61. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.js +2 -2
  62. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.d.ts +4 -1
  63. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.d.ts.map +1 -1
  64. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.js +8 -3
  65. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts +6 -0
  66. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts.map +1 -1
  67. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.js +30 -0
  68. package/dist/src/presentation/web/components/common/open-action-menu/open-action-menu.stories.d.ts.map +1 -1
  69. package/dist/src/presentation/web/components/common/open-action-menu/open-action-menu.stories.js +3 -0
  70. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.d.ts.map +1 -1
  71. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.js +5 -3
  72. package/dist/src/presentation/web/components/common/repository-node/repository-node.js +1 -1
  73. package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.d.ts +4 -0
  74. package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.d.ts.map +1 -1
  75. package/dist/src/presentation/web/components/common/repository-node/use-repository-actions.js +11 -0
  76. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.d.ts.map +1 -1
  77. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.js +3 -0
  78. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.d.ts.map +1 -1
  79. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.js +3 -0
  80. package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
  81. package/dist/src/presentation/web/components/features/settings/settings-page-client.js +5 -0
  82. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts.map +1 -1
  83. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.js +1 -0
  84. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.d.ts.map +1 -1
  85. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.js +1 -0
  86. package/dist/src/presentation/web/dev-server.js +7 -0
  87. package/dist/src/presentation/web/hooks/feature-flags-context.d.ts.map +1 -1
  88. package/dist/src/presentation/web/hooks/feature-flags-context.js +1 -0
  89. package/dist/src/presentation/web/lib/feature-flags.d.ts +2 -0
  90. package/dist/src/presentation/web/lib/feature-flags.d.ts.map +1 -1
  91. package/dist/src/presentation/web/lib/feature-flags.js +5 -0
  92. package/dist/tsconfig.build.tsbuildinfo +1 -1
  93. package/package.json +1 -1
  94. package/web/.next/BUILD_ID +1 -1
  95. package/web/.next/build-manifest.json +2 -2
  96. package/web/.next/fallback-build-manifest.json +2 -2
  97. package/web/.next/prerender-manifest.json +3 -3
  98. package/web/.next/required-server-files.js +3 -3
  99. package/web/.next/required-server-files.json +3 -3
  100. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +63 -48
  101. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js +2 -2
  102. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  103. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  104. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +63 -48
  105. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +2 -2
  106. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  107. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  108. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +90 -60
  109. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js +2 -2
  110. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  111. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  112. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +90 -60
  113. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +2 -2
  114. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  115. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  116. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +59 -44
  117. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +2 -2
  118. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  119. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  120. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +63 -48
  121. package/web/.next/server/app/(dashboard)/create/page.js +2 -2
  122. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  123. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  124. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +90 -60
  125. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js +2 -2
  126. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  127. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  128. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +90 -60
  129. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +2 -2
  130. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  131. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  132. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +59 -44
  133. package/web/.next/server/app/(dashboard)/page.js +2 -2
  134. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  135. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  136. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +59 -44
  137. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +2 -2
  138. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  139. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  140. package/web/.next/server/app/_global-error.html +2 -2
  141. package/web/.next/server/app/_global-error.rsc +1 -1
  142. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  143. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  144. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  145. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  146. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  147. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +3 -3
  148. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  149. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  150. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  151. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  152. package/web/.next/server/app/settings/page/server-reference-manifest.json +8 -8
  153. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  154. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  155. package/web/.next/server/app/skills/page/server-reference-manifest.json +8 -8
  156. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  157. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  158. package/web/.next/server/app/tools/page/server-reference-manifest.json +8 -8
  159. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  160. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  161. package/web/.next/server/app/version/page/server-reference-manifest.json +3 -3
  162. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  163. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js +1 -1
  164. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_370c43b1.js.map +1 -1
  165. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  166. package/web/.next/server/chunks/[root-of-the-server]__cd67a84c._.js.map +1 -1
  167. package/web/.next/server/chunks/[root-of-the-server]__d1dc8fcd._.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]__357d99f9._.js +1 -1
  171. package/web/.next/server/chunks/ssr/[root-of-the-server]__39ecb785._.js +4 -0
  172. package/web/.next/server/chunks/ssr/[root-of-the-server]__39ecb785._.js.map +1 -0
  173. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js +1 -1
  174. package/web/.next/server/chunks/ssr/[root-of-the-server]__43f51aa6._.js.map +1 -1
  175. package/web/.next/server/chunks/ssr/[root-of-the-server]__465c0deb._.js +4 -0
  176. package/web/.next/server/chunks/ssr/[root-of-the-server]__465c0deb._.js.map +1 -0
  177. package/web/.next/server/chunks/ssr/[root-of-the-server]__5142820f._.js +2 -2
  178. package/web/.next/server/chunks/ssr/[root-of-the-server]__5142820f._.js.map +1 -1
  179. package/web/.next/server/chunks/ssr/[root-of-the-server]__57018345._.js.map +1 -1
  180. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js +2 -2
  181. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js.map +1 -1
  182. package/web/.next/server/chunks/ssr/[root-of-the-server]__7894f27f._.js +1 -1
  183. package/web/.next/server/chunks/ssr/[root-of-the-server]__7894f27f._.js.map +1 -1
  184. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js +1 -1
  185. package/web/.next/server/chunks/ssr/[root-of-the-server]__815546bd._.js.map +1 -1
  186. package/web/.next/server/chunks/ssr/[root-of-the-server]__84f72684._.js +1 -1
  187. package/web/.next/server/chunks/ssr/[root-of-the-server]__8b6d1e18._.js +4 -0
  188. package/web/.next/server/chunks/ssr/[root-of-the-server]__8b6d1e18._.js.map +1 -0
  189. package/web/.next/server/chunks/ssr/[root-of-the-server]__8f6c27af._.js +6 -0
  190. package/web/.next/server/chunks/ssr/[root-of-the-server]__8f6c27af._.js.map +1 -0
  191. package/web/.next/server/chunks/ssr/[root-of-the-server]__910e9de5._.js +4 -0
  192. package/web/.next/server/chunks/ssr/[root-of-the-server]__910e9de5._.js.map +1 -0
  193. package/web/.next/server/chunks/ssr/[root-of-the-server]__a04af228._.js +4 -0
  194. package/web/.next/server/chunks/ssr/[root-of-the-server]__a04af228._.js.map +1 -0
  195. package/web/.next/server/chunks/ssr/[root-of-the-server]__a32728d0._.js +4 -0
  196. package/web/.next/server/chunks/ssr/[root-of-the-server]__a32728d0._.js.map +1 -0
  197. package/web/.next/server/chunks/ssr/[root-of-the-server]__d6ab9c36._.js +6 -0
  198. package/web/.next/server/chunks/ssr/[root-of-the-server]__d6ab9c36._.js.map +1 -0
  199. package/web/.next/server/chunks/ssr/[root-of-the-server]__f2eb7d62._.js +4 -0
  200. package/web/.next/server/chunks/ssr/[root-of-the-server]__f2eb7d62._.js.map +1 -0
  201. package/web/.next/server/chunks/ssr/[root-of-the-server]__f3036814._.js +4 -0
  202. package/web/.next/server/chunks/ssr/[root-of-the-server]__f3036814._.js.map +1 -0
  203. package/web/.next/server/chunks/ssr/_0020fddd._.js +1 -1
  204. package/web/.next/server/chunks/ssr/_0020fddd._.js.map +1 -1
  205. package/web/.next/server/chunks/ssr/_02ec1aea._.js +1 -1
  206. package/web/.next/server/chunks/ssr/_02ec1aea._.js.map +1 -1
  207. package/web/.next/server/chunks/ssr/{_2081d51d._.js → _140d896d._.js} +2 -2
  208. package/web/.next/server/chunks/ssr/{_2081d51d._.js.map → _140d896d._.js.map} +1 -1
  209. package/web/.next/server/chunks/ssr/_7dca1882._.js +1 -1
  210. package/web/.next/server/chunks/ssr/_7dca1882._.js.map +1 -1
  211. package/web/.next/server/chunks/ssr/_a37f5f18._.js +1 -1
  212. package/web/.next/server/chunks/ssr/_a37f5f18._.js.map +1 -1
  213. package/web/.next/server/chunks/ssr/_a9f57758._.js +1 -1
  214. package/web/.next/server/chunks/ssr/_a9f57758._.js.map +1 -1
  215. package/web/.next/server/chunks/ssr/_b3f6e6e9._.js +3 -0
  216. package/web/.next/server/chunks/ssr/_b3f6e6e9._.js.map +1 -0
  217. package/web/.next/server/chunks/ssr/_d4b20e29._.js.map +1 -1
  218. package/web/.next/server/chunks/ssr/_d8575088._.js +1 -1
  219. package/web/.next/server/chunks/ssr/_d8575088._.js.map +1 -1
  220. package/web/.next/server/chunks/ssr/_f39a1adb._.js +1 -1
  221. package/web/.next/server/chunks/ssr/_f39a1adb._.js.map +1 -1
  222. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  223. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  224. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  225. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
  226. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js +1 -1
  227. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1b176e3c.js.map +1 -1
  228. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js +1 -1
  229. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_bd9f0dda.js.map +1 -1
  230. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +3 -0
  231. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js.map +1 -0
  232. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js +1 -1
  233. package/web/.next/server/chunks/ssr/src_presentation_web_ca99d62d._.js.map +1 -1
  234. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  235. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  236. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  237. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  238. package/web/.next/server/chunks/ssr/src_presentation_web_e0b3ea67._.js +3 -0
  239. package/web/.next/server/chunks/ssr/{src_presentation_web_de41598a._.js.map → src_presentation_web_e0b3ea67._.js.map} +1 -1
  240. package/web/.next/server/pages/500.html +2 -2
  241. package/web/.next/server/server-reference-manifest.js +1 -1
  242. package/web/.next/server/server-reference-manifest.json +410 -296
  243. package/web/.next/static/chunks/1abca3015dac5760.js +1 -0
  244. package/web/.next/static/chunks/{724dfca1907b26d7.js → 2a8589502f1a3fee.js} +1 -1
  245. package/web/.next/static/chunks/{3b5d54efc5f21506.js → 30ebb9e7d1c85344.js} +1 -1
  246. package/web/.next/static/chunks/{090b4b644f4526bf.js → 3862a16b8161e178.js} +1 -1
  247. package/web/.next/static/chunks/{747b3443a866e39f.js → 4c141b4e9a55bce7.js} +1 -1
  248. package/web/.next/static/chunks/{90a32a641dd33f9a.js → 67d61a2c2eba7344.js} +1 -1
  249. package/web/.next/static/chunks/{22d08ce7fbc67732.js → 81b305ae4f28a883.js} +1 -1
  250. package/web/.next/static/chunks/{f8ce00057329618b.js → ba4f86a38068e68f.js} +1 -1
  251. package/web/.next/static/chunks/{339e72cfa282c94b.js → bb21c9f0d314b89b.js} +1 -1
  252. package/web/.next/static/chunks/bfda4e4194a4a633.js +1 -0
  253. package/web/.next/static/chunks/{8d936038e7d013d2.js → c016b9d991594eef.js} +1 -1
  254. package/web/.next/static/chunks/{bdf477379453ead2.js → c329033db1c63a56.js} +2 -2
  255. package/web/.next/static/chunks/{9387d6dde6140968.js → e9d1ed018e858117.js} +2 -2
  256. package/web/.next/static/chunks/{0b7fe2ac4f078f54.js → f070c67389a686ff.js} +1 -1
  257. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4e741df2.js +0 -3
  258. package/web/.next/server/chunks/ssr/744ca_web__next-internal_server_app_(dashboard)_@drawer_adopt_page_actions_4e741df2.js.map +0 -1
  259. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_026fdffa.js +0 -3
  260. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_026fdffa.js.map +0 -1
  261. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_8b91e197.js +0 -3
  262. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_8b91e197.js.map +0 -1
  263. package/web/.next/server/chunks/ssr/[root-of-the-server]__755cfe02._.js +0 -3
  264. package/web/.next/server/chunks/ssr/[root-of-the-server]__755cfe02._.js.map +0 -1
  265. package/web/.next/server/chunks/ssr/[root-of-the-server]__99ab2519._.js +0 -4
  266. package/web/.next/server/chunks/ssr/[root-of-the-server]__99ab2519._.js.map +0 -1
  267. package/web/.next/server/chunks/ssr/[root-of-the-server]__a628fb91._.js +0 -3
  268. package/web/.next/server/chunks/ssr/[root-of-the-server]__a628fb91._.js.map +0 -1
  269. package/web/.next/server/chunks/ssr/[root-of-the-server]__bfba58e6._.js +0 -3
  270. package/web/.next/server/chunks/ssr/[root-of-the-server]__bfba58e6._.js.map +0 -1
  271. package/web/.next/server/chunks/ssr/[root-of-the-server]__c3ab8422._.js +0 -3
  272. package/web/.next/server/chunks/ssr/[root-of-the-server]__c3ab8422._.js.map +0 -1
  273. package/web/.next/server/chunks/ssr/_c6edd1ef._.js +0 -3
  274. package/web/.next/server/chunks/ssr/_c6edd1ef._.js.map +0 -1
  275. package/web/.next/server/chunks/ssr/src_presentation_web_8e7fe0d1._.js +0 -5
  276. package/web/.next/server/chunks/ssr/src_presentation_web_8e7fe0d1._.js.map +0 -1
  277. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ca051134.js +0 -3
  278. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_ca051134.js.map +0 -1
  279. package/web/.next/server/chunks/ssr/src_presentation_web_b9023017._.js +0 -5
  280. package/web/.next/server/chunks/ssr/src_presentation_web_b9023017._.js.map +0 -1
  281. package/web/.next/server/chunks/ssr/src_presentation_web_de41598a._.js +0 -3
  282. package/web/.next/static/chunks/bcdcdce9139bfd25.js +0 -1
  283. package/web/.next/static/chunks/eb9841ec4d80af01.js +0 -1
  284. /package/web/.next/static/{FkranKu-K5LY21_CdI_Jp → g-QN4RQQtXsVFedVM1Dcs}/_buildManifest.js +0 -0
  285. /package/web/.next/static/{FkranKu-K5LY21_CdI_Jp → g-QN4RQQtXsVFedVM1Dcs}/_clientMiddlewareManifest.json +0 -0
  286. /package/web/.next/static/{FkranKu-K5LY21_CdI_Jp → g-QN4RQQtXsVFedVM1Dcs}/_ssgManifest.js +0 -0
@@ -64,7 +64,7 @@ let SQLiteSettingsRepository = class SQLiteSettingsRepository {
64
64
  onboarding_complete,
65
65
  approval_gate_allow_prd, approval_gate_allow_plan,
66
66
  approval_gate_allow_merge, approval_gate_push_on_impl_complete,
67
- feature_flag_skills, feature_flag_env_deploy, feature_flag_debug, feature_flag_github_import, feature_flag_adopt_branch,
67
+ feature_flag_skills, feature_flag_env_deploy, feature_flag_debug, feature_flag_github_import, feature_flag_adopt_branch, feature_flag_git_rebase_sync,
68
68
  feature_flag_react_file_manager,
69
69
  workflow_enable_evidence, workflow_commit_evidence
70
70
  ) VALUES (
@@ -89,7 +89,7 @@ let SQLiteSettingsRepository = class SQLiteSettingsRepository {
89
89
  @onboarding_complete,
90
90
  @approval_gate_allow_prd, @approval_gate_allow_plan,
91
91
  @approval_gate_allow_merge, @approval_gate_push_on_impl_complete,
92
- @feature_flag_skills, @feature_flag_env_deploy, @feature_flag_debug, @feature_flag_github_import, @feature_flag_adopt_branch,
92
+ @feature_flag_skills, @feature_flag_env_deploy, @feature_flag_debug, @feature_flag_github_import, @feature_flag_adopt_branch, @feature_flag_git_rebase_sync,
93
93
  @feature_flag_react_file_manager,
94
94
  @workflow_enable_evidence, @workflow_commit_evidence
95
95
  )
@@ -184,6 +184,7 @@ let SQLiteSettingsRepository = class SQLiteSettingsRepository {
184
184
  feature_flag_debug = @feature_flag_debug,
185
185
  feature_flag_github_import = @feature_flag_github_import,
186
186
  feature_flag_adopt_branch = @feature_flag_adopt_branch,
187
+ feature_flag_git_rebase_sync = @feature_flag_git_rebase_sync,
187
188
  feature_flag_react_file_manager = @feature_flag_react_file_manager,
188
189
  workflow_enable_evidence = @workflow_enable_evidence,
189
190
  workflow_commit_evidence = @workflow_commit_evidence
@@ -26,7 +26,7 @@ import { injectable, inject } from 'tsyringe';
26
26
  */
27
27
  const AGENT_BINARY_MAP = {
28
28
  'claude-code': 'claude',
29
- cursor: 'agent',
29
+ cursor: 'cursor-agent',
30
30
  'gemini-cli': 'gemini',
31
31
  };
32
32
  /**
@@ -2,7 +2,7 @@
2
2
  * Cursor Executor Service
3
3
  *
4
4
  * Infrastructure implementation of IAgentExecutor for the Cursor agent.
5
- * Executes prompts via the `agent` CLI subprocess with JSON and stream-json
5
+ * Executes prompts via the `cursor-agent` CLI subprocess with JSON and stream-json
6
6
  * output formats.
7
7
  *
8
8
  * Uses constructor dependency injection for the spawn function
@@ -13,7 +13,7 @@ import type { IAgentExecutor, AgentExecutionOptions, AgentExecutionResult, Agent
13
13
  import type { SpawnFunction } from '../types.js';
14
14
  /**
15
15
  * Executor service for Cursor agent.
16
- * Uses subprocess spawning to interact with the `agent` CLI.
16
+ * Uses subprocess spawning to interact with the `cursor-agent` CLI.
17
17
  */
18
18
  export declare class CursorExecutorService implements IAgentExecutor {
19
19
  private readonly spawn;
@@ -35,13 +35,13 @@ export declare class CursorExecutorService implements IAgentExecutor {
35
35
  /**
36
36
  * Spawn the agent process, handling Windows specially via PowerShell.
37
37
  *
38
- * On Windows, cursor CLI ships as `agent.cmd` which requires `shell: true`,
38
+ * On Windows, cursor CLI ships as `cursor-agent.cmd` which requires `shell: true`,
39
39
  * but cmd.exe mangles long `-p` arguments (8191-char limit + special chars).
40
- * Solution: write prompt to a temp file, invoke agent via PowerShell which
40
+ * Solution: write prompt to a temp file, invoke cursor-agent via PowerShell which
41
41
  * reads the file and passes the content as `-p`. PowerShell handles long
42
42
  * strings natively (32K limit) and doesn't mangle arguments.
43
43
  *
44
- * On Linux/macOS, spawn `agent` directly — no shell needed.
44
+ * On Linux/macOS, spawn `cursor-agent` directly — no shell needed.
45
45
  */
46
46
  private spawnAgent;
47
47
  private parseStreamLine;
@@ -2,7 +2,7 @@
2
2
  * Cursor Executor Service
3
3
  *
4
4
  * Infrastructure implementation of IAgentExecutor for the Cursor agent.
5
- * Executes prompts via the `agent` CLI subprocess with JSON and stream-json
5
+ * Executes prompts via the `cursor-agent` CLI subprocess with JSON and stream-json
6
6
  * output formats.
7
7
  *
8
8
  * Uses constructor dependency injection for the spawn function
@@ -32,7 +32,7 @@ function toCursorModelName(model) {
32
32
  const SUPPORTED_FEATURES = new Set(['session-resume', 'streaming']);
33
33
  /**
34
34
  * Executor service for Cursor agent.
35
- * Uses subprocess spawning to interact with the `agent` CLI.
35
+ * Uses subprocess spawning to interact with the `cursor-agent` CLI.
36
36
  */
37
37
  export class CursorExecutorService {
38
38
  spawn;
@@ -312,13 +312,13 @@ export class CursorExecutorService {
312
312
  /**
313
313
  * Spawn the agent process, handling Windows specially via PowerShell.
314
314
  *
315
- * On Windows, cursor CLI ships as `agent.cmd` which requires `shell: true`,
315
+ * On Windows, cursor CLI ships as `cursor-agent.cmd` which requires `shell: true`,
316
316
  * but cmd.exe mangles long `-p` arguments (8191-char limit + special chars).
317
- * Solution: write prompt to a temp file, invoke agent via PowerShell which
317
+ * Solution: write prompt to a temp file, invoke cursor-agent via PowerShell which
318
318
  * reads the file and passes the content as `-p`. PowerShell handles long
319
319
  * strings natively (32K limit) and doesn't mangle arguments.
320
320
  *
321
- * On Linux/macOS, spawn `agent` directly — no shell needed.
321
+ * On Linux/macOS, spawn `cursor-agent` directly — no shell needed.
322
322
  */
323
323
  spawnAgent(prompt, args, options) {
324
324
  const { CLAUDECODE: _, ...cleanEnv } = process.env;
@@ -330,7 +330,7 @@ export class CursorExecutorService {
330
330
  // Build the agent args WITHOUT -p and the prompt (they go via temp file)
331
331
  const agentFlags = args.filter((a) => a !== '-p' && a !== prompt).join(' ');
332
332
  const safePath = tmpFile.replace(/'/g, "''");
333
- const psCmd = `$p = Get-Content -Raw '${safePath}'; & agent ${agentFlags} -p $p`;
333
+ const psCmd = `$p = Get-Content -Raw '${safePath}'; & cursor-agent ${agentFlags} -p $p`;
334
334
  this.log(`Windows PowerShell mode: wrote ${prompt.length} chars to ${tmpFile}`);
335
335
  this.log(`PS command: ${psCmd.replace(prompt, `<${prompt.length} chars>`)}`);
336
336
  const proc = this.spawn('powershell.exe', ['-NoProfile', '-NonInteractive', '-Command', psCmd], {
@@ -351,9 +351,9 @@ export class CursorExecutorService {
351
351
  };
352
352
  if (cwd)
353
353
  spawnOpts.cwd = cwd;
354
- this.log(`Spawning: agent ${args.map((a) => (a.length > 80 ? `${a.slice(0, 77)}...` : a)).join(' ')}`);
354
+ this.log(`Spawning: cursor-agent ${args.map((a) => (a.length > 80 ? `${a.slice(0, 77)}...` : a)).join(' ')}`);
355
355
  this.log(`Spawn cwd: ${cwd ?? '(inherited)'}`);
356
- const proc = this.spawn('agent', args, spawnOpts);
356
+ const proc = this.spawn('cursor-agent', args, spawnOpts);
357
357
  this.log(`Subprocess PID: ${proc.pid ?? 'undefined (spawn may have failed)'}`);
358
358
  if (proc.stdin)
359
359
  proc.stdin.end();
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Conflict Resolution Prompt Builder
3
+ *
4
+ * Builds prompts for the AI agent to resolve git rebase conflicts.
5
+ * Follows the merge-prompts.ts pattern of pure functions returning
6
+ * markdown strings.
7
+ */
8
+ export interface ConflictedFile {
9
+ /** Relative file path from repo root */
10
+ path: string;
11
+ /** Full file contents including conflict markers */
12
+ content: string;
13
+ }
14
+ export interface ConflictResolutionPromptParams {
15
+ /** Files with conflict markers */
16
+ conflictedFiles: ConflictedFile[];
17
+ /** The feature branch being rebased */
18
+ featureBranch: string;
19
+ /** The base branch being rebased onto */
20
+ baseBranch: string;
21
+ /** 1-based attempt number */
22
+ attemptNumber: number;
23
+ /** Maximum allowed attempts */
24
+ maxAttempts: number;
25
+ /** Feedback from previous failed attempt (remaining markers info) */
26
+ previousFeedback?: string;
27
+ }
28
+ /**
29
+ * Build a prompt for the conflict resolution agent.
30
+ *
31
+ * The agent receives conflicted file contents and instructions to resolve
32
+ * all conflict markers by editing files in the working directory.
33
+ */
34
+ export declare function buildConflictResolutionPrompt(params: ConflictResolutionPromptParams): string;
35
+ //# sourceMappingURL=conflict-resolution.prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conflict-resolution.prompt.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,oDAAoD;IACpD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,8BAA8B;IAC7C,kCAAkC;IAClC,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,EAAE,8BAA8B,GAAG,MAAM,CAgE5F"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Conflict Resolution Prompt Builder
3
+ *
4
+ * Builds prompts for the AI agent to resolve git rebase conflicts.
5
+ * Follows the merge-prompts.ts pattern of pure functions returning
6
+ * markdown strings.
7
+ */
8
+ /**
9
+ * Build a prompt for the conflict resolution agent.
10
+ *
11
+ * The agent receives conflicted file contents and instructions to resolve
12
+ * all conflict markers by editing files in the working directory.
13
+ */
14
+ export function buildConflictResolutionPrompt(params) {
15
+ const { conflictedFiles, featureBranch, baseBranch, attemptNumber, maxAttempts, previousFeedback, } = params;
16
+ const fileSection = conflictedFiles
17
+ .map((f) => `### \`${f.path}\`
18
+
19
+ \`\`\`
20
+ ${f.content}
21
+ \`\`\``)
22
+ .join('\n\n');
23
+ const feedbackSection = previousFeedback
24
+ ? `
25
+ ## Previous Attempt Feedback
26
+
27
+ Your previous resolution attempt (${attemptNumber - 1}/${maxAttempts}) was incomplete:
28
+
29
+ ${previousFeedback}
30
+
31
+ You MUST resolve all remaining conflict markers in this attempt.
32
+ `
33
+ : '';
34
+ return `You are resolving git rebase conflicts (attempt ${attemptNumber}/${maxAttempts}).
35
+
36
+ ## Branch Context
37
+
38
+ - Feature branch: \`${featureBranch}\`
39
+ - Base branch: \`${baseBranch}\`
40
+ - The feature branch is being rebased onto the latest \`${baseBranch}\`.
41
+ ${feedbackSection}
42
+ ## Conflicted Files
43
+
44
+ The following files contain conflict markers that must be resolved:
45
+
46
+ ${fileSection}
47
+
48
+ ## Instructions
49
+
50
+ 1. Read each conflicted file listed above
51
+ 2. Resolve ALL conflict markers (\`<<<<<<<\`, \`=======\`, \`>>>>>>>\`) by editing the files
52
+ 3. For each conflict, determine the correct resolution by understanding the intent of both sides:
53
+ - The \`<<<<<<< HEAD\` section contains changes from \`${baseBranch}\` (theirs during rebase)
54
+ - The \`>>>>>>> ...\` section contains changes from \`${featureBranch}\` (ours during rebase)
55
+ 4. Produce a merged result that preserves the intent of both sides where possible
56
+ 5. If the changes conflict logically (not just textually), prefer the feature branch changes but ensure compatibility with the base branch
57
+
58
+ ## Constraints
59
+
60
+ - Edit ONLY the conflicted files listed above — do NOT modify any other files
61
+ - Remove ALL conflict markers (\`<<<<<<<\`, \`=======\`, \`>>>>>>>\`) from every conflicted file
62
+ - Do NOT add new files or delete files
63
+ - Do NOT run git commands — only edit files to resolve conflicts
64
+ - Do NOT run tests, builds, or linters — only resolve the conflict markers
65
+ - Every conflicted file must have zero remaining conflict markers when you are done`;
66
+ }
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Conflict Resolution Service
3
+ *
4
+ * Orchestrates agent-powered conflict resolution during git rebase.
5
+ * Follows the CI watch/fix loop pattern: detect conflict → invoke agent →
6
+ * validate resolution → stage files → continue rebase, with retry logic.
7
+ */
8
+ import type { IAgentExecutorProvider } from '../../../../application/ports/output/agents/agent-executor-provider.interface.js';
9
+ import type { IGitPrService } from '../../../../application/ports/output/services/git-pr-service.interface.js';
10
+ export declare class ConflictResolutionService {
11
+ private readonly agentProvider;
12
+ private readonly gitPrService;
13
+ constructor(agentProvider: IAgentExecutorProvider, gitPrService: IGitPrService);
14
+ /**
15
+ * Resolve all conflicts during a rebase operation.
16
+ *
17
+ * Handles multi-commit rebases where each commit may introduce conflicts.
18
+ * For each conflicted commit: reads conflicted files, invokes agent to
19
+ * resolve, validates no remaining markers, stages resolved files, and
20
+ * continues the rebase. Retries up to MAX_RETRIES_PER_COMMIT times.
21
+ *
22
+ * If retries are exhausted, aborts the rebase and throws REBASE_CONFLICT.
23
+ *
24
+ * @param cwd - Working directory (repo root or worktree path)
25
+ * @param featureBranch - Feature branch being rebased
26
+ * @param baseBranch - Base branch being rebased onto
27
+ */
28
+ resolve(cwd: string, featureBranch: string, baseBranch: string): Promise<void>;
29
+ /**
30
+ * Read the contents of conflicted files from the working directory.
31
+ */
32
+ private readConflictedFileContents;
33
+ /**
34
+ * Validate that no conflict markers remain in the previously-conflicted files.
35
+ */
36
+ private validateResolution;
37
+ /**
38
+ * Build feedback about remaining conflict markers for retry attempts.
39
+ */
40
+ private buildFeedbackFromRemainingMarkers;
41
+ }
42
+ //# sourceMappingURL=conflict-resolution.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conflict-resolution.service.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wEAAwE,CAAC;AACrH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iEAAiE,CAAC;AAerG,qBACa,yBAAyB;IAGlC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAFZ,aAAa,EAAE,sBAAsB,EAErC,YAAY,EAAE,aAAa;IAG9C;;;;;;;;;;;;;OAaG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkEpF;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAWlC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACH,OAAO,CAAC,iCAAiC;CAyB1C"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * Conflict Resolution Service
3
+ *
4
+ * Orchestrates agent-powered conflict resolution during git rebase.
5
+ * Follows the CI watch/fix loop pattern: detect conflict → invoke agent →
6
+ * validate resolution → stage files → continue rebase, with retry logic.
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 { readFileSync } from 'node:fs';
22
+ import { join } from 'node:path';
23
+ import { GitPrError, GitPrErrorCode, } from '../../../../application/ports/output/services/git-pr-service.interface.js';
24
+ import { buildConflictResolutionPrompt, } from './conflict-resolution.prompt.js';
25
+ const MAX_RETRIES_PER_COMMIT = 3;
26
+ /** Conflict markers that indicate unresolved conflicts */
27
+ const CONFLICT_MARKERS = ['<<<<<<<', '=======', '>>>>>>>'];
28
+ let ConflictResolutionService = class ConflictResolutionService {
29
+ agentProvider;
30
+ gitPrService;
31
+ constructor(agentProvider, gitPrService) {
32
+ this.agentProvider = agentProvider;
33
+ this.gitPrService = gitPrService;
34
+ }
35
+ /**
36
+ * Resolve all conflicts during a rebase operation.
37
+ *
38
+ * Handles multi-commit rebases where each commit may introduce conflicts.
39
+ * For each conflicted commit: reads conflicted files, invokes agent to
40
+ * resolve, validates no remaining markers, stages resolved files, and
41
+ * continues the rebase. Retries up to MAX_RETRIES_PER_COMMIT times.
42
+ *
43
+ * If retries are exhausted, aborts the rebase and throws REBASE_CONFLICT.
44
+ *
45
+ * @param cwd - Working directory (repo root or worktree path)
46
+ * @param featureBranch - Feature branch being rebased
47
+ * @param baseBranch - Base branch being rebased onto
48
+ */
49
+ async resolve(cwd, featureBranch, baseBranch) {
50
+ const executor = await this.agentProvider.getExecutor();
51
+ // Outer loop: handle multi-commit rebases where rebaseContinue
52
+ // may reveal conflicts on the next commit
53
+ while (true) {
54
+ const conflictedFiles = await this.gitPrService.getConflictedFiles(cwd);
55
+ if (conflictedFiles.length === 0) {
56
+ return; // No conflicts — rebase is complete
57
+ }
58
+ // Inner loop: retry agent resolution for the current commit's conflicts
59
+ let resolved = false;
60
+ for (let attempt = 1; attempt <= MAX_RETRIES_PER_COMMIT; attempt++) {
61
+ const fileContents = this.readConflictedFileContents(cwd, conflictedFiles);
62
+ const previousFeedback = attempt > 1 ? this.buildFeedbackFromRemainingMarkers(cwd, conflictedFiles) : undefined;
63
+ const prompt = buildConflictResolutionPrompt({
64
+ conflictedFiles: fileContents,
65
+ featureBranch,
66
+ baseBranch,
67
+ attemptNumber: attempt,
68
+ maxAttempts: MAX_RETRIES_PER_COMMIT,
69
+ previousFeedback,
70
+ });
71
+ await executor.execute(prompt, { cwd });
72
+ // Validate: check no conflict markers remain
73
+ if (this.validateResolution(cwd, conflictedFiles)) {
74
+ resolved = true;
75
+ break;
76
+ }
77
+ }
78
+ if (!resolved) {
79
+ // Exhausted retries — abort and report
80
+ await this.gitPrService.rebaseAbort(cwd);
81
+ const remaining = conflictedFiles.join(', ');
82
+ throw new GitPrError(`Failed to resolve conflicts after ${MAX_RETRIES_PER_COMMIT} attempts. ` +
83
+ `Unresolved files: ${remaining}. The rebase has been aborted.`, GitPrErrorCode.REBASE_CONFLICT);
84
+ }
85
+ // Resolution succeeded — stage files and continue rebase
86
+ await this.gitPrService.stageFiles(cwd, conflictedFiles);
87
+ try {
88
+ await this.gitPrService.rebaseContinue(cwd);
89
+ // rebaseContinue succeeded — check if there are more conflicts
90
+ // from subsequent commits (loop continues)
91
+ return; // No more conflicts
92
+ }
93
+ catch (error) {
94
+ if (error instanceof GitPrError && error.code === GitPrErrorCode.REBASE_CONFLICT) {
95
+ // Next commit has conflicts — loop back to resolve them
96
+ continue;
97
+ }
98
+ throw error; // Unexpected error
99
+ }
100
+ }
101
+ }
102
+ /**
103
+ * Read the contents of conflicted files from the working directory.
104
+ */
105
+ readConflictedFileContents(cwd, filePaths) {
106
+ return filePaths.map((filePath) => {
107
+ try {
108
+ const content = readFileSync(join(cwd, filePath), 'utf-8');
109
+ return { path: filePath, content };
110
+ }
111
+ catch {
112
+ return { path: filePath, content: '(unable to read file)' };
113
+ }
114
+ });
115
+ }
116
+ /**
117
+ * Validate that no conflict markers remain in the previously-conflicted files.
118
+ */
119
+ validateResolution(cwd, filePaths) {
120
+ for (const filePath of filePaths) {
121
+ try {
122
+ const content = readFileSync(join(cwd, filePath), 'utf-8');
123
+ for (const marker of CONFLICT_MARKERS) {
124
+ if (content.includes(marker)) {
125
+ return false;
126
+ }
127
+ }
128
+ }
129
+ catch {
130
+ return false;
131
+ }
132
+ }
133
+ return true;
134
+ }
135
+ /**
136
+ * Build feedback about remaining conflict markers for retry attempts.
137
+ */
138
+ buildFeedbackFromRemainingMarkers(cwd, filePaths) {
139
+ const remaining = [];
140
+ for (const filePath of filePaths) {
141
+ try {
142
+ const content = readFileSync(join(cwd, filePath), 'utf-8');
143
+ const lines = content.split('\n');
144
+ const markerLines = [];
145
+ lines.forEach((line, index) => {
146
+ if (CONFLICT_MARKERS.some((marker) => line.includes(marker))) {
147
+ markerLines.push(index + 1);
148
+ }
149
+ });
150
+ if (markerLines.length > 0) {
151
+ remaining.push(`- \`${filePath}\`: conflict markers remain on lines ${markerLines.join(', ')}`);
152
+ }
153
+ }
154
+ catch {
155
+ remaining.push(`- \`${filePath}\`: unable to read file`);
156
+ }
157
+ }
158
+ return remaining.length > 0
159
+ ? remaining.join('\n')
160
+ : 'No specific markers found, but validation failed.';
161
+ }
162
+ };
163
+ ConflictResolutionService = __decorate([
164
+ injectable(),
165
+ __param(0, inject('IAgentExecutorProvider')),
166
+ __param(1, inject('IGitPrService')),
167
+ __metadata("design:paramtypes", [Object, Object])
168
+ ], ConflictResolutionService);
169
+ export { ConflictResolutionService };
@@ -31,7 +31,16 @@ export declare class DeploymentService implements IDeploymentService {
31
31
  setDatabase(db: Database.Database): void;
32
32
  /**
33
33
  * Recover dev servers from the database on startup.
34
- * Validates each PID is still alive; removes dead rows.
34
+ *
35
+ * Three recovery strategies based on process state:
36
+ * 1. Alive + Ready (has URL) → re-adopt, then validate URL asynchronously
37
+ * 2. Alive + Booting (no URL) → kill orphan and re-spawn (can't re-attach stdout)
38
+ * 3. Dead → re-spawn if target directory still exists
39
+ *
40
+ * After sync recovery, fires off async URL health checks for re-adopted
41
+ * processes. Zombies (alive but not serving) are killed and re-spawned.
42
+ *
43
+ * All re-spawns are wrapped in try/catch so one failure doesn't block others.
35
44
  */
36
45
  recoverAll(): void;
37
46
  /**
@@ -77,5 +86,16 @@ export declare class DeploymentService implements IDeploymentService {
77
86
  private attachOutputListener;
78
87
  private pollUntilDead;
79
88
  private waitForExit;
89
+ /**
90
+ * Async health check for a recovered entry. Probes the URL port via TCP.
91
+ * If the port is not responding (zombie process), kills and re-spawns.
92
+ * Fire-and-forget — errors are logged, never thrown.
93
+ */
94
+ private validateAndRespawn;
95
+ /**
96
+ * TCP connect probe to check if a URL's port is accepting connections.
97
+ * Returns true if the port responds within 2 seconds, false otherwise.
98
+ */
99
+ private probePort;
80
100
  }
81
101
  //# sourceMappingURL=deployment.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"deployment.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/deployment/deployment.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,KAAK,EAAqB,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAO3C,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,QAAQ,EACT,MAAM,qEAAqE,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAgCzD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;IAC7D,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CACnC;AA6BD,qBAAa,iBAAkB,YAAW,kBAAkB;IAC1D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsC;IAClE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,EAAE,CAAkC;gBAEhC,IAAI,GAAE,OAAO,CAAC,qBAAqB,CAAM;IAIrD;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI;IAIxC;;;OAGG;IACH,UAAU,IAAI,IAAI;IA4ClB;;;OAGG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,SAAe,GAAG,IAAI;IAqF5E;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IA4CpD;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0D3C;;OAEG;IACH,OAAO,IAAI,IAAI;IAef;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,GAAG,IAAI;IAM5C;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI;IAI1D;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI;IAM3D,OAAO,CAAC,QAAQ;IAuBhB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,MAAM;IAed,OAAO,CAAC,WAAW;IAQnB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;YA4Dd,aAAa;IAW3B,OAAO,CAAC,WAAW;CASpB"}
1
+ {"version":3,"file":"deployment.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/deployment/deployment.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,KAAK,EAAmC,MAAM,oBAAoB,CAAC;AAK5E,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAK3C,OAAO,KAAK,EACV,kBAAkB,EAClB,gBAAgB,EAChB,QAAQ,EACT,MAAM,qEAAqE,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAiCzD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,eAAe,EAAE,OAAO,eAAe,CAAC;IACxC,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;IAC7D,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CACnC;AA0CD,qBAAa,iBAAkB,YAAW,kBAAkB;IAC1D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsC;IAClE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAwB;IAC7C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAsB;IAC9C,OAAO,CAAC,EAAE,CAAkC;gBAEhC,IAAI,GAAE,OAAO,CAAC,qBAAqB,CAAM;IAIrD;;OAEG;IACH,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI;IAIxC;;;;;;;;;;;;OAYG;IACH,UAAU,IAAI,IAAI;IAgFlB;;;OAGG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,SAAe,GAAG,IAAI;IA0G5E;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IA4CpD;;OAEG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0D3C;;OAEG;IACH,OAAO,IAAI,IAAI;IAef;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,GAAG,IAAI;IAM5C;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI;IAI1D;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI;IAM3D,OAAO,CAAC,QAAQ;IAuBhB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,MAAM;IAed,OAAO,CAAC,WAAW;IAQnB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;YA4Dd,aAAa;IAW3B,OAAO,CAAC,WAAW;IAUnB;;;;OAIG;YACW,kBAAkB;IAsChC;;;OAGG;IACH,OAAO,CAAC,SAAS;CAwBlB"}