@shepai/cli 1.85.0-pr167.980b2b5 → 1.85.0-pr255.309aeca

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 (162) hide show
  1. package/dist/packages/core/src/application/ports/output/services/worktree-service.interface.d.ts +1 -2
  2. package/dist/packages/core/src/application/ports/output/services/worktree-service.interface.d.ts.map +1 -1
  3. package/dist/packages/core/src/application/use-cases/features/delete-feature.use-case.d.ts +2 -7
  4. package/dist/packages/core/src/application/use-cases/features/delete-feature.use-case.d.ts.map +1 -1
  5. package/dist/packages/core/src/application/use-cases/features/delete-feature.use-case.js +15 -29
  6. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  7. package/dist/packages/core/src/infrastructure/di/container.js +0 -5
  8. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
  9. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +0 -3
  10. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts +0 -2
  11. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.d.ts.map +1 -1
  12. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge/merge.node.js +0 -3
  13. package/dist/packages/core/src/infrastructure/services/git/worktree.service.d.ts +1 -1
  14. package/dist/packages/core/src/infrastructure/services/git/worktree.service.d.ts.map +1 -1
  15. package/dist/packages/core/src/infrastructure/services/git/worktree.service.js +2 -6
  16. package/dist/src/presentation/cli/commands/feat/del.command.d.ts +1 -3
  17. package/dist/src/presentation/cli/commands/feat/del.command.d.ts.map +1 -1
  18. package/dist/src/presentation/cli/commands/feat/del.command.js +2 -19
  19. package/dist/src/presentation/web/app/actions/delete-feature.d.ts +1 -1
  20. package/dist/src/presentation/web/app/actions/delete-feature.d.ts.map +1 -1
  21. package/dist/src/presentation/web/app/actions/delete-feature.js +2 -4
  22. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.d.ts.map +1 -1
  23. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.js +3 -2
  24. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts +2 -0
  25. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.d.ts.map +1 -1
  26. package/dist/src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.js +18 -0
  27. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts +1 -1
  28. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.d.ts.map +1 -1
  29. package/dist/src/presentation/web/components/features/control-center/use-control-center-state.js +2 -2
  30. package/dist/tsconfig.build.tsbuildinfo +1 -1
  31. package/package.json +1 -1
  32. package/web/.next/BUILD_ID +1 -1
  33. package/web/.next/build-manifest.json +2 -2
  34. package/web/.next/fallback-build-manifest.json +2 -2
  35. package/web/.next/prerender-manifest.json +3 -3
  36. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +18 -18
  37. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  38. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  39. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +21 -21
  40. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  41. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  42. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  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)/create/page/server-reference-manifest.json +18 -18
  46. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  47. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  48. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +21 -21
  49. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  50. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  51. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +14 -14
  52. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  53. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  54. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  55. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  56. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  57. package/web/.next/server/app/_global-error.html +2 -2
  58. package/web/.next/server/app/_global-error.rsc +1 -1
  59. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  60. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  61. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  62. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  63. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  64. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  65. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  66. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  67. package/web/.next/server/app/settings/page/server-reference-manifest.json +5 -5
  68. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  69. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  70. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  71. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  72. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  73. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  74. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  75. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  76. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  77. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  78. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  79. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  80. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js +1 -1
  81. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js.map +1 -1
  82. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js +1 -1
  83. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js.map +1 -1
  84. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js +1 -1
  85. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js.map +1 -1
  86. package/web/.next/server/chunks/ssr/[root-of-the-server]__17143953._.js +1 -1
  87. package/web/.next/server/chunks/ssr/[root-of-the-server]__17143953._.js.map +1 -1
  88. package/web/.next/server/chunks/ssr/[root-of-the-server]__4be9a9bb._.js +1 -1
  89. package/web/.next/server/chunks/ssr/[root-of-the-server]__4be9a9bb._.js.map +1 -1
  90. package/web/.next/server/chunks/ssr/[root-of-the-server]__5d87af2e._.js +1 -1
  91. package/web/.next/server/chunks/ssr/[root-of-the-server]__9de266fa._.js +1 -1
  92. package/web/.next/server/chunks/ssr/[root-of-the-server]__9de266fa._.js.map +1 -1
  93. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  94. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  95. package/web/.next/server/chunks/ssr/[root-of-the-server]__b3a4cef4._.js +1 -1
  96. package/web/.next/server/chunks/ssr/[root-of-the-server]__b3a4cef4._.js.map +1 -1
  97. package/web/.next/server/chunks/ssr/[root-of-the-server]__f0d8d054._.js +2 -2
  98. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js +1 -1
  99. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js.map +1 -1
  100. package/web/.next/server/chunks/ssr/_1e3cf73b._.js +1 -1
  101. package/web/.next/server/chunks/ssr/_1e3cf73b._.js.map +1 -1
  102. package/web/.next/server/chunks/ssr/_63868199._.js +1 -1
  103. package/web/.next/server/chunks/ssr/_63868199._.js.map +1 -1
  104. package/web/.next/server/chunks/ssr/{_0b848752._.js → _6a3e80fe._.js} +2 -2
  105. package/web/.next/server/chunks/ssr/{_0b848752._.js.map → _6a3e80fe._.js.map} +1 -1
  106. package/web/.next/server/chunks/ssr/_8dacd1e7._.js +1 -1
  107. package/web/.next/server/chunks/ssr/_8dacd1e7._.js.map +1 -1
  108. package/web/.next/server/chunks/ssr/_d42594dd._.js +1 -1
  109. package/web/.next/server/chunks/ssr/_d42594dd._.js.map +1 -1
  110. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  111. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  112. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js +1 -1
  113. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js.map +1 -1
  114. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +1 -1
  115. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -1
  116. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +1 -1
  117. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -1
  118. package/web/.next/server/chunks/ssr/src_presentation_web_c4348b8a._.js +2 -2
  119. package/web/.next/server/chunks/ssr/src_presentation_web_c4348b8a._.js.map +1 -1
  120. package/web/.next/server/chunks/ssr/src_presentation_web_components_80b5b4bc._.js +1 -1
  121. package/web/.next/server/chunks/ssr/src_presentation_web_components_80b5b4bc._.js.map +1 -1
  122. package/web/.next/server/chunks/ssr/src_presentation_web_components_82416b8f._.js +1 -1
  123. package/web/.next/server/chunks/ssr/src_presentation_web_components_82416b8f._.js.map +1 -1
  124. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  125. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  126. package/web/.next/server/chunks/ssr/src_presentation_web_e4510d10._.js +2 -2
  127. package/web/.next/server/chunks/ssr/src_presentation_web_e4510d10._.js.map +1 -1
  128. package/web/.next/server/pages/500.html +2 -2
  129. package/web/.next/server/server-reference-manifest.js +1 -1
  130. package/web/.next/server/server-reference-manifest.json +28 -28
  131. package/web/.next/static/chunks/{39d023c65b97d443.js → 04f32acb21eb68d4.js} +2 -2
  132. package/web/.next/static/chunks/4e345cd306983b3b.css +2 -0
  133. package/web/.next/static/chunks/{54b44bf36afd3700.js → 57b924d0b3b9c489.js} +1 -1
  134. package/web/.next/static/chunks/{d8b5b0720f70666e.js → 5bfb79674bf54748.js} +1 -1
  135. package/web/.next/static/chunks/{b0092a380441d7ea.js → c2982ade306aaa51.js} +1 -1
  136. package/web/.next/static/chunks/d3009ed50f53155d.js +1 -0
  137. package/web/.next/static/chunks/{38fdde24a1515d32.js → d969cf6aa5b11e6b.js} +1 -1
  138. package/web/.next/static/chunks/{990156878e45adbf.js → e27f6f9f3d0440bf.js} +1 -1
  139. package/web/.next/static/chunks/{3ac3cd1ace6df307.js → e7abd10a97a50c83.js} +1 -1
  140. package/web/.next/static/chunks/{809ff17e8e6716e2.js → ee5da7bc9fb27a06.js} +1 -1
  141. package/web/.next/static/chunks/f58b86f4334aa173.js +1 -0
  142. package/dist/packages/core/src/application/use-cases/features/cleanup-feature-worktree.use-case.d.ts +0 -22
  143. package/dist/packages/core/src/application/use-cases/features/cleanup-feature-worktree.use-case.d.ts.map +0 -1
  144. package/dist/packages/core/src/application/use-cases/features/cleanup-feature-worktree.use-case.js +0 -76
  145. package/dist/src/presentation/web/components/common/delete-feature-dialog/delete-feature-dialog-config.d.ts +0 -9
  146. package/dist/src/presentation/web/components/common/delete-feature-dialog/delete-feature-dialog-config.d.ts.map +0 -1
  147. package/dist/src/presentation/web/components/common/delete-feature-dialog/delete-feature-dialog-config.js +0 -1
  148. package/dist/src/presentation/web/components/common/delete-feature-dialog/delete-feature-dialog.d.ts +0 -3
  149. package/dist/src/presentation/web/components/common/delete-feature-dialog/delete-feature-dialog.d.ts.map +0 -1
  150. package/dist/src/presentation/web/components/common/delete-feature-dialog/delete-feature-dialog.js +0 -16
  151. package/dist/src/presentation/web/components/common/delete-feature-dialog/delete-feature-dialog.stories.d.ts +0 -8
  152. package/dist/src/presentation/web/components/common/delete-feature-dialog/delete-feature-dialog.stories.d.ts.map +0 -1
  153. package/dist/src/presentation/web/components/common/delete-feature-dialog/delete-feature-dialog.stories.js +0 -25
  154. package/dist/src/presentation/web/components/common/delete-feature-dialog/index.d.ts +0 -3
  155. package/dist/src/presentation/web/components/common/delete-feature-dialog/index.d.ts.map +0 -1
  156. package/dist/src/presentation/web/components/common/delete-feature-dialog/index.js +0 -1
  157. package/web/.next/static/chunks/50f89c3112f6dd23.css +0 -2
  158. package/web/.next/static/chunks/9940c6562aedb301.js +0 -1
  159. package/web/.next/static/chunks/ce4baaa5b4d40f6c.js +0 -1
  160. /package/web/.next/static/{j0veE9VyiEGY-OKWxJdSw → Lt1_K8r8QY_Bg48eMzq7z}/_buildManifest.js +0 -0
  161. /package/web/.next/static/{j0veE9VyiEGY-OKWxJdSw → Lt1_K8r8QY_Bg48eMzq7z}/_clientMiddlewareManifest.json +0 -0
  162. /package/web/.next/static/{j0veE9VyiEGY-OKWxJdSw → Lt1_K8r8QY_Bg48eMzq7z}/_ssgManifest.js +0 -0
