@shepai/cli 1.74.0 → 1.75.0

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 (185) hide show
  1. package/dist/src/presentation/web/components/common/theme-toggle/theme-toggle.d.ts.map +1 -1
  2. package/dist/src/presentation/web/components/common/theme-toggle/theme-toggle.js +21 -10
  3. package/dist/tsconfig.build.tsbuildinfo +1 -1
  4. package/package.json +1 -1
  5. package/web/.next/BUILD_ID +1 -1
  6. package/web/.next/build-manifest.json +2 -2
  7. package/web/.next/cache/.previewinfo +1 -1
  8. package/web/.next/cache/.rscinfo +1 -1
  9. package/web/.next/cache/.tsbuildinfo +1 -1
  10. package/web/.next/cache/config.json +3 -3
  11. package/web/.next/fallback-build-manifest.json +2 -2
  12. package/web/.next/prerender-manifest.json +3 -3
  13. package/web/.next/required-server-files.js +1 -1
  14. package/web/.next/required-server-files.json +1 -1
  15. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +16 -16
  16. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  17. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  18. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +19 -19
  19. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  20. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  21. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  22. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  23. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  24. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +16 -16
  25. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  26. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  27. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +19 -19
  28. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  29. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  30. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +14 -14
  31. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  32. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  33. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  34. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  35. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  36. package/web/.next/server/app/_global-error.html +2 -2
  37. package/web/.next/server/app/_global-error.rsc +1 -1
  38. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  39. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  40. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  41. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  42. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  43. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  44. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  45. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  46. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  47. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  48. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  49. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  50. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  51. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  52. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  53. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js +1 -1
  54. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js.map +1 -1
  55. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js +1 -1
  56. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js.map +1 -1
  57. package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +2 -2
  58. package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js.map +1 -1
  59. package/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
  60. package/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js +2 -2
  61. package/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js.map +1 -1
  62. package/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js +1 -1
  63. package/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js.map +1 -1
  64. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  65. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
  66. package/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js +2 -2
  67. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  68. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
  69. package/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js +1 -1
  70. package/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js.map +1 -1
  71. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  72. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  73. package/web/.next/server/chunks/ssr/_0e9d6bf7._.js +1 -1
  74. package/web/.next/server/chunks/ssr/_0e9d6bf7._.js.map +1 -1
  75. package/web/.next/server/chunks/ssr/_61351ed3._.js +1 -1
  76. package/web/.next/server/chunks/ssr/_61351ed3._.js.map +1 -1
  77. package/web/.next/server/chunks/ssr/_8400c8bb._.js +1 -1
  78. package/web/.next/server/chunks/ssr/_8400c8bb._.js.map +1 -1
  79. package/web/.next/server/chunks/ssr/_9f940437._.js +1 -1
  80. package/web/.next/server/chunks/ssr/_9f940437._.js.map +1 -1
  81. package/web/.next/server/chunks/ssr/{_4472b56f._.js → _fd351734._.js} +2 -2
  82. package/web/.next/server/chunks/ssr/{_4472b56f._.js.map → _fd351734._.js.map} +1 -1
  83. package/web/.next/server/chunks/ssr/src_presentation_web_163038ba._.js +2 -2
  84. package/web/.next/server/chunks/ssr/src_presentation_web_163038ba._.js.map +1 -1
  85. package/web/.next/server/chunks/ssr/src_presentation_web_30d7eeda._.js +1 -1
  86. package/web/.next/server/chunks/ssr/src_presentation_web_30d7eeda._.js.map +1 -1
  87. package/web/.next/server/chunks/ssr/src_presentation_web_459cb687._.js +2 -2
  88. package/web/.next/server/chunks/ssr/src_presentation_web_459cb687._.js.map +1 -1
  89. package/web/.next/server/chunks/ssr/src_presentation_web_565a14f8._.js +1 -1
  90. package/web/.next/server/chunks/ssr/src_presentation_web_565a14f8._.js.map +1 -1
  91. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js +1 -1
  92. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js.map +1 -1
  93. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  94. package/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js.map +1 -1
  95. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  96. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  97. package/web/.next/server/pages/500.html +2 -2
  98. package/web/.next/server/server-reference-manifest.js +1 -1
  99. package/web/.next/server/server-reference-manifest.json +22 -22
  100. package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
  101. package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +2 -2
  102. package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
  103. package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +1 -1
  104. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +16 -16
  105. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  106. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  107. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +19 -19
  108. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  109. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  110. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  111. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  112. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  113. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +16 -16
  114. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  115. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  116. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +19 -19
  117. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  118. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  119. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +14 -14
  120. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  121. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  122. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  123. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  124. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  125. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
  126. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
  127. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  128. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  129. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  130. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  131. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  132. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  133. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  134. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  135. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  136. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  137. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  138. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  139. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  140. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  141. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js +1 -1
  142. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js +1 -1
  143. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +2 -2
  144. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
  145. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js +2 -2
  146. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6258349c._.js +1 -1
  147. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  148. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js +2 -2
  149. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  150. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__94a6d275._.js +1 -1
  151. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  152. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_0e9d6bf7._.js +1 -1
  153. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_61351ed3._.js +1 -1
  154. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_8400c8bb._.js +1 -1
  155. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_9f940437._.js +1 -1
  156. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{_4472b56f._.js → _fd351734._.js} +2 -2
  157. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_163038ba._.js +2 -2
  158. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_30d7eeda._.js +1 -1
  159. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_459cb687._.js +2 -2
  160. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_565a14f8._.js +1 -1
  161. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js +1 -1
  162. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_e599bb8c._.js +1 -1
  163. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  164. package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
  165. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
  166. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +22 -22
  167. package/web/.next/standalone/src/presentation/web/app/globals.css +25 -0
  168. package/web/.next/standalone/src/presentation/web/components/common/theme-toggle/theme-toggle.tsx +26 -9
  169. package/web/.next/standalone/src/presentation/web/server.js +1 -1
  170. package/web/.next/static/chunks/{87627605cd90f5ec.js → 0351dfb1a2c04651.js} +1 -1
  171. package/web/.next/static/chunks/{7b5870c586e31a48.js → 09e8bde4c8c36032.js} +1 -1
  172. package/web/.next/static/chunks/{33160c6e15691803.js → 25c39fb56c1fb992.js} +1 -1
  173. package/web/.next/static/chunks/{9b8efd65a9b1b869.js → 2a37d25332b5648b.js} +1 -1
  174. package/web/.next/static/chunks/{74dceed1c60e3023.js → 3ce5a1e5f4215598.js} +1 -1
  175. package/web/.next/static/chunks/{51b4b51b814928dd.js → 409477e14c0251ad.js} +1 -1
  176. package/web/.next/static/chunks/{62567dd4e1da2f42.js → 7fc4ef147139e5d7.js} +1 -1
  177. package/web/.next/static/chunks/{cb41849bcfaa304e.js → b6c507fc42d9a277.js} +1 -1
  178. package/web/.next/static/chunks/{c2ca3105ade4be4d.js → c98e709ebd484e56.js} +1 -1
  179. package/web/.next/static/chunks/{d33995d7d4f9204b.js → d1c098005f96b0c2.js} +1 -1
  180. package/web/.next/static/chunks/{0ffccd7be73305c8.css → e12fff3b57456bc2.css} +1 -1
  181. package/web/.next/trace +1 -1
  182. package/web/.next/trace-build +1 -1
  183. /package/web/.next/static/{TCaMrDQjQWi1IHri-0r-R → noYkP21cohTYVGvhHBqjY}/_buildManifest.js +0 -0
  184. /package/web/.next/static/{TCaMrDQjQWi1IHri-0r-R → noYkP21cohTYVGvhHBqjY}/_clientMiddlewareManifest.json +0 -0
  185. /package/web/.next/static/{TCaMrDQjQWi1IHri-0r-R → noYkP21cohTYVGvhHBqjY}/_ssgManifest.js +0 -0
@@ -1,6 +1,6 @@
1
- module.exports=[24860,a=>{"use strict";var b=a.i(92658),c=a.i(33244);async function d(){let{workflow:a}=(0,c.getSettings)();return{approvalGates:{allowPrd:a.approvalGateDefaults.allowPrd,allowPlan:a.approvalGateDefaults.allowPlan,allowMerge:a.approvalGateDefaults.allowMerge},push:a.approvalGateDefaults.pushOnImplementationComplete,openPr:a.openPrOnImplementationComplete}}(0,a.i(12581).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"004b166406ec90f4140a1f8d6ad71d1b7b2db90a99",null),a.s(["getWorkflowDefaults",()=>d])},77605,a=>{"use strict";var b=a.i(92658),c=a.i(96380);async function d(a){let{description:b,repositoryPath:d,attachments:e,approvalGates:f,push:g,openPr:h,parentId:i}=a;if(!b?.trim())return{error:"description is required"};if(!d?.trim())return{error:"repositoryPath is required"};let j=function(a,b){let c=a;if(b&&b.length>0){let a=b.map(a=>`- ${a.path}`).join("\n");c+=`
1
+ module.exports=[24860,a=>{"use strict";var b=a.i(92658),c=a.i(33244);async function d(){let{workflow:a}=(0,c.getSettings)();return{approvalGates:{allowPrd:a.approvalGateDefaults.allowPrd,allowPlan:a.approvalGateDefaults.allowPlan,allowMerge:a.approvalGateDefaults.allowMerge},push:a.approvalGateDefaults.pushOnImplementationComplete,openPr:a.openPrOnImplementationComplete}}(0,a.i(12581).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"00f8d1a7d558cbe24fd4b3322c4a64e6c216bc764f",null),a.s(["getWorkflowDefaults",()=>d])},77605,a=>{"use strict";var b=a.i(92658),c=a.i(96380);async function d(a){let{description:b,repositoryPath:d,attachments:e,approvalGates:f,push:g,openPr:h,parentId:i}=a;if(!b?.trim())return{error:"description is required"};if(!d?.trim())return{error:"repositoryPath is required"};let j=function(a,b){let c=a;if(b&&b.length>0){let a=b.map(a=>`- ${a.path}`).join("\n");c+=`
2
2
 
3
3
  Attached files:
4
- ${a}`}return c}(b,e),k={allowPrd:f?.allowPrd??!1,allowPlan:f?.allowPlan??!1,allowMerge:f?.allowMerge??!1};try{let a=(0,c.resolve)("CreateFeatureUseCase"),{feature:e,shouldSpawn:f}=await a.createRecord({userInput:j,repositoryPath:d,approvalGates:k,push:g??!1,openPr:h??!1,...i?{parentId:i}:{},description:b});return a.initializeAndSpawn(e,{userInput:j,repositoryPath:d,approvalGates:k,push:g??!1,openPr:h??!1,...i?{parentId:i}:{}},f).catch(a=>{console.error("[createFeature] initializeAndSpawn failed:",a)}),{feature:e}}catch(a){return{error:a instanceof Error?a.message:"Failed to create feature"}}}(0,a.i(12581).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"408a7c515a9aa2a742c1194da1ba0caa0ee059b5ba",null),a.s(["createFeature",()=>d])},90842,a=>{"use strict";var b=a.i(12513),c=a.i(94691),d=a.i(33841),e=a.i(46646),f=a.i(68670),g=a.i(85321),h=a.i(84095),i=a.i(56799),j=a.i(80496),k=a.i(50845),l=a.i(49560),m=a.i(39353),n=a.i(29207),o=a.i(31075),p=a.i(24860),q=a.i(77605);a.s([],6797),a.i(6797),a.s(["004b166406ec90f4140a1f8d6ad71d1b7b2db90a99",()=>p.getWorkflowDefaults,"00728d4e692735334df2e486cc2e3efd87b74e6d29",()=>o.fetchGraphData,"00e1f0c3b074524064a40012ed97a68f47370ea341",()=>b.pickFolder,"401438cd8f26a671e452aa9197eff29efe0d3cf83d",()=>e.deployRepository,"40160faf0a76810f78df291bae4a1959c91f7e0699",()=>h.openIde,"4027df429860c9e1603699c814175f375933cfd5e3",()=>k.deleteFeature,"402dc6644acbd4f34478118c45b23d83f4151b357d",()=>n.getFeatureMetadata,"403eb21f82b3f95741488fadc77104c2dd147697ee",()=>f.stopDeployment,"406b1bb8ddbdf6dbe75cfd1d41108097a8998e3d97",()=>m.deleteRepository,"4085a4e8989dc6dbf096b20f4558c05c645ad0ee6a",()=>d.deployFeature,"408a7c515a9aa2a742c1194da1ba0caa0ee059b5ba",()=>q.createFeature,"40932b170bb76634250613fa397dd7d06f35616ba8",()=>g.getDeploymentStatus,"409fc82b651e9e109a5981b93839b6c915a6c1c093",()=>j.openFolder,"40aceccdc6eb94bb83ce82c329b6f512e905f73a2b",()=>c.getDeploymentLogs,"40bb1e5fe47f2970352cea06def0646b9c386d8672",()=>l.addRepository,"40d7909be7cff72e56aa38be622310a7d3e53db00f",()=>i.openShell],90842)}];
4
+ ${a}`}return c}(b,e),k={allowPrd:f?.allowPrd??!1,allowPlan:f?.allowPlan??!1,allowMerge:f?.allowMerge??!1};try{let a=(0,c.resolve)("CreateFeatureUseCase"),{feature:e,shouldSpawn:f}=await a.createRecord({userInput:j,repositoryPath:d,approvalGates:k,push:g??!1,openPr:h??!1,...i?{parentId:i}:{},description:b});return a.initializeAndSpawn(e,{userInput:j,repositoryPath:d,approvalGates:k,push:g??!1,openPr:h??!1,...i?{parentId:i}:{}},f).catch(a=>{console.error("[createFeature] initializeAndSpawn failed:",a)}),{feature:e}}catch(a){return{error:a instanceof Error?a.message:"Failed to create feature"}}}(0,a.i(12581).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"4041968dd230b5e9ff91ef8ed1d0c4bf9f7479b7dc",null),a.s(["createFeature",()=>d])},90842,a=>{"use strict";var b=a.i(12513),c=a.i(94691),d=a.i(33841),e=a.i(46646),f=a.i(68670),g=a.i(85321),h=a.i(84095),i=a.i(56799),j=a.i(80496),k=a.i(50845),l=a.i(49560),m=a.i(39353),n=a.i(29207),o=a.i(31075),p=a.i(24860),q=a.i(77605);a.s([],6797),a.i(6797),a.s(["0098cdddc7f1c513cd8ccb7a1c235610d3f5619023",()=>o.fetchGraphData,"00a970a59b2ee92287fe67e938ead8f423e786cbae",()=>b.pickFolder,"00f8d1a7d558cbe24fd4b3322c4a64e6c216bc764f",()=>p.getWorkflowDefaults,"40002870c82979d1fd69d787290bce87a547f09ddf",()=>h.openIde,"40075f6a1d08a0425fc436891a4d0ded3d57f43ab5",()=>i.openShell,"4041968dd230b5e9ff91ef8ed1d0c4bf9f7479b7dc",()=>q.createFeature,"404b8497bd1c7d1aa64c0778b781a29aa381e82b5b",()=>f.stopDeployment,"405c717047a0bcf4588e9797f60ec20025822173ef",()=>g.getDeploymentStatus,"4072da140dcd33ca38490dead1bdc87b9bcd720650",()=>e.deployRepository,"408cbcaeb390adbbc84efb07c97fd31ecde0ac2b15",()=>m.deleteRepository,"40a172efa9626b7aefdc84500163720ad74f9e785a",()=>k.deleteFeature,"40b4a16819758b6e2b95cb7fda01f3a3442b0cd797",()=>c.getDeploymentLogs,"40b6bf2f915e34a002f2f1dec97d949f9956f48015",()=>j.openFolder,"40c70cd6035002651627e76edd34af8189e316d768",()=>n.getFeatureMetadata,"40e5e31b1cdc03f1b28416f512c1b8fde4652584c6",()=>d.deployFeature,"40feb0796397e00925c1f0a362fa04cef7e8287fc4",()=>l.addRepository],90842)}];
5
5
 
