@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.
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.js +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/fast-implement.node.js +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/implement.node.js +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.js +40 -21
- package/dist/packages/core/src/infrastructure/services/git/git-fork.service.d.ts +5 -0
- package/dist/packages/core/src/infrastructure/services/git/git-fork.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/git/git-fork.service.js +34 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +2 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +4 -4
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +3 -3
- package/web/.next/required-server-files.json +3 -3
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/build-manifest.json +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page/build-manifest.json +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/build-manifest.json +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +38 -38
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +38 -38
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/build-manifest.json +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +2 -2
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/chat/page/build-manifest.json +2 -2
- package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/create/page/build-manifest.json +2 -2
- package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +30 -30
- package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/build-manifest.json +2 -2
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +38 -38
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +2 -2
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +38 -38
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/page/build-manifest.json +2 -2
- package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
- package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/build-manifest.json +2 -2
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +2 -2
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
- package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/_global-error/page/build-manifest.json +2 -2
- package/web/.next/server/app/_global-error.html +2 -2
- package/web/.next/server/app/_global-error.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/web/.next/server/app/_not-found/page/build-manifest.json +2 -2
- package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/features/page/build-manifest.json +2 -2
- package/web/.next/server/app/features/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/features/page.js.nft.json +1 -1
- package/web/.next/server/app/features/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/settings/page/build-manifest.json +2 -2
- package/web/.next/server/app/settings/page/server-reference-manifest.json +9 -9
- package/web/.next/server/app/settings/page.js.nft.json +1 -1
- package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/skills/page/build-manifest.json +2 -2
- package/web/.next/server/app/skills/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/skills/page.js.nft.json +1 -1
- package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/tools/page/build-manifest.json +2 -2
- package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
- package/web/.next/server/app/tools/page.js.nft.json +1 -1
- package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/version/page/build-manifest.json +2 -2
- package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
- package/web/.next/server/app/version/page.js.nft.json +1 -1
- package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
- package/web/.next/server/chunks/[root-of-the-server]__a402b567._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js +2 -2
- package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_feature-drawer-client_tsx_e9755fc8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__1f389e5d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__4fb81977._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__4fb81977._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6c7d3936._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7dcd0917._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7ffd3598._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7ffd3598._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b020c17d._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b020c17d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__b7b96453._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ba7f5873._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__c5e09f6f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__e88da4ee._.js +1 -1
- package/web/.next/server/chunks/ssr/_02e01240._.js +1 -1
- package/web/.next/server/chunks/ssr/_02e01240._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_05c23ad9._.js +1 -1
- package/web/.next/server/chunks/ssr/_05c23ad9._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_0727935d._.js +1 -1
- package/web/.next/server/chunks/ssr/_0727935d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_16eb4fec._.js +1 -1
- package/web/.next/server/chunks/ssr/_16eb4fec._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_18886033._.js +1 -1
- package/web/.next/server/chunks/ssr/_18886033._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_22e00a14._.js +1 -1
- package/web/.next/server/chunks/ssr/_22e00a14._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_2cb7a4bf._.js +3 -0
- package/web/.next/server/chunks/ssr/{_fecec23a._.js.map → _2cb7a4bf._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_4cbb7f95._.js +1 -1
- package/web/.next/server/chunks/ssr/_4cbb7f95._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_56b9d60f._.js +1 -1
- package/web/.next/server/chunks/ssr/_56b9d60f._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_2b63b860._.js → _5be4f724._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_2b63b860._.js.map → _5be4f724._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_a1068852._.js +1 -1
- package/web/.next/server/chunks/ssr/_a5a5901d._.js +1 -1
- package/web/.next/server/chunks/ssr/_a5a5901d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_ad09f271._.js +1 -1
- package/web/.next/server/chunks/ssr/_ad09f271._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_c3f595c6._.js +1 -1
- package/web/.next/server/chunks/ssr/_c3f595c6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/{_a104e947._.js → _e4891f9d._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_a104e947._.js.map → _e4891f9d._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_ea9e1556._.js +1 -1
- package/web/.next/server/chunks/ssr/_ea9e1556._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f1ba9be6._.js +2 -2
- package/web/.next/server/chunks/ssr/_f1ba9be6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f33cd07e._.js +2 -2
- package/web/.next/server/chunks/ssr/_f33cd07e._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_f8b45233._.js +1 -1
- package/web/.next/server/chunks/ssr/_f8b45233._.js.map +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
- package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js +1 -1
- package/web/.next/server/chunks/ssr/f3a1f_components_common_control-center-drawer_repository-drawer-client_tsx_39a00c03._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_baaca5d5._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_895e5bfa._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
- package/web/.next/server/middleware-build-manifest.js +2 -2
- package/web/.next/server/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +48 -48
- package/web/.next/static/chunks/{f1885dd59965e0f9.js → 1483550fb335115a.js} +2 -2
- package/web/.next/static/chunks/{32d411963c1ef448.js → 1d71fe46408a0a22.js} +1 -1
- package/web/.next/static/chunks/{0f17267e5c90b232.js → 30028fcacaf939f7.js} +1 -1
- package/web/.next/static/chunks/{f8f63039d0d6f80b.js → 333e067a79316feb.js} +1 -1
- package/web/.next/static/chunks/{d0e04c4bd51d2553.js → 34d9a531303f50f7.js} +1 -1
- package/web/.next/static/chunks/{9d57e438c993d9f3.js → 53f056aa254c521b.js} +1 -1
- package/web/.next/static/chunks/{9fa49aeaf54d09fd.js → 710bb50061713f18.js} +1 -1
- package/web/.next/static/chunks/{4d5d80adb4397ced.js → 771bc5fb18b64ee2.js} +2 -2
- package/web/.next/static/chunks/94ce9f72d5820637.js +1 -0
- package/web/.next/static/chunks/{57e11c48bcd1d9b8.js → 994f3e88a3b9b15f.js} +1 -1
- package/web/.next/static/chunks/{7f3ce661fcc57b65.js → b405635128fb32f8.js} +2 -2
- package/web/.next/static/chunks/{99bfac1c0b8b19b7.js → d4d0ef36bbfdee5c.js} +1 -1
- package/web/.next/static/chunks/df258c1e0b6a6a65.js +1 -0
- package/web/.next/static/chunks/{3c730d304bc35629.js → ee97b5c134b7b140.js} +1 -1
- package/web/.next/static/chunks/{turbopack-57bb0674e2cd1d31.js → turbopack-4a368ba57753685b.js} +1 -1
- package/web/.next/server/chunks/ssr/_fecec23a._.js +0 -3
- package/web/.next/static/chunks/725e8bc88459d9d0.js +0 -1
- package/web/.next/static/chunks/84586f075208b491.js +0 -1
- /package/web/.next/static/{t2E8atZdYFJbeTbPcqx9J → DmYCIOeq9bVl7arX_r0fd}/_buildManifest.js +0 -0
- /package/web/.next/static/{t2E8atZdYFJbeTbPcqx9J → DmYCIOeq9bVl7arX_r0fd}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{t2E8atZdYFJbeTbPcqx9J → DmYCIOeq9bVl7arX_r0fd}/_ssgManifest.js +0 -0
package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/evidence.node.js
CHANGED
|
@@ -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 });
|
package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/implement.node.js
CHANGED
|
@@ -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,
|
|
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
|
|
225
|
-
// then transition to AwaitingUpstream
|
|
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
|
|
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
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
...
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
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;
|
|
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 });
|