@@ -54,10 +54,9 @@ export interface IWorktreeService {
54
54
  * Remove an existing worktree.
55
55
  *
56
56
  * @param worktreePath - Path to the worktree to remove
57
- * @param force - When true, passes --force to git worktree remove (handles dirty worktrees)
58
57
  * @throws WorktreeError if worktree not found or has uncommitted changes
59
58
  */
60
- remove(worktreePath: string, force?: boolean): Promise<void>;
59
+ remove(worktreePath: string): Promise<void>;
61
60
  /**
62
61
  * List all worktrees in a repository.
63
62
  *
@@ -1 +1 @@
1
- {"version":3,"file":"worktree-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/worktree-service.interface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,oBAAY,iBAAiB;IAC3B,cAAc,mBAAmB;IACjC,aAAa,kBAAkB;IAC/B,SAAS,cAAc;IACvB,cAAc,mBAAmB;IACjC,SAAS,cAAc;CACxB;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;aAGpB,IAAI,EAAE,iBAAiB;aACvB,KAAK,CAAC,EAAE,KAAK;gBAF7B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,iBAAiB,EACvB,KAAK,CAAC,EAAE,KAAK,YAAA;CAKhC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;OASG;IACH,MAAM,CACJ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB;;;;;;OAMG;IACH,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7D;;;;;OAKG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAEhD;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3D;;;;;;OAMG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjE;;;;;;OAMG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvE;;;;;;OAMG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAE1D;;;;;;;OAOG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD"}
1
+ {"version":3,"file":"worktree-service.interface.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/application/ports/output/services/worktree-service.interface.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,MAAM,EAAE,MAAM,CAAC;IACf,wCAAwC;IACxC,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,oBAAY,iBAAiB;IAC3B,cAAc,mBAAmB;IACjC,aAAa,kBAAkB;IAC/B,SAAS,cAAc;IACvB,cAAc,mBAAmB;IACjC,SAAS,cAAc;CACxB;AAED;;GAEG;AACH,qBAAa,aAAc,SAAQ,KAAK;aAGpB,IAAI,EAAE,iBAAiB;aACvB,KAAK,CAAC,EAAE,KAAK;gBAF7B,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,iBAAiB,EACvB,KAAK,CAAC,EAAE,KAAK,YAAA;CAKhC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;OASG;IACH,MAAM,CACJ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC,CAAC;IAEzB;;;;;OAKG;IACH,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5C;;;;;OAKG;IACH,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;IAEhD;;;;;;OAMG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAE3D;;;;;;OAMG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjE;;;;;;OAMG;IACH,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEvE;;;;;;OAMG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAE1D;;;;;;;OAOG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD"}
@@ -18,18 +18,13 @@ import type { IFeatureRepository } from '../../ports/output/repositories/feature
18
18
  import type { IWorktreeService } from '../../ports/output/services/worktree-service.interface.js';
19
19
  import type { IFeatureAgentProcessService } from '../../ports/output/agents/feature-agent-process.interface.js';
20
20
  import type { IAgentRunRepository } from '../../ports/output/agents/agent-run-repository.interface.js';
21
- import type { CleanupFeatureWorktreeUseCase } from './cleanup-feature-worktree.use-case.js';
22
- export interface DeleteFeatureOptions {
23
- cleanup?: boolean;
24
- }
25
21
  export declare class DeleteFeatureUseCase {
26
22
  private readonly featureRepo;
27
23
  private readonly worktreeService;
28
24
  private readonly processService;
29
25
  private readonly runRepo;
30
- private readonly cleanupUseCase;
31
- constructor(featureRepo: IFeatureRepository, worktreeService: IWorktreeService, processService: IFeatureAgentProcessService, runRepo: IAgentRunRepository, cleanupUseCase: Pick<CleanupFeatureWorktreeUseCase, 'execute'>);
32
- execute(featureId: string, options?: DeleteFeatureOptions): Promise<Feature>;
26
+ constructor(featureRepo: IFeatureRepository, worktreeService: IWorktreeService, processService: IFeatureAgentProcessService, runRepo: IAgentRunRepository);
27
+ execute(featureId: string): Promise<Feature>;
33
28
  private cascadeDeleteChildren;
34
29
  private deleteSingleFeature;
35
30
  }
@@ -1 +1 @@
1
- {"version":3,"file":"delete-feature.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/delete-feature.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAClG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8DAA8D,CAAC;AAChH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6DAA6D,CAAC;AACvG,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,wCAAwC,CAAC;AAE5F,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBACa,oBAAoB;IAEC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC9B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAE5D,OAAO,CAAC,QAAQ,CAAC,cAAc;IACA,OAAO,CAAC,QAAQ,CAAC,OAAO;IAEvD,OAAO,CAAC,QAAQ,CAAC,cAAc;gBANgB,WAAW,EAAE,kBAAkB,EACjC,eAAe,EAAE,gBAAgB,EAE7D,cAAc,EAAE,2BAA2B,EACZ,OAAO,EAAE,mBAAmB,EAE3D,cAAc,EAAE,IAAI,CAAC,6BAA6B,EAAE,SAAS,CAAC;IAG3E,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;YAkBpE,qBAAqB;YAYrB,mBAAmB;CA0ClC"}
1
+ {"version":3,"file":"delete-feature.use-case.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/application/use-cases/features/delete-feature.use-case.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AAEnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iEAAiE,CAAC;AAC1G,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2DAA2D,CAAC;AAClG,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8DAA8D,CAAC;AAChH,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6DAA6D,CAAC;AAEvG,qBACa,oBAAoB;IAEC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC9B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAE5D,OAAO,CAAC,QAAQ,CAAC,cAAc;IACA,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAJR,WAAW,EAAE,kBAAkB,EACjC,eAAe,EAAE,gBAAgB,EAE7D,cAAc,EAAE,2BAA2B,EACZ,OAAO,EAAE,mBAAmB;IAGxE,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YAkBpC,qBAAqB;YASrB,mBAAmB;CA8BlC"}
@@ -32,15 +32,13 @@ let DeleteFeatureUseCase = class DeleteFeatureUseCase {
32
32
  worktreeService;
33
33
  processService;
34
34
  runRepo;
35
- cleanupUseCase;
36
- constructor(featureRepo, worktreeService, processService, runRepo, cleanupUseCase) {
35
+ constructor(featureRepo, worktreeService, processService, runRepo) {
37
36
  this.featureRepo = featureRepo;
38
37
  this.worktreeService = worktreeService;
39
38
  this.processService = processService;
40
39
  this.runRepo = runRepo;
41
- this.cleanupUseCase = cleanupUseCase;
42
40
  }
43
- async execute(featureId, options) {
41
+ async execute(featureId) {
44
42
  // 1. Find feature (exact or prefix match)
45
43
  const feature = (await this.featureRepo.findById(featureId)) ??
46
44
  (await this.featureRepo.findByIdPrefix(featureId));
@@ -48,20 +46,20 @@ let DeleteFeatureUseCase = class DeleteFeatureUseCase {
48
46
  throw new Error(`Feature not found: "${featureId}"`);
49
47
  }
50
48
  // 2. Cascade delete all sub-features (depth-first)
51
- await this.cascadeDeleteChildren(feature.id, options);
49
+ await this.cascadeDeleteChildren(feature.id);
52
50
  // 3. Delete the feature itself
53
- await this.deleteSingleFeature(feature, options);
51
+ await this.deleteSingleFeature(feature);
54
52
  return feature;
55
53
  }
56
- async cascadeDeleteChildren(parentId, options) {
54
+ async cascadeDeleteChildren(parentId) {
57
55
  const children = await this.featureRepo.findByParentId(parentId);
58
56
  for (const child of children) {
59
57
  // Recurse into grandchildren first (depth-first)
60
- await this.cascadeDeleteChildren(child.id, options);
61
- await this.deleteSingleFeature(child, options);
58
+ await this.cascadeDeleteChildren(child.id);
59
+ await this.deleteSingleFeature(child);
62
60
  }
63
61
  }
64
- async deleteSingleFeature(feature, options) {
62
+ async deleteSingleFeature(feature) {
65
63
  // Cancel running/pending agent run if present
66
64
  if (feature.agentRunId) {
67
65
  const run = await this.runRepo.findById(feature.agentRunId);
@@ -77,24 +75,13 @@ let DeleteFeatureUseCase = class DeleteFeatureUseCase {
77
75
  await this.runRepo.updateStatus(run.id, AgentRunStatus.cancelled);
78
76
  }
79
77
  }
80
- // 4. Cleanup: either full cleanup (worktree + branches) or just worktree removal
81
- const cleanup = options?.cleanup !== false;
82
- if (cleanup) {
83
- try {
84
- await this.cleanupUseCase.execute(feature.id);
85
- }
86
- catch {
87
- // Cleanup is best-effort — don't block deletion
88
- }
78
+ // Remove worktree (ignore errors if already removed)
79
+ const worktreePath = this.worktreeService.getWorktreePath(feature.repositoryPath, feature.branch);
80
+ try {
81
+ await this.worktreeService.remove(worktreePath);
89
82
  }
90
- else {
91
- const worktreePath = this.worktreeService.getWorktreePath(feature.repositoryPath, feature.branch);
92
- try {
93
- await this.worktreeService.remove(worktreePath);
94
- }
95
- catch {
96
- // Worktree might already be removed - that's fine
97
- }
83
+ catch {
84
+ // Worktree might already be removed - that's fine
98
85
  }
99
86
  // Delete feature record
100
87
  await this.featureRepo.delete(feature.id);
@@ -106,7 +93,6 @@ DeleteFeatureUseCase = __decorate([
106
93
  __param(1, inject('IWorktreeService')),
107
94
  __param(2, inject('IFeatureAgentProcessService')),
108
95
  __param(3, inject('IAgentRunRepository')),
109
- __param(4, inject('CleanupFeatureWorktreeUseCase')),
110
- __metadata("design:paramtypes", [Object, Object, Object, Object, Object])
96
+ __metadata("design:paramtypes", [Object, Object, Object, Object])
111
97
  ], DeleteFeatureUseCase);
112
98
  export { DeleteFeatureUseCase };
@@ -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;AAmHrC;;;;;;GAMG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,SAAS,CAAC,CAqRrE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,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;AAkHrC;;;;;;GAMG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,OAAO,SAAS,CAAC,CAiRrE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAED;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -77,7 +77,6 @@ import { ListRepositoriesUseCase } from '../../application/use-cases/repositorie
77
77
  import { DeleteRepositoryUseCase } from '../../application/use-cases/repositories/delete-repository.use-case.js';
78
78
  import { CheckAndUnblockFeaturesUseCase } from '../../application/use-cases/features/check-and-unblock-features.use-case.js';
79
79
  import { UpdateFeatureLifecycleUseCase } from '../../application/use-cases/features/update/update-feature-lifecycle.use-case.js';
80
- import { CleanupFeatureWorktreeUseCase } from '../../application/use-cases/features/cleanup-feature-worktree.use-case.js';
81
80
  // Session listing
82
81
  import { ClaudeCodeSessionRepository } from '../services/agents/sessions/claude-code-session.repository.js';
83
82
  import { StubSessionRepository } from '../services/agents/sessions/stub-session.repository.js';
@@ -260,7 +259,6 @@ export async function initializeContainer() {
260
259
  // because the latter injects the former via class token.
261
260
  container.registerSingleton(CheckAndUnblockFeaturesUseCase);
262
261
  container.registerSingleton(UpdateFeatureLifecycleUseCase);
263
- container.registerSingleton(CleanupFeatureWorktreeUseCase);
264
262
  // Session repositories (per-AgentType string tokens)
265
263
  container.register(`IAgentSessionRepository:${AgentType.ClaudeCode}`, {
266
264
  useFactory: () => new ClaudeCodeSessionRepository(),
@@ -336,9 +334,6 @@ export async function initializeContainer() {
336
334
  container.register('UpdateSettingsUseCase', {
337
335
  useFactory: (c) => c.resolve(UpdateSettingsUseCase),
338
336
  });
339
- container.register('CleanupFeatureWorktreeUseCase', {
340
- useFactory: (c) => c.resolve(CleanupFeatureWorktreeUseCase),
341
- });
342
337
  _initialized = true;
343
338
  return container;
344
339
  }
@@ -1 +1 @@
1
- {"version":3,"file":"feature-agent-worker.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,kBAAkB,CAAC;AAe1B,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAW9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAiE1D;AAgCD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAoP/D"}
1
+ {"version":3,"file":"feature-agent-worker.d.ts","sourceRoot":"","sources":["../../../../../../../../packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG;AAEH,OAAO,kBAAkB,CAAC;AAe1B,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAU9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAiE1D;AAgCD;;;GAGG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAkP/D"}
@@ -24,7 +24,6 @@ import { setPhaseTimingContext, recordLifecycleEvent } from './phase-timing-cont
24
24
  import { setLifecycleContext } from './lifecycle-context.js';
25
25
  import { setLogPrefix, getLogPrefix } from './log-context.js';
26
26
  import { UpdateFeatureLifecycleUseCase } from '../../../../application/use-cases/features/update/update-feature-lifecycle.use-case.js';
27
- import { CleanupFeatureWorktreeUseCase } from '../../../../application/use-cases/features/cleanup-feature-worktree.use-case.js';
28
27
  /**
29
28
  * Parse CLI arguments into a WorkerArgs object.
30
29
  * Throws if any required argument is missing.
@@ -168,7 +167,6 @@ export async function runWorker(args) {
168
167
  // Resolve merge node dependencies
169
168
  const gitPrService = container.resolve('IGitPrService');
170
169
  const featureRepository = container.resolve('IFeatureRepository');
171
- const cleanupFeatureWorktreeUseCase = container.resolve(CleanupFeatureWorktreeUseCase);
172
170
  const graphDeps = {
173
171
  executor,
174
172
  mergeNodeDeps: {
@@ -178,7 +176,6 @@ export async function runWorker(args) {
178
176
  verifyMerge: (cwd, featureBranch, baseBranch) => gitPrService.verifyMerge(cwd, featureBranch, baseBranch),
179
177
  featureRepository,
180
178
  gitPrService,
181
- cleanupFeatureWorktreeUseCase,
182
179
  },
183
180
  };
184
181
  // Use threadId for checkpoint path so resume runs share the same checkpoint DB.
@@ -16,7 +16,6 @@ import type { IAgentExecutor } from '../../../../../../application/ports/output/
16
16
  import type { FeatureAgentState } from '../../state.js';
17
17
  import type { IFeatureRepository } from '../../../../../../application/ports/output/repositories/feature-repository.interface.js';
18
18
  import type { DiffSummary, IGitPrService } from '../../../../../../application/ports/output/services/git-pr-service.interface.js';
19
- import type { CleanupFeatureWorktreeUseCase } from '../../../../../../application/use-cases/features/cleanup-feature-worktree.use-case.js';
20
19
  export interface MergeNodeDeps {
21
20
  executor: IAgentExecutor;
22
21
  getDiffSummary: (cwd: string, baseBranch: string) => Promise<DiffSummary>;
@@ -29,7 +28,6 @@ export interface MergeNodeDeps {
29
28
  */
30
29
  verifyMerge: (cwd: string, featureBranch: string, baseBranch: string) => Promise<boolean>;
31
30
  gitPrService: IGitPrService;
32
- cleanupFeatureWorktreeUseCase: Pick<CleanupFeatureWorktreeUseCase, 'execute'>;
33
31
  }
