@shepai/cli 1.169.0 → 1.169.1-pr525.b4d0ff7

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 (200) hide show
  1. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.js +1 -1
  2. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.js +1 -1
  3. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/implement.node.js +1 -1
  4. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts.map +1 -1
  5. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.js +40 -21
  6. package/dist/packages/core/src/infrastructure/services/git/git-fork.service.d.ts +5 -0
  7. package/dist/packages/core/src/infrastructure/services/git/git-fork.service.d.ts.map +1 -1
  8. package/dist/packages/core/src/infrastructure/services/git/git-fork.service.js +34 -0
  9. package/dist/tsconfig.build.tsbuildinfo +1 -1
  10. package/package.json +2 -1
  11. package/web/.next/BUILD_ID +1 -1
  12. package/web/.next/build-manifest.json +4 -4
  13. package/web/.next/fallback-build-manifest.json +2 -2
  14. package/web/.next/prerender-manifest.json +3 -3
  15. package/web/.next/required-server-files.js +3 -3
  16. package/web/.next/required-server-files.json +3 -3
  17. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/build-manifest.json +2 -2
  18. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
  19. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  20. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  21. package/web/.next/server/app/(dashboard)/@drawer/chat/page/build-manifest.json +2 -2
  22. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
  23. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  24. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  25. package/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +2 -2
  26. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +30 -30
  27. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  28. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  29. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/build-manifest.json +2 -2
  30. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +38 -38
  31. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  32. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  33. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +2 -2
  34. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +38 -38
  35. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  36. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  37. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/build-manifest.json +2 -2
  38. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  39. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  40. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  41. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +2 -2
  42. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  43. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  44. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  45. package/web/.next/server/app/(dashboard)/chat/page/build-manifest.json +2 -2
  46. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
  47. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  48. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  49. package/web/.next/server/app/(dashboard)/create/page/build-manifest.json +2 -2
  50. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +30 -30
  51. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  52. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  53. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/build-manifest.json +2 -2
  54. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +38 -38
  55. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  56. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  57. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +2 -2
  58. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +38 -38
  59. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  60. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  61. package/web/.next/server/app/(dashboard)/page/build-manifest.json +2 -2
  62. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
  63. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  64. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  65. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/build-manifest.json +2 -2
  66. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  67. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  68. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  69. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +2 -2
  70. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  71. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  72. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  73. package/web/.next/server/app/_global-error/page/build-manifest.json +2 -2
  74. package/web/.next/server/app/_global-error.html +2 -2
  75. package/web/.next/server/app/_global-error.rsc +1 -1
  76. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  77. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  78. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  79. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  80. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  81. package/web/.next/server/app/_not-found/page/build-manifest.json +2 -2
  82. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
  83. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  84. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  85. package/web/.next/server/app/features/page/build-manifest.json +2 -2
  86. package/web/.next/server/app/features/page/server-reference-manifest.json +6 -6
  87. package/web/.next/server/app/features/page.js.nft.json +1 -1
  88. package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
  89. package/web/.next/server/app/settings/page/build-manifest.json +2 -2
  90. package/web/.next/server/app/settings/page/server-reference-manifest.json +9 -9
  91. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  92. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  93. package/web/.next/server/app/skills/page/build-manifest.json +2 -2
  94. package/web/.next/server/app/skills/page/server-reference-manifest.json +11 -11
  95. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  96. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  97. package/web/.next/server/app/tools/page/build-manifest.json +2 -2
  98. package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
  99. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  100. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  101. package/web/.next/server/app/version/page/build-manifest.json +2 -2
  102. package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
  103. package/web/.next/server/app/version/page.js.nft.json +1 -1
  104. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  105. package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
  106. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  107. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  108. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
  109. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
  110. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js +1 -1
  111. package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js.map +1 -1
  112. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  113. package/web/.next/server/chunks/ssr/[root-of-the-server]__4fb81977._.js +1 -1
  114. package/web/.next/server/chunks/ssr/[root-of-the-server]__4fb81977._.js.map +1 -1
  115. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js +1 -1
  116. package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js.map +1 -1
  117. package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js +1 -1
  118. package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js.map +1 -1
  119. package/web/.next/server/chunks/ssr/[root-of-the-server]__7ffd3598._.js +2 -2
  120. package/web/.next/server/chunks/ssr/[root-of-the-server]__7ffd3598._.js.map +1 -1
  121. package/web/.next/server/chunks/ssr/[root-of-the-server]__b020c17d._.js +2 -2
  122. package/web/.next/server/chunks/ssr/[root-of-the-server]__b020c17d._.js.map +1 -1
  123. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js +1 -1
  124. package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js.map +1 -1
  125. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js +1 -1
  126. package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js.map +1 -1
  127. package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js +1 -1
  128. package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js.map +1 -1
  129. package/web/.next/server/chunks/ssr/[root-of-the-server]__e88da4ee._.js +1 -1
  130. package/web/.next/server/chunks/ssr/_02e01240._.js +1 -1
  131. package/web/.next/server/chunks/ssr/_02e01240._.js.map +1 -1
  132. package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
  133. package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
  134. package/web/.next/server/chunks/ssr/_0727935d._.js +1 -1
  135. package/web/.next/server/chunks/ssr/_0727935d._.js.map +1 -1
  136. package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
  137. package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
  138. package/web/.next/server/chunks/ssr/_18886033._.js +1 -1
  139. package/web/.next/server/chunks/ssr/_18886033._.js.map +1 -1
  140. package/web/.next/server/chunks/ssr/_22e00a14._.js +1 -1
  141. package/web/.next/server/chunks/ssr/_22e00a14._.js.map +1 -1
  142. package/web/.next/server/chunks/ssr/_2cb7a4bf._.js +3 -0
  143. package/web/.next/server/chunks/ssr/{_fecec23a._.js.map → _2cb7a4bf._.js.map} +1 -1
  144. package/web/.next/server/chunks/ssr/_4cbb7f95._.js +1 -1
  145. package/web/.next/server/chunks/ssr/_4cbb7f95._.js.map +1 -1
  146. package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
  147. package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
  148. package/web/.next/server/chunks/ssr/{_2b63b860._.js → _5be4f724._.js} +2 -2
  149. package/web/.next/server/chunks/ssr/{_2b63b860._.js.map → _5be4f724._.js.map} +1 -1
  150. package/web/.next/server/chunks/ssr/_a1068852._.js +1 -1
  151. package/web/.next/server/chunks/ssr/_a5a5901d._.js +1 -1
  152. package/web/.next/server/chunks/ssr/_a5a5901d._.js.map +1 -1
  153. package/web/.next/server/chunks/ssr/_ad09f271._.js +1 -1
  154. package/web/.next/server/chunks/ssr/_ad09f271._.js.map +1 -1
  155. package/web/.next/server/chunks/ssr/_c3f595c6._.js +1 -1
  156. package/web/.next/server/chunks/ssr/_c3f595c6._.js.map +1 -1
  157. package/web/.next/server/chunks/ssr/{_a104e947._.js → _e4891f9d._.js} +2 -2
  158. package/web/.next/server/chunks/ssr/{_a104e947._.js.map → _e4891f9d._.js.map} +1 -1
  159. package/web/.next/server/chunks/ssr/_ea9e1556._.js +1 -1
  160. package/web/.next/server/chunks/ssr/_ea9e1556._.js.map +1 -1
  161. package/web/.next/server/chunks/ssr/_f1ba9be6._.js +2 -2
  162. package/web/.next/server/chunks/ssr/_f1ba9be6._.js.map +1 -1
  163. package/web/.next/server/chunks/ssr/_f33cd07e._.js +2 -2
  164. package/web/.next/server/chunks/ssr/_f33cd07e._.js.map +1 -1
  165. package/web/.next/server/chunks/ssr/_f8b45233._.js +1 -1
  166. package/web/.next/server/chunks/ssr/_f8b45233._.js.map +1 -1
  167. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  168. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  169. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
  170. package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
  171. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
  172. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
  173. package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
  174. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  175. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  176. package/web/.next/server/middleware-build-manifest.js +2 -2
  177. package/web/.next/server/pages/500.html +2 -2
  178. package/web/.next/server/server-reference-manifest.js +1 -1
  179. package/web/.next/server/server-reference-manifest.json +48 -48
  180. package/web/.next/static/chunks/{f1885dd59965e0f9.js → 1483550fb335115a.js} +2 -2
  181. package/web/.next/static/chunks/{32d411963c1ef448.js → 1d71fe46408a0a22.js} +1 -1
  182. package/web/.next/static/chunks/{0f17267e5c90b232.js → 30028fcacaf939f7.js} +1 -1
  183. package/web/.next/static/chunks/{f8f63039d0d6f80b.js → 333e067a79316feb.js} +1 -1
  184. package/web/.next/static/chunks/{d0e04c4bd51d2553.js → 34d9a531303f50f7.js} +1 -1
  185. package/web/.next/static/chunks/{9d57e438c993d9f3.js → 53f056aa254c521b.js} +1 -1
  186. package/web/.next/static/chunks/{9fa49aeaf54d09fd.js → 710bb50061713f18.js} +1 -1
  187. package/web/.next/static/chunks/{4d5d80adb4397ced.js → 771bc5fb18b64ee2.js} +2 -2
  188. package/web/.next/static/chunks/94ce9f72d5820637.js +1 -0
  189. package/web/.next/static/chunks/{57e11c48bcd1d9b8.js → 994f3e88a3b9b15f.js} +1 -1
  190. package/web/.next/static/chunks/{7f3ce661fcc57b65.js → b405635128fb32f8.js} +2 -2
  191. package/web/.next/static/chunks/{99bfac1c0b8b19b7.js → d4d0ef36bbfdee5c.js} +1 -1
  192. package/web/.next/static/chunks/df258c1e0b6a6a65.js +1 -0
  193. package/web/.next/static/chunks/{3c730d304bc35629.js → ee97b5c134b7b140.js} +1 -1
  194. package/web/.next/static/chunks/{turbopack-57bb0674e2cd1d31.js → turbopack-4a368ba57753685b.js} +1 -1
  195. package/web/.next/server/chunks/ssr/_fecec23a._.js +0 -3
  196. package/web/.next/static/chunks/725e8bc88459d9d0.js +0 -1
  197. package/web/.next/static/chunks/84586f075208b491.js +0 -1
  198. /package/web/.next/static/{t2E8atZdYFJbeTbPcqx9J → DmYCIOeq9bVl7arX_r0fd}/_buildManifest.js +0 -0
  199. /package/web/.next/static/{t2E8atZdYFJbeTbPcqx9J → DmYCIOeq9bVl7arX_r0fd}/_clientMiddlewareManifest.json +0 -0
  200. /package/web/.next/static/{t2E8atZdYFJbeTbPcqx9J → DmYCIOeq9bVl7arX_r0fd}/_ssgManifest.js +0 -0