6
6
  //# sourceMappingURL=src_presentation_web_163038ba._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-workflow-defaults.ts","../../../../../../../src/presentation/web/app/actions/create-feature.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/create/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { getSettings } from '@shepai/core/infrastructure/services/settings.service';\n\nexport interface WorkflowDefaults {\n approvalGates: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n };\n push: boolean;\n openPr: boolean;\n}\n\nexport async function getWorkflowDefaults(): Promise<WorkflowDefaults> {\n const settings = getSettings();\n const { workflow } = settings;\n\n return {\n approvalGates: {\n allowPrd: workflow.approvalGateDefaults.allowPrd,\n allowPlan: workflow.approvalGateDefaults.allowPlan,\n allowMerge: workflow.approvalGateDefaults.allowMerge,\n },\n push: workflow.approvalGateDefaults.pushOnImplementationComplete,\n openPr: workflow.openPrOnImplementationComplete,\n };\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { CreateFeatureUseCase } from '@shepai/core/application/use-cases/features/create/create-feature.use-case';\nimport type { Feature } from '@shepai/core/domain/generated/output';\n\ninterface Attachment {\n path: string;\n name: string;\n}\n\ninterface ApprovalGates {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n}\n\ninterface CreateFeatureInput {\n description: string;\n repositoryPath: string;\n attachments?: Attachment[];\n approvalGates?: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge?: boolean;\n };\n push?: boolean;\n openPr?: boolean;\n parentId?: string;\n}\n\nfunction composeUserInput(description: string, attachments: Attachment[] | undefined): string {\n let userInput = description;\n\n if (attachments && attachments.length > 0) {\n const paths = attachments.map((a) => `- ${a.path}`).join('\\n');\n userInput += `\\n\\nAttached files:\\n${paths}`;\n }\n\n return userInput;\n}\n\nexport async function createFeature(\n input: CreateFeatureInput\n): Promise<{ feature?: Feature; error?: string }> {\n const { description, repositoryPath, attachments, approvalGates, push, openPr, parentId } = input;\n\n if (!description?.trim()) {\n return { error: 'description is required' };\n }\n\n if (!repositoryPath?.trim()) {\n return { error: 'repositoryPath is required' };\n }\n\n const userInput = composeUserInput(description, attachments);\n const gates: ApprovalGates = {\n allowPrd: approvalGates?.allowPrd ?? false,\n allowPlan: approvalGates?.allowPlan ?? false,\n allowMerge: approvalGates?.allowMerge ?? false,\n };\n\n try {\n const createFeatureUseCase = resolve<CreateFeatureUseCase>('CreateFeatureUseCase');\n\n // Phase 1 (fast): create DB record with real UUID — returns immediately\n const { feature, shouldSpawn } = await createFeatureUseCase.createRecord({\n userInput,\n repositoryPath,\n approvalGates: gates,\n push: push ?? false,\n openPr: openPr ?? false,\n ...(parentId ? { parentId } : {}),\n description,\n });\n\n // Phase 2 (background): metadata generation, worktree, spec, agent spawn\n // Fire-and-forget — the UI gets the real feature ID immediately\n createFeatureUseCase\n .initializeAndSpawn(\n feature,\n {\n userInput,\n repositoryPath,\n approvalGates: gates,\n push: push ?? false,\n openPr: openPr ?? false,\n ...(parentId ? { parentId } : {}),\n },\n shouldSpawn\n )\n .catch((err: unknown) => {\n // eslint-disable-next-line no-console\n console.error('[createFeature] initializeAndSpawn failed:', err);\n });\n\n return { feature };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to create feature';\n return { error: message };\n }\n}\n","export {pickFolder as '00e1f0c3b074524064a40012ed97a68f47370ea341'} from 'ACTIONS_MODULE0'\nexport {getDeploymentLogs as '40aceccdc6eb94bb83ce82c329b6f512e905f73a2b'} from 'ACTIONS_MODULE1'\nexport {deployFeature as '4085a4e8989dc6dbf096b20f4558c05c645ad0ee6a'} from 'ACTIONS_MODULE2'\nexport {deployRepository as '401438cd8f26a671e452aa9197eff29efe0d3cf83d'} from 'ACTIONS_MODULE3'\nexport {stopDeployment as '403eb21f82b3f95741488fadc77104c2dd147697ee'} from 'ACTIONS_MODULE4'\nexport {getDeploymentStatus as '40932b170bb76634250613fa397dd7d06f35616ba8'} from 'ACTIONS_MODULE5'\nexport {openIde as '40160faf0a76810f78df291bae4a1959c91f7e0699'} from 'ACTIONS_MODULE6'\nexport {openShell as '40d7909be7cff72e56aa38be622310a7d3e53db00f'} from 'ACTIONS_MODULE7'\nexport {openFolder as '409fc82b651e9e109a5981b93839b6c915a6c1c093'} from 'ACTIONS_MODULE8'\nexport {deleteFeature as '4027df429860c9e1603699c814175f375933cfd5e3'} from 'ACTIONS_MODULE9'\nexport {addRepository as '40bb1e5fe47f2970352cea06def0646b9c386d8672'} from 'ACTIONS_MODULE10'\nexport {deleteRepository as '406b1bb8ddbdf6dbe75cfd1d41108097a8998e3d97'} from 'ACTIONS_MODULE11'\nexport {getFeatureMetadata as '402dc6644acbd4f34478118c45b23d83f4151b357d'} from 'ACTIONS_MODULE12'\nexport {fetchGraphData as '00728d4e692735334df2e486cc2e3efd87b74e6d29'} from 'ACTIONS_MODULE13'\nexport {getWorkflowDefaults as '004b166406ec90f4140a1f8d6ad71d1b7b2db90a99'} from 'ACTIONS_MODULE14'\nexport {createFeature as '408a7c515a9aa2a742c1194da1ba0caa0ee059b5ba'} from 'ACTIONS_MODULE15'\n"],"names":[],"mappings":"wDAEA,EAAA,EAAA,CAAA,CAAA,OAYO,eAAe,IAEpB,GAAM,UAAE,CAAQ,CAAE,CADD,CAAA,CACI,CADJ,EAAA,WAAA,AAAW,IAG5B,MAAO,CACL,cAAe,CACb,SAAU,EAAS,oBAAoB,CAAC,QAAQ,CAChD,UAAW,EAAS,oBAAoB,CAAC,SAAS,CAClD,WAAY,EAAS,oBAAoB,CAAC,UAAU,AACtD,EACA,KAAM,EAAS,oBAAoB,CAAC,4BAA4B,CAChE,OAAQ,EAAS,8BAA8B,AACjD,CACF,0CAbsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,kFCZtB,EAAA,EAAA,CAAA,CAAA,OAwCO,eAAe,EACpB,CAAyB,EAEzB,GAAM,aAAE,CAAW,gBAAE,CAAc,aAAE,CAAW,eAAE,CAAa,MAAE,CAAI,QAAE,CAAM,UAAE,CAAQ,CAAE,CAAG,EAE5F,GAAI,CAAC,GAAa,OAChB,CADwB,KACjB,CAAE,MAAO,yBAA0B,EAG5C,GAAI,CAAC,GAAgB,OACnB,CAD2B,KACpB,CAAE,MAAO,4BAA6B,EAG/C,IAAM,EAxBR,AAwBoB,SAxBX,AAAiB,CAAmB,CAAE,CAAqC,EAClF,IAAI,EAAY,EAEhB,GAAI,GAAe,EAAY,MAAM,CAAG,EAAG,CACzC,IAAM,EAAQ,EAAY,GAAG,CAAC,AAAC,GAAM,CAAC,EAAE,EAAE,EAAE,IAAI,CAAA,CAAE,EAAE,IAAI,CAAC,MACzD,GAAa,CAAC;AAAA;AAAA;AAAqB,EAAE,EAAA,CAAO,AAC9C,CAEA,OAAO,CACT,EAeqC,EAAa,GAC1C,EAAuB,CAC3B,SAAU,GAAe,WAAY,EACrC,UAAW,GAAe,YAAa,EACvC,WAAY,GAAe,aAAc,CAC3C,EAEA,GAAI,CACF,IAAM,EAAuB,CAAA,EAAA,EAAA,OAAA,AAAO,EAAuB,wBAGrD,SAAE,CAAO,aAAE,CAAW,CAAE,CAAG,MAAM,EAAqB,YAAY,CAAC,CACvE,YACA,iBACA,cAAe,EACf,KAAM,IAAQ,EACd,OAAQ,IAAU,EAClB,GAAI,EAAW,UAAE,CAAS,EAAI,CAAC,CAAC,aAChC,CACF,GAsBA,OAlBA,EACG,kBAAkB,CACjB,EACA,WACE,iBACA,EACA,cAAe,EACf,KAAM,GAAQ,GACd,OAAQ,GAAU,GAClB,GAAI,EAAW,UAAE,CAAS,EAAI,CAAC,CAAC,AAClC,EACA,GAED,KAAK,CAAC,AAAC,IAEN,QAAQ,KAAK,CAAC,6CAA8C,EAC9D,GAEK,SAAE,CAAQ,CACnB,CAAE,MAAO,EAAgB,CAEvB,MAAO,CAAE,MADO,CACA,YADiB,MAAQ,EAAM,OAAO,CAAG,0BACjC,CAC1B,CACF,0CA3DsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,2DC1CtB,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-workflow-defaults.ts","../../../../../../../src/presentation/web/app/actions/create-feature.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/create/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { getSettings } from '@shepai/core/infrastructure/services/settings.service';\n\nexport interface WorkflowDefaults {\n approvalGates: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n };\n push: boolean;\n openPr: boolean;\n}\n\nexport async function getWorkflowDefaults(): Promise<WorkflowDefaults> {\n const settings = getSettings();\n const { workflow } = settings;\n\n return {\n approvalGates: {\n allowPrd: workflow.approvalGateDefaults.allowPrd,\n allowPlan: workflow.approvalGateDefaults.allowPlan,\n allowMerge: workflow.approvalGateDefaults.allowMerge,\n },\n push: workflow.approvalGateDefaults.pushOnImplementationComplete,\n openPr: workflow.openPrOnImplementationComplete,\n };\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { CreateFeatureUseCase } from '@shepai/core/application/use-cases/features/create/create-feature.use-case';\nimport type { Feature } from '@shepai/core/domain/generated/output';\n\ninterface Attachment {\n path: string;\n name: string;\n}\n\ninterface ApprovalGates {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n}\n\ninterface CreateFeatureInput {\n description: string;\n repositoryPath: string;\n attachments?: Attachment[];\n approvalGates?: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge?: boolean;\n };\n push?: boolean;\n openPr?: boolean;\n parentId?: string;\n}\n\nfunction composeUserInput(description: string, attachments: Attachment[] | undefined): string {\n let userInput = description;\n\n if (attachments && attachments.length > 0) {\n const paths = attachments.map((a) => `- ${a.path}`).join('\\n');\n userInput += `\\n\\nAttached files:\\n${paths}`;\n }\n\n return userInput;\n}\n\nexport async function createFeature(\n input: CreateFeatureInput\n): Promise<{ feature?: Feature; error?: string }> {\n const { description, repositoryPath, attachments, approvalGates, push, openPr, parentId } = input;\n\n if (!description?.trim()) {\n return { error: 'description is required' };\n }\n\n if (!repositoryPath?.trim()) {\n return { error: 'repositoryPath is required' };\n }\n\n const userInput = composeUserInput(description, attachments);\n const gates: ApprovalGates = {\n allowPrd: approvalGates?.allowPrd ?? false,\n allowPlan: approvalGates?.allowPlan ?? false,\n allowMerge: approvalGates?.allowMerge ?? false,\n };\n\n try {\n const createFeatureUseCase = resolve<CreateFeatureUseCase>('CreateFeatureUseCase');\n\n // Phase 1 (fast): create DB record with real UUID — returns immediately\n const { feature, shouldSpawn } = await createFeatureUseCase.createRecord({\n userInput,\n repositoryPath,\n approvalGates: gates,\n push: push ?? false,\n openPr: openPr ?? false,\n ...(parentId ? { parentId } : {}),\n description,\n });\n\n // Phase 2 (background): metadata generation, worktree, spec, agent spawn\n // Fire-and-forget — the UI gets the real feature ID immediately\n createFeatureUseCase\n .initializeAndSpawn(\n feature,\n {\n userInput,\n repositoryPath,\n approvalGates: gates,\n push: push ?? false,\n openPr: openPr ?? false,\n ...(parentId ? { parentId } : {}),\n },\n shouldSpawn\n )\n .catch((err: unknown) => {\n // eslint-disable-next-line no-console\n console.error('[createFeature] initializeAndSpawn failed:', err);\n });\n\n return { feature };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to create feature';\n return { error: message };\n }\n}\n","export {pickFolder as '00a970a59b2ee92287fe67e938ead8f423e786cbae'} from 'ACTIONS_MODULE0'\nexport {getDeploymentLogs as '40b4a16819758b6e2b95cb7fda01f3a3442b0cd797'} from 'ACTIONS_MODULE1'\nexport {deployFeature as '40e5e31b1cdc03f1b28416f512c1b8fde4652584c6'} from 'ACTIONS_MODULE2'\nexport {deployRepository as '4072da140dcd33ca38490dead1bdc87b9bcd720650'} from 'ACTIONS_MODULE3'\nexport {stopDeployment as '404b8497bd1c7d1aa64c0778b781a29aa381e82b5b'} from 'ACTIONS_MODULE4'\nexport {getDeploymentStatus as '405c717047a0bcf4588e9797f60ec20025822173ef'} from 'ACTIONS_MODULE5'\nexport {openIde as '40002870c82979d1fd69d787290bce87a547f09ddf'} from 'ACTIONS_MODULE6'\nexport {openShell as '40075f6a1d08a0425fc436891a4d0ded3d57f43ab5'} from 'ACTIONS_MODULE7'\nexport {openFolder as '40b6bf2f915e34a002f2f1dec97d949f9956f48015'} from 'ACTIONS_MODULE8'\nexport {deleteFeature as '40a172efa9626b7aefdc84500163720ad74f9e785a'} from 'ACTIONS_MODULE9'\nexport {addRepository as '40feb0796397e00925c1f0a362fa04cef7e8287fc4'} from 'ACTIONS_MODULE10'\nexport {deleteRepository as '408cbcaeb390adbbc84efb07c97fd31ecde0ac2b15'} from 'ACTIONS_MODULE11'\nexport {getFeatureMetadata as '40c70cd6035002651627e76edd34af8189e316d768'} from 'ACTIONS_MODULE12'\nexport {fetchGraphData as '0098cdddc7f1c513cd8ccb7a1c235610d3f5619023'} from 'ACTIONS_MODULE13'\nexport {getWorkflowDefaults as '00f8d1a7d558cbe24fd4b3322c4a64e6c216bc764f'} from 'ACTIONS_MODULE14'\nexport {createFeature as '4041968dd230b5e9ff91ef8ed1d0c4bf9f7479b7dc'} from 'ACTIONS_MODULE15'\n"],"names":[],"mappings":"wDAEA,EAAA,EAAA,CAAA,CAAA,OAYO,eAAe,IAEpB,GAAM,UAAE,CAAQ,CAAE,CADD,CAAA,CACI,CADJ,EAAA,WAAA,AAAW,IAG5B,MAAO,CACL,cAAe,CACb,SAAU,EAAS,oBAAoB,CAAC,QAAQ,CAChD,UAAW,EAAS,oBAAoB,CAAC,SAAS,CAClD,WAAY,EAAS,oBAAoB,CAAC,UAAU,AACtD,EACA,KAAM,EAAS,oBAAoB,CAAC,4BAA4B,CAChE,OAAQ,EAAS,8BAA8B,AACjD,CACF,0CAbsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,kFCZtB,EAAA,EAAA,CAAA,CAAA,OAwCO,eAAe,EACpB,CAAyB,EAEzB,GAAM,aAAE,CAAW,gBAAE,CAAc,aAAE,CAAW,eAAE,CAAa,MAAE,CAAI,QAAE,CAAM,UAAE,CAAQ,CAAE,CAAG,EAE5F,GAAI,CAAC,GAAa,OAChB,CADwB,KACjB,CAAE,MAAO,yBAA0B,EAG5C,GAAI,CAAC,GAAgB,OACnB,CAD2B,KACpB,CAAE,MAAO,4BAA6B,EAG/C,IAAM,EAxBR,AAwBoB,SAxBX,AAAiB,CAAmB,CAAE,CAAqC,EAClF,IAAI,EAAY,EAEhB,GAAI,GAAe,EAAY,MAAM,CAAG,EAAG,CACzC,IAAM,EAAQ,EAAY,GAAG,CAAC,AAAC,GAAM,CAAC,EAAE,EAAE,EAAE,IAAI,CAAA,CAAE,EAAE,IAAI,CAAC,MACzD,GAAa,CAAC;AAAA;AAAA;AAAqB,EAAE,EAAA,CAAO,AAC9C,CAEA,OAAO,CACT,EAeqC,EAAa,GAC1C,EAAuB,CAC3B,SAAU,GAAe,WAAY,EACrC,UAAW,GAAe,YAAa,EACvC,WAAY,GAAe,aAAc,CAC3C,EAEA,GAAI,CACF,IAAM,EAAuB,CAAA,EAAA,EAAA,OAAA,AAAO,EAAuB,wBAGrD,SAAE,CAAO,aAAE,CAAW,CAAE,CAAG,MAAM,EAAqB,YAAY,CAAC,CACvE,YACA,iBACA,cAAe,EACf,KAAM,IAAQ,EACd,OAAQ,IAAU,EAClB,GAAI,EAAW,UAAE,CAAS,EAAI,CAAC,CAAC,aAChC,CACF,GAsBA,OAlBA,EACG,kBAAkB,CACjB,EACA,WACE,iBACA,EACA,cAAe,EACf,KAAM,GAAQ,GACd,OAAQ,GAAU,GAClB,GAAI,EAAW,UAAE,CAAS,EAAI,CAAC,CAAC,AAClC,EACA,GAED,KAAK,CAAC,AAAC,IAEN,QAAQ,KAAK,CAAC,6CAA8C,EAC9D,GAEK,SAAE,CAAQ,CACnB,CAAE,MAAO,EAAgB,CAEvB,MAAO,CAAE,MADO,CACA,YADiB,MAAQ,EAAM,OAAO,CAAG,0BACjC,CAC1B,CACF,0CA3DsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,2DC1CtB,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