34
32
  /**
35
33
  * Factory that creates the merge node function.
@@ -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;AAkBzE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,uEAAuE,CAAC;AAE3H,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,cAAc,CAAC;IACzB,cAAc,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAC1E,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7C,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACnD,iBAAiB,EAAE,IAAI,CAAC,kBAAkB,EAAE,UAAU,GAAG,QAAQ,CAAC,CAAC;IACnE;;;OAGG;IACH,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1F,YAAY,EAAE,aAAa,CAAC;IAC5B,6BAA6B,EAAE,IAAI,CAAC,6BAA6B,EAAE,SAAS,CAAC,CAAC;CAC/E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,IAGnC,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CA0Q7E"}
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;AAmBzE,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;;;OAGG;IACH,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1F,YAAY,EAAE,aAAa,CAAC;CAC7B;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,IAGnC,OAAO,iBAAiB,KAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAsQ7E"}
@@ -231,9 +231,6 @@ export function createMergeNode(deps) {
231
231
  updatedAt: new Date(),
232
232
  });
233
233
  messages.push(`[merge] Feature lifecycle → ${newLifecycle}`);
234
- if (merged) {
235
- await deps.cleanupFeatureWorktreeUseCase.execute(feature.id);
236
- }
237
234
  }
238
235
  const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
239
236
  await recordPhaseEnd(mergeTimingId, Date.now() - startTime);
@@ -18,7 +18,7 @@ export declare class WorktreeService implements IWorktreeService {
18
18
  private readonly execFile;
19
19
  constructor(execFile: ExecFunction);
20
20
  create(repoPath: string, branch: string, worktreePath: string, startPoint?: string): Promise<WorktreeInfo>;
21
- remove(worktreePath: string, force?: boolean): Promise<void>;
21
+ remove(worktreePath: string): Promise<void>;
22
22
  list(repoPath: string): Promise<WorktreeInfo[]>;
23
23
  exists(repoPath: string, branch: string): Promise<boolean>;
24
24
  branchExists(repoPath: string, branch: string): Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"worktree.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/git/worktree.service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACb,MAAM,0EAA0E,CAAC;AAOlF;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CACzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,MAAM,KACb,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEjD,qBACa,eAAgB,YAAW,gBAAgB;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,YAAY;IAErE,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC;IAqBlB,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAW5D,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAO/C,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK1D,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWhE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWtE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC1D,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAMzD,OAAO,CAAC,mBAAmB;IA2B3B,OAAO,CAAC,aAAa;IAgCrB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,qBAAqB;CAU9B"}
1
+ {"version":3,"file":"worktree.service.d.ts","sourceRoot":"","sources":["../../../../../../../packages/core/src/infrastructure/services/git/worktree.service.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,KAAK,EACV,gBAAgB,EAChB,YAAY,EACb,MAAM,0EAA0E,CAAC;AAOlF;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,CACzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,MAAM,KACb,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEjD,qBACa,eAAgB,YAAW,gBAAgB;IAClB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,YAAY;IAErE,MAAM,CACV,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,YAAY,CAAC;IAqBlB,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3C,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAO/C,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK1D,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWhE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWtE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC1D,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IAMzD,OAAO,CAAC,mBAAmB;IA2B3B,OAAO,CAAC,aAAa;IAgCrB,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,qBAAqB;CAU9B"}
@@ -48,13 +48,9 @@ let WorktreeService = class WorktreeService {
48
48
  }
49
49
  return created;
50
50
  }
51
- async remove(worktreePath, force) {
51
+ async remove(worktreePath) {
52
52
  try {
53
- const args = ['worktree', 'remove'];
54
- if (force)
55
- args.push('--force');
56
- args.push(worktreePath);
57
- await this.execFile('git', args, {});
53
+ await this.execFile('git', ['worktree', 'remove', worktreePath], {});
58
54
  }
59
55
  catch (error) {
60
56
  throw this.parseGitError(error);
@@ -2,14 +2,12 @@
2
2
  * Feature Delete Command
3
3
  *
4
4
  * Deletes a feature, its worktree, and cancels any running agent.
5
- * Optionally cleans up worktree and branches (local + remote).
6
5
  *
7
- * Usage: shep feat del <id> [--force] [--no-cleanup]
6
+ * Usage: shep feat del <id> [--force]
8
7
  *
9
8
  * @example
10
9
  * $ shep feat del feat-123
11
10
  * $ shep feat del feat-123 --force
12
- * $ shep feat del feat-123 --force --no-cleanup
13
11
  */