@@ -86,7 +86,7 @@ export function createEvidenceNode(executor) {
86
86
  const commitEvidence = state.commitEvidence;
87
87
  const settings = hasSettings() ? getSettings() : undefined;
88
88
  const maxRetries = settings?.workflow.evidenceRetries ?? DEFAULT_MAX_RETRIES;
89
- const options = buildExecutorOptions(state);
89
+ const options = buildExecutorOptions(state, undefined, 'evidence');
90
90
  const tasks = parseTasks(state.specDir);
91
91
  // --- Validation retry loop ---
92
92
  let allEvidence = [];
@@ -48,7 +48,7 @@ export function createFastImplementNode(executor) {
48
48
  agentType: executor.agentType,
49
49
  });
50
50
  try {
51
- const options = buildExecutorOptions(state);
51
+ const options = buildExecutorOptions(state, undefined, 'fast-implement');
52
52
  log.info(`Executing agent at cwd=${options.cwd}`);
53
53
  log.info(`Prompt length: ${prompt.length} chars`);
54
54
  const result = await retryExecute(executor, prompt, options, { logger: log });
@@ -112,7 +112,7 @@ export function createImplementNode(executor) {
112
112
  }
113
113
  log.info(`Phase ${phase.id} "${phase.name}" — ${phaseTasks.length} task(s), parallel: ${phase.parallel}`);
114
114
  updateFeatureProgress(state.specDir, completedTasks, totalTasks, `implementing-${phase.id}`, phaseTasks[0].id, log);
115
- const options = buildExecutorOptions(state);
115
+ const options = buildExecutorOptions(state, undefined, 'implement');
116
116
  const promptContext = { isLastPhase, phaseIndex: i, totalPhases };
117
117
  const phaseStartTime = Date.now();
118
118
  const phaseTimingId = await recordPhaseStart(`implement:${phase.id}`, {
@@ -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;AAC3H,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mEAAmE,CAAC;AAEzG,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,CAAC,EAAE,eAAe,CAAC;IACjC,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,CAgY7E"}
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;AAC3H,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mEAAmE,CAAC;AAEzG,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,CAAC,EAAE,eAAe,CAAC;IACjC,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,CAmZ7E"}
@@ -83,7 +83,7 @@ export function createMergeNode(deps) {
83
83
  const feature = await deps.featureRepository.findById(state.featureId);
84
84
  const branch = feature?.branch ?? `feat/${state.featureId}`;
85
85
  const baseBranch = await deps.getDefaultBranch(cwd);
86
- const options = buildExecutorOptions(state);
86
+ const options = buildExecutorOptions(state, undefined, 'merge');
87
87
  let commitHash = state.commitHash;
88
88
  let prUrl = state.prUrl;
89
89
  let prNumber = state.prNumber;
@@ -221,31 +221,50 @@ export function createMergeNode(deps) {
221
221
  }
222
222
  }
223
223
  // --- Fork-and-PR flow ---
224
- // When forkAndPr=true, fork the repo, push to the fork, create upstream PR,
225
- // then transition to AwaitingUpstream instead of merging.
224
+ // When forkAndPr=true, fork the repo (or create a new repo as fallback),
225
+ // push to the fork, create upstream PR, then transition to AwaitingUpstream.
226
+ // If no upstream exists (created via fallback), skip PR and transition to Completed.
226
227
  if (state.forkAndPr && deps.gitForkService) {
227
228
  log.info('Fork-and-PR flow: forking repo and creating upstream PR');
228
229
  await deps.gitForkService.forkRepository(cwd);
229
- log.info('Repository forked, remotes remapped');
230
+ log.info('Repository forked/created, remotes configured');
230
231
  await deps.gitForkService.pushToFork(cwd, branch);
231
232
  log.info(`Branch ${branch} pushed to fork`);
232
- const upstreamPr = await deps.gitForkService.createUpstreamPr(cwd, feature?.name ?? branch, feature?.description ?? '', branch, baseBranch);
233
- log.info(`Upstream PR created: ${upstreamPr.url}`);
234
- messages.push(`[merge] Upstream PR created: ${upstreamPr.url}`);
235
- if (feature) {
236
- await deps.featureRepository.update({
237
- ...feature,
238
- lifecycle: SdlcLifecycle.AwaitingUpstream,
239
- pr: {
240
- ...(feature.pr ?? { url: '', number: 0, status: PrStatus.Open }),
241
- ...(commitHash ? { commitHash } : {}),
242
- upstreamPrUrl: upstreamPr.url,
243
- upstreamPrNumber: upstreamPr.number,
244
- upstreamPrStatus: PrStatus.Open,
245
- },
246
- updatedAt: new Date(),
247
- });
248
- messages.push(`[merge] Feature lifecycle → AwaitingUpstream`);
233
+ // Try to create upstream PR. This will fail gracefully if forkRepository
234
+ // fell back to creating a new repo (no upstream remote to target).
235
+ try {
236
+ const upstreamPr = await deps.gitForkService.createUpstreamPr(cwd, feature?.name ?? branch, feature?.description ?? '', branch, baseBranch);
237
+ log.info(`Upstream PR created: ${upstreamPr.url}`);
238
+ messages.push(`[merge] Upstream PR created: ${upstreamPr.url}`);
239
+ if (feature) {
240
+ await deps.featureRepository.update({
241
+ ...feature,
242
+ lifecycle: SdlcLifecycle.AwaitingUpstream,
243
+ pr: {
244
+ ...(feature.pr ?? { url: '', number: 0, status: PrStatus.Open }),
245
+ ...(commitHash ? { commitHash } : {}),
246
+ upstreamPrUrl: upstreamPr.url,
247
+ upstreamPrNumber: upstreamPr.number,
248
+ upstreamPrStatus: PrStatus.Open,
249
+ },
250
+ updatedAt: new Date(),
251
+ });
252
+ messages.push(`[merge] Feature lifecycle → AwaitingUpstream`);
253
+ }
254
+ }
255
+ catch {
256
+ // No upstream remote — repo was created fresh, not forked.
257
+ // Code is pushed to origin; transition to Maintain.
258
+ log.info('No upstream remote — skipping upstream PR (repo created, not forked)');
259
+ messages.push(`[merge] Code pushed to origin (no upstream to PR against)`);
260
+ if (feature) {
261
+ await deps.featureRepository.update({
262
+ ...feature,
263
+ lifecycle: SdlcLifecycle.Maintain,
264
+ updatedAt: new Date(),
265
+ });
266
+ messages.push(`[merge] Feature lifecycle → Maintain`);
267
+ }
249
268
  }
250
269
  const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
251
270
  await recordPhaseEnd(mergeTimingId, Date.now() - startTime, {
@@ -13,6 +13,11 @@ export declare class GitForkService implements IGitForkService {
13
13
  private readonly execFile;
14
14
  constructor(execFile: ExecFunction);
15
15
  forkRepository(cwd: string): Promise<void>;
16
+ /**
17
+ * Fallback when gh repo fork fails due to missing remotes.
18
+ * Creates a new private GitHub repository and sets it as origin.
19
+ */
20
+ private createRepositoryFallback;
16
21
  pushToFork(cwd: string, branch: string): Promise<void>;
17
22
  createUpstreamPr(cwd: string, title: string, body: string, head: string, base: string): Promise<UpstreamPrResult>;
18
23
  getUpstreamPrStatus(upstreamRepo: string, prNumber: number): Promise<PrStatus>;
@@ -1 +1 @@
1
- {"version":3,"file":"git-fork.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/git/git-fork.service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0EAA0E,CAAC;AAChH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0EAA0E,CAAC;AAKjH,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D,qBACa,cAAe,YAAW,eAAe;IAChB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,YAAY;IAErE,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0C1C,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAatD,gBAAgB,CACpB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,gBAAgB,CAAC;IAkDtB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsBpF;;;OAGG;IACH,OAAO,CAAC,kBAAkB;CAU3B"}
1
+ {"version":3,"file":"git-fork.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/git/git-fork.service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0EAA0E,CAAC;AAChH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0EAA0E,CAAC;AAKjH,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAG1D,qBACa,cAAe,YAAW,eAAe;IAChB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,YAAY;IAErE,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkDhD;;;OAGG;YACW,wBAAwB;IAgChC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAatD,gBAAgB,CACpB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,gBAAgB,CAAC;IAkDtB,mBAAmB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsBpF;;;OAGG;IACH,OAAO,CAAC,kBAAkB;CAU3B"}
@@ -17,6 +17,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
17
17
  var __param = (this && this.__param) || function (paramIndex, decorator) {
18
18
  return function (target, key) { decorator(target, key, paramIndex); }
19
19
  };
20
+ import { basename } from 'node:path';
20
21
  import { injectable, inject } from 'tsyringe';
21
22
  import { GitForkError, GitForkErrorCode, } from '../../../application/ports/output/services/git-fork-service.interface.js';
22
23
  import { PrStatus } from '../../../domain/generated/output.js';
@@ -58,9 +59,42 @@ let GitForkService = class GitForkService {
58
59
  if (message.includes('auth') || message.includes('login')) {
59
60
  throw new GitForkError('GitHub authentication required to fork', GitForkErrorCode.AUTH_FAILURE, err instanceof Error ? err : undefined);
60
61
  }
62
+ // Fallback: when fork fails because there are no remotes (e.g. freshly-init'd repo),
63
+ // create a new GitHub repository instead.
64
+ if (message.includes('unable to determine base repository')) {
65
+ await this.createRepositoryFallback(cwd);
66
+ return;
67
+ }
61
68
  throw new GitForkError(`Failed to fork repository: ${message}`, GitForkErrorCode.FORK_FAILED, err instanceof Error ? err : undefined);
62
69
  }
63
70
  }
71
+ /**
72
+ * Fallback when gh repo fork fails due to missing remotes.
73
+ * Creates a new private GitHub repository and sets it as origin.
74
+ */
75
+ async createRepositoryFallback(cwd) {
76
+ const { stdout: ghUser } = await this.execFile('gh', ['api', 'user', '--jq', '.login'], {
77
+ cwd,
78
+ });
79
+ const username = ghUser.trim();
80
+ const repoName = basename(cwd);
81
+ try {
82
+ await this.execFile('gh', [
83
+ 'repo',
84
+ 'create',
85
+ `${username}/${repoName}`,
86
+ '--source',
87
+ '.',
88
+ '--remote',
89
+ 'origin',
90
+ '--private',
91
+ ], { cwd });
92
+ }
93
+ catch (createErr) {
94
+ const createMessage = createErr instanceof Error ? createErr.message : String(createErr);
95
+ throw new GitForkError(`Failed to create repository: ${createMessage}`, GitForkErrorCode.FORK_FAILED, createErr instanceof Error ? createErr : undefined);
96
+ }
97
+ }
64
98
  async pushToFork(cwd, branch) {
65
99
  try {
66
100
  await this.execFile('git', ['push', '-u', 'origin', branch], { cwd });