@shepai/cli 1.123.0-pr396.f99e785 → 1.123.0-pr399.41eb3f6
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/application/ports/output/services/git-pr-service.interface.d.ts +5 -68
- package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts.map +1 -1
- package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.js +4 -6
- package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/di/container.js +0 -15
- package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts +0 -6
- package/dist/packages/core/src/infrastructure/services/git/git-pr.service.d.ts.map +1 -1
- package/dist/packages/core/src/infrastructure/services/git/git-pr.service.js +0 -125
- package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.d.ts.map +1 -1
- package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js +4 -10
- package/dist/src/presentation/web/hooks/use-deploy-action.d.ts.map +1 -1
- package/dist/src/presentation/web/hooks/use-deploy-action.js +34 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/web/.next/BUILD_ID +1 -1
- package/web/.next/build-manifest.json +2 -2
- package/web/.next/fallback-build-manifest.json +2 -2
- package/web/.next/prerender-manifest.json +3 -3
- package/web/.next/required-server-files.js +1 -1
- package/web/.next/required-server-files.json +1 -1
- package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +22 -22
- 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/server-reference-manifest.json +28 -28
- 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/server-reference-manifest.json +28 -28
- 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]/page/server-reference-manifest.json +20 -20
- 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)/create/page/server-reference-manifest.json +22 -22
- 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/server-reference-manifest.json +28 -28
- 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/server-reference-manifest.json +28 -28
- 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/server-reference-manifest.json +20 -20
- 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]/page/server-reference-manifest.json +20 -20
- 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.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/server-reference-manifest.json +1 -1
- package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/web/.next/server/app/settings/page/server-reference-manifest.json +6 -6
- 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/server-reference-manifest.json +6 -6
- 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/server-reference-manifest.json +6 -6
- 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/server-reference-manifest.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/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_f30d0343.js +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_f30d0343.js.map +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_9f1775bb.js +1 -1
- package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_9f1775bb.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__06fef644._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__14664e9b._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__545792ab._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__545792ab._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7cbda1ea._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__7cbda1ea._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__8c553503._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__9e8b25ad._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__9e8b25ad._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__a7de2711._.js +2 -2
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aed1d6f8._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__aed1d6f8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ce6057f6._.js +1 -1
- package/web/.next/server/chunks/ssr/[root-of-the-server]__ce6057f6._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_223a713c._.js +3 -0
- package/web/.next/server/chunks/ssr/{_d1a3f2ef._.js.map → _223a713c._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_2f6f48b8._.js +1 -1
- package/web/.next/server/chunks/ssr/_2f6f48b8._.js.map +1 -1
- package/web/.next/server/chunks/ssr/_4a948d3a._.js +3 -0
- package/web/.next/server/chunks/ssr/_4a948d3a._.js.map +1 -0
- package/web/.next/server/chunks/ssr/{_4d8cb148._.js → _5cd2a694._.js} +2 -2
- package/web/.next/server/chunks/ssr/{_4d8cb148._.js.map → _5cd2a694._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_6328bfd6._.js +3 -0
- package/web/.next/server/chunks/ssr/{_135edb9c._.js.map → _6328bfd6._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/_e9703421._.js +1 -1
- package/web/.next/server/chunks/ssr/_e9703421._.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/src_presentation_web_3dcac3bc._.js +3 -0
- package/web/.next/server/chunks/ssr/{src_presentation_web_f5e7bbb0._.js.map → src_presentation_web_3dcac3bc._.js.map} +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_5f039db1._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_5f039db1._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_2a52b697.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_2a52b697.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_c4337169._.js +2 -2
- package/web/.next/server/chunks/ssr/src_presentation_web_c4337169._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_bf50c527._.js.map +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.js +1 -1
- package/web/.next/server/chunks/ssr/src_presentation_web_components_de814675._.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/pages/500.html +2 -2
- package/web/.next/server/server-reference-manifest.js +1 -1
- package/web/.next/server/server-reference-manifest.json +34 -34
- package/web/.next/static/chunks/{ac9d397653b4a545.js → 03b829609cb3e4b1.js} +1 -1
- package/web/.next/static/chunks/06dcf11946519cf7.js +1 -0
- package/web/.next/static/chunks/14ce5ffbb86dd80e.js +1 -0
- package/web/.next/static/chunks/2756e2f53da55fa1.js +1 -0
- package/web/.next/static/chunks/{98e379ad9f34a4bc.js → 31c534b010db1201.js} +1 -1
- package/web/.next/static/chunks/31cacff494356d30.js +1 -0
- package/web/.next/static/chunks/49d332348d0d7191.js +2 -0
- package/web/.next/static/chunks/{e8b9449e30921e0c.js → a14820d87c06b28e.js} +1 -1
- package/web/.next/static/chunks/{8686a19cfa69dd66.js → af09691e4d666285.js} +1 -1
- package/web/.next/static/chunks/{17df31abcce48892.js → d1e6c5bb743e3587.js} +2 -2
- package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.d.ts +0 -28
- package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.d.ts.map +0 -1
- package/dist/packages/core/src/application/use-cases/features/rebase-feature-on-main.use-case.js +0 -81
- package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.d.ts +0 -16
- package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.d.ts.map +0 -1
- package/dist/packages/core/src/application/use-cases/repositories/sync-repository-main.use-case.js +0 -43
- package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.d.ts +0 -35
- package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.prompt.js +0 -66
- package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.d.ts +0 -42
- package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.d.ts.map +0 -1
- package/dist/packages/core/src/infrastructure/services/agents/conflict-resolution/conflict-resolution.service.js +0 -169
- package/web/.next/server/chunks/ssr/_135edb9c._.js +0 -3
- package/web/.next/server/chunks/ssr/_cc77a143._.js +0 -3
- package/web/.next/server/chunks/ssr/_cc77a143._.js.map +0 -1
- package/web/.next/server/chunks/ssr/_d1a3f2ef._.js +0 -3
- package/web/.next/server/chunks/ssr/src_presentation_web_f5e7bbb0._.js +0 -3
- package/web/.next/static/chunks/1c1054651e236bce.js +0 -1
- package/web/.next/static/chunks/332ea53deafc3580.js +0 -2
- package/web/.next/static/chunks/3b5c6053de1f82b7.js +0 -1
- package/web/.next/static/chunks/5538bb98209eac59.js +0 -1
- package/web/.next/static/chunks/f5cdf82573f39ac1.js +0 -1
- /package/web/.next/static/{mrYVQrg0aA4QFvx-9VOjk → 5K1b8IucGUZnZ7EHoN8aO}/_buildManifest.js +0 -0
- /package/web/.next/static/{mrYVQrg0aA4QFvx-9VOjk → 5K1b8IucGUZnZ7EHoN8aO}/_clientMiddlewareManifest.json +0 -0
- /package/web/.next/static/{mrYVQrg0aA4QFvx-9VOjk → 5K1b8IucGUZnZ7EHoN8aO}/_ssgManifest.js +0 -0
package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts
CHANGED
|
@@ -9,17 +9,15 @@ import type { PrStatus } from '../../../../domain/generated/output.js';
|
|
|
9
9
|
* Error codes for git PR operations.
|
|
10
10
|
*/
|
|
11
11
|
export declare enum GitPrErrorCode {
|
|
12
|
+
MERGE_CONFLICT = "MERGE_CONFLICT",
|
|
12
13
|
AUTH_FAILURE = "AUTH_FAILURE",
|
|
13
|
-
BRANCH_NOT_FOUND = "BRANCH_NOT_FOUND",
|
|
14
|
-
CI_TIMEOUT = "CI_TIMEOUT",
|
|
15
14
|
GH_NOT_FOUND = "GH_NOT_FOUND",
|
|
15
|
+
NETWORK_ERROR = "NETWORK_ERROR",
|
|
16
|
+
CI_TIMEOUT = "CI_TIMEOUT",
|
|
17
|
+
BRANCH_NOT_FOUND = "BRANCH_NOT_FOUND",
|
|
16
18
|
GIT_ERROR = "GIT_ERROR",
|
|
17
|
-
MERGE_CONFLICT = "MERGE_CONFLICT",
|
|
18
19
|
MERGE_FAILED = "MERGE_FAILED",
|
|
19
|
-
|
|
20
|
-
PR_NOT_FOUND = "PR_NOT_FOUND",
|
|
21
|
-
REBASE_CONFLICT = "REBASE_CONFLICT",
|
|
22
|
-
SYNC_FAILED = "SYNC_FAILED"
|
|
20
|
+
PR_NOT_FOUND = "PR_NOT_FOUND"
|
|
23
21
|
}
|
|
24
22
|
/**
|
|
25
23
|
* Typed error for git PR operations.
|
|
@@ -320,66 +318,5 @@ export interface IGitPrService {
|
|
|
320
318
|
* @throws GitPrError with GH_NOT_FOUND or GIT_ERROR code on failure
|
|
321
319
|
*/
|
|
322
320
|
getFailureLogs(cwd: string, runId: string, branch: string, logMaxChars?: number): Promise<string>;
|
|
323
|
-
/**
|
|
324
|
-
* Fast-forward the local base branch to match its remote counterpart.
|
|
325
|
-
* If currently on the base branch, uses `git pull --ff-only`.
|
|
326
|
-
* If on a different branch, uses `git fetch origin <baseBranch>:<baseBranch>`.
|
|
327
|
-
*
|
|
328
|
-
* @param cwd - Working directory path
|
|
329
|
-
* @param baseBranch - The base branch to sync (e.g. "main")
|
|
330
|
-
* @throws GitPrError with SYNC_FAILED code if the branch has diverged and cannot fast-forward
|
|
331
|
-
* @throws GitPrError with GIT_ERROR code on other git failures
|
|
332
|
-
*/
|
|
333
|
-
syncMain(cwd: string, baseBranch: string): Promise<void>;
|
|
334
|
-
/**
|
|
335
|
-
* Rebase the feature branch onto the latest base branch.
|
|
336
|
-
* Checks for dirty worktree before starting. Detects conflict state
|
|
337
|
-
* from git exit code and stderr — throws REBASE_CONFLICT if conflicts
|
|
338
|
-
* are encountered (caller is responsible for resolution or abort).
|
|
339
|
-
*
|
|
340
|
-
* @param cwd - Working directory path
|
|
341
|
-
* @param featureBranch - The feature branch to rebase
|
|
342
|
-
* @param baseBranch - The base branch to rebase onto
|
|
343
|
-
* @throws GitPrError with GIT_ERROR code if the worktree is dirty
|
|
344
|
-
* @throws GitPrError with REBASE_CONFLICT code if conflicts are detected
|
|
345
|
-
* @throws GitPrError with BRANCH_NOT_FOUND code if a branch does not exist
|
|
346
|
-
*/
|
|
347
|
-
rebaseOnMain(cwd: string, featureBranch: string, baseBranch: string): Promise<void>;
|
|
348
|
-
/**
|
|
349
|
-
* Get the list of files with unresolved conflicts (unmerged paths).
|
|
350
|
-
* Uses `git diff --name-only --diff-filter=U` to identify conflicted files.
|
|
351
|
-
*
|
|
352
|
-
* @param cwd - Working directory path
|
|
353
|
-
* @returns Array of file paths with unresolved conflicts
|
|
354
|
-
* @throws GitPrError with GIT_ERROR code on failure
|
|
355
|
-
*/
|
|
356
|
-
getConflictedFiles(cwd: string): Promise<string[]>;
|
|
357
|
-
/**
|
|
358
|
-
* Stage specific files in the working directory.
|
|
359
|
-
* Uses `git add` for the specified file paths.
|
|
360
|
-
*
|
|
361
|
-
* @param cwd - Working directory path
|
|
362
|
-
* @param files - Array of file paths to stage
|
|
363
|
-
* @throws GitPrError with GIT_ERROR code on failure
|
|
364
|
-
*/
|
|
365
|
-
stageFiles(cwd: string, files: string[]): Promise<void>;
|
|
366
|
-
/**
|
|
367
|
-
* Continue an in-progress rebase after conflicts have been resolved.
|
|
368
|
-
* Runs `git rebase --continue`. May throw REBASE_CONFLICT if the next
|
|
369
|
-
* commit in the rebase also has conflicts.
|
|
370
|
-
*
|
|
371
|
-
* @param cwd - Working directory path
|
|
372
|
-
* @throws GitPrError with REBASE_CONFLICT code if new conflicts are detected
|
|
373
|
-
* @throws GitPrError with GIT_ERROR code on other git failures
|
|
374
|
-
*/
|
|
375
|
-
rebaseContinue(cwd: string): Promise<void>;
|
|
376
|
-
/**
|
|
377
|
-
* Abort an in-progress rebase, restoring the branch to its pre-rebase state.
|
|
378
|
-
* Runs `git rebase --abort`.
|
|
379
|
-
*
|
|
380
|
-
* @param cwd - Working directory path
|
|
381
|
-
* @throws GitPrError with GIT_ERROR code on failure
|
|
382
|
-
*/
|
|
383
|
-
rebaseAbort(cwd: string): Promise<void>;
|
|
384
321
|
}
|
|
385
322
|
//# sourceMappingURL=git-pr-service.interface.d.ts.map
|
package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-pr-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/git-pr-service.interface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wCAAwC,CAAC;AAEvE;;GAEG;AACH,oBAAY,cAAc;IACxB,YAAY,iBAAiB;IAC7B,
|
|
1
|
+
{"version":3,"file":"git-pr-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/git-pr-service.interface.ts"],"names":[],"mappings":"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"}
|
package/dist/packages/core/src/application/ports/output/services/git-pr-service.interface.js
CHANGED
|
@@ -9,17 +9,15 @@
|
|
|
9
9
|
*/
|
|
10
10
|
export var GitPrErrorCode;
|
|
11
11
|
(function (GitPrErrorCode) {
|
|
12
|
+
GitPrErrorCode["MERGE_CONFLICT"] = "MERGE_CONFLICT";
|
|
12
13
|
GitPrErrorCode["AUTH_FAILURE"] = "AUTH_FAILURE";
|
|
13
|
-
GitPrErrorCode["BRANCH_NOT_FOUND"] = "BRANCH_NOT_FOUND";
|
|
14
|
-
GitPrErrorCode["CI_TIMEOUT"] = "CI_TIMEOUT";
|
|
15
14
|
GitPrErrorCode["GH_NOT_FOUND"] = "GH_NOT_FOUND";
|
|
15
|
+
GitPrErrorCode["NETWORK_ERROR"] = "NETWORK_ERROR";
|
|
16
|
+
GitPrErrorCode["CI_TIMEOUT"] = "CI_TIMEOUT";
|
|
17
|
+
GitPrErrorCode["BRANCH_NOT_FOUND"] = "BRANCH_NOT_FOUND";
|
|
16
18
|
GitPrErrorCode["GIT_ERROR"] = "GIT_ERROR";
|
|
17
|
-
GitPrErrorCode["MERGE_CONFLICT"] = "MERGE_CONFLICT";
|
|
18
19
|
GitPrErrorCode["MERGE_FAILED"] = "MERGE_FAILED";
|
|
19
|
-
GitPrErrorCode["NETWORK_ERROR"] = "NETWORK_ERROR";
|
|
20
20
|
GitPrErrorCode["PR_NOT_FOUND"] = "PR_NOT_FOUND";
|
|
21
|
-
GitPrErrorCode["REBASE_CONFLICT"] = "REBASE_CONFLICT";
|
|
22
|
-
GitPrErrorCode["SYNC_FAILED"] = "SYNC_FAILED";
|
|
23
21
|
})(GitPrErrorCode || (GitPrErrorCode = {}));
|
|
24
22
|
/**
|
|
25
23
|
* Typed error for git PR operations.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/di/container.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../../../../../packages/core/src/infrastructure/di/container.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAoHrC;;;;;;GAMG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,SAAS,CAAC,CAiUrE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,CAAC"}
|
|
@@ -80,9 +80,6 @@ import { CheckAndUnblockFeaturesUseCase } from '../../application/use-cases/feat
|
|
|
80
80
|
import { UpdateFeatureLifecycleUseCase } from '../../application/use-cases/features/update/update-feature-lifecycle.use-case.js';
|
|
81
81
|
import { CleanupFeatureWorktreeUseCase } from '../../application/use-cases/features/cleanup-feature-worktree.use-case.js';
|
|
82
82
|
import { UpgradeCliUseCase } from '../../application/use-cases/upgrade/upgrade-cli.use-case.js';
|
|
83
|
-
import { SyncRepositoryMainUseCase } from '../../application/use-cases/repositories/sync-repository-main.use-case.js';
|
|
84
|
-
import { RebaseFeatureOnMainUseCase } from '../../application/use-cases/features/rebase-feature-on-main.use-case.js';
|
|
85
|
-
import { ConflictResolutionService } from '../services/agents/conflict-resolution/conflict-resolution.service.js';
|
|
86
83
|
// Session listing
|
|
87
84
|
import { ClaudeCodeSessionRepository } from '../services/agents/sessions/claude-code-session.repository.js';
|
|
88
85
|
import { StubSessionRepository } from '../services/agents/sessions/stub-session.repository.js';
|
|
@@ -298,12 +295,6 @@ export async function initializeContainer() {
|
|
|
298
295
|
container.registerSingleton(UpdateFeatureLifecycleUseCase);
|
|
299
296
|
container.registerSingleton(CleanupFeatureWorktreeUseCase);
|
|
300
297
|
container.registerSingleton(UpgradeCliUseCase);
|
|
301
|
-
container.registerSingleton(ConflictResolutionService);
|
|
302
|
-
container.register('ConflictResolutionService', {
|
|
303
|
-
useFactory: (c) => c.resolve(ConflictResolutionService),
|
|
304
|
-
});
|
|
305
|
-
container.registerSingleton(SyncRepositoryMainUseCase);
|
|
306
|
-
container.registerSingleton(RebaseFeatureOnMainUseCase);
|
|
307
298
|
// Session repositories (per-AgentType string tokens)
|
|
308
299
|
container.register(`IAgentSessionRepository:${AgentType.ClaudeCode}`, {
|
|
309
300
|
useFactory: () => new ClaudeCodeSessionRepository(),
|
|
@@ -394,12 +385,6 @@ export async function initializeContainer() {
|
|
|
394
385
|
container.register('UpgradeCliUseCase', {
|
|
395
386
|
useFactory: (c) => c.resolve(UpgradeCliUseCase),
|
|
396
387
|
});
|
|
397
|
-
container.register('SyncRepositoryMainUseCase', {
|
|
398
|
-
useFactory: (c) => c.resolve(SyncRepositoryMainUseCase),
|
|
399
|
-
});
|
|
400
|
-
container.register('RebaseFeatureOnMainUseCase', {
|
|
401
|
-
useFactory: (c) => c.resolve(RebaseFeatureOnMainUseCase),
|
|
402
|
-
});
|
|
403
388
|
_initialized = true;
|
|
404
389
|
return container;
|
|
405
390
|
}
|
|
@@ -45,11 +45,5 @@ export declare class GitPrService implements IGitPrService {
|
|
|
45
45
|
private parseGhError;
|
|
46
46
|
private parsePrNumberFromUrl;
|
|
47
47
|
private parseDiffStat;
|
|
48
|
-
syncMain(cwd: string, baseBranch: string): Promise<void>;
|
|
49
|
-
rebaseOnMain(cwd: string, featureBranch: string, baseBranch: string): Promise<void>;
|
|
50
|
-
getConflictedFiles(cwd: string): Promise<string[]>;
|
|
51
|
-
stageFiles(cwd: string, files: string[]): Promise<void>;
|
|
52
|
-
rebaseContinue(cwd: string): Promise<void>;
|
|
53
|
-
rebaseAbort(cwd: string): Promise<void>;
|
|
54
48
|
}
|
|
55
49
|
//# sourceMappingURL=git-pr.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-pr.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/git/git-pr.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"git-pr.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/git/git-pr.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -612,14 +612,6 @@ let GitPrService = class GitPrService {
|
|
|
612
612
|
parseGitError(error) {
|
|
613
613
|
const message = error instanceof Error ? error.message : String(error);
|
|
614
614
|
const cause = error instanceof Error ? error : undefined;
|
|
615
|
-
// Rebase-specific: detect "CONFLICT" during rebase operations
|
|
616
|
-
if (message.includes('CONFLICT') && message.includes('rebase')) {
|
|
617
|
-
return new GitPrError(message, GitPrErrorCode.REBASE_CONFLICT, cause);
|
|
618
|
-
}
|
|
619
|
-
// Sync-specific: non-fast-forward or diverged branch
|
|
620
|
-
if (message.includes('non-fast-forward') || message.includes('diverged')) {
|
|
621
|
-
return new GitPrError(message, GitPrErrorCode.SYNC_FAILED, cause);
|
|
622
|
-
}
|
|
623
615
|
if (message.includes('rejected') || message.includes('conflict')) {
|
|
624
616
|
return new GitPrError(message, GitPrErrorCode.MERGE_CONFLICT, cause);
|
|
625
617
|
}
|
|
@@ -660,123 +652,6 @@ let GitPrService = class GitPrService {
|
|
|
660
652
|
commitCount,
|
|
661
653
|
};
|
|
662
654
|
}
|
|
663
|
-
// --- Rebase & Sync operations ---
|
|
664
|
-
async syncMain(cwd, baseBranch) {
|
|
665
|
-
try {
|
|
666
|
-
// Detect current branch
|
|
667
|
-
const { stdout } = await this.execFile('git', ['rev-parse', '--abbrev-ref', 'HEAD'], { cwd });
|
|
668
|
-
const currentBranch = stdout.trim();
|
|
669
|
-
if (currentBranch === baseBranch) {
|
|
670
|
-
// On the base branch — use git pull --ff-only
|
|
671
|
-
await this.execFile('git', ['pull', '--ff-only', 'origin', baseBranch], { cwd });
|
|
672
|
-
}
|
|
673
|
-
else {
|
|
674
|
-
// On a different branch — use git fetch to update the base branch ref without switching
|
|
675
|
-
await this.execFile('git', ['fetch', 'origin', `${baseBranch}:${baseBranch}`], { cwd });
|
|
676
|
-
}
|
|
677
|
-
}
|
|
678
|
-
catch (error) {
|
|
679
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
680
|
-
const cause = error instanceof Error ? error : undefined;
|
|
681
|
-
if (message.includes('non-fast-forward') || message.includes('diverged')) {
|
|
682
|
-
throw new GitPrError(`Cannot fast-forward '${baseBranch}': local branch has diverged from remote. ` +
|
|
683
|
-
`Resolve the divergence manually with 'git checkout ${baseBranch} && git reset --hard origin/${baseBranch}' ` +
|
|
684
|
-
`if you want to discard local changes on ${baseBranch}.`, GitPrErrorCode.SYNC_FAILED, cause);
|
|
685
|
-
}
|
|
686
|
-
throw new GitPrError(`Failed to sync '${baseBranch}' with remote: ${message}`, GitPrErrorCode.GIT_ERROR, cause);
|
|
687
|
-
}
|
|
688
|
-
}
|
|
689
|
-
async rebaseOnMain(cwd, featureBranch, baseBranch) {
|
|
690
|
-
// Check for dirty worktree before starting
|
|
691
|
-
const dirty = await this.hasUncommittedChanges(cwd);
|
|
692
|
-
if (dirty) {
|
|
693
|
-
throw new GitPrError(`Cannot rebase: working directory has uncommitted changes. ` +
|
|
694
|
-
`Please commit or stash your changes before rebasing.`, GitPrErrorCode.GIT_ERROR);
|
|
695
|
-
}
|
|
696
|
-
// Checkout the feature branch
|
|
697
|
-
try {
|
|
698
|
-
await this.execFile('git', ['checkout', featureBranch], { cwd });
|
|
699
|
-
}
|
|
700
|
-
catch (error) {
|
|
701
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
702
|
-
const cause = error instanceof Error ? error : undefined;
|
|
703
|
-
if (message.includes('did not match') ||
|
|
704
|
-
message.includes('not a commit') ||
|
|
705
|
-
message.includes('pathspec')) {
|
|
706
|
-
throw new GitPrError(`Branch '${featureBranch}' not found.`, GitPrErrorCode.BRANCH_NOT_FOUND, cause);
|
|
707
|
-
}
|
|
708
|
-
throw new GitPrError(`Failed to checkout '${featureBranch}': ${message}`, GitPrErrorCode.GIT_ERROR, cause);
|
|
709
|
-
}
|
|
710
|
-
// Rebase onto the base branch
|
|
711
|
-
try {
|
|
712
|
-
await this.execFile('git', ['rebase', baseBranch], { cwd });
|
|
713
|
-
}
|
|
714
|
-
catch (error) {
|
|
715
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
716
|
-
const cause = error instanceof Error ? error : undefined;
|
|
717
|
-
// Detect rebase conflict from git stderr/exit code
|
|
718
|
-
if (message.includes('CONFLICT') || message.includes('could not apply')) {
|
|
719
|
-
// Get the list of conflicted files to include in the error message
|
|
720
|
-
let conflictedFiles = [];
|
|
721
|
-
try {
|
|
722
|
-
conflictedFiles = await this.getConflictedFiles(cwd);
|
|
723
|
-
}
|
|
724
|
-
catch {
|
|
725
|
-
// Failed to get conflicted files — still report the conflict
|
|
726
|
-
}
|
|
727
|
-
const fileList = conflictedFiles.length > 0 ? ` Conflicted files: ${conflictedFiles.join(', ')}` : '';
|
|
728
|
-
throw new GitPrError(`Rebase of '${featureBranch}' onto '${baseBranch}' encountered conflicts.${fileList}`, GitPrErrorCode.REBASE_CONFLICT, cause);
|
|
729
|
-
}
|
|
730
|
-
throw new GitPrError(`Rebase of '${featureBranch}' onto '${baseBranch}' failed: ${message}`, GitPrErrorCode.GIT_ERROR, cause);
|
|
731
|
-
}
|
|
732
|
-
}
|
|
733
|
-
async getConflictedFiles(cwd) {
|
|
734
|
-
try {
|
|
735
|
-
const { stdout } = await this.execFile('git', ['diff', '--name-only', '--diff-filter=U'], {
|
|
736
|
-
cwd,
|
|
737
|
-
});
|
|
738
|
-
return stdout
|
|
739
|
-
.trim()
|
|
740
|
-
.split('\n')
|
|
741
|
-
.filter((f) => f.length > 0)
|
|
742
|
-
.map((f) => f.replace(/\\/g, '/'));
|
|
743
|
-
}
|
|
744
|
-
catch (error) {
|
|
745
|
-
throw this.parseGitError(error);
|
|
746
|
-
}
|
|
747
|
-
}
|
|
748
|
-
async stageFiles(cwd, files) {
|
|
749
|
-
try {
|
|
750
|
-
await this.execFile('git', ['add', ...files], { cwd });
|
|
751
|
-
}
|
|
752
|
-
catch (error) {
|
|
753
|
-
throw this.parseGitError(error);
|
|
754
|
-
}
|
|
755
|
-
}
|
|
756
|
-
async rebaseContinue(cwd) {
|
|
757
|
-
try {
|
|
758
|
-
await this.execFile('git', ['rebase', '--continue'], {
|
|
759
|
-
cwd,
|
|
760
|
-
env: { ...process.env, GIT_EDITOR: 'true' },
|
|
761
|
-
});
|
|
762
|
-
}
|
|
763
|
-
catch (error) {
|
|
764
|
-
const message = error instanceof Error ? error.message : String(error);
|
|
765
|
-
const cause = error instanceof Error ? error : undefined;
|
|
766
|
-
if (message.includes('CONFLICT') || message.includes('could not apply')) {
|
|
767
|
-
throw new GitPrError(`Rebase continue encountered new conflicts: ${message}`, GitPrErrorCode.REBASE_CONFLICT, cause);
|
|
768
|
-
}
|
|
769
|
-
throw this.parseGitError(error);
|
|
770
|
-
}
|
|
771
|
-
}
|
|
772
|
-
async rebaseAbort(cwd) {
|
|
773
|
-
try {
|
|
774
|
-
await this.execFile('git', ['rebase', '--abort'], { cwd });
|
|
775
|
-
}
|
|
776
|
-
catch (error) {
|
|
777
|
-
throw this.parseGitError(error);
|
|
778
|
-
}
|
|
779
|
-
}
|
|
780
655
|
};
|
|
781
656
|
GitPrService = __decorate([
|
|
782
657
|
injectable(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feature-drawer-client.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/control-center-drawer/feature-drawer-client.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"feature-drawer-client.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/control-center-drawer/feature-drawer-client.tsx"],"names":[],"mappings":"AAoCA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAI/D,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,UAAU,CAAC;IACjB,8FAA8F;IAC9F,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,wBAAgB,mBAAmB,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,wBAAwB,2CAkiB1F"}
|
package/dist/src/presentation/web/components/common/control-center-drawer/feature-drawer-client.js
CHANGED
|
@@ -3,7 +3,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
|
|
|
3
3
|
import { useState, useCallback, useEffect, useRef } from 'react';
|
|
4
4
|
import { useRouter, usePathname } from 'next/navigation';
|
|
5
5
|
import { toast } from 'sonner';
|
|
6
|
-
import { Loader2, Trash2,
|
|
6
|
+
import { Loader2, Trash2, Copy, Check, Code2, ExternalLink } from 'lucide-react';
|
|
7
7
|
import { approveFeature } from '../../../app/actions/approve-feature.js';
|
|
8
8
|
import { resumeFeature } from '../../../app/actions/resume-feature.js';
|
|
9
9
|
import { startFeature } from '../../../app/actions/start-feature.js';
|
|
@@ -14,15 +14,11 @@ import { getMergeReviewData } from '../../../app/actions/get-merge-review-data.j
|
|
|
14
14
|
import { useFeatureFlags } from '../../../hooks/feature-flags-context.js';
|
|
15
15
|
import { useSoundAction } from '../../../hooks/use-sound-action.js';
|
|
16
16
|
import { useGuardedDrawerClose } from '../../../hooks/drawer-close-guard.js';
|
|
17
|
-
import { useDeployAction } from '../../../hooks/use-deploy-action.js';
|
|
18
17
|
import { useAgentEventsContext } from '../../../hooks/agent-events-provider.js';
|
|
19
18
|
import { BaseDrawer } from '../../common/base-drawer/index.js';
|
|
20
|
-
import { DeploymentStatusBadge } from '../../common/deployment-status-badge/index.js';
|
|
21
19
|
import { DrawerTitle, DrawerDescription } from '../../ui/drawer.js';
|
|
22
20
|
import { Button } from '../../ui/button.js';
|
|
23
|
-
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from '../../ui/tooltip.js';
|
|
24
21
|
import { DeleteFeatureDialog } from '../../common/delete-feature-dialog/index.js';
|
|
25
|
-
import { ActionButton } from '../../common/action-button/index.js';
|
|
26
22
|
import { OpenActionMenu } from '../../common/open-action-menu/index.js';
|
|
27
23
|
import { FeatureDrawerTabs } from '../../common/feature-drawer-tabs/index.js';
|
|
28
24
|
import { useFeatureActions } from '../../common/feature-drawer/use-feature-actions.js';
|
|
@@ -316,9 +312,7 @@ export function FeatureDrawerClient({ view: initialView, urlTab }) {
|
|
|
316
312
|
repositoryPath: featureNode.repositoryPath,
|
|
317
313
|
branch: featureNode.branch,
|
|
318
314
|
}
|
|
319
|
-
:
|
|
320
|
-
const deployAction = useDeployAction(featureDeployTarget);
|
|
321
|
-
const isFeatureDeployActive = deployAction.status === 'Booting' || deployAction.status === 'Ready';
|
|
315
|
+
: undefined;
|
|
322
316
|
// ── Short ID copy ───────────────────────────────────────────────────
|
|
323
317
|
const COPY_FEEDBACK_DELAY = 2000;
|
|
324
318
|
const [idCopied, setIdCopied] = useState(false);
|
|
@@ -336,7 +330,7 @@ export function FeatureDrawerClient({ view: initialView, urlTab }) {
|
|
|
336
330
|
const repoName = featureNode.repositoryName ??
|
|
337
331
|
featureNode.repositoryPath.split('/').filter(Boolean).at(-1) ??
|
|
338
332
|
'';
|
|
339
|
-
header = (_jsxs(_Fragment, { children: [_jsxs("div", { "data-testid": "feature-drawer-header", children: [_jsx(DrawerTitle, { children: featureNode.name }), repoName ? (_jsxs("div", { className: "flex items-center gap-1.5 pt-0.5", children: [_jsx(Code2, { className: "text-muted-foreground size-3.5 shrink-0" }), featureNode.remoteUrl ? (_jsxs("a", { href: featureNode.remoteUrl, target: "_blank", rel: "noopener noreferrer", className: "text-muted-foreground hover:text-foreground inline-flex items-center gap-1 text-xs transition-colors", "data-testid": "feature-drawer-repo-link", children: [repoName, _jsx(ExternalLink, { className: "size-3" })] })) : (_jsx("span", { className: "text-muted-foreground text-xs", children: repoName }))] })) : null, _jsx(DrawerDescription, { className: "sr-only", children: featureNode.name })] }), featureActionsInput ? (_jsxs("div", { className: "flex items-center gap-2 pt-2", "data-testid": "feature-drawer-actions", children: [_jsx(OpenActionMenu, { actions: featureActions, repositoryPath: featureActionsInput.repositoryPath, showSpecs: !!featureActionsInput.specPath }),
|
|
333
|
+
header = (_jsxs(_Fragment, { children: [_jsxs("div", { "data-testid": "feature-drawer-header", children: [_jsx(DrawerTitle, { children: featureNode.name }), repoName ? (_jsxs("div", { className: "flex items-center gap-1.5 pt-0.5", children: [_jsx(Code2, { className: "text-muted-foreground size-3.5 shrink-0" }), featureNode.remoteUrl ? (_jsxs("a", { href: featureNode.remoteUrl, target: "_blank", rel: "noopener noreferrer", className: "text-muted-foreground hover:text-foreground inline-flex items-center gap-1 text-xs transition-colors", "data-testid": "feature-drawer-repo-link", children: [repoName, _jsx(ExternalLink, { className: "size-3" })] })) : (_jsx("span", { className: "text-muted-foreground text-xs", children: repoName }))] })) : null, _jsx(DrawerDescription, { className: "sr-only", children: featureNode.name })] }), featureActionsInput ? (_jsxs("div", { className: "flex items-center gap-2 pt-2", "data-testid": "feature-drawer-actions", children: [_jsx(OpenActionMenu, { actions: featureActions, repositoryPath: featureActionsInput.repositoryPath, showSpecs: !!featureActionsInput.specPath }), _jsxs("div", { className: "ml-auto flex items-center gap-1.5", children: [_jsx("code", { className: "bg-muted text-muted-foreground rounded px-1.5 py-0.5 font-mono text-xs", children: shortId }), _jsx("button", { type: "button", onClick: handleCopyId, className: "text-muted-foreground hover:text-foreground inline-flex items-center rounded p-0.5 transition-colors", "aria-label": "Copy feature ID", "data-testid": "feature-drawer-copy-id", children: idCopied ? (_jsx(Check, { className: "size-3.5 text-green-600" })) : (_jsx(Copy, { className: "size-3.5" })) })] }), featureNode.featureId ? (_jsxs(_Fragment, { children: [_jsx(Button, { variant: "ghost", size: "icon-sm", "aria-label": "Delete feature", disabled: isDeleting, className: "text-muted-foreground hover:text-destructive", "data-testid": "feature-drawer-delete", onClick: () => setDeleteDialogOpen(true), children: isDeleting ? (_jsx(Loader2, { className: "size-4 animate-spin" })) : (_jsx(Trash2, { className: "size-4" })) }), _jsx(DeleteFeatureDialog, { open: deleteDialogOpen, onOpenChange: setDeleteDialogOpen, onConfirm: (cleanup, cascadeDelete) => handleDelete(featureNode.featureId, cleanup, cascadeDelete), isDeleting: isDeleting, featureName: featureNode.name, featureId: featureNode.featureId, hasChildren: featureNode.hasChildren })] })) : null] })) : null] }));
|
|
340
334
|
}
|
|
341
335
|
// ── Body ──────────────────────────────────────────────────────────────
|
|
342
336
|
let body = null;
|
|
@@ -348,5 +342,5 @@ export function FeatureDrawerClient({ view: initialView, urlTab }) {
|
|
|
348
342
|
};
|
|
349
343
|
body = (_jsx(FeatureDrawerTabs, { featureNode: enrichedNode, featureId: featureNode.featureId, initialTab: view.initialTab, urlTab: urlTab, sseEvents: events, prdData: prdData, prdSelections: prdSelections, onPrdSelect: (qId, oId) => setPrdSelections((prev) => ({ ...prev, [qId]: oId })), onPrdApprove: handlePrdApprove, onPrdReject: handlePrdReject, isPrdLoading: isLoadingPrd, techData: techData, onTechApprove: handleTechApprove, onTechReject: handleTechReject, isTechLoading: isLoadingTech, productData: isLoadingTechProduct ? null : techProductData, mergeData: mergeData, onMergeApprove: handleMergeApprove, onMergeReject: handleMergeReject, isMergeLoading: isLoadingMerge, isRejecting: isRejecting, chatInput: chatInput, onChatInputChange: setChatInput }));
|
|
350
344
|
}
|
|
351
|
-
return (_jsx(BaseDrawer, { open: isOpen, onClose: attemptClose, size: "md", modal: false, header: header, "data-testid": view.type === 'feature' ? 'feature-drawer' : 'repository-drawer', children: body }));
|
|
345
|
+
return (_jsx(BaseDrawer, { open: isOpen, onClose: attemptClose, size: "md", modal: false, header: header, deployTarget: featureFlags.envDeploy ? featureDeployTarget : undefined, "data-testid": view.type === 'feature' ? 'feature-drawer' : 'repository-drawer', children: body }));
|
|
352
346
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-deploy-action.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/hooks/use-deploy-action.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAM5E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,SAAS,GAAG,YAAY,CAAC;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAOD,wBAAgB,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"use-deploy-action.d.ts","sourceRoot":"","sources":["../../../../../src/presentation/web/hooks/use-deploy-action.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AAM5E,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,SAAS,GAAG,YAAY,CAAC;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;IAC/B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAOD,wBAAgB,eAAe,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,GAAG,iBAAiB,CA8MlF"}
|
|
@@ -38,6 +38,38 @@ export function useDeployAction(input) {
|
|
|
38
38
|
clearInterval(pollIntervalRef.current);
|
|
39
39
|
};
|
|
40
40
|
}, []);
|
|
41
|
+
// Fetch initial deployment status on mount (or when input changes) so we
|
|
42
|
+
// pick up any already-running dev server that was started before this
|
|
43
|
+
// component mounted. Without this, closing and reopening the drawer would
|
|
44
|
+
// lose awareness of the running deployment.
|
|
45
|
+
const pollAfterInitialFetchRef = useRef(null);
|
|
46
|
+
const initialFetchIdRef = useRef(null);
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
const targetId = input?.targetId ?? null;
|
|
49
|
+
// Only fetch once per targetId to avoid redundant calls
|
|
50
|
+
if (targetId === initialFetchIdRef.current)
|
|
51
|
+
return;
|
|
52
|
+
initialFetchIdRef.current = targetId;
|
|
53
|
+
if (!targetId)
|
|
54
|
+
return;
|
|
55
|
+
let cancelled = false;
|
|
56
|
+
getDeploymentStatus(targetId).then((result) => {
|
|
57
|
+
if (cancelled || !mountedRef.current)
|
|
58
|
+
return;
|
|
59
|
+
if (result && result.state !== 'Stopped') {
|
|
60
|
+
log.info(`initial status fetch: state=${result.state}, url=${result.url}`);
|
|
61
|
+
setStatus(result.state);
|
|
62
|
+
setUrl(result.url);
|
|
63
|
+
// Start polling to keep the state fresh
|
|
64
|
+
// (startPolling is defined below, but the effect runs after render
|
|
65
|
+
// so it will be available via the ref-based closure)
|
|
66
|
+
pollAfterInitialFetchRef.current?.(targetId);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
return () => {
|
|
70
|
+
cancelled = true;
|
|
71
|
+
};
|
|
72
|
+
}, [input?.targetId]);
|
|
41
73
|
const stopPolling = useCallback(() => {
|
|
42
74
|
if (pollIntervalRef.current) {
|
|
43
75
|
log.debug('stopping polling');
|
|
@@ -71,6 +103,8 @@ export function useDeployAction(input) {
|
|
|
71
103
|
}
|
|
72
104
|
}, POLL_INTERVAL);
|
|
73
105
|
}, [stopPolling]);
|
|
106
|
+
// Keep ref in sync so the initial-fetch effect can start polling
|
|
107
|
+
pollAfterInitialFetchRef.current = startPolling;
|
|
74
108
|
const handleDeploy = useCallback(async () => {
|
|
75
109
|
if (!input) {
|
|
76
110
|
log.warn('deploy() called but input is null — no-op');
|