@@ -1,3 +1,3 @@
1
- module.exports=[61402,76052,13008,74607,6542,a=>{"use strict";var b=a.i(92658),c=a.i(96380),d=a.i(12581);async function e(a,b){if(!a.trim())return{approved:!1,error:"Feature id is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{approved:!1,error:"Feature not found"};if(!e.agentRunId)return{approved:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("ApproveAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.approved)return{approved:!1,error:g.reason};return{approved:!0}}catch(a){return{approved:!1,error:a instanceof Error?a.message:"Failed to approve feature"}}}async function f(a,b){if(!a.trim())return{rejected:!1,error:"Feature id is required"};if(!b.trim())return{rejected:!1,error:"Feedback is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{rejected:!1,error:"Feature not found"};if(!e.agentRunId)return{rejected:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("RejectAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.rejected)return{rejected:!1,error:g.reason};return{rejected:!0,iteration:g.iteration,iterationWarning:g.iterationWarning}}catch(a){return{rejected:!1,error:a instanceof Error?a.message:"Failed to reject feature"}}}async function g(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("GetFeatureArtifactUseCase"),d=await b.execute(a),e={question:"Goal",context:d.oneLiner,questions:d.openQuestions.map((a,b)=>({id:`q-${b}`,question:a.question,type:"select",options:(a.options??[]).map((a,c)=>({id:`q-${b}-opt-${c}`,label:a.option,rationale:a.description,...a.selected?{recommended:!0}:{}}))})),finalAction:{id:"approve-reqs",label:"Approve Requirements",description:"Finalize and lock the requirements for implementation"}},f={question:"Goal",context:d.oneLiner,questions:d.openQuestions.filter(a=>a.resolved).map(a=>{let b=a.options?.find(a=>a.selected);return{question:a.question,selectedOption:b?.option??a.answer??"N/A",rationale:a.selectionRationale??b?.description??"",wasRecommended:!1}})};return{questionnaire:e,productDecisions:f,artifact:d}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature artifact"}}}async function h(a){if(!a.trim())return{error:"Feature id is required"};try{var b;let d=(0,c.resolve)("GetResearchArtifactUseCase");return{techDecisions:{name:(b=await d.execute(a)).name,summary:b.summary,decisions:b.decisions,technologies:b.technologies}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load research artifact"}}}async function i(a){if(!a.trim())return{error:"Feature id is required"};try{let b,d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{error:"Feature not found"};let f=e.pr?{url:e.pr.url,number:e.pr.number,status:e.pr.status,commitHash:e.pr.commitHash,ciStatus:e.pr.ciStatus}:void 0,g=e.branch?{source:e.branch,target:"main"}:void 0;try{let d=(0,c.resolve)("GetPlanArtifactUseCase");b=(await d.execute(a)).phases.map(({id:a,name:b,description:c})=>({id:a,name:b,description:c}))}catch{}if(!e.worktreePath)return{pr:f,branch:g,phases:b,warning:f?void 0:"No PR or diff data available"};try{let a=(0,c.resolve)("IGitPrService"),d=await a.getPrDiffSummary(e.worktreePath,"main");return{pr:f,branch:g,phases:b,diffSummary:d}}catch{return{pr:f,branch:g,phases:b,warning:"Diff statistics unavailable"}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load merge review data"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"60eac61a26fe6db2e9a63d9776f5dfcf8569982328",null),a.s(["approveFeature",()=>e],61402),(0,d.ensureServerEntryExports)([f]),(0,b.registerServerReference)(f,"60bf7b2494736f28a6b3432df433df8a72e4029a53",null),a.s(["rejectFeature",()=>f],76052),(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"409023cd0d1bd08e65d341eed803f4f957fa8189cb",null),a.s(["getFeatureArtifact",()=>g],13008),(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"402b0c332c18b16b558101e4d0f876fc7903442e33",null),a.s(["getResearchArtifact",()=>h],74607),(0,d.ensureServerEntryExports)([i]),(0,b.registerServerReference)(i,"40ac843e502f61ebf918c536d3882814568059626c",null),a.s(["getMergeReviewData",()=>i],6542)},10015,a=>{"use strict";var b=a.i(12513),c=a.i(94691),d=a.i(33841),e=a.i(46646),f=a.i(68670),g=a.i(85321),h=a.i(84095),i=a.i(56799),j=a.i(80496),k=a.i(50845),l=a.i(49560),m=a.i(39353),n=a.i(29207),o=a.i(31075),p=a.i(61402),q=a.i(76052),r=a.i(13008),s=a.i(74607),t=a.i(6542);a.s([],92354),a.i(92354),a.s(["00728d4e692735334df2e486cc2e3efd87b74e6d29",()=>o.fetchGraphData,"00e1f0c3b074524064a40012ed97a68f47370ea341",()=>b.pickFolder,"401438cd8f26a671e452aa9197eff29efe0d3cf83d",()=>e.deployRepository,"40160faf0a76810f78df291bae4a1959c91f7e0699",()=>h.openIde,"4027df429860c9e1603699c814175f375933cfd5e3",()=>k.deleteFeature,"402b0c332c18b16b558101e4d0f876fc7903442e33",()=>s.getResearchArtifact,"402dc6644acbd4f34478118c45b23d83f4151b357d",()=>n.getFeatureMetadata,"403eb21f82b3f95741488fadc77104c2dd147697ee",()=>f.stopDeployment,"406b1bb8ddbdf6dbe75cfd1d41108097a8998e3d97",()=>m.deleteRepository,"4085a4e8989dc6dbf096b20f4558c05c645ad0ee6a",()=>d.deployFeature,"409023cd0d1bd08e65d341eed803f4f957fa8189cb",()=>r.getFeatureArtifact,"40932b170bb76634250613fa397dd7d06f35616ba8",()=>g.getDeploymentStatus,"409fc82b651e9e109a5981b93839b6c915a6c1c093",()=>j.openFolder,"40ac843e502f61ebf918c536d3882814568059626c",()=>t.getMergeReviewData,"40aceccdc6eb94bb83ce82c329b6f512e905f73a2b",()=>c.getDeploymentLogs,"40bb1e5fe47f2970352cea06def0646b9c386d8672",()=>l.addRepository,"40d7909be7cff72e56aa38be622310a7d3e53db00f",()=>i.openShell,"60bf7b2494736f28a6b3432df433df8a72e4029a53",()=>q.rejectFeature,"60eac61a26fe6db2e9a63d9776f5dfcf8569982328",()=>p.approveFeature],10015)}];
1
+ module.exports=[61402,76052,13008,74607,6542,a=>{"use strict";var b=a.i(92658),c=a.i(96380),d=a.i(12581);async function e(a,b){if(!a.trim())return{approved:!1,error:"Feature id is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{approved:!1,error:"Feature not found"};if(!e.agentRunId)return{approved:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("ApproveAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.approved)return{approved:!1,error:g.reason};return{approved:!0}}catch(a){return{approved:!1,error:a instanceof Error?a.message:"Failed to approve feature"}}}async function f(a,b){if(!a.trim())return{rejected:!1,error:"Feature id is required"};if(!b.trim())return{rejected:!1,error:"Feedback is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{rejected:!1,error:"Feature not found"};if(!e.agentRunId)return{rejected:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("RejectAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.rejected)return{rejected:!1,error:g.reason};return{rejected:!0,iteration:g.iteration,iterationWarning:g.iterationWarning}}catch(a){return{rejected:!1,error:a instanceof Error?a.message:"Failed to reject feature"}}}async function g(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("GetFeatureArtifactUseCase"),d=await b.execute(a),e={question:"Goal",context:d.oneLiner,questions:d.openQuestions.map((a,b)=>({id:`q-${b}`,question:a.question,type:"select",options:(a.options??[]).map((a,c)=>({id:`q-${b}-opt-${c}`,label:a.option,rationale:a.description,...a.selected?{recommended:!0}:{}}))})),finalAction:{id:"approve-reqs",label:"Approve Requirements",description:"Finalize and lock the requirements for implementation"}},f={question:"Goal",context:d.oneLiner,questions:d.openQuestions.filter(a=>a.resolved).map(a=>{let b=a.options?.find(a=>a.selected);return{question:a.question,selectedOption:b?.option??a.answer??"N/A",rationale:a.selectionRationale??b?.description??"",wasRecommended:!1}})};return{questionnaire:e,productDecisions:f,artifact:d}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature artifact"}}}async function h(a){if(!a.trim())return{error:"Feature id is required"};try{var b;let d=(0,c.resolve)("GetResearchArtifactUseCase");return{techDecisions:{name:(b=await d.execute(a)).name,summary:b.summary,decisions:b.decisions,technologies:b.technologies}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load research artifact"}}}async function i(a){if(!a.trim())return{error:"Feature id is required"};try{let b,d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{error:"Feature not found"};let f=e.pr?{url:e.pr.url,number:e.pr.number,status:e.pr.status,commitHash:e.pr.commitHash,ciStatus:e.pr.ciStatus}:void 0,g=e.branch?{source:e.branch,target:"main"}:void 0;try{let d=(0,c.resolve)("GetPlanArtifactUseCase");b=(await d.execute(a)).phases.map(({id:a,name:b,description:c})=>({id:a,name:b,description:c}))}catch{}if(!e.worktreePath)return{pr:f,branch:g,phases:b,warning:f?void 0:"No PR or diff data available"};try{let a=(0,c.resolve)("IGitPrService"),d=await a.getPrDiffSummary(e.worktreePath,"main");return{pr:f,branch:g,phases:b,diffSummary:d}}catch{return{pr:f,branch:g,phases:b,warning:"Diff statistics unavailable"}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load merge review data"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"60a8fb4d696b01cded3a94a39f08bba73b442f4f00",null),a.s(["approveFeature",()=>e],61402),(0,d.ensureServerEntryExports)([f]),(0,b.registerServerReference)(f,"6051af8416bfb9d8a08ab83b206723a750929377cf",null),a.s(["rejectFeature",()=>f],76052),(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"40d4e32c39d61ce6873d143497e844d445b8fc72c7",null),a.s(["getFeatureArtifact",()=>g],13008),(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"4053b860ca3ecc937c4a2b8de00607f3c8920a3140",null),a.s(["getResearchArtifact",()=>h],74607),(0,d.ensureServerEntryExports)([i]),(0,b.registerServerReference)(i,"4066dd97c7ebf3757ced7aa95e58cd10391e6df32b",null),a.s(["getMergeReviewData",()=>i],6542)},10015,a=>{"use strict";var b=a.i(12513),c=a.i(94691),d=a.i(33841),e=a.i(46646),f=a.i(68670),g=a.i(85321),h=a.i(84095),i=a.i(56799),j=a.i(80496),k=a.i(50845),l=a.i(49560),m=a.i(39353),n=a.i(29207),o=a.i(31075),p=a.i(61402),q=a.i(76052),r=a.i(13008),s=a.i(74607),t=a.i(6542);a.s([],92354),a.i(92354),a.s(["0098cdddc7f1c513cd8ccb7a1c235610d3f5619023",()=>o.fetchGraphData,"00a970a59b2ee92287fe67e938ead8f423e786cbae",()=>b.pickFolder,"40002870c82979d1fd69d787290bce87a547f09ddf",()=>h.openIde,"40075f6a1d08a0425fc436891a4d0ded3d57f43ab5",()=>i.openShell,"404b8497bd1c7d1aa64c0778b781a29aa381e82b5b",()=>f.stopDeployment,"4053b860ca3ecc937c4a2b8de00607f3c8920a3140",()=>s.getResearchArtifact,"405c717047a0bcf4588e9797f60ec20025822173ef",()=>g.getDeploymentStatus,"4066dd97c7ebf3757ced7aa95e58cd10391e6df32b",()=>t.getMergeReviewData,"4072da140dcd33ca38490dead1bdc87b9bcd720650",()=>e.deployRepository,"408cbcaeb390adbbc84efb07c97fd31ecde0ac2b15",()=>m.deleteRepository,"40a172efa9626b7aefdc84500163720ad74f9e785a",()=>k.deleteFeature,"40b4a16819758b6e2b95cb7fda01f3a3442b0cd797",()=>c.getDeploymentLogs,"40b6bf2f915e34a002f2f1dec97d949f9956f48015",()=>j.openFolder,"40c70cd6035002651627e76edd34af8189e316d768",()=>n.getFeatureMetadata,"40d4e32c39d61ce6873d143497e844d445b8fc72c7",()=>r.getFeatureArtifact,"40e5e31b1cdc03f1b28416f512c1b8fde4652584c6",()=>d.deployFeature,"40feb0796397e00925c1f0a362fa04cef7e8287fc4",()=>l.addRepository,"6051af8416bfb9d8a08ab83b206723a750929377cf",()=>q.rejectFeature,"60a8fb4d696b01cded3a94a39f08bba73b442f4f00",()=>p.approveFeature],10015)}];
2
2
 
3
3
  //# sourceMappingURL=src_presentation_web_30d7eeda._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/approve-feature.ts","../../../../../../../src/presentation/web/app/actions/reject-feature.ts","../../../../../../../src/presentation/web/app/actions/get-feature-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-research-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-merge-review-data.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/feature/%5BfeatureId%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { ApproveAgentRunUseCase } from '@shepai/core/application/use-cases/agents/approve-agent-run.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { PrdApprovalPayload } from '@shepai/core/domain/generated/output';\n\nexport async function approveFeature(\n featureId: string,\n payload?: PrdApprovalPayload\n): Promise<{ approved: boolean; error?: string }> {\n if (!featureId.trim()) {\n return { approved: false, error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { approved: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { approved: false, error: 'Feature has no agent run' };\n }\n\n const approveUseCase = resolve<ApproveAgentRunUseCase>('ApproveAgentRunUseCase');\n const result = await approveUseCase.execute(feature.agentRunId, payload);\n\n if (!result.approved) {\n return { approved: false, error: result.reason };\n }\n\n return { approved: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to approve feature';\n return { approved: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { RejectAgentRunUseCase } from '@shepai/core/application/use-cases/agents/reject-agent-run.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport async function rejectFeature(\n featureId: string,\n feedback: string\n): Promise<{\n rejected: boolean;\n iteration?: number;\n iterationWarning?: boolean;\n error?: string;\n}> {\n if (!featureId.trim()) {\n return { rejected: false, error: 'Feature id is required' };\n }\n\n if (!feedback.trim()) {\n return { rejected: false, error: 'Feedback is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { rejected: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { rejected: false, error: 'Feature has no agent run' };\n }\n\n const rejectUseCase = resolve<RejectAgentRunUseCase>('RejectAgentRunUseCase');\n const result = await rejectUseCase.execute(feature.agentRunId, feedback);\n\n if (!result.rejected) {\n return { rejected: false, error: result.reason };\n }\n\n return {\n rejected: true,\n iteration: result.iteration,\n iterationWarning: result.iterationWarning,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to reject feature';\n return { rejected: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetFeatureArtifactUseCase } from '@shepai/core/application/use-cases/features/get-feature-artifact.use-case';\nimport type { FeatureArtifact } from '@shepai/core/domain/generated/output';\nimport type { PrdQuestionnaireData } from '@shepai/core/domain/generated/output';\nimport type { ProductDecisionsSummaryData } from '@/components/common/product-decisions-summary';\n\ninterface GetFeatureArtifactResult {\n questionnaire?: PrdQuestionnaireData;\n productDecisions?: ProductDecisionsSummaryData;\n artifact?: FeatureArtifact;\n error?: string;\n}\n\n/**\n * Map FeatureArtifact openQuestions into the PrdQuestionnaireData shape\n * expected by the PrdQuestionnaireDrawer component.\n */\nfunction toQuestionnaireData(artifact: FeatureArtifact): PrdQuestionnaireData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions.map((oq, idx) => ({\n id: `q-${idx}`,\n question: oq.question,\n type: 'select' as const,\n options: (oq.options ?? []).map((opt, optIdx) => ({\n id: `q-${idx}-opt-${optIdx}`,\n label: opt.option,\n rationale: opt.description,\n ...(opt.selected ? { recommended: true } : {}),\n })),\n })),\n finalAction: {\n id: 'approve-reqs',\n label: 'Approve Requirements',\n description: 'Finalize and lock the requirements for implementation',\n },\n };\n}\n\n/**\n * Map FeatureArtifact openQuestions into a read-only summary for the\n * Product Decisions tab in the tech review drawer.\n */\nfunction toProductDecisionsData(artifact: FeatureArtifact): ProductDecisionsSummaryData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions\n .filter((oq) => oq.resolved)\n .map((oq) => {\n const selected = oq.options?.find((o) => o.selected);\n return {\n question: oq.question,\n selectedOption: selected?.option ?? oq.answer ?? 'N/A',\n rationale: oq.selectionRationale ?? selected?.description ?? '',\n wasRecommended: false,\n };\n }),\n };\n}\n\nexport async function getFeatureArtifact(featureId: string): Promise<GetFeatureArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetFeatureArtifactUseCase>('GetFeatureArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const questionnaire = toQuestionnaireData(artifact);\n const productDecisions = toProductDecisionsData(artifact);\n return { questionnaire, productDecisions, artifact };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load feature artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetResearchArtifactUseCase } from '@shepai/core/application/use-cases/features/get-research-artifact.use-case';\nimport type { ResearchArtifact, TechDecision } from '@shepai/core/domain/generated/output';\n\nexport interface TechDecisionsReviewData {\n name: string;\n summary: string;\n decisions: TechDecision[];\n technologies: string[];\n}\n\ninterface GetResearchArtifactResult {\n techDecisions?: TechDecisionsReviewData;\n error?: string;\n}\n\nfunction toTechDecisionsData(artifact: ResearchArtifact): TechDecisionsReviewData {\n return {\n name: artifact.name,\n summary: artifact.summary,\n decisions: artifact.decisions,\n technologies: artifact.technologies,\n };\n}\n\nexport async function getResearchArtifact(featureId: string): Promise<GetResearchArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetResearchArtifactUseCase>('GetResearchArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const techDecisions = toTechDecisionsData(artifact);\n return { techDecisions };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load research artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { IGitPrService } from '@shepai/core/application/ports/output/services/git-pr-service.interface';\nimport type { GetPlanArtifactUseCase } from '@shepai/core/application/use-cases/features/get-plan-artifact.use-case';\nimport type {\n MergeReviewData,\n MergeReviewPhase,\n} from '@/components/common/merge-review/merge-review-config';\n\ntype GetMergeReviewDataResult = MergeReviewData | { error: string };\n\nexport async function getMergeReviewData(featureId: string): Promise<GetMergeReviewDataResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { error: 'Feature not found' };\n }\n\n const pr = feature.pr\n ? {\n url: feature.pr.url,\n number: feature.pr.number,\n status: feature.pr.status,\n commitHash: feature.pr.commitHash,\n ciStatus: feature.pr.ciStatus,\n }\n : undefined;\n\n const branch = feature.branch ? { source: feature.branch, target: 'main' } : undefined;\n\n // Load plan phases (best-effort)\n let phases: MergeReviewPhase[] | undefined;\n try {\n const planUseCase = resolve<GetPlanArtifactUseCase>('GetPlanArtifactUseCase');\n const plan = await planUseCase.execute(featureId);\n phases = plan.phases.map(({ id, name, description }) => ({ id, name, description }));\n } catch {\n // Plan unavailable — not critical\n }\n\n if (!feature.worktreePath) {\n return { pr, branch, phases, warning: pr ? undefined : 'No PR or diff data available' };\n }\n\n try {\n const gitPrService = resolve<IGitPrService>('IGitPrService');\n const diffSummary = await gitPrService.getPrDiffSummary(feature.worktreePath, 'main');\n return { pr, branch, phases, diffSummary };\n } catch {\n return { pr, branch, phases, warning: 'Diff statistics unavailable' };\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load merge review data';\n return { error: message };\n }\n}\n","export {pickFolder as '00e1f0c3b074524064a40012ed97a68f47370ea341'} from 'ACTIONS_MODULE0'\nexport {getDeploymentLogs as '40aceccdc6eb94bb83ce82c329b6f512e905f73a2b'} from 'ACTIONS_MODULE1'\nexport {deployFeature as '4085a4e8989dc6dbf096b20f4558c05c645ad0ee6a'} from 'ACTIONS_MODULE2'\nexport {deployRepository as '401438cd8f26a671e452aa9197eff29efe0d3cf83d'} from 'ACTIONS_MODULE3'\nexport {stopDeployment as '403eb21f82b3f95741488fadc77104c2dd147697ee'} from 'ACTIONS_MODULE4'\nexport {getDeploymentStatus as '40932b170bb76634250613fa397dd7d06f35616ba8'} from 'ACTIONS_MODULE5'\nexport {openIde as '40160faf0a76810f78df291bae4a1959c91f7e0699'} from 'ACTIONS_MODULE6'\nexport {openShell as '40d7909be7cff72e56aa38be622310a7d3e53db00f'} from 'ACTIONS_MODULE7'\nexport {openFolder as '409fc82b651e9e109a5981b93839b6c915a6c1c093'} from 'ACTIONS_MODULE8'\nexport {deleteFeature as '4027df429860c9e1603699c814175f375933cfd5e3'} from 'ACTIONS_MODULE9'\nexport {addRepository as '40bb1e5fe47f2970352cea06def0646b9c386d8672'} from 'ACTIONS_MODULE10'\nexport {deleteRepository as '406b1bb8ddbdf6dbe75cfd1d41108097a8998e3d97'} from 'ACTIONS_MODULE11'\nexport {getFeatureMetadata as '402dc6644acbd4f34478118c45b23d83f4151b357d'} from 'ACTIONS_MODULE12'\nexport {fetchGraphData as '00728d4e692735334df2e486cc2e3efd87b74e6d29'} from 'ACTIONS_MODULE13'\nexport {approveFeature as '60eac61a26fe6db2e9a63d9776f5dfcf8569982328'} from 'ACTIONS_MODULE14'\nexport {rejectFeature as '60bf7b2494736f28a6b3432df433df8a72e4029a53'} from 'ACTIONS_MODULE15'\nexport {getFeatureArtifact as '409023cd0d1bd08e65d341eed803f4f957fa8189cb'} from 'ACTIONS_MODULE16'\nexport {getResearchArtifact as '402b0c332c18b16b558101e4d0f876fc7903442e33'} from 'ACTIONS_MODULE17'\nexport {getMergeReviewData as '40ac843e502f61ebf918c536d3882814568059626c'} from 'ACTIONS_MODULE18'\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/approve-feature.ts","../../../../../../../src/presentation/web/app/actions/reject-feature.ts","../../../../../../../src/presentation/web/app/actions/get-feature-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-research-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-merge-review-data.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/feature/%5BfeatureId%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { ApproveAgentRunUseCase } from '@shepai/core/application/use-cases/agents/approve-agent-run.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { PrdApprovalPayload } from '@shepai/core/domain/generated/output';\n\nexport async function approveFeature(\n featureId: string,\n payload?: PrdApprovalPayload\n): Promise<{ approved: boolean; error?: string }> {\n if (!featureId.trim()) {\n return { approved: false, error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { approved: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { approved: false, error: 'Feature has no agent run' };\n }\n\n const approveUseCase = resolve<ApproveAgentRunUseCase>('ApproveAgentRunUseCase');\n const result = await approveUseCase.execute(feature.agentRunId, payload);\n\n if (!result.approved) {\n return { approved: false, error: result.reason };\n }\n\n return { approved: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to approve feature';\n return { approved: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { RejectAgentRunUseCase } from '@shepai/core/application/use-cases/agents/reject-agent-run.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport async function rejectFeature(\n featureId: string,\n feedback: string\n): Promise<{\n rejected: boolean;\n iteration?: number;\n iterationWarning?: boolean;\n error?: string;\n}> {\n if (!featureId.trim()) {\n return { rejected: false, error: 'Feature id is required' };\n }\n\n if (!feedback.trim()) {\n return { rejected: false, error: 'Feedback is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { rejected: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { rejected: false, error: 'Feature has no agent run' };\n }\n\n const rejectUseCase = resolve<RejectAgentRunUseCase>('RejectAgentRunUseCase');\n const result = await rejectUseCase.execute(feature.agentRunId, feedback);\n\n if (!result.rejected) {\n return { rejected: false, error: result.reason };\n }\n\n return {\n rejected: true,\n iteration: result.iteration,\n iterationWarning: result.iterationWarning,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to reject feature';\n return { rejected: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetFeatureArtifactUseCase } from '@shepai/core/application/use-cases/features/get-feature-artifact.use-case';\nimport type { FeatureArtifact } from '@shepai/core/domain/generated/output';\nimport type { PrdQuestionnaireData } from '@shepai/core/domain/generated/output';\nimport type { ProductDecisionsSummaryData } from '@/components/common/product-decisions-summary';\n\ninterface GetFeatureArtifactResult {\n questionnaire?: PrdQuestionnaireData;\n productDecisions?: ProductDecisionsSummaryData;\n artifact?: FeatureArtifact;\n error?: string;\n}\n\n/**\n * Map FeatureArtifact openQuestions into the PrdQuestionnaireData shape\n * expected by the PrdQuestionnaireDrawer component.\n */\nfunction toQuestionnaireData(artifact: FeatureArtifact): PrdQuestionnaireData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions.map((oq, idx) => ({\n id: `q-${idx}`,\n question: oq.question,\n type: 'select' as const,\n options: (oq.options ?? []).map((opt, optIdx) => ({\n id: `q-${idx}-opt-${optIdx}`,\n label: opt.option,\n rationale: opt.description,\n ...(opt.selected ? { recommended: true } : {}),\n })),\n })),\n finalAction: {\n id: 'approve-reqs',\n label: 'Approve Requirements',\n description: 'Finalize and lock the requirements for implementation',\n },\n };\n}\n\n/**\n * Map FeatureArtifact openQuestions into a read-only summary for the\n * Product Decisions tab in the tech review drawer.\n */\nfunction toProductDecisionsData(artifact: FeatureArtifact): ProductDecisionsSummaryData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions\n .filter((oq) => oq.resolved)\n .map((oq) => {\n const selected = oq.options?.find((o) => o.selected);\n return {\n question: oq.question,\n selectedOption: selected?.option ?? oq.answer ?? 'N/A',\n rationale: oq.selectionRationale ?? selected?.description ?? '',\n wasRecommended: false,\n };\n }),\n };\n}\n\nexport async function getFeatureArtifact(featureId: string): Promise<GetFeatureArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetFeatureArtifactUseCase>('GetFeatureArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const questionnaire = toQuestionnaireData(artifact);\n const productDecisions = toProductDecisionsData(artifact);\n return { questionnaire, productDecisions, artifact };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load feature artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetResearchArtifactUseCase } from '@shepai/core/application/use-cases/features/get-research-artifact.use-case';\nimport type { ResearchArtifact, TechDecision } from '@shepai/core/domain/generated/output';\n\nexport interface TechDecisionsReviewData {\n name: string;\n summary: string;\n decisions: TechDecision[];\n technologies: string[];\n}\n\ninterface GetResearchArtifactResult {\n techDecisions?: TechDecisionsReviewData;\n error?: string;\n}\n\nfunction toTechDecisionsData(artifact: ResearchArtifact): TechDecisionsReviewData {\n return {\n name: artifact.name,\n summary: artifact.summary,\n decisions: artifact.decisions,\n technologies: artifact.technologies,\n };\n}\n\nexport async function getResearchArtifact(featureId: string): Promise<GetResearchArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetResearchArtifactUseCase>('GetResearchArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const techDecisions = toTechDecisionsData(artifact);\n return { techDecisions };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load research artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { IGitPrService } from '@shepai/core/application/ports/output/services/git-pr-service.interface';\nimport type { GetPlanArtifactUseCase } from '@shepai/core/application/use-cases/features/get-plan-artifact.use-case';\nimport type {\n MergeReviewData,\n MergeReviewPhase,\n} from '@/components/common/merge-review/merge-review-config';\n\ntype GetMergeReviewDataResult = MergeReviewData | { error: string };\n\nexport async function getMergeReviewData(featureId: string): Promise<GetMergeReviewDataResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { error: 'Feature not found' };\n }\n\n const pr = feature.pr\n ? {\n url: feature.pr.url,\n number: feature.pr.number,\n status: feature.pr.status,\n commitHash: feature.pr.commitHash,\n ciStatus: feature.pr.ciStatus,\n }\n : undefined;\n\n const branch = feature.branch ? { source: feature.branch, target: 'main' } : undefined;\n\n // Load plan phases (best-effort)\n let phases: MergeReviewPhase[] | undefined;\n try {\n const planUseCase = resolve<GetPlanArtifactUseCase>('GetPlanArtifactUseCase');\n const plan = await planUseCase.execute(featureId);\n phases = plan.phases.map(({ id, name, description }) => ({ id, name, description }));\n } catch {\n // Plan unavailable — not critical\n }\n\n if (!feature.worktreePath) {\n return { pr, branch, phases, warning: pr ? undefined : 'No PR or diff data available' };\n }\n\n try {\n const gitPrService = resolve<IGitPrService>('IGitPrService');\n const diffSummary = await gitPrService.getPrDiffSummary(feature.worktreePath, 'main');\n return { pr, branch, phases, diffSummary };\n } catch {\n return { pr, branch, phases, warning: 'Diff statistics unavailable' };\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load merge review data';\n return { error: message };\n }\n}\n","export {pickFolder as '00a970a59b2ee92287fe67e938ead8f423e786cbae'} from 'ACTIONS_MODULE0'\nexport {getDeploymentLogs as '40b4a16819758b6e2b95cb7fda01f3a3442b0cd797'} from 'ACTIONS_MODULE1'\nexport {deployFeature as '40e5e31b1cdc03f1b28416f512c1b8fde4652584c6'} from 'ACTIONS_MODULE2'\nexport {deployRepository as '4072da140dcd33ca38490dead1bdc87b9bcd720650'} from 'ACTIONS_MODULE3'\nexport {stopDeployment as '404b8497bd1c7d1aa64c0778b781a29aa381e82b5b'} from 'ACTIONS_MODULE4'\nexport {getDeploymentStatus as '405c717047a0bcf4588e9797f60ec20025822173ef'} from 'ACTIONS_MODULE5'\nexport {openIde as '40002870c82979d1fd69d787290bce87a547f09ddf'} from 'ACTIONS_MODULE6'\nexport {openShell as '40075f6a1d08a0425fc436891a4d0ded3d57f43ab5'} from 'ACTIONS_MODULE7'\nexport {openFolder as '40b6bf2f915e34a002f2f1dec97d949f9956f48015'} from 'ACTIONS_MODULE8'\nexport {deleteFeature as '40a172efa9626b7aefdc84500163720ad74f9e785a'} from 'ACTIONS_MODULE9'\nexport {addRepository as '40feb0796397e00925c1f0a362fa04cef7e8287fc4'} from 'ACTIONS_MODULE10'\nexport {deleteRepository as '408cbcaeb390adbbc84efb07c97fd31ecde0ac2b15'} from 'ACTIONS_MODULE11'\nexport {getFeatureMetadata as '40c70cd6035002651627e76edd34af8189e316d768'} from 'ACTIONS_MODULE12'\nexport {fetchGraphData as '0098cdddc7f1c513cd8ccb7a1c235610d3f5619023'} from 'ACTIONS_MODULE13'\nexport {approveFeature as '60a8fb4d696b01cded3a94a39f08bba73b442f4f00'} from 'ACTIONS_MODULE14'\nexport {rejectFeature as '6051af8416bfb9d8a08ab83b206723a750929377cf'} from 'ACTIONS_MODULE15'\nexport {getFeatureArtifact as '40d4e32c39d61ce6873d143497e844d445b8fc72c7'} from 'ACTIONS_MODULE16'\nexport {getResearchArtifact as '4053b860ca3ecc937c4a2b8de00607f3c8920a3140'} from 'ACTIONS_MODULE17'\nexport {getMergeReviewData as '4066dd97c7ebf3757ced7aa95e58cd10391e6df32b'} from 'ACTIONS_MODULE18'\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
- module.exports=[24860,a=>{"use strict";var b=a.i(92658),c=a.i(33244);async function d(){let{workflow:a}=(0,c.getSettings)();return{approvalGates:{allowPrd:a.approvalGateDefaults.allowPrd,allowPlan:a.approvalGateDefaults.allowPlan,allowMerge:a.approvalGateDefaults.allowMerge},push:a.approvalGateDefaults.pushOnImplementationComplete,openPr:a.openPrOnImplementationComplete}}(0,a.i(12581).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"004b166406ec90f4140a1f8d6ad71d1b7b2db90a99",null),a.s(["getWorkflowDefaults",()=>d])},77605,a=>{"use strict";var b=a.i(92658),c=a.i(96380);async function d(a){let{description:b,repositoryPath:d,attachments:e,approvalGates:f,push:g,openPr:h,parentId:i}=a;if(!b?.trim())return{error:"description is required"};if(!d?.trim())return{error:"repositoryPath is required"};let j=function(a,b){let c=a;if(b&&b.length>0){let a=b.map(a=>`- ${a.path}`).join("\n");c+=`
1
+ module.exports=[24860,a=>{"use strict";var b=a.i(92658),c=a.i(33244);async function d(){let{workflow:a}=(0,c.getSettings)();return{approvalGates:{allowPrd:a.approvalGateDefaults.allowPrd,allowPlan:a.approvalGateDefaults.allowPlan,allowMerge:a.approvalGateDefaults.allowMerge},push:a.approvalGateDefaults.pushOnImplementationComplete,openPr:a.openPrOnImplementationComplete}}(0,a.i(12581).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"00f8d1a7d558cbe24fd4b3322c4a64e6c216bc764f",null),a.s(["getWorkflowDefaults",()=>d])},77605,a=>{"use strict";var b=a.i(92658),c=a.i(96380);async function d(a){let{description:b,repositoryPath:d,attachments:e,approvalGates:f,push:g,openPr:h,parentId:i}=a;if(!b?.trim())return{error:"description is required"};if(!d?.trim())return{error:"repositoryPath is required"};let j=function(a,b){let c=a;if(b&&b.length>0){let a=b.map(a=>`- ${a.path}`).join("\n");c+=`
2
2
 
3
3
  Attached files:
4
- ${a}`}return c}(b,e),k={allowPrd:f?.allowPrd??!1,allowPlan:f?.allowPlan??!1,allowMerge:f?.allowMerge??!1};try{let a=(0,c.resolve)("CreateFeatureUseCase"),{feature:e,shouldSpawn:f}=await a.createRecord({userInput:j,repositoryPath:d,approvalGates:k,push:g??!1,openPr:h??!1,...i?{parentId:i}:{},description:b});return a.initializeAndSpawn(e,{userInput:j,repositoryPath:d,approvalGates:k,push:g??!1,openPr:h??!1,...i?{parentId:i}:{}},f).catch(a=>{console.error("[createFeature] initializeAndSpawn failed:",a)}),{feature:e}}catch(a){return{error:a instanceof Error?a.message:"Failed to create feature"}}}(0,a.i(12581).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"408a7c515a9aa2a742c1194da1ba0caa0ee059b5ba",null),a.s(["createFeature",()=>d])},80118,a=>{"use strict";var b=a.i(12513),c=a.i(94691),d=a.i(33841),e=a.i(46646),f=a.i(68670),g=a.i(85321),h=a.i(84095),i=a.i(56799),j=a.i(80496),k=a.i(50845),l=a.i(49560),m=a.i(39353),n=a.i(29207),o=a.i(31075),p=a.i(24860),q=a.i(77605);a.s([],18756),a.i(18756),a.s(["004b166406ec90f4140a1f8d6ad71d1b7b2db90a99",()=>p.getWorkflowDefaults,"00728d4e692735334df2e486cc2e3efd87b74e6d29",()=>o.fetchGraphData,"00e1f0c3b074524064a40012ed97a68f47370ea341",()=>b.pickFolder,"401438cd8f26a671e452aa9197eff29efe0d3cf83d",()=>e.deployRepository,"40160faf0a76810f78df291bae4a1959c91f7e0699",()=>h.openIde,"4027df429860c9e1603699c814175f375933cfd5e3",()=>k.deleteFeature,"402dc6644acbd4f34478118c45b23d83f4151b357d",()=>n.getFeatureMetadata,"403eb21f82b3f95741488fadc77104c2dd147697ee",()=>f.stopDeployment,"406b1bb8ddbdf6dbe75cfd1d41108097a8998e3d97",()=>m.deleteRepository,"4085a4e8989dc6dbf096b20f4558c05c645ad0ee6a",()=>d.deployFeature,"408a7c515a9aa2a742c1194da1ba0caa0ee059b5ba",()=>q.createFeature,"40932b170bb76634250613fa397dd7d06f35616ba8",()=>g.getDeploymentStatus,"409fc82b651e9e109a5981b93839b6c915a6c1c093",()=>j.openFolder,"40aceccdc6eb94bb83ce82c329b6f512e905f73a2b",()=>c.getDeploymentLogs,"40bb1e5fe47f2970352cea06def0646b9c386d8672",()=>l.addRepository,"40d7909be7cff72e56aa38be622310a7d3e53db00f",()=>i.openShell],80118)}];
4
+ ${a}`}return c}(b,e),k={allowPrd:f?.allowPrd??!1,allowPlan:f?.allowPlan??!1,allowMerge:f?.allowMerge??!1};try{let a=(0,c.resolve)("CreateFeatureUseCase"),{feature:e,shouldSpawn:f}=await a.createRecord({userInput:j,repositoryPath:d,approvalGates:k,push:g??!1,openPr:h??!1,...i?{parentId:i}:{},description:b});return a.initializeAndSpawn(e,{userInput:j,repositoryPath:d,approvalGates:k,push:g??!1,openPr:h??!1,...i?{parentId:i}:{}},f).catch(a=>{console.error("[createFeature] initializeAndSpawn failed:",a)}),{feature:e}}catch(a){return{error:a instanceof Error?a.message:"Failed to create feature"}}}(0,a.i(12581).ensureServerEntryExports)([d]),(0,b.registerServerReference)(d,"4041968dd230b5e9ff91ef8ed1d0c4bf9f7479b7dc",null),a.s(["createFeature",()=>d])},80118,a=>{"use strict";var b=a.i(12513),c=a.i(94691),d=a.i(33841),e=a.i(46646),f=a.i(68670),g=a.i(85321),h=a.i(84095),i=a.i(56799),j=a.i(80496),k=a.i(50845),l=a.i(49560),m=a.i(39353),n=a.i(29207),o=a.i(31075),p=a.i(24860),q=a.i(77605);a.s([],18756),a.i(18756),a.s(["0098cdddc7f1c513cd8ccb7a1c235610d3f5619023",()=>o.fetchGraphData,"00a970a59b2ee92287fe67e938ead8f423e786cbae",()=>b.pickFolder,"00f8d1a7d558cbe24fd4b3322c4a64e6c216bc764f",()=>p.getWorkflowDefaults,"40002870c82979d1fd69d787290bce87a547f09ddf",()=>h.openIde,"40075f6a1d08a0425fc436891a4d0ded3d57f43ab5",()=>i.openShell,"4041968dd230b5e9ff91ef8ed1d0c4bf9f7479b7dc",()=>q.createFeature,"404b8497bd1c7d1aa64c0778b781a29aa381e82b5b",()=>f.stopDeployment,"405c717047a0bcf4588e9797f60ec20025822173ef",()=>g.getDeploymentStatus,"4072da140dcd33ca38490dead1bdc87b9bcd720650",()=>e.deployRepository,"408cbcaeb390adbbc84efb07c97fd31ecde0ac2b15",()=>m.deleteRepository,"40a172efa9626b7aefdc84500163720ad74f9e785a",()=>k.deleteFeature,"40b4a16819758b6e2b95cb7fda01f3a3442b0cd797",()=>c.getDeploymentLogs,"40b6bf2f915e34a002f2f1dec97d949f9956f48015",()=>j.openFolder,"40c70cd6035002651627e76edd34af8189e316d768",()=>n.getFeatureMetadata,"40e5e31b1cdc03f1b28416f512c1b8fde4652584c6",()=>d.deployFeature,"40feb0796397e00925c1f0a362fa04cef7e8287fc4",()=>l.addRepository],80118)}];
5
5
 
6
6
  //# sourceMappingURL=src_presentation_web_459cb687._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-workflow-defaults.ts","../../../../../../../src/presentation/web/app/actions/create-feature.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/create/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { getSettings } from '@shepai/core/infrastructure/services/settings.service';\n\nexport interface WorkflowDefaults {\n approvalGates: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n };\n push: boolean;\n openPr: boolean;\n}\n\nexport async function getWorkflowDefaults(): Promise<WorkflowDefaults> {\n const settings = getSettings();\n const { workflow } = settings;\n\n return {\n approvalGates: {\n allowPrd: workflow.approvalGateDefaults.allowPrd,\n allowPlan: workflow.approvalGateDefaults.allowPlan,\n allowMerge: workflow.approvalGateDefaults.allowMerge,\n },\n push: workflow.approvalGateDefaults.pushOnImplementationComplete,\n openPr: workflow.openPrOnImplementationComplete,\n };\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { CreateFeatureUseCase } from '@shepai/core/application/use-cases/features/create/create-feature.use-case';\nimport type { Feature } from '@shepai/core/domain/generated/output';\n\ninterface Attachment {\n path: string;\n name: string;\n}\n\ninterface ApprovalGates {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n}\n\ninterface CreateFeatureInput {\n description: string;\n repositoryPath: string;\n attachments?: Attachment[];\n approvalGates?: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge?: boolean;\n };\n push?: boolean;\n openPr?: boolean;\n parentId?: string;\n}\n\nfunction composeUserInput(description: string, attachments: Attachment[] | undefined): string {\n let userInput = description;\n\n if (attachments && attachments.length > 0) {\n const paths = attachments.map((a) => `- ${a.path}`).join('\\n');\n userInput += `\\n\\nAttached files:\\n${paths}`;\n }\n\n return userInput;\n}\n\nexport async function createFeature(\n input: CreateFeatureInput\n): Promise<{ feature?: Feature; error?: string }> {\n const { description, repositoryPath, attachments, approvalGates, push, openPr, parentId } = input;\n\n if (!description?.trim()) {\n return { error: 'description is required' };\n }\n\n if (!repositoryPath?.trim()) {\n return { error: 'repositoryPath is required' };\n }\n\n const userInput = composeUserInput(description, attachments);\n const gates: ApprovalGates = {\n allowPrd: approvalGates?.allowPrd ?? false,\n allowPlan: approvalGates?.allowPlan ?? false,\n allowMerge: approvalGates?.allowMerge ?? false,\n };\n\n try {\n const createFeatureUseCase = resolve<CreateFeatureUseCase>('CreateFeatureUseCase');\n\n // Phase 1 (fast): create DB record with real UUID — returns immediately\n const { feature, shouldSpawn } = await createFeatureUseCase.createRecord({\n userInput,\n repositoryPath,\n approvalGates: gates,\n push: push ?? false,\n openPr: openPr ?? false,\n ...(parentId ? { parentId } : {}),\n description,\n });\n\n // Phase 2 (background): metadata generation, worktree, spec, agent spawn\n // Fire-and-forget — the UI gets the real feature ID immediately\n createFeatureUseCase\n .initializeAndSpawn(\n feature,\n {\n userInput,\n repositoryPath,\n approvalGates: gates,\n push: push ?? false,\n openPr: openPr ?? false,\n ...(parentId ? { parentId } : {}),\n },\n shouldSpawn\n )\n .catch((err: unknown) => {\n // eslint-disable-next-line no-console\n console.error('[createFeature] initializeAndSpawn failed:', err);\n });\n\n return { feature };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to create feature';\n return { error: message };\n }\n}\n","export {pickFolder as '00e1f0c3b074524064a40012ed97a68f47370ea341'} from 'ACTIONS_MODULE0'\nexport {getDeploymentLogs as '40aceccdc6eb94bb83ce82c329b6f512e905f73a2b'} from 'ACTIONS_MODULE1'\nexport {deployFeature as '4085a4e8989dc6dbf096b20f4558c05c645ad0ee6a'} from 'ACTIONS_MODULE2'\nexport {deployRepository as '401438cd8f26a671e452aa9197eff29efe0d3cf83d'} from 'ACTIONS_MODULE3'\nexport {stopDeployment as '403eb21f82b3f95741488fadc77104c2dd147697ee'} from 'ACTIONS_MODULE4'\nexport {getDeploymentStatus as '40932b170bb76634250613fa397dd7d06f35616ba8'} from 'ACTIONS_MODULE5'\nexport {openIde as '40160faf0a76810f78df291bae4a1959c91f7e0699'} from 'ACTIONS_MODULE6'\nexport {openShell as '40d7909be7cff72e56aa38be622310a7d3e53db00f'} from 'ACTIONS_MODULE7'\nexport {openFolder as '409fc82b651e9e109a5981b93839b6c915a6c1c093'} from 'ACTIONS_MODULE8'\nexport {deleteFeature as '4027df429860c9e1603699c814175f375933cfd5e3'} from 'ACTIONS_MODULE9'\nexport {addRepository as '40bb1e5fe47f2970352cea06def0646b9c386d8672'} from 'ACTIONS_MODULE10'\nexport {deleteRepository as '406b1bb8ddbdf6dbe75cfd1d41108097a8998e3d97'} from 'ACTIONS_MODULE11'\nexport {getFeatureMetadata as '402dc6644acbd4f34478118c45b23d83f4151b357d'} from 'ACTIONS_MODULE12'\nexport {fetchGraphData as '00728d4e692735334df2e486cc2e3efd87b74e6d29'} from 'ACTIONS_MODULE13'\nexport {getWorkflowDefaults as '004b166406ec90f4140a1f8d6ad71d1b7b2db90a99'} from 'ACTIONS_MODULE14'\nexport {createFeature as '408a7c515a9aa2a742c1194da1ba0caa0ee059b5ba'} from 'ACTIONS_MODULE15'\n"],"names":[],"mappings":"wDAEA,EAAA,EAAA,CAAA,CAAA,OAYO,eAAe,IAEpB,GAAM,UAAE,CAAQ,CAAE,CADD,CAAA,CACI,CADJ,EAAA,WAAA,AAAW,IAG5B,MAAO,CACL,cAAe,CACb,SAAU,EAAS,oBAAoB,CAAC,QAAQ,CAChD,UAAW,EAAS,oBAAoB,CAAC,SAAS,CAClD,WAAY,EAAS,oBAAoB,CAAC,UAAU,AACtD,EACA,KAAM,EAAS,oBAAoB,CAAC,4BAA4B,CAChE,OAAQ,EAAS,8BAA8B,AACjD,CACF,0CAbsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,kFCZtB,EAAA,EAAA,CAAA,CAAA,OAwCO,eAAe,EACpB,CAAyB,EAEzB,GAAM,aAAE,CAAW,gBAAE,CAAc,aAAE,CAAW,eAAE,CAAa,MAAE,CAAI,QAAE,CAAM,UAAE,CAAQ,CAAE,CAAG,EAE5F,GAAI,CAAC,GAAa,OAChB,CADwB,KACjB,CAAE,MAAO,yBAA0B,EAG5C,GAAI,CAAC,GAAgB,OACnB,CAD2B,KACpB,CAAE,MAAO,4BAA6B,EAG/C,IAAM,EAxBR,AAwBoB,SAxBX,AAAiB,CAAmB,CAAE,CAAqC,EAClF,IAAI,EAAY,EAEhB,GAAI,GAAe,EAAY,MAAM,CAAG,EAAG,CACzC,IAAM,EAAQ,EAAY,GAAG,CAAC,AAAC,GAAM,CAAC,EAAE,EAAE,EAAE,IAAI,CAAA,CAAE,EAAE,IAAI,CAAC,MACzD,GAAa,CAAC;AAAA;AAAA;AAAqB,EAAE,EAAA,CAAO,AAC9C,CAEA,OAAO,CACT,EAeqC,EAAa,GAC1C,EAAuB,CAC3B,SAAU,GAAe,WAAY,EACrC,UAAW,GAAe,YAAa,EACvC,WAAY,GAAe,aAAc,CAC3C,EAEA,GAAI,CACF,IAAM,EAAuB,CAAA,EAAA,EAAA,OAAA,AAAO,EAAuB,wBAGrD,SAAE,CAAO,aAAE,CAAW,CAAE,CAAG,MAAM,EAAqB,YAAY,CAAC,CACvE,YACA,iBACA,cAAe,EACf,KAAM,IAAQ,EACd,OAAQ,IAAU,EAClB,GAAI,EAAW,UAAE,CAAS,EAAI,CAAC,CAAC,aAChC,CACF,GAsBA,OAlBA,EACG,kBAAkB,CACjB,EACA,WACE,iBACA,EACA,cAAe,EACf,KAAM,GAAQ,GACd,OAAQ,GAAU,GAClB,GAAI,EAAW,UAAE,CAAS,EAAI,CAAC,CAAC,AAClC,EACA,GAED,KAAK,CAAC,AAAC,IAEN,QAAQ,KAAK,CAAC,6CAA8C,EAC9D,GAEK,SAAE,CAAQ,CACnB,CAAE,MAAO,EAAgB,CAEvB,MAAO,CAAE,MADO,CACA,YADiB,MAAQ,EAAM,OAAO,CAAG,0BACjC,CAC1B,CACF,0CA3DsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,2DC1CtB,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/get-workflow-defaults.ts","../../../../../../../src/presentation/web/app/actions/create-feature.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/create/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { getSettings } from '@shepai/core/infrastructure/services/settings.service';\n\nexport interface WorkflowDefaults {\n approvalGates: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n };\n push: boolean;\n openPr: boolean;\n}\n\nexport async function getWorkflowDefaults(): Promise<WorkflowDefaults> {\n const settings = getSettings();\n const { workflow } = settings;\n\n return {\n approvalGates: {\n allowPrd: workflow.approvalGateDefaults.allowPrd,\n allowPlan: workflow.approvalGateDefaults.allowPlan,\n allowMerge: workflow.approvalGateDefaults.allowMerge,\n },\n push: workflow.approvalGateDefaults.pushOnImplementationComplete,\n openPr: workflow.openPrOnImplementationComplete,\n };\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { CreateFeatureUseCase } from '@shepai/core/application/use-cases/features/create/create-feature.use-case';\nimport type { Feature } from '@shepai/core/domain/generated/output';\n\ninterface Attachment {\n path: string;\n name: string;\n}\n\ninterface ApprovalGates {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge: boolean;\n}\n\ninterface CreateFeatureInput {\n description: string;\n repositoryPath: string;\n attachments?: Attachment[];\n approvalGates?: {\n allowPrd: boolean;\n allowPlan: boolean;\n allowMerge?: boolean;\n };\n push?: boolean;\n openPr?: boolean;\n parentId?: string;\n}\n\nfunction composeUserInput(description: string, attachments: Attachment[] | undefined): string {\n let userInput = description;\n\n if (attachments && attachments.length > 0) {\n const paths = attachments.map((a) => `- ${a.path}`).join('\\n');\n userInput += `\\n\\nAttached files:\\n${paths}`;\n }\n\n return userInput;\n}\n\nexport async function createFeature(\n input: CreateFeatureInput\n): Promise<{ feature?: Feature; error?: string }> {\n const { description, repositoryPath, attachments, approvalGates, push, openPr, parentId } = input;\n\n if (!description?.trim()) {\n return { error: 'description is required' };\n }\n\n if (!repositoryPath?.trim()) {\n return { error: 'repositoryPath is required' };\n }\n\n const userInput = composeUserInput(description, attachments);\n const gates: ApprovalGates = {\n allowPrd: approvalGates?.allowPrd ?? false,\n allowPlan: approvalGates?.allowPlan ?? false,\n allowMerge: approvalGates?.allowMerge ?? false,\n };\n\n try {\n const createFeatureUseCase = resolve<CreateFeatureUseCase>('CreateFeatureUseCase');\n\n // Phase 1 (fast): create DB record with real UUID — returns immediately\n const { feature, shouldSpawn } = await createFeatureUseCase.createRecord({\n userInput,\n repositoryPath,\n approvalGates: gates,\n push: push ?? false,\n openPr: openPr ?? false,\n ...(parentId ? { parentId } : {}),\n description,\n });\n\n // Phase 2 (background): metadata generation, worktree, spec, agent spawn\n // Fire-and-forget — the UI gets the real feature ID immediately\n createFeatureUseCase\n .initializeAndSpawn(\n feature,\n {\n userInput,\n repositoryPath,\n approvalGates: gates,\n push: push ?? false,\n openPr: openPr ?? false,\n ...(parentId ? { parentId } : {}),\n },\n shouldSpawn\n )\n .catch((err: unknown) => {\n // eslint-disable-next-line no-console\n console.error('[createFeature] initializeAndSpawn failed:', err);\n });\n\n return { feature };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to create feature';\n return { error: message };\n }\n}\n","export {pickFolder as '00a970a59b2ee92287fe67e938ead8f423e786cbae'} from 'ACTIONS_MODULE0'\nexport {getDeploymentLogs as '40b4a16819758b6e2b95cb7fda01f3a3442b0cd797'} from 'ACTIONS_MODULE1'\nexport {deployFeature as '40e5e31b1cdc03f1b28416f512c1b8fde4652584c6'} from 'ACTIONS_MODULE2'\nexport {deployRepository as '4072da140dcd33ca38490dead1bdc87b9bcd720650'} from 'ACTIONS_MODULE3'\nexport {stopDeployment as '404b8497bd1c7d1aa64c0778b781a29aa381e82b5b'} from 'ACTIONS_MODULE4'\nexport {getDeploymentStatus as '405c717047a0bcf4588e9797f60ec20025822173ef'} from 'ACTIONS_MODULE5'\nexport {openIde as '40002870c82979d1fd69d787290bce87a547f09ddf'} from 'ACTIONS_MODULE6'\nexport {openShell as '40075f6a1d08a0425fc436891a4d0ded3d57f43ab5'} from 'ACTIONS_MODULE7'\nexport {openFolder as '40b6bf2f915e34a002f2f1dec97d949f9956f48015'} from 'ACTIONS_MODULE8'\nexport {deleteFeature as '40a172efa9626b7aefdc84500163720ad74f9e785a'} from 'ACTIONS_MODULE9'\nexport {addRepository as '40feb0796397e00925c1f0a362fa04cef7e8287fc4'} from 'ACTIONS_MODULE10'\nexport {deleteRepository as '408cbcaeb390adbbc84efb07c97fd31ecde0ac2b15'} from 'ACTIONS_MODULE11'\nexport {getFeatureMetadata as '40c70cd6035002651627e76edd34af8189e316d768'} from 'ACTIONS_MODULE12'\nexport {fetchGraphData as '0098cdddc7f1c513cd8ccb7a1c235610d3f5619023'} from 'ACTIONS_MODULE13'\nexport {getWorkflowDefaults as '00f8d1a7d558cbe24fd4b3322c4a64e6c216bc764f'} from 'ACTIONS_MODULE14'\nexport {createFeature as '4041968dd230b5e9ff91ef8ed1d0c4bf9f7479b7dc'} from 'ACTIONS_MODULE15'\n"],"names":[],"mappings":"wDAEA,EAAA,EAAA,CAAA,CAAA,OAYO,eAAe,IAEpB,GAAM,UAAE,CAAQ,CAAE,CADD,CAAA,CACI,CADJ,EAAA,WAAA,AAAW,IAG5B,MAAO,CACL,cAAe,CACb,SAAU,EAAS,oBAAoB,CAAC,QAAQ,CAChD,UAAW,EAAS,oBAAoB,CAAC,SAAS,CAClD,WAAY,EAAS,oBAAoB,CAAC,UAAU,AACtD,EACA,KAAM,EAAS,oBAAoB,CAAC,4BAA4B,CAChE,OAAQ,EAAS,8BAA8B,AACjD,CACF,0CAbsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,kFCZtB,EAAA,EAAA,CAAA,CAAA,OAwCO,eAAe,EACpB,CAAyB,EAEzB,GAAM,aAAE,CAAW,gBAAE,CAAc,aAAE,CAAW,eAAE,CAAa,MAAE,CAAI,QAAE,CAAM,UAAE,CAAQ,CAAE,CAAG,EAE5F,GAAI,CAAC,GAAa,OAChB,CADwB,KACjB,CAAE,MAAO,yBAA0B,EAG5C,GAAI,CAAC,GAAgB,OACnB,CAD2B,KACpB,CAAE,MAAO,4BAA6B,EAG/C,IAAM,EAxBR,AAwBoB,SAxBX,AAAiB,CAAmB,CAAE,CAAqC,EAClF,IAAI,EAAY,EAEhB,GAAI,GAAe,EAAY,MAAM,CAAG,EAAG,CACzC,IAAM,EAAQ,EAAY,GAAG,CAAC,AAAC,GAAM,CAAC,EAAE,EAAE,EAAE,IAAI,CAAA,CAAE,EAAE,IAAI,CAAC,MACzD,GAAa,CAAC;AAAA;AAAA;AAAqB,EAAE,EAAA,CAAO,AAC9C,CAEA,OAAO,CACT,EAeqC,EAAa,GAC1C,EAAuB,CAC3B,SAAU,GAAe,WAAY,EACrC,UAAW,GAAe,YAAa,EACvC,WAAY,GAAe,aAAc,CAC3C,EAEA,GAAI,CACF,IAAM,EAAuB,CAAA,EAAA,EAAA,OAAA,AAAO,EAAuB,wBAGrD,SAAE,CAAO,aAAE,CAAW,CAAE,CAAG,MAAM,EAAqB,YAAY,CAAC,CACvE,YACA,iBACA,cAAe,EACf,KAAM,IAAQ,EACd,OAAQ,IAAU,EAClB,GAAI,EAAW,UAAE,CAAS,EAAI,CAAC,CAAC,aAChC,CACF,GAsBA,OAlBA,EACG,kBAAkB,CACjB,EACA,WACE,iBACA,EACA,cAAe,EACf,KAAM,GAAQ,GACd,OAAQ,GAAU,GAClB,GAAI,EAAW,UAAE,CAAS,EAAI,CAAC,CAAC,AAClC,EACA,GAED,KAAK,CAAC,AAAC,IAEN,QAAQ,KAAK,CAAC,6CAA8C,EAC9D,GAEK,SAAE,CAAQ,CACnB,CAAE,MAAO,EAAgB,CAEvB,MAAO,CAAE,MADO,CACA,YADiB,MAAQ,EAAM,OAAO,CAAG,0BACjC,CAC1B,CACF,0CA3DsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,2DC1CtB,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
@@ -1,3 +1,3 @@
1
- module.exports=[61402,76052,13008,74607,6542,a=>{"use strict";var b=a.i(92658),c=a.i(96380),d=a.i(12581);async function e(a,b){if(!a.trim())return{approved:!1,error:"Feature id is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{approved:!1,error:"Feature not found"};if(!e.agentRunId)return{approved:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("ApproveAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.approved)return{approved:!1,error:g.reason};return{approved:!0}}catch(a){return{approved:!1,error:a instanceof Error?a.message:"Failed to approve feature"}}}async function f(a,b){if(!a.trim())return{rejected:!1,error:"Feature id is required"};if(!b.trim())return{rejected:!1,error:"Feedback is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{rejected:!1,error:"Feature not found"};if(!e.agentRunId)return{rejected:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("RejectAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.rejected)return{rejected:!1,error:g.reason};return{rejected:!0,iteration:g.iteration,iterationWarning:g.iterationWarning}}catch(a){return{rejected:!1,error:a instanceof Error?a.message:"Failed to reject feature"}}}async function g(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("GetFeatureArtifactUseCase"),d=await b.execute(a),e={question:"Goal",context:d.oneLiner,questions:d.openQuestions.map((a,b)=>({id:`q-${b}`,question:a.question,type:"select",options:(a.options??[]).map((a,c)=>({id:`q-${b}-opt-${c}`,label:a.option,rationale:a.description,...a.selected?{recommended:!0}:{}}))})),finalAction:{id:"approve-reqs",label:"Approve Requirements",description:"Finalize and lock the requirements for implementation"}},f={question:"Goal",context:d.oneLiner,questions:d.openQuestions.filter(a=>a.resolved).map(a=>{let b=a.options?.find(a=>a.selected);return{question:a.question,selectedOption:b?.option??a.answer??"N/A",rationale:a.selectionRationale??b?.description??"",wasRecommended:!1}})};return{questionnaire:e,productDecisions:f,artifact:d}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature artifact"}}}async function h(a){if(!a.trim())return{error:"Feature id is required"};try{var b;let d=(0,c.resolve)("GetResearchArtifactUseCase");return{techDecisions:{name:(b=await d.execute(a)).name,summary:b.summary,decisions:b.decisions,technologies:b.technologies}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load research artifact"}}}async function i(a){if(!a.trim())return{error:"Feature id is required"};try{let b,d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{error:"Feature not found"};let f=e.pr?{url:e.pr.url,number:e.pr.number,status:e.pr.status,commitHash:e.pr.commitHash,ciStatus:e.pr.ciStatus}:void 0,g=e.branch?{source:e.branch,target:"main"}:void 0;try{let d=(0,c.resolve)("GetPlanArtifactUseCase");b=(await d.execute(a)).phases.map(({id:a,name:b,description:c})=>({id:a,name:b,description:c}))}catch{}if(!e.worktreePath)return{pr:f,branch:g,phases:b,warning:f?void 0:"No PR or diff data available"};try{let a=(0,c.resolve)("IGitPrService"),d=await a.getPrDiffSummary(e.worktreePath,"main");return{pr:f,branch:g,phases:b,diffSummary:d}}catch{return{pr:f,branch:g,phases:b,warning:"Diff statistics unavailable"}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load merge review data"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"60eac61a26fe6db2e9a63d9776f5dfcf8569982328",null),a.s(["approveFeature",()=>e],61402),(0,d.ensureServerEntryExports)([f]),(0,b.registerServerReference)(f,"60bf7b2494736f28a6b3432df433df8a72e4029a53",null),a.s(["rejectFeature",()=>f],76052),(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"409023cd0d1bd08e65d341eed803f4f957fa8189cb",null),a.s(["getFeatureArtifact",()=>g],13008),(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"402b0c332c18b16b558101e4d0f876fc7903442e33",null),a.s(["getResearchArtifact",()=>h],74607),(0,d.ensureServerEntryExports)([i]),(0,b.registerServerReference)(i,"40ac843e502f61ebf918c536d3882814568059626c",null),a.s(["getMergeReviewData",()=>i],6542)},48839,a=>{"use strict";var b=a.i(12513),c=a.i(94691),d=a.i(33841),e=a.i(46646),f=a.i(68670),g=a.i(85321),h=a.i(84095),i=a.i(56799),j=a.i(80496),k=a.i(50845),l=a.i(49560),m=a.i(39353),n=a.i(29207),o=a.i(31075),p=a.i(61402),q=a.i(76052),r=a.i(13008),s=a.i(74607),t=a.i(6542);a.s([],29653),a.i(29653),a.s(["00728d4e692735334df2e486cc2e3efd87b74e6d29",()=>o.fetchGraphData,"00e1f0c3b074524064a40012ed97a68f47370ea341",()=>b.pickFolder,"401438cd8f26a671e452aa9197eff29efe0d3cf83d",()=>e.deployRepository,"40160faf0a76810f78df291bae4a1959c91f7e0699",()=>h.openIde,"4027df429860c9e1603699c814175f375933cfd5e3",()=>k.deleteFeature,"402b0c332c18b16b558101e4d0f876fc7903442e33",()=>s.getResearchArtifact,"402dc6644acbd4f34478118c45b23d83f4151b357d",()=>n.getFeatureMetadata,"403eb21f82b3f95741488fadc77104c2dd147697ee",()=>f.stopDeployment,"406b1bb8ddbdf6dbe75cfd1d41108097a8998e3d97",()=>m.deleteRepository,"4085a4e8989dc6dbf096b20f4558c05c645ad0ee6a",()=>d.deployFeature,"409023cd0d1bd08e65d341eed803f4f957fa8189cb",()=>r.getFeatureArtifact,"40932b170bb76634250613fa397dd7d06f35616ba8",()=>g.getDeploymentStatus,"409fc82b651e9e109a5981b93839b6c915a6c1c093",()=>j.openFolder,"40ac843e502f61ebf918c536d3882814568059626c",()=>t.getMergeReviewData,"40aceccdc6eb94bb83ce82c329b6f512e905f73a2b",()=>c.getDeploymentLogs,"40bb1e5fe47f2970352cea06def0646b9c386d8672",()=>l.addRepository,"40d7909be7cff72e56aa38be622310a7d3e53db00f",()=>i.openShell,"60bf7b2494736f28a6b3432df433df8a72e4029a53",()=>q.rejectFeature,"60eac61a26fe6db2e9a63d9776f5dfcf8569982328",()=>p.approveFeature],48839)}];
1
+ module.exports=[61402,76052,13008,74607,6542,a=>{"use strict";var b=a.i(92658),c=a.i(96380),d=a.i(12581);async function e(a,b){if(!a.trim())return{approved:!1,error:"Feature id is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{approved:!1,error:"Feature not found"};if(!e.agentRunId)return{approved:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("ApproveAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.approved)return{approved:!1,error:g.reason};return{approved:!0}}catch(a){return{approved:!1,error:a instanceof Error?a.message:"Failed to approve feature"}}}async function f(a,b){if(!a.trim())return{rejected:!1,error:"Feature id is required"};if(!b.trim())return{rejected:!1,error:"Feedback is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{rejected:!1,error:"Feature not found"};if(!e.agentRunId)return{rejected:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("RejectAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.rejected)return{rejected:!1,error:g.reason};return{rejected:!0,iteration:g.iteration,iterationWarning:g.iterationWarning}}catch(a){return{rejected:!1,error:a instanceof Error?a.message:"Failed to reject feature"}}}async function g(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("GetFeatureArtifactUseCase"),d=await b.execute(a),e={question:"Goal",context:d.oneLiner,questions:d.openQuestions.map((a,b)=>({id:`q-${b}`,question:a.question,type:"select",options:(a.options??[]).map((a,c)=>({id:`q-${b}-opt-${c}`,label:a.option,rationale:a.description,...a.selected?{recommended:!0}:{}}))})),finalAction:{id:"approve-reqs",label:"Approve Requirements",description:"Finalize and lock the requirements for implementation"}},f={question:"Goal",context:d.oneLiner,questions:d.openQuestions.filter(a=>a.resolved).map(a=>{let b=a.options?.find(a=>a.selected);return{question:a.question,selectedOption:b?.option??a.answer??"N/A",rationale:a.selectionRationale??b?.description??"",wasRecommended:!1}})};return{questionnaire:e,productDecisions:f,artifact:d}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature artifact"}}}async function h(a){if(!a.trim())return{error:"Feature id is required"};try{var b;let d=(0,c.resolve)("GetResearchArtifactUseCase");return{techDecisions:{name:(b=await d.execute(a)).name,summary:b.summary,decisions:b.decisions,technologies:b.technologies}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load research artifact"}}}async function i(a){if(!a.trim())return{error:"Feature id is required"};try{let b,d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{error:"Feature not found"};let f=e.pr?{url:e.pr.url,number:e.pr.number,status:e.pr.status,commitHash:e.pr.commitHash,ciStatus:e.pr.ciStatus}:void 0,g=e.branch?{source:e.branch,target:"main"}:void 0;try{let d=(0,c.resolve)("GetPlanArtifactUseCase");b=(await d.execute(a)).phases.map(({id:a,name:b,description:c})=>({id:a,name:b,description:c}))}catch{}if(!e.worktreePath)return{pr:f,branch:g,phases:b,warning:f?void 0:"No PR or diff data available"};try{let a=(0,c.resolve)("IGitPrService"),d=await a.getPrDiffSummary(e.worktreePath,"main");return{pr:f,branch:g,phases:b,diffSummary:d}}catch{return{pr:f,branch:g,phases:b,warning:"Diff statistics unavailable"}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load merge review data"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"60a8fb4d696b01cded3a94a39f08bba73b442f4f00",null),a.s(["approveFeature",()=>e],61402),(0,d.ensureServerEntryExports)([f]),(0,b.registerServerReference)(f,"6051af8416bfb9d8a08ab83b206723a750929377cf",null),a.s(["rejectFeature",()=>f],76052),(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"40d4e32c39d61ce6873d143497e844d445b8fc72c7",null),a.s(["getFeatureArtifact",()=>g],13008),(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"4053b860ca3ecc937c4a2b8de00607f3c8920a3140",null),a.s(["getResearchArtifact",()=>h],74607),(0,d.ensureServerEntryExports)([i]),(0,b.registerServerReference)(i,"4066dd97c7ebf3757ced7aa95e58cd10391e6df32b",null),a.s(["getMergeReviewData",()=>i],6542)},48839,a=>{"use strict";var b=a.i(12513),c=a.i(94691),d=a.i(33841),e=a.i(46646),f=a.i(68670),g=a.i(85321),h=a.i(84095),i=a.i(56799),j=a.i(80496),k=a.i(50845),l=a.i(49560),m=a.i(39353),n=a.i(29207),o=a.i(31075),p=a.i(61402),q=a.i(76052),r=a.i(13008),s=a.i(74607),t=a.i(6542);a.s([],29653),a.i(29653),a.s(["0098cdddc7f1c513cd8ccb7a1c235610d3f5619023",()=>o.fetchGraphData,"00a970a59b2ee92287fe67e938ead8f423e786cbae",()=>b.pickFolder,"40002870c82979d1fd69d787290bce87a547f09ddf",()=>h.openIde,"40075f6a1d08a0425fc436891a4d0ded3d57f43ab5",()=>i.openShell,"404b8497bd1c7d1aa64c0778b781a29aa381e82b5b",()=>f.stopDeployment,"4053b860ca3ecc937c4a2b8de00607f3c8920a3140",()=>s.getResearchArtifact,"405c717047a0bcf4588e9797f60ec20025822173ef",()=>g.getDeploymentStatus,"4066dd97c7ebf3757ced7aa95e58cd10391e6df32b",()=>t.getMergeReviewData,"4072da140dcd33ca38490dead1bdc87b9bcd720650",()=>e.deployRepository,"408cbcaeb390adbbc84efb07c97fd31ecde0ac2b15",()=>m.deleteRepository,"40a172efa9626b7aefdc84500163720ad74f9e785a",()=>k.deleteFeature,"40b4a16819758b6e2b95cb7fda01f3a3442b0cd797",()=>c.getDeploymentLogs,"40b6bf2f915e34a002f2f1dec97d949f9956f48015",()=>j.openFolder,"40c70cd6035002651627e76edd34af8189e316d768",()=>n.getFeatureMetadata,"40d4e32c39d61ce6873d143497e844d445b8fc72c7",()=>r.getFeatureArtifact,"40e5e31b1cdc03f1b28416f512c1b8fde4652584c6",()=>d.deployFeature,"40feb0796397e00925c1f0a362fa04cef7e8287fc4",()=>l.addRepository,"6051af8416bfb9d8a08ab83b206723a750929377cf",()=>q.rejectFeature,"60a8fb4d696b01cded3a94a39f08bba73b442f4f00",()=>p.approveFeature],48839)}];
2
2
 
3
3
  //# sourceMappingURL=src_presentation_web_565a14f8._.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/approve-feature.ts","../../../../../../../src/presentation/web/app/actions/reject-feature.ts","../../../../../../../src/presentation/web/app/actions/get-feature-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-research-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-merge-review-data.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/feature/%5BfeatureId%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { ApproveAgentRunUseCase } from '@shepai/core/application/use-cases/agents/approve-agent-run.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { PrdApprovalPayload } from '@shepai/core/domain/generated/output';\n\nexport async function approveFeature(\n featureId: string,\n payload?: PrdApprovalPayload\n): Promise<{ approved: boolean; error?: string }> {\n if (!featureId.trim()) {\n return { approved: false, error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { approved: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { approved: false, error: 'Feature has no agent run' };\n }\n\n const approveUseCase = resolve<ApproveAgentRunUseCase>('ApproveAgentRunUseCase');\n const result = await approveUseCase.execute(feature.agentRunId, payload);\n\n if (!result.approved) {\n return { approved: false, error: result.reason };\n }\n\n return { approved: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to approve feature';\n return { approved: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { RejectAgentRunUseCase } from '@shepai/core/application/use-cases/agents/reject-agent-run.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport async function rejectFeature(\n featureId: string,\n feedback: string\n): Promise<{\n rejected: boolean;\n iteration?: number;\n iterationWarning?: boolean;\n error?: string;\n}> {\n if (!featureId.trim()) {\n return { rejected: false, error: 'Feature id is required' };\n }\n\n if (!feedback.trim()) {\n return { rejected: false, error: 'Feedback is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { rejected: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { rejected: false, error: 'Feature has no agent run' };\n }\n\n const rejectUseCase = resolve<RejectAgentRunUseCase>('RejectAgentRunUseCase');\n const result = await rejectUseCase.execute(feature.agentRunId, feedback);\n\n if (!result.rejected) {\n return { rejected: false, error: result.reason };\n }\n\n return {\n rejected: true,\n iteration: result.iteration,\n iterationWarning: result.iterationWarning,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to reject feature';\n return { rejected: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetFeatureArtifactUseCase } from '@shepai/core/application/use-cases/features/get-feature-artifact.use-case';\nimport type { FeatureArtifact } from '@shepai/core/domain/generated/output';\nimport type { PrdQuestionnaireData } from '@shepai/core/domain/generated/output';\nimport type { ProductDecisionsSummaryData } from '@/components/common/product-decisions-summary';\n\ninterface GetFeatureArtifactResult {\n questionnaire?: PrdQuestionnaireData;\n productDecisions?: ProductDecisionsSummaryData;\n artifact?: FeatureArtifact;\n error?: string;\n}\n\n/**\n * Map FeatureArtifact openQuestions into the PrdQuestionnaireData shape\n * expected by the PrdQuestionnaireDrawer component.\n */\nfunction toQuestionnaireData(artifact: FeatureArtifact): PrdQuestionnaireData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions.map((oq, idx) => ({\n id: `q-${idx}`,\n question: oq.question,\n type: 'select' as const,\n options: (oq.options ?? []).map((opt, optIdx) => ({\n id: `q-${idx}-opt-${optIdx}`,\n label: opt.option,\n rationale: opt.description,\n ...(opt.selected ? { recommended: true } : {}),\n })),\n })),\n finalAction: {\n id: 'approve-reqs',\n label: 'Approve Requirements',\n description: 'Finalize and lock the requirements for implementation',\n },\n };\n}\n\n/**\n * Map FeatureArtifact openQuestions into a read-only summary for the\n * Product Decisions tab in the tech review drawer.\n */\nfunction toProductDecisionsData(artifact: FeatureArtifact): ProductDecisionsSummaryData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions\n .filter((oq) => oq.resolved)\n .map((oq) => {\n const selected = oq.options?.find((o) => o.selected);\n return {\n question: oq.question,\n selectedOption: selected?.option ?? oq.answer ?? 'N/A',\n rationale: oq.selectionRationale ?? selected?.description ?? '',\n wasRecommended: false,\n };\n }),\n };\n}\n\nexport async function getFeatureArtifact(featureId: string): Promise<GetFeatureArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetFeatureArtifactUseCase>('GetFeatureArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const questionnaire = toQuestionnaireData(artifact);\n const productDecisions = toProductDecisionsData(artifact);\n return { questionnaire, productDecisions, artifact };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load feature artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetResearchArtifactUseCase } from '@shepai/core/application/use-cases/features/get-research-artifact.use-case';\nimport type { ResearchArtifact, TechDecision } from '@shepai/core/domain/generated/output';\n\nexport interface TechDecisionsReviewData {\n name: string;\n summary: string;\n decisions: TechDecision[];\n technologies: string[];\n}\n\ninterface GetResearchArtifactResult {\n techDecisions?: TechDecisionsReviewData;\n error?: string;\n}\n\nfunction toTechDecisionsData(artifact: ResearchArtifact): TechDecisionsReviewData {\n return {\n name: artifact.name,\n summary: artifact.summary,\n decisions: artifact.decisions,\n technologies: artifact.technologies,\n };\n}\n\nexport async function getResearchArtifact(featureId: string): Promise<GetResearchArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetResearchArtifactUseCase>('GetResearchArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const techDecisions = toTechDecisionsData(artifact);\n return { techDecisions };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load research artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { IGitPrService } from '@shepai/core/application/ports/output/services/git-pr-service.interface';\nimport type { GetPlanArtifactUseCase } from '@shepai/core/application/use-cases/features/get-plan-artifact.use-case';\nimport type {\n MergeReviewData,\n MergeReviewPhase,\n} from '@/components/common/merge-review/merge-review-config';\n\ntype GetMergeReviewDataResult = MergeReviewData | { error: string };\n\nexport async function getMergeReviewData(featureId: string): Promise<GetMergeReviewDataResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { error: 'Feature not found' };\n }\n\n const pr = feature.pr\n ? {\n url: feature.pr.url,\n number: feature.pr.number,\n status: feature.pr.status,\n commitHash: feature.pr.commitHash,\n ciStatus: feature.pr.ciStatus,\n }\n : undefined;\n\n const branch = feature.branch ? { source: feature.branch, target: 'main' } : undefined;\n\n // Load plan phases (best-effort)\n let phases: MergeReviewPhase[] | undefined;\n try {\n const planUseCase = resolve<GetPlanArtifactUseCase>('GetPlanArtifactUseCase');\n const plan = await planUseCase.execute(featureId);\n phases = plan.phases.map(({ id, name, description }) => ({ id, name, description }));\n } catch {\n // Plan unavailable — not critical\n }\n\n if (!feature.worktreePath) {\n return { pr, branch, phases, warning: pr ? undefined : 'No PR or diff data available' };\n }\n\n try {\n const gitPrService = resolve<IGitPrService>('IGitPrService');\n const diffSummary = await gitPrService.getPrDiffSummary(feature.worktreePath, 'main');\n return { pr, branch, phases, diffSummary };\n } catch {\n return { pr, branch, phases, warning: 'Diff statistics unavailable' };\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load merge review data';\n return { error: message };\n }\n}\n","export {pickFolder as '00e1f0c3b074524064a40012ed97a68f47370ea341'} from 'ACTIONS_MODULE0'\nexport {getDeploymentLogs as '40aceccdc6eb94bb83ce82c329b6f512e905f73a2b'} from 'ACTIONS_MODULE1'\nexport {deployFeature as '4085a4e8989dc6dbf096b20f4558c05c645ad0ee6a'} from 'ACTIONS_MODULE2'\nexport {deployRepository as '401438cd8f26a671e452aa9197eff29efe0d3cf83d'} from 'ACTIONS_MODULE3'\nexport {stopDeployment as '403eb21f82b3f95741488fadc77104c2dd147697ee'} from 'ACTIONS_MODULE4'\nexport {getDeploymentStatus as '40932b170bb76634250613fa397dd7d06f35616ba8'} from 'ACTIONS_MODULE5'\nexport {openIde as '40160faf0a76810f78df291bae4a1959c91f7e0699'} from 'ACTIONS_MODULE6'\nexport {openShell as '40d7909be7cff72e56aa38be622310a7d3e53db00f'} from 'ACTIONS_MODULE7'\nexport {openFolder as '409fc82b651e9e109a5981b93839b6c915a6c1c093'} from 'ACTIONS_MODULE8'\nexport {deleteFeature as '4027df429860c9e1603699c814175f375933cfd5e3'} from 'ACTIONS_MODULE9'\nexport {addRepository as '40bb1e5fe47f2970352cea06def0646b9c386d8672'} from 'ACTIONS_MODULE10'\nexport {deleteRepository as '406b1bb8ddbdf6dbe75cfd1d41108097a8998e3d97'} from 'ACTIONS_MODULE11'\nexport {getFeatureMetadata as '402dc6644acbd4f34478118c45b23d83f4151b357d'} from 'ACTIONS_MODULE12'\nexport {fetchGraphData as '00728d4e692735334df2e486cc2e3efd87b74e6d29'} from 'ACTIONS_MODULE13'\nexport {approveFeature as '60eac61a26fe6db2e9a63d9776f5dfcf8569982328'} from 'ACTIONS_MODULE14'\nexport {rejectFeature as '60bf7b2494736f28a6b3432df433df8a72e4029a53'} from 'ACTIONS_MODULE15'\nexport {getFeatureArtifact as '409023cd0d1bd08e65d341eed803f4f957fa8189cb'} from 'ACTIONS_MODULE16'\nexport {getResearchArtifact as '402b0c332c18b16b558101e4d0f876fc7903442e33'} from 'ACTIONS_MODULE17'\nexport {getMergeReviewData as '40ac843e502f61ebf918c536d3882814568059626c'} from 'ACTIONS_MODULE18'\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/approve-feature.ts","../../../../../../../src/presentation/web/app/actions/reject-feature.ts","../../../../../../../src/presentation/web/app/actions/get-feature-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-research-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-merge-review-data.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/feature/%5BfeatureId%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { ApproveAgentRunUseCase } from '@shepai/core/application/use-cases/agents/approve-agent-run.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { PrdApprovalPayload } from '@shepai/core/domain/generated/output';\n\nexport async function approveFeature(\n featureId: string,\n payload?: PrdApprovalPayload\n): Promise<{ approved: boolean; error?: string }> {\n if (!featureId.trim()) {\n return { approved: false, error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { approved: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { approved: false, error: 'Feature has no agent run' };\n }\n\n const approveUseCase = resolve<ApproveAgentRunUseCase>('ApproveAgentRunUseCase');\n const result = await approveUseCase.execute(feature.agentRunId, payload);\n\n if (!result.approved) {\n return { approved: false, error: result.reason };\n }\n\n return { approved: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to approve feature';\n return { approved: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { RejectAgentRunUseCase } from '@shepai/core/application/use-cases/agents/reject-agent-run.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport async function rejectFeature(\n featureId: string,\n feedback: string\n): Promise<{\n rejected: boolean;\n iteration?: number;\n iterationWarning?: boolean;\n error?: string;\n}> {\n if (!featureId.trim()) {\n return { rejected: false, error: 'Feature id is required' };\n }\n\n if (!feedback.trim()) {\n return { rejected: false, error: 'Feedback is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { rejected: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { rejected: false, error: 'Feature has no agent run' };\n }\n\n const rejectUseCase = resolve<RejectAgentRunUseCase>('RejectAgentRunUseCase');\n const result = await rejectUseCase.execute(feature.agentRunId, feedback);\n\n if (!result.rejected) {\n return { rejected: false, error: result.reason };\n }\n\n return {\n rejected: true,\n iteration: result.iteration,\n iterationWarning: result.iterationWarning,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to reject feature';\n return { rejected: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetFeatureArtifactUseCase } from '@shepai/core/application/use-cases/features/get-feature-artifact.use-case';\nimport type { FeatureArtifact } from '@shepai/core/domain/generated/output';\nimport type { PrdQuestionnaireData } from '@shepai/core/domain/generated/output';\nimport type { ProductDecisionsSummaryData } from '@/components/common/product-decisions-summary';\n\ninterface GetFeatureArtifactResult {\n questionnaire?: PrdQuestionnaireData;\n productDecisions?: ProductDecisionsSummaryData;\n artifact?: FeatureArtifact;\n error?: string;\n}\n\n/**\n * Map FeatureArtifact openQuestions into the PrdQuestionnaireData shape\n * expected by the PrdQuestionnaireDrawer component.\n */\nfunction toQuestionnaireData(artifact: FeatureArtifact): PrdQuestionnaireData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions.map((oq, idx) => ({\n id: `q-${idx}`,\n question: oq.question,\n type: 'select' as const,\n options: (oq.options ?? []).map((opt, optIdx) => ({\n id: `q-${idx}-opt-${optIdx}`,\n label: opt.option,\n rationale: opt.description,\n ...(opt.selected ? { recommended: true } : {}),\n })),\n })),\n finalAction: {\n id: 'approve-reqs',\n label: 'Approve Requirements',\n description: 'Finalize and lock the requirements for implementation',\n },\n };\n}\n\n/**\n * Map FeatureArtifact openQuestions into a read-only summary for the\n * Product Decisions tab in the tech review drawer.\n */\nfunction toProductDecisionsData(artifact: FeatureArtifact): ProductDecisionsSummaryData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions\n .filter((oq) => oq.resolved)\n .map((oq) => {\n const selected = oq.options?.find((o) => o.selected);\n return {\n question: oq.question,\n selectedOption: selected?.option ?? oq.answer ?? 'N/A',\n rationale: oq.selectionRationale ?? selected?.description ?? '',\n wasRecommended: false,\n };\n }),\n };\n}\n\nexport async function getFeatureArtifact(featureId: string): Promise<GetFeatureArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetFeatureArtifactUseCase>('GetFeatureArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const questionnaire = toQuestionnaireData(artifact);\n const productDecisions = toProductDecisionsData(artifact);\n return { questionnaire, productDecisions, artifact };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load feature artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetResearchArtifactUseCase } from '@shepai/core/application/use-cases/features/get-research-artifact.use-case';\nimport type { ResearchArtifact, TechDecision } from '@shepai/core/domain/generated/output';\n\nexport interface TechDecisionsReviewData {\n name: string;\n summary: string;\n decisions: TechDecision[];\n technologies: string[];\n}\n\ninterface GetResearchArtifactResult {\n techDecisions?: TechDecisionsReviewData;\n error?: string;\n}\n\nfunction toTechDecisionsData(artifact: ResearchArtifact): TechDecisionsReviewData {\n return {\n name: artifact.name,\n summary: artifact.summary,\n decisions: artifact.decisions,\n technologies: artifact.technologies,\n };\n}\n\nexport async function getResearchArtifact(featureId: string): Promise<GetResearchArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetResearchArtifactUseCase>('GetResearchArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const techDecisions = toTechDecisionsData(artifact);\n return { techDecisions };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load research artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { IGitPrService } from '@shepai/core/application/ports/output/services/git-pr-service.interface';\nimport type { GetPlanArtifactUseCase } from '@shepai/core/application/use-cases/features/get-plan-artifact.use-case';\nimport type {\n MergeReviewData,\n MergeReviewPhase,\n} from '@/components/common/merge-review/merge-review-config';\n\ntype GetMergeReviewDataResult = MergeReviewData | { error: string };\n\nexport async function getMergeReviewData(featureId: string): Promise<GetMergeReviewDataResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { error: 'Feature not found' };\n }\n\n const pr = feature.pr\n ? {\n url: feature.pr.url,\n number: feature.pr.number,\n status: feature.pr.status,\n commitHash: feature.pr.commitHash,\n ciStatus: feature.pr.ciStatus,\n }\n : undefined;\n\n const branch = feature.branch ? { source: feature.branch, target: 'main' } : undefined;\n\n // Load plan phases (best-effort)\n let phases: MergeReviewPhase[] | undefined;\n try {\n const planUseCase = resolve<GetPlanArtifactUseCase>('GetPlanArtifactUseCase');\n const plan = await planUseCase.execute(featureId);\n phases = plan.phases.map(({ id, name, description }) => ({ id, name, description }));\n } catch {\n // Plan unavailable — not critical\n }\n\n if (!feature.worktreePath) {\n return { pr, branch, phases, warning: pr ? undefined : 'No PR or diff data available' };\n }\n\n try {\n const gitPrService = resolve<IGitPrService>('IGitPrService');\n const diffSummary = await gitPrService.getPrDiffSummary(feature.worktreePath, 'main');\n return { pr, branch, phases, diffSummary };\n } catch {\n return { pr, branch, phases, warning: 'Diff statistics unavailable' };\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load merge review data';\n return { error: message };\n }\n}\n","export {pickFolder as '00a970a59b2ee92287fe67e938ead8f423e786cbae'} from 'ACTIONS_MODULE0'\nexport {getDeploymentLogs as '40b4a16819758b6e2b95cb7fda01f3a3442b0cd797'} from 'ACTIONS_MODULE1'\nexport {deployFeature as '40e5e31b1cdc03f1b28416f512c1b8fde4652584c6'} from 'ACTIONS_MODULE2'\nexport {deployRepository as '4072da140dcd33ca38490dead1bdc87b9bcd720650'} from 'ACTIONS_MODULE3'\nexport {stopDeployment as '404b8497bd1c7d1aa64c0778b781a29aa381e82b5b'} from 'ACTIONS_MODULE4'\nexport {getDeploymentStatus as '405c717047a0bcf4588e9797f60ec20025822173ef'} from 'ACTIONS_MODULE5'\nexport {openIde as '40002870c82979d1fd69d787290bce87a547f09ddf'} from 'ACTIONS_MODULE6'\nexport {openShell as '40075f6a1d08a0425fc436891a4d0ded3d57f43ab5'} from 'ACTIONS_MODULE7'\nexport {openFolder as '40b6bf2f915e34a002f2f1dec97d949f9956f48015'} from 'ACTIONS_MODULE8'\nexport {deleteFeature as '40a172efa9626b7aefdc84500163720ad74f9e785a'} from 'ACTIONS_MODULE9'\nexport {addRepository as '40feb0796397e00925c1f0a362fa04cef7e8287fc4'} from 'ACTIONS_MODULE10'\nexport {deleteRepository as '408cbcaeb390adbbc84efb07c97fd31ecde0ac2b15'} from 'ACTIONS_MODULE11'\nexport {getFeatureMetadata as '40c70cd6035002651627e76edd34af8189e316d768'} from 'ACTIONS_MODULE12'\nexport {fetchGraphData as '0098cdddc7f1c513cd8ccb7a1c235610d3f5619023'} from 'ACTIONS_MODULE13'\nexport {approveFeature as '60a8fb4d696b01cded3a94a39f08bba73b442f4f00'} from 'ACTIONS_MODULE14'\nexport {rejectFeature as '6051af8416bfb9d8a08ab83b206723a750929377cf'} from 'ACTIONS_MODULE15'\nexport {getFeatureArtifact as '40d4e32c39d61ce6873d143497e844d445b8fc72c7'} from 'ACTIONS_MODULE16'\nexport {getResearchArtifact as '4053b860ca3ecc937c4a2b8de00607f3c8920a3140'} from 'ACTIONS_MODULE17'\nexport {getMergeReviewData as '4066dd97c7ebf3757ced7aa95e58cd10391e6df32b'} from 'ACTIONS_MODULE18'\n"],"names":[],"mappings":"+EAEA,EAAA,EAAA,CAAA,CAAA,oBAKO,eAAe,EACpB,CAAiB,CACjB,CAA4B,EAE5B,GAAI,CAAC,EAAU,IAAI,GACjB,CADqB,KACd,CAAE,UAAU,EAAO,MAAO,wBAAyB,EAG5D,GAAI,CACF,IAAM,EAAc,CAAA,EAAA,EAAA,OAAO,AAAP,EAA4B,sBAC1C,EAAU,MAAM,EAAY,QAAQ,CAAC,GAE3C,GAAI,CAAC,EACH,MAAO,CADK,AACH,UAAU,EAAO,MAAO,mBAAoB,EAGvD,GAAI,CAAC,EAAQ,UAAU,CACrB,CADuB,KAChB,CAAE,UAAU,EAAO,MAAO,0BAA2B,EAG9D,IAAM,EAAiB,CAAA,EAAA,EAAA,OAAA,AAAO,EAAyB,0BACjD,EAAS,MAAM,EAAe,OAAO,CAAC,EAAQ,UAAU,CAAE,GAEhE,GAAI,CAAC,EAAO,QAAQ,CAClB,CADoB,KACb,CAAE,UAAU,EAAO,MAAO,EAAO,MAAO,AAAD,EAGhD,MAAO,CAAE,UAAU,CAAK,CAC1B,CAAE,MAAO,EAAgB,CAEvB,MAAO,CAAE,UAAU,EAAO,MADV,CACiB,YADA,MAAQ,EAAM,OAAO,CAAG,2BAChB,CAC3C,CACF,CCjCO,eAAe,EACpB,CAAiB,CACjB,CAAgB,EAOhB,GAAI,CAAC,EAAU,IAAI,GACjB,CADqB,KACd,CAAE,UAAU,EAAO,MAAO,wBAAyB,EAG5D,GAAI,CAAC,EAAS,IAAI,GAChB,CADoB,KACb,CAAE,UAAU,EAAO,MAAO,sBAAuB,EAG1D,GAAI,CACF,IAAM,EAAc,CAAA,EAAA,EAAA,OAAA,AAAO,EAAqB,sBAC1C,EAAU,MAAM,EAAY,QAAQ,CAAC,GAE3C,GAAI,CAAC,EACH,MAAO,CAAE,AADG,UACO,EAAO,MAAO,mBAAoB,EAGvD,GAAI,CAAC,EAAQ,UAAU,CACrB,CADuB,KAChB,CAAE,UAAU,EAAO,MAAO,0BAA2B,EAG9D,IAAM,EAAgB,CAAA,EAAA,EAAA,OAAA,AAAO,EAAwB,yBAC/C,EAAS,MAAM,EAAc,OAAO,CAAC,EAAQ,UAAU,CAAE,GAE/D,GAAI,CAAC,EAAO,QAAQ,CAClB,CADoB,KACb,CAAE,UAAU,EAAO,MAAO,EAAO,MAAM,AAAC,EAGjD,MAAO,CACL,SAAU,GACV,UAAW,EAAO,SAAS,CAC3B,iBAAkB,EAAO,gBAAgB,AAC3C,CACF,CAAE,MAAO,EAAgB,CAEvB,MAAO,CAAE,UAAU,EAAO,MADV,CACiB,YADA,MAAQ,EAAM,OAAO,CAAG,0BAChB,CAC3C,CACF,CCaO,eAAe,EAAmB,CAAiB,EACxD,GAAI,CAAC,EAAU,IAAI,GACjB,CADqB,KACd,CAAE,MAAO,wBAAyB,EAG3C,GAAI,CACF,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAA4B,6BAC7C,EAAW,MAAM,EAAQ,OAAO,CAAC,GACjC,EApDD,CACL,SAAU,IAmDY,GAlDtB,QAAS,AAkDiC,EAlDxB,QAAQ,CAC1B,UAAW,EAAS,aAAa,CAAC,GAAG,CAAC,CAAC,EAAI,KAAS,CAAD,AACjD,GAAI,CAAC,EAAE,EAAE,EAAA,CAAK,CACd,SAAU,EAAG,QAAQ,CACrB,KAAM,SACN,QAAS,CAAC,EAAG,OAAO,EAAI,EAAA,AAAE,EAAE,GAAG,CAAC,CAAC,EAAK,KAAY,CAChD,GAAI,AAD2C,CAC1C,EAAE,EAAE,EAAI,KAAK,EAAE,EAAA,CAAQ,CAC5B,MAAO,EAAI,MAAM,CACjB,UAAW,EAAI,WAAW,CAC1B,GAAI,EAAI,QAAQ,CAAG,CAAE,YAAa,EAAK,EAAI,CAAC,CAAC,CAC/C,CAAC,EACH,CAAC,EACD,YAAa,CACX,GAAI,eACJ,MAAO,uBACP,YAAa,uDACf,CACF,EAkCQ,EA1BD,CACL,SAAU,OACV,AAwByB,QAxBhB,EAAS,QAAQ,CAC1B,UAAW,AAuBqC,EAvB5B,aAAa,CAC9B,MAAM,CAAC,AAAC,GAAO,EAAG,QAAQ,EAC1B,GAAG,CAAC,AAAC,IACJ,IAAM,EAAW,EAAG,OAAO,EAAE,KAAK,AAAC,GAAM,EAAE,QAAQ,EACnD,MAAO,CACL,SAAU,EAAG,QAAQ,CACrB,eAAgB,GAAU,QAAU,EAAG,MAAM,EAAI,MACjD,UAAW,EAAG,kBAAkB,EAAI,GAAU,aAAe,GAC7D,gBAAgB,CAClB,CACF,EACJ,EAaE,MAAO,CAAE,iCAAe,WAAkB,CAAS,CACrD,CAAE,MAAO,EAAgB,CAEvB,MAAO,CAAE,MADO,CACA,YADiB,MAAQ,EAAM,OAAO,CAAG,iCACjC,CAC1B,CACF,CCpDO,eAAe,EAAoB,CAAiB,EACzD,GAAI,CAAC,EAAU,IAAI,GACjB,CADqB,KACd,CAAE,MAAO,wBAAyB,EAG3C,GAAI,KAduB,EAezB,IAAM,EAAU,AAfmC,CAenC,EAAA,EAAA,OAAA,AAAO,EAA6B,8BAGpD,MAAO,CAAE,cAjBJ,CACL,KAAM,GAcW,MAAM,EAAQ,OAAO,CAAC,IAdxB,IAAI,CACnB,QAAS,EAAS,OAAO,CACzB,UAAW,EAAS,SAAS,CAC7B,aAAc,EAAS,YAAY,AACrC,CAYyB,CACzB,CAAE,MAAO,EAAgB,CAEvB,MAAO,CAAE,MADO,CACA,YADiB,MAAQ,EAAM,OAAO,CAAG,kCACjC,CAC1B,CACF,CC5BO,eAAe,EAAmB,CAAiB,EACxD,GAAI,CAAC,EAAU,IAAI,GACjB,CADqB,KACd,CAAE,MAAO,wBAAyB,EAG3C,GAAI,CACF,IAoBI,EApBE,EAAc,CAAA,EAAA,EAAA,OAAO,AAAP,EAA4B,sBAC1C,EAAU,MAAM,EAAY,QAAQ,CAAC,GAE3C,GAAI,CAAC,EACH,MAAO,CADK,AACH,MAAO,mBAAoB,EAGtC,IAAM,EAAK,EAAQ,EAAE,CACjB,CACE,IAAK,EAAQ,EAAE,CAAC,GAAG,CACnB,OAAQ,EAAQ,EAAE,CAAC,MAAM,CACzB,OAAQ,EAAQ,EAAE,CAAC,MAAM,CACzB,WAAY,EAAQ,EAAE,CAAC,UAAU,CACjC,SAAU,EAAQ,EAAE,CAAC,QAAQ,AAC/B,OACA,EAEE,EAAS,EAAQ,MAAM,CAAG,CAAE,OAAQ,EAAQ,MAAM,CAAE,OAAQ,MAAO,OAAI,EAI7E,GAAI,CACF,IAAM,EAAc,CAAA,EAAA,EAAA,OAAA,AAAO,EAAyB,0BAEpD,EAAS,CADI,MAAM,EAAY,OAAO,CAAC,EAAA,EACzB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAE,CAAE,MAAE,CAAI,CAAE,aAAW,CAAE,GAAK,CAAC,IAAE,OAAI,cAAM,EAAY,CAAC,CACpF,CAAE,KAAM,CAER,CAEA,GAAI,CAAC,EAAQ,YAAY,CACvB,CADyB,KAClB,IAAE,SAAI,SAAQ,EAAQ,QAAS,EAAK,OAAY,8BAA+B,EAGxF,GAAI,CACF,IAAM,EAAe,CAAA,EAAA,EAAA,OAAA,AAAO,EAAgB,iBACtC,EAAc,MAAM,EAAa,gBAAgB,CAAC,EAAQ,YAAY,CAAE,QAC9E,MAAO,IAAE,SAAI,SAAQ,cAAQ,CAAY,CAC3C,CAAE,KAAM,CACN,MAAO,IAAE,SAAI,SAAQ,EAAQ,QAAS,6BAA8B,CACtE,CACF,CAAE,MAAO,EAAgB,CAEvB,MAAO,CAAE,MADO,CACA,YADiB,MAAQ,EAAM,OAAO,CAAG,kCACjC,CAC1B,CACF,iCJxDsB,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,0ECDA,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,yEC0DA,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,8ECrCA,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,+ECdA,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,qECbtB,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
@@ -1,3 +1,3 @@
1
- module.exports=[78391,a=>{"use strict";var b=a.i(12513),c=a.i(94691),d=a.i(33841),e=a.i(46646),f=a.i(68670),g=a.i(85321),h=a.i(84095),i=a.i(56799),j=a.i(80496),k=a.i(50845),l=a.i(49560),m=a.i(39353),n=a.i(29207),o=a.i(31075);a.s([],72127),a.i(72127),a.s(["00728d4e692735334df2e486cc2e3efd87b74e6d29",()=>o.fetchGraphData,"00e1f0c3b074524064a40012ed97a68f47370ea341",()=>b.pickFolder,"401438cd8f26a671e452aa9197eff29efe0d3cf83d",()=>e.deployRepository,"40160faf0a76810f78df291bae4a1959c91f7e0699",()=>h.openIde,"4027df429860c9e1603699c814175f375933cfd5e3",()=>k.deleteFeature,"402dc6644acbd4f34478118c45b23d83f4151b357d",()=>n.getFeatureMetadata,"403eb21f82b3f95741488fadc77104c2dd147697ee",()=>f.stopDeployment,"406b1bb8ddbdf6dbe75cfd1d41108097a8998e3d97",()=>m.deleteRepository,"4085a4e8989dc6dbf096b20f4558c05c645ad0ee6a",()=>d.deployFeature,"40932b170bb76634250613fa397dd7d06f35616ba8",()=>g.getDeploymentStatus,"409fc82b651e9e109a5981b93839b6c915a6c1c093",()=>j.openFolder,"40aceccdc6eb94bb83ce82c329b6f512e905f73a2b",()=>c.getDeploymentLogs,"40bb1e5fe47f2970352cea06def0646b9c386d8672",()=>l.addRepository,"40d7909be7cff72e56aa38be622310a7d3e53db00f",()=>i.openShell],78391)}];
1
+ module.exports=[78391,a=>{"use strict";var b=a.i(12513),c=a.i(94691),d=a.i(33841),e=a.i(46646),f=a.i(68670),g=a.i(85321),h=a.i(84095),i=a.i(56799),j=a.i(80496),k=a.i(50845),l=a.i(49560),m=a.i(39353),n=a.i(29207),o=a.i(31075);a.s([],72127),a.i(72127),a.s(["0098cdddc7f1c513cd8ccb7a1c235610d3f5619023",()=>o.fetchGraphData,"00a970a59b2ee92287fe67e938ead8f423e786cbae",()=>b.pickFolder,"40002870c82979d1fd69d787290bce87a547f09ddf",()=>h.openIde,"40075f6a1d08a0425fc436891a4d0ded3d57f43ab5",()=>i.openShell,"404b8497bd1c7d1aa64c0778b781a29aa381e82b5b",()=>f.stopDeployment,"405c717047a0bcf4588e9797f60ec20025822173ef",()=>g.getDeploymentStatus,"4072da140dcd33ca38490dead1bdc87b9bcd720650",()=>e.deployRepository,"408cbcaeb390adbbc84efb07c97fd31ecde0ac2b15",()=>m.deleteRepository,"40a172efa9626b7aefdc84500163720ad74f9e785a",()=>k.deleteFeature,"40b4a16819758b6e2b95cb7fda01f3a3442b0cd797",()=>c.getDeploymentLogs,"40b6bf2f915e34a002f2f1dec97d949f9956f48015",()=>j.openFolder,"40c70cd6035002651627e76edd34af8189e316d768",()=>n.getFeatureMetadata,"40e5e31b1cdc03f1b28416f512c1b8fde4652584c6",()=>d.deployFeature,"40feb0796397e00925c1f0a362fa04cef7e8287fc4",()=>l.addRepository],78391)}];
2
2
 
3
3
  //# sourceMappingURL=src_presentation_web__next-internal_server_app_%28dashboard%29_page_actions_021a05f2.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["export {pickFolder as '00e1f0c3b074524064a40012ed97a68f47370ea341'} from 'ACTIONS_MODULE0'\nexport {getDeploymentLogs as '40aceccdc6eb94bb83ce82c329b6f512e905f73a2b'} from 'ACTIONS_MODULE1'\nexport {deployFeature as '4085a4e8989dc6dbf096b20f4558c05c645ad0ee6a'} from 'ACTIONS_MODULE2'\nexport {deployRepository as '401438cd8f26a671e452aa9197eff29efe0d3cf83d'} from 'ACTIONS_MODULE3'\nexport {stopDeployment as '403eb21f82b3f95741488fadc77104c2dd147697ee'} from 'ACTIONS_MODULE4'\nexport {getDeploymentStatus as '40932b170bb76634250613fa397dd7d06f35616ba8'} from 'ACTIONS_MODULE5'\nexport {openIde as '40160faf0a76810f78df291bae4a1959c91f7e0699'} from 'ACTIONS_MODULE6'\nexport {openShell as '40d7909be7cff72e56aa38be622310a7d3e53db00f'} from 'ACTIONS_MODULE7'\nexport {openFolder as '409fc82b651e9e109a5981b93839b6c915a6c1c093'} from 'ACTIONS_MODULE8'\nexport {deleteFeature as '4027df429860c9e1603699c814175f375933cfd5e3'} from 'ACTIONS_MODULE9'\nexport {addRepository as '40bb1e5fe47f2970352cea06def0646b9c386d8672'} from 'ACTIONS_MODULE10'\nexport {deleteRepository as '406b1bb8ddbdf6dbe75cfd1d41108097a8998e3d97'} from 'ACTIONS_MODULE11'\nexport {getFeatureMetadata as '402dc6644acbd4f34478118c45b23d83f4151b357d'} from 'ACTIONS_MODULE12'\nexport {fetchGraphData as '00728d4e692735334df2e486cc2e3efd87b74e6d29'} from 'ACTIONS_MODULE13'\n"],"names":[],"mappings":"uCAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["export {pickFolder as '00a970a59b2ee92287fe67e938ead8f423e786cbae'} from 'ACTIONS_MODULE0'\nexport {getDeploymentLogs as '40b4a16819758b6e2b95cb7fda01f3a3442b0cd797'} from 'ACTIONS_MODULE1'\nexport {deployFeature as '40e5e31b1cdc03f1b28416f512c1b8fde4652584c6'} from 'ACTIONS_MODULE2'\nexport {deployRepository as '4072da140dcd33ca38490dead1bdc87b9bcd720650'} from 'ACTIONS_MODULE3'\nexport {stopDeployment as '404b8497bd1c7d1aa64c0778b781a29aa381e82b5b'} from 'ACTIONS_MODULE4'\nexport {getDeploymentStatus as '405c717047a0bcf4588e9797f60ec20025822173ef'} from 'ACTIONS_MODULE5'\nexport {openIde as '40002870c82979d1fd69d787290bce87a547f09ddf'} from 'ACTIONS_MODULE6'\nexport {openShell as '40075f6a1d08a0425fc436891a4d0ded3d57f43ab5'} from 'ACTIONS_MODULE7'\nexport {openFolder as '40b6bf2f915e34a002f2f1dec97d949f9956f48015'} from 'ACTIONS_MODULE8'\nexport {deleteFeature as '40a172efa9626b7aefdc84500163720ad74f9e785a'} from 'ACTIONS_MODULE9'\nexport {addRepository as '40feb0796397e00925c1f0a362fa04cef7e8287fc4'} from 'ACTIONS_MODULE10'\nexport {deleteRepository as '408cbcaeb390adbbc84efb07c97fd31ecde0ac2b15'} from 'ACTIONS_MODULE11'\nexport {getFeatureMetadata as '40c70cd6035002651627e76edd34af8189e316d768'} from 'ACTIONS_MODULE12'\nexport {fetchGraphData as '0098cdddc7f1c513cd8ccb7a1c235610d3f5619023'} from 'ACTIONS_MODULE13'\n"],"names":[],"mappings":"uCAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}