14
12
  import { Command } from 'commander';
15
13
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"del.command.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/feat/del.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAmD1C"}
1
+ {"version":3,"file":"del.command.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/cli/commands/feat/del.command.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAoC1C"}
@@ -2,14 +2,12 @@
2
2
  * Feature Delete Command
3
3
  *
4
4
  * Deletes a feature, its worktree, and cancels any running agent.
5
- * Optionally cleans up worktree and branches (local + remote).
6
5
  *
7
- * Usage: shep feat del <id> [--force] [--no-cleanup]
6
+ * Usage: shep feat del <id> [--force]
8
7
  *
9
8
  * @example
10
9
  * $ shep feat del feat-123
11
10
  * $ shep feat del feat-123 --force
12
- * $ shep feat del feat-123 --force --no-cleanup
13
11
  */
14
12
  import { Command } from 'commander';
15
13
  import { container } from '../../../../../packages/core/src/infrastructure/di/container.js';
@@ -25,7 +23,6 @@ export function createDelCommand() {
25
23
  .description('Delete a feature')
26
24
  .argument('<id>', 'Feature ID or prefix')
27
25
  .option('-f, --force', 'Skip confirmation prompt')
28
- .option('--no-cleanup', 'Skip worktree and branch cleanup')
29
26
  .action(async (featureId, options) => {
30
27
  try {
31
28
  // First show what we're about to delete
@@ -41,26 +38,12 @@ export function createDelCommand() {
41
38
  return;
42
39
  }
43
40
  }
44
- // Determine cleanup preference
45
- let cleanup = true;
46
- if (options.cleanup === false) {
47
- cleanup = false;
48
- }
49
- else if (!options.force) {
50
- cleanup = await confirm({
51
- message: 'Also clean up worktree and branches?',
52
- default: true,
53
- });
54
- }
55
41
  const deleteUseCase = container.resolve(DeleteFeatureUseCase);
56
- await deleteUseCase.execute(feature.id, { cleanup });
42
+ await deleteUseCase.execute(feature.id);
57
43
  messages.newline();
58
44
  messages.success('Feature deleted');
59
45
  console.log(` ${colors.muted('Name:')} ${feature.name}`);
60
46
  console.log(` ${colors.muted('Branch:')} ${feature.branch}`);
61
- if (cleanup) {
62
- console.log(` ${colors.muted('Cleanup:')} worktree, local branch, remote branch`);
63
- }
64
47
  messages.newline();
65
48
  }
66
49
  catch (error) {
@@ -1,5 +1,5 @@
1
1
  import type { Feature } from '../../../../../packages/core/src/domain/generated/output.js';
2
- export declare function deleteFeature(featureId: string, cleanup?: boolean): Promise<{
2
+ export declare function deleteFeature(featureId: string): Promise<{
3
3
  feature?: Feature;
4
4
  error?: string;
5
5
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"delete-feature.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/delete-feature.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAEpE,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBhD"}
1
+ {"version":3,"file":"delete-feature.d.ts","sourceRoot":"","sources":["../../../../../../src/presentation/web/app/actions/delete-feature.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sCAAsC,CAAC;AAEpE,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAahD"}
@@ -1,14 +1,12 @@
1
1
  'use server';
2
2
  import { resolve } from '../../lib/server-container.js';
3
- export async function deleteFeature(featureId, cleanup) {
3
+ export async function deleteFeature(featureId) {
4
4
  if (!featureId?.trim()) {
5
5
  return { error: 'id is required' };
6
6
  }
7
7
  try {
8
8
  const deleteFeatureUseCase = resolve('DeleteFeatureUseCase');
9
- const feature = cleanup !== undefined
10
- ? await deleteFeatureUseCase.execute(featureId, { cleanup })
11
- : await deleteFeatureUseCase.execute(featureId);
9
+ const feature = await deleteFeatureUseCase.execute(featureId);
12
10
  return { feature };
13
11
  }
14
12
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"overview-tab.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-drawer-tabs/overview-tab.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAMxE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE,gBAAgB,2CAoCrD"}
1
+ {"version":3,"file":"overview-tab.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-drawer-tabs/overview-tab.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAMxE,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE,gBAAgB,2CAwCrD"}
@@ -10,7 +10,8 @@ import { CometSpinner } from '../../ui/comet-spinner.js';
10
10
  import { featureNodeStateConfig, lifecycleDisplayLabels } from '../../common/feature-node/index.js';
11
11
  import { getAgentTypeIcon, agentTypeLabels, } from '../../common/feature-node/agent-type-icons.js';
12
12
  export function OverviewTab({ data }) {
13
- return (_jsxs(_Fragment, { children: [_jsxs("div", { "data-testid": "feature-drawer-status", className: "flex flex-col gap-3 p-4", children: [_jsx("div", { className: "text-muted-foreground text-xs font-semibold tracking-wider", children: lifecycleDisplayLabels[data.lifecycle] }), _jsx(FeatureStateBadge, { data: data }), data.progress > 0 ? (_jsxs("div", { "data-testid": "feature-drawer-progress", className: "flex flex-col gap-1", children: [_jsxs("div", { className: "text-muted-foreground flex items-center justify-between text-xs", children: [_jsx("span", { children: "Progress" }), _jsxs("span", { children: [data.progress, "%"] })] }), _jsx("div", { className: "bg-muted h-2 w-full overflow-hidden rounded-full", children: _jsx("div", { className: cn('h-full rounded-full transition-all', featureNodeStateConfig[data.state].progressClass), style: { width: `${data.progress}%` } }) })] })) : null] }), _jsx(FeatureInfo, { data: data }), data.pr ? (_jsxs(_Fragment, { children: [_jsx(Separator, {}), _jsx(FeaturePrInfo, { pr: data.pr })] })) : null, _jsx(FeatureDetails, { data: data })] }));
13
+ const isCompleted = data.lifecycle === 'maintain';
14
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { "data-testid": "feature-drawer-status", className: "flex flex-col gap-3 p-4", children: [_jsx("div", { className: "text-muted-foreground text-xs font-semibold tracking-wider", children: lifecycleDisplayLabels[data.lifecycle] }), _jsx(FeatureStateBadge, { data: data }), !isCompleted && data.progress > 0 ? (_jsxs("div", { "data-testid": "feature-drawer-progress", className: "flex flex-col gap-1", children: [_jsxs("div", { className: "text-muted-foreground flex items-center justify-between text-xs", children: [_jsx("span", { children: "Progress" }), _jsxs("span", { children: [data.progress, "%"] })] }), _jsx("div", { className: "bg-muted h-2 w-full overflow-hidden rounded-full", children: _jsx("div", { className: cn('h-full rounded-full transition-all', featureNodeStateConfig[data.state].progressClass), style: { width: `${data.progress}%` } }) })] })) : null, isCompleted && data.pr ? _jsx(FeaturePrInfo, { pr: data.pr }) : null] }), _jsx(FeatureInfo, { data: data }), !isCompleted && data.pr ? (_jsxs(_Fragment, { children: [_jsx(Separator, {}), _jsx("div", { className: "p-4", children: _jsx(FeaturePrInfo, { pr: data.pr }) })] })) : null, _jsx(FeatureDetails, { data: data })] }));
14
15
  }
15
16
  function FeatureStateBadge({ data }) {
16
17
  const config = featureNodeStateConfig[data.state];
@@ -58,7 +59,7 @@ const prStatusStyles = {
58
59
  [PrStatus.Closed]: 'border-transparent bg-red-50 text-red-700 hover:bg-red-50',
59
60
  };
60
61
  function FeaturePrInfo({ pr }) {
61
- return (_jsx("div", { "data-testid": "feature-drawer-pr", className: "border-border mx-4 rounded-lg border", children: _jsxs("div", { className: "space-y-3 px-4 py-3", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("a", { href: pr.url, target: "_blank", rel: "noopener noreferrer", className: "text-primary flex items-center gap-1.5 text-sm font-semibold underline underline-offset-2", children: ["PR #", pr.number, _jsx(ExternalLink, { className: "h-3.5 w-3.5" })] }), _jsx(Badge, { className: prStatusStyles[pr.status], children: pr.status })] }), pr.ciStatus ? (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-muted-foreground text-xs font-medium", children: "CI Status" }), _jsx(CiStatusBadge, { status: pr.ciStatus })] })) : null, pr.commitHash ? (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-muted-foreground text-xs font-medium", children: "Commit" }), _jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(GitCommitHorizontal, { className: "text-muted-foreground h-3.5 w-3.5" }), _jsx("code", { className: "bg-muted text-foreground rounded-md px-1.5 py-0.5 font-mono text-[11px]", children: pr.commitHash.slice(0, 7) })] })] })) : null] }) }));
62
+ return (_jsx("div", { "data-testid": "feature-drawer-pr", children: _jsxs("div", { className: "space-y-3", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("a", { href: pr.url, target: "_blank", rel: "noopener noreferrer", className: "text-primary flex items-center gap-1.5 text-sm font-semibold underline underline-offset-2", children: ["PR #", pr.number, _jsx(ExternalLink, { className: "h-3.5 w-3.5" })] }), _jsx(Badge, { className: prStatusStyles[pr.status], children: pr.status })] }), pr.ciStatus ? (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-muted-foreground text-xs font-medium", children: "CI Status" }), _jsx(CiStatusBadge, { status: pr.ciStatus })] })) : null, pr.commitHash ? (_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("span", { className: "text-muted-foreground text-xs font-medium", children: "Commit" }), _jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx(GitCommitHorizontal, { className: "text-muted-foreground h-3.5 w-3.5" }), _jsx("code", { className: "bg-muted text-foreground rounded-md px-1.5 py-0.5 font-mono text-[11px]", children: pr.commitHash.slice(0, 7) })] })] })) : null] }) }));
62
63
  }
63
64
  // ── Details section ──────────────────────────────────────────────────
64
65
  function FeatureDetails({ data }) {
@@ -27,4 +27,6 @@ export declare const ResearchPhase: Story;
27
27
  export declare const ReviewPhase: Story;
28
28
  /** Maintain phase. */
29
29
  export declare const MaintainPhase: Story;
30
+ /** Completed feature with PR — progress hidden, PR shown in status section without borders. */
31
+ export declare const CompletedWithPr: Story;
30
32
  //# sourceMappingURL=overview-tab.stories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"overview-tab.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CAclC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,WAAW,CAAC,CAAC;AA0G1C,uEAAuE;AACvE,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,IAAI,EAAE,KAElB,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,UAAU,EAAE,KAExB,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,gBAAgB,EAAE,KAE9B,CAAC;AAEF,iDAAiD;AACjD,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,gDAAgD;AAChD,eAAO,MAAM,KAAK,EAAE,KAEnB,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAwBF,mEAAmE;AACnE,eAAO,MAAM,QAAQ,EAAE,KAEtB,CAAC;AAMF,0BAA0B;AAC1B,eAAO,MAAM,iBAAiB,EAAE,KAE/B,CAAC;AAEF,sBAAsB;AACtB,eAAO,MAAM,aAAa,EAAE,KAE3B,CAAC;AAEF,oBAAoB;AACpB,eAAO,MAAM,WAAW,EAAE,KAEzB,CAAC;AAEF,sBAAsB;AACtB,eAAO,MAAM,aAAa,EAAE,KAE3B,CAAC"}
1
+ {"version":3,"file":"overview-tab.stories.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/common/feature-drawer-tabs/overview-tab.stories.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEvD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAG7C,QAAA,MAAM,IAAI,EAAE,IAAI,CAAC,OAAO,WAAW,CAclC,CAAC;AAEF,eAAe,IAAI,CAAC;AACpB,KAAK,KAAK,GAAG,QAAQ,CAAC,OAAO,WAAW,CAAC,CAAC;AA0G1C,uEAAuE;AACvE,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,8CAA8C;AAC9C,eAAO,MAAM,IAAI,EAAE,KAElB,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,UAAU,EAAE,KAExB,CAAC;AAEF,wDAAwD;AACxD,eAAO,MAAM,gBAAgB,EAAE,KAE9B,CAAC;AAEF,iDAAiD;AACjD,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAEF,gDAAgD;AAChD,eAAO,MAAM,KAAK,EAAE,KAEnB,CAAC;AAEF,sEAAsE;AACtE,eAAO,MAAM,OAAO,EAAE,KAErB,CAAC;AAwBF,mEAAmE;AACnE,eAAO,MAAM,QAAQ,EAAE,KAEtB,CAAC;AAMF,0BAA0B;AAC1B,eAAO,MAAM,iBAAiB,EAAE,KAE/B,CAAC;AAEF,sBAAsB;AACtB,eAAO,MAAM,aAAa,EAAE,KAE3B,CAAC;AAEF,oBAAoB;AACpB,eAAO,MAAM,WAAW,EAAE,KAEzB,CAAC;AAEF,sBAAsB;AACtB,eAAO,MAAM,aAAa,EAAE,KAE3B,CAAC;AAEF,+FAA+F;AAC/F,eAAO,MAAM,eAAe,EAAE,KAgB7B,CAAC"}
@@ -179,3 +179,21 @@ export const ReviewPhase = {
179
179
  export const MaintainPhase = {
180
180
  args: { data: { ...noPrData, lifecycle: 'maintain' } },
181
181
  };
182
+ /** Completed feature with PR — progress hidden, PR shown in status section without borders. */
183
+ export const CompletedWithPr = {
184
+ args: {
185
+ data: {
186
+ ...fullData,
187
+ lifecycle: 'maintain',
188
+ state: 'done',
189
+ progress: 100,
190
+ pr: {
191
+ url: 'https://github.com/org/repo/pull/55',
192
+ number: 55,
193
+ status: PrStatus.Merged,
194
+ ciStatus: CiStatus.Success,
195
+ commitHash: 'def4567890abc123',
196
+ },
197
+ },
198
+ },
199
+ };
@@ -14,7 +14,7 @@ export interface ControlCenterState {
14
14
  repoPath: string;
15
15
  };
16
16
  handleLayout: (direction: LayoutDirection) => void;
17
- handleDeleteFeature: (featureId: string, cleanup?: boolean) => void;
17
+ handleDeleteFeature: (featureId: string) => void;
18
18
  handleDeleteRepository: (repositoryId: string) => Promise<void>;
19
19
  createFeatureNode: (sourceNodeId: string | null, dataOverride?: Partial<FeatureNodeData>, edgeType?: string) => string;
20
20
  /** Stable lookup: repositoryPath for a feature node. */
@@ -1 +1 @@
1
- {"version":3,"file":"use-control-center-state.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/control-center/use-control-center-state.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AAcjC,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAM7E,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,aAAa,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,EAAE,KAAK,IAAI,CAAC;IAC/D,aAAa,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAChD,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/E,YAAY,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,IAAI,CAAC;IACnD,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACpE,sBAAsB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,iBAAiB,EAAE,CACjB,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,YAAY,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,EACvC,QAAQ,CAAC,EAAE,MAAM,KACd,MAAM,CAAC;IACZ,wDAAwD;IACxD,wBAAwB,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACxE,gDAAgD;IAChD,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,kBAAkB,GAAG,SAAS,CAAC;IACtE,0EAA0E;IAC1E,YAAY,EAAE,CAAC,SAAS,EAAE,cAAc,KAAK,IAAI,CAAC;CACnD;AAQD,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,cAAc,EAAE,EAC9B,YAAY,EAAE,IAAI,EAAE,GACnB,kBAAkB,CAuXpB"}
1
+ {"version":3,"file":"use-control-center-state.d.ts","sourceRoot":"","sources":["../../../../../../../src/presentation/web/components/features/control-center/use-control-center-state.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uCAAuC,CAAC;AAC5E,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,yBAAyB,CAAC;AAcjC,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAM7E,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,KAAK,EAAE,IAAI,EAAE,CAAC;IACd,aAAa,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,cAAc,CAAC,EAAE,KAAK,IAAI,CAAC;IAC/D,aAAa,EAAE,CAAC,UAAU,EAAE,UAAU,KAAK,IAAI,CAAC;IAChD,mBAAmB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK;QAAE,QAAQ,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/E,YAAY,EAAE,CAAC,SAAS,EAAE,eAAe,KAAK,IAAI,CAAC;IACnD,mBAAmB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACjD,sBAAsB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,iBAAiB,EAAE,CACjB,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,YAAY,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,EACvC,QAAQ,CAAC,EAAE,MAAM,KACd,MAAM,CAAC;IACZ,wDAAwD;IACxD,wBAAwB,EAAE,CAAC,aAAa,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACxE,gDAAgD;IAChD,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,kBAAkB,GAAG,SAAS,CAAC;IACtE,0EAA0E;IAC1E,YAAY,EAAE,CAAC,SAAS,EAAE,cAAc,KAAK,IAAI,CAAC;CACnD;AAQD,wBAAgB,qBAAqB,CACnC,YAAY,EAAE,cAAc,EAAE,EAC9B,YAAY,EAAE,IAAI,EAAE,GACnB,kBAAkB,CAuXpB"}
@@ -190,7 +190,7 @@ export function useControlCenterState(initialNodes, initialEdges) {
190
190
  addPendingFeature(id, newFeatureData, parentNodeId);
191
191
  return id;
192
192
  }, [addPendingFeature]);
193
- const handleDeleteFeature = useCallback((featureId, cleanup) => {
193
+ const handleDeleteFeature = useCallback((featureId) => {
194
194
  const nodeId = `feat-${featureId}`;
195
195
  // Find the current entry for rollback
196
196
  const prevEntry = nodesRef.current
@@ -204,7 +204,7 @@ export function useControlCenterState(initialNodes, initialEdges) {
204
204
  deleteSound.play();
205
205
  toast.success('Feature deleted successfully');
206
206
  router.push('/');
207
- deleteFeature(featureId, cleanup)
207
+ deleteFeature(featureId)
208
208
  .then((result) => {
209
209
  if (result.error) {
210
210
  if (prevEntry)