@shepai/cli 1.48.0 → 1.49.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 (159) hide show
  1. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  2. package/dist/packages/core/src/infrastructure/di/container.js +3 -0
  3. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-graph.js +1 -1
  4. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge.node.d.ts.map +1 -1
  5. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/nodes/merge.node.js +65 -36
  6. package/dist/src/presentation/web/app/actions/approve-feature.d.ts +2 -1
  7. package/dist/src/presentation/web/app/actions/approve-feature.d.ts.map +1 -1
  8. package/dist/src/presentation/web/app/actions/approve-feature.js +2 -2
  9. package/dist/src/presentation/web/app/actions/reject-feature.d.ts +7 -0
  10. package/dist/src/presentation/web/app/actions/reject-feature.d.ts.map +1 -0
  11. package/dist/src/presentation/web/app/actions/reject-feature.js +34 -0
  12. package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar-config.d.ts +24 -0
  13. package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar-config.d.ts.map +1 -0
  14. package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar-config.js +1 -0
  15. package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.d.ts +3 -0
  16. package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.d.ts.map +1 -0
  17. package/dist/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.js +12 -0
  18. package/dist/src/presentation/web/components/common/drawer-action-bar/index.d.ts +3 -0
  19. package/dist/src/presentation/web/components/common/drawer-action-bar/index.d.ts.map +1 -0
  20. package/dist/src/presentation/web/components/common/drawer-action-bar/index.js +1 -0
  21. package/dist/src/presentation/web/components/common/drawer-revision-input/drawer-revision-input-config.d.ts +11 -0
  22. package/dist/src/presentation/web/components/common/drawer-revision-input/drawer-revision-input-config.d.ts.map +1 -0
  23. package/dist/src/presentation/web/components/common/drawer-revision-input/drawer-revision-input-config.js +1 -0
  24. package/dist/src/presentation/web/components/common/drawer-revision-input/drawer-revision-input.d.ts +3 -0
  25. package/dist/src/presentation/web/components/common/drawer-revision-input/drawer-revision-input.d.ts.map +1 -0
  26. package/dist/src/presentation/web/components/common/drawer-revision-input/drawer-revision-input.js +18 -0
  27. package/dist/src/presentation/web/components/common/drawer-revision-input/index.d.ts +3 -0
  28. package/dist/src/presentation/web/components/common/drawer-revision-input/index.d.ts.map +1 -0
  29. package/dist/src/presentation/web/components/common/drawer-revision-input/index.js +1 -0
  30. package/dist/src/presentation/web/components/common/merge-review/merge-review-config.d.ts +4 -2
  31. package/dist/src/presentation/web/components/common/merge-review/merge-review-config.d.ts.map +1 -1
  32. package/dist/src/presentation/web/components/common/merge-review/merge-review.d.ts +1 -1
  33. package/dist/src/presentation/web/components/common/merge-review/merge-review.d.ts.map +1 -1
  34. package/dist/src/presentation/web/components/common/merge-review/merge-review.js +4 -15
  35. package/dist/src/presentation/web/components/common/merge-review/merge-review.stories.js +1 -1
  36. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire-config.d.ts +4 -2
  37. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire-config.d.ts.map +1 -1
  38. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.d.ts +1 -1
  39. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.d.ts.map +1 -1
  40. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.js +6 -15
  41. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.stories.d.ts +4 -0
  42. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.stories.d.ts.map +1 -1
  43. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.stories.js +24 -3
  44. package/dist/src/presentation/web/components/common/reject-feedback-dialog/index.d.ts +3 -0
  45. package/dist/src/presentation/web/components/common/reject-feedback-dialog/index.d.ts.map +1 -0
  46. package/dist/src/presentation/web/components/common/reject-feedback-dialog/index.js +1 -0
  47. package/dist/src/presentation/web/components/common/reject-feedback-dialog/reject-feedback-dialog-config.d.ts +9 -0
  48. package/dist/src/presentation/web/components/common/reject-feedback-dialog/reject-feedback-dialog-config.d.ts.map +1 -0
  49. package/dist/src/presentation/web/components/common/reject-feedback-dialog/reject-feedback-dialog-config.js +1 -0
  50. package/dist/src/presentation/web/components/common/reject-feedback-dialog/reject-feedback-dialog.d.ts +3 -0
  51. package/dist/src/presentation/web/components/common/reject-feedback-dialog/reject-feedback-dialog.d.ts.map +1 -0
  52. package/dist/src/presentation/web/components/common/reject-feedback-dialog/reject-feedback-dialog.js +19 -0
  53. package/dist/src/presentation/web/components/common/reject-feedback-dialog/reject-feedback-dialog.stories.d.ts +14 -0
  54. package/dist/src/presentation/web/components/common/reject-feedback-dialog/reject-feedback-dialog.stories.d.ts.map +1 -0
  55. package/dist/src/presentation/web/components/common/reject-feedback-dialog/reject-feedback-dialog.stories.js +46 -0
  56. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review-config.d.ts +4 -2
  57. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review-config.d.ts.map +1 -1
  58. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.d.ts +1 -1
  59. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.d.ts.map +1 -1
  60. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.js +4 -14
  61. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.stories.d.ts +4 -0
  62. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.stories.d.ts.map +1 -1
  63. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.stories.js +24 -6
  64. package/dist/src/presentation/web/components/features/control-center/control-center-inner.d.ts.map +1 -1
  65. package/dist/src/presentation/web/components/features/control-center/control-center-inner.js +48 -33
  66. package/dist/tsconfig.build.tsbuildinfo +1 -1
  67. package/package.json +1 -1
  68. package/web/.next/BUILD_ID +1 -1
  69. package/web/.next/build-manifest.json +2 -2
  70. package/web/.next/cache/.previewinfo +1 -1
  71. package/web/.next/cache/.rscinfo +1 -1
  72. package/web/.next/cache/.tsbuildinfo +1 -1
  73. package/web/.next/cache/config.json +3 -3
  74. package/web/.next/fallback-build-manifest.json +2 -2
  75. package/web/.next/prerender-manifest.json +3 -3
  76. package/web/.next/required-server-files.js +1 -1
  77. package/web/.next/required-server-files.json +1 -1
  78. package/web/.next/server/app/_global-error.html +2 -2
  79. package/web/.next/server/app/_global-error.rsc +1 -1
  80. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  81. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  82. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  83. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  84. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  85. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  86. package/web/.next/server/app/page/server-reference-manifest.json +41 -26
  87. package/web/.next/server/app/page.js +2 -1
  88. package/web/.next/server/app/page.js.nft.json +1 -1
  89. package/web/.next/server/app/page_client-reference-manifest.js +1 -1
  90. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  91. package/web/.next/server/chunks/ssr/[root-of-the-server]__03a0dba7._.js +4 -4
  92. package/web/.next/server/chunks/ssr/[root-of-the-server]__03a0dba7._.js.map +1 -1
  93. package/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
  94. package/web/.next/server/chunks/ssr/[root-of-the-server]__2d1a8e37._.js +9 -0
  95. package/web/.next/server/chunks/ssr/[root-of-the-server]__2d1a8e37._.js.map +1 -0
  96. package/web/.next/server/chunks/ssr/[root-of-the-server]__d8fbe735._.js +3 -0
  97. package/web/.next/server/chunks/ssr/[root-of-the-server]__d8fbe735._.js.map +1 -0
  98. package/web/.next/server/pages/500.html +2 -2
  99. package/web/.next/server/server-reference-manifest.js +1 -1
  100. package/web/.next/server/server-reference-manifest.json +42 -27
  101. package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
  102. package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +2 -2
  103. package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
  104. package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +1 -1
  105. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
  106. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
  107. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  108. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  109. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  110. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  111. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  112. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  113. package/web/.next/standalone/src/presentation/web/.next/server/app/page/server-reference-manifest.json +41 -26
  114. package/web/.next/standalone/src/presentation/web/.next/server/app/page.js +2 -1
  115. package/web/.next/standalone/src/presentation/web/.next/server/app/page.js.nft.json +1 -1
  116. package/web/.next/standalone/src/presentation/web/.next/server/app/page_client-reference-manifest.js +1 -1
  117. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  118. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__03a0dba7._.js +4 -4
  119. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
  120. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__2d1a8e37._.js +9 -0
  121. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__d8fbe735._.js +3 -0
  122. package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
  123. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
  124. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +42 -27
  125. package/web/.next/standalone/src/presentation/web/app/actions/approve-feature.ts +4 -2
  126. package/web/.next/standalone/src/presentation/web/app/actions/reject-feature.ts +52 -0
  127. package/web/.next/standalone/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar-config.ts +24 -0
  128. package/web/.next/standalone/src/presentation/web/components/common/drawer-action-bar/drawer-action-bar.tsx +64 -0
  129. package/web/.next/standalone/src/presentation/web/components/common/drawer-action-bar/index.ts +2 -0
  130. package/web/.next/standalone/src/presentation/web/components/common/drawer-revision-input/drawer-revision-input-config.ts +10 -0
  131. package/web/.next/standalone/src/presentation/web/components/common/drawer-revision-input/drawer-revision-input.tsx +41 -0
  132. package/web/.next/standalone/src/presentation/web/components/common/drawer-revision-input/index.ts +2 -0
  133. package/web/.next/standalone/src/presentation/web/components/common/merge-review/merge-review-config.ts +4 -2
  134. package/web/.next/standalone/src/presentation/web/components/common/merge-review/merge-review.stories.tsx +1 -1
  135. package/web/.next/standalone/src/presentation/web/components/common/merge-review/merge-review.tsx +24 -53
  136. package/web/.next/standalone/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire-config.ts +4 -2
  137. package/web/.next/standalone/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.stories.tsx +36 -8
  138. package/web/.next/standalone/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.tsx +16 -47
  139. package/web/.next/standalone/src/presentation/web/components/common/reject-feedback-dialog/index.ts +2 -0
  140. package/web/.next/standalone/src/presentation/web/components/common/reject-feedback-dialog/reject-feedback-dialog-config.ts +8 -0
  141. package/web/.next/standalone/src/presentation/web/components/common/reject-feedback-dialog/reject-feedback-dialog.stories.tsx +63 -0
  142. package/web/.next/standalone/src/presentation/web/components/common/reject-feedback-dialog/reject-feedback-dialog.tsx +78 -0
  143. package/web/.next/standalone/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review-config.ts +4 -2
  144. package/web/.next/standalone/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.stories.tsx +27 -6
  145. package/web/.next/standalone/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.tsx +14 -42
  146. package/web/.next/standalone/src/presentation/web/components/features/control-center/control-center-inner.tsx +94 -49
  147. package/web/.next/standalone/src/presentation/web/server.js +1 -1
  148. package/web/.next/static/chunks/191ca1529c9868dd.js +10 -0
  149. package/web/.next/static/chunks/59b8bd47023e0249.css +2 -0
  150. package/web/.next/trace +1 -1
  151. package/web/.next/trace-build +1 -1
  152. package/web/.next/server/chunks/ssr/[root-of-the-server]__19d52794._.js +0 -9
  153. package/web/.next/server/chunks/ssr/[root-of-the-server]__19d52794._.js.map +0 -1
  154. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__19d52794._.js +0 -9
  155. package/web/.next/static/chunks/66378a6c055c4e67.js +0 -10
  156. package/web/.next/static/chunks/8668962d3e682263.css +0 -2
  157. /package/web/.next/static/{1kZFDMQ0i-Y8dy1KkHlzv → UT60KjU8SOYIjqeqo2WT-}/_buildManifest.js +0 -0
  158. /package/web/.next/static/{1kZFDMQ0i-Y8dy1KkHlzv → UT60KjU8SOYIjqeqo2WT-}/_clientMiddlewareManifest.json +0 -0
  159. /package/web/.next/static/{1kZFDMQ0i-Y8dy1KkHlzv → UT60KjU8SOYIjqeqo2WT-}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[60526,(a,b,c)=>{b.exports=a.x("node:os",()=>require("node:os"))},93695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},59975,a=>{a.n(a.i(72884))},63754,a=>{a.n(a.i(39838))},27075,a=>{a.n(a.i(26048))},37458,a=>{a.n(a.i(72330))},22672,a=>{a.n(a.i(41208))},32459,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(28478).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/src/presentation/web/components/features/version/version-page-client.tsx <module evaluation> from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/presentation/web/components/features/version/version-page-client.tsx <module evaluation>","default")},93933,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(28478).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/src/presentation/web/components/features/version/version-page-client.tsx from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/presentation/web/components/features/version/version-page-client.tsx","default")},67651,a=>{"use strict";a.i(32459);var b=a.i(93933);a.n(b)},77048,a=>{"use strict";var b=a.i(92807),c=a.i(60526),d=a.i(67651);function e(){let a={nodeVersion:process.version,platform:(0,c.platform)(),arch:(0,c.arch)()};return(0,b.jsx)(d.default,{versionInfo:{version:"1.47.0",name:"@shepai/cli",description:"Autonomous AI Native SDLC Platform - Automate the development cycle from idea to deploy"},systemInfo:a})}a.s(["default",()=>e],77048)}];
1
+ module.exports=[60526,(a,b,c)=>{b.exports=a.x("node:os",()=>require("node:os"))},93695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},59975,a=>{a.n(a.i(72884))},63754,a=>{a.n(a.i(39838))},27075,a=>{a.n(a.i(26048))},37458,a=>{a.n(a.i(72330))},22672,a=>{a.n(a.i(41208))},32459,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(28478).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/src/presentation/web/components/features/version/version-page-client.tsx <module evaluation> from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/presentation/web/components/features/version/version-page-client.tsx <module evaluation>","default")},93933,a=>{"use strict";a.s(["default",()=>b]);let b=(0,a.i(28478).registerClientReference)(function(){throw Error("Attempted to call the default export of [project]/src/presentation/web/components/features/version/version-page-client.tsx from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/src/presentation/web/components/features/version/version-page-client.tsx","default")},67651,a=>{"use strict";a.i(32459);var b=a.i(93933);a.n(b)},77048,a=>{"use strict";var b=a.i(92807),c=a.i(60526),d=a.i(67651);function e(){let a={nodeVersion:process.version,platform:(0,c.platform)(),arch:(0,c.arch)()};return(0,b.jsx)(d.default,{versionInfo:{version:"1.48.0",name:"@shepai/cli",description:"Autonomous AI Native SDLC Platform - Automate the development cycle from idea to deploy"},systemInfo:a})}a.s(["default",()=>e],77048)}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__249c74f6._.js.map
@@ -0,0 +1,9 @@
1
+ module.exports=[92658,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"registerServerReference",{enumerable:!0,get:function(){return d.registerServerReference}});let d=a.r(28478)},12581,(a,b,c)=>{"use strict";function d(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
2
+ Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"ensureServerEntryExports",{enumerable:!0,get:function(){return d}})},66680,(a,b,c)=>{b.exports=a.x("node:crypto",()=>require("node:crypto"))},12714,(a,b,c)=>{b.exports=a.x("node:fs/promises",()=>require("node:fs/promises"))},4510,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);return{questionnaire:{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"}},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"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"60725e6edd6c9743fb7fa2acdedba221ea99a22c99",null),(0,d.ensureServerEntryExports)([f]),(0,b.registerServerReference)(f,"605e21808f0e88d6e49558246e7498db1a31108458",null),(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"4034da6eaae02e393a605d9a77a1475647a322e92b",null),(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"40c39d9f141368b3a789ccd8a1818bbb0fc304657e",null);let i="__shepSettings";function j(){let a=function(){let a=globalThis[i];if(null!=a)return a;let b=process[i];return null!=b?b:null}();if(null===a)throw Error("Settings not initialized. Call initializeSettings() during CLI bootstrap.");return a}async function k(){let{workflow:a}=j();return{approvalGates:{allowPrd:a.approvalGateDefaults.allowPrd,allowPlan:a.approvalGateDefaults.allowPlan,allowMerge:a.approvalGateDefaults.allowMerge},push:a.approvalGateDefaults.pushOnImplementationComplete,openPr:a.openPrOnImplementationComplete}}async function l(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"}}}async function m(a){let{repositoryPath:b,branch:d}=a;if(!b?.startsWith("/"))return{success:!1,error:"repositoryPath must be an absolute path"};let e=j().environment.defaultEditor,f=(0,c.resolve)("LaunchIdeUseCase"),g=await f.execute({editorId:e,repositoryPath:b,branch:d,checkAvailability:!0});return g.ok?{success:!0,editor:g.editorName,path:g.worktreePath}:{success:!1,error:g.message}}(0,d.ensureServerEntryExports)([k]),(0,b.registerServerReference)(k,"0094559528ecdb02319480522b15f2b0fbabf70de0",null),(0,d.ensureServerEntryExports)([l]),(0,b.registerServerReference)(l,"40a4ae95c3eb64cfde57dc6db22db9f3660b7a764f",null),(0,d.ensureServerEntryExports)([m]),(0,b.registerServerReference)(m,"40e3cffaa33524a12e55626b274ab07a38f5271589",null);var n=a.i(2157),o=a.i(60526),p=a.i(74533),q=a.i(66680),r=a.i(50227);async function s(a){let{repositoryPath:b,branch:c}=a;if(!b?.startsWith("/"))return{success:!1,error:"repositoryPath must be an absolute path"};try{let a,d,e=j().environment.shellPreference,f=c?(a=(0,q.createHash)("sha256").update(b).digest("hex").slice(0,16),d=c.replace(/\//g,"-"),(0,r.join)(process.env.SHEP_HOME??(0,r.join)((0,o.homedir)(),".shep"),"repos",a,"wt",d)):b;if(!(0,n.existsSync)(f))return{success:!1,error:`Path does not exist: ${f}`};return(0,o.platform)(),(0,p.spawn)("x-terminal-emulator",[`--working-directory=${f}`],{detached:!0,stdio:"ignore"}).unref(),{success:!0,path:f,shell:e}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to open shell"}}}async function t(a){if(!a?.startsWith("/"))return{success:!1,error:"repositoryPath must be an absolute path"};try{if(!(0,n.existsSync)(a))return{success:!1,error:"Directory not found"};return(0,o.platform)(),(0,p.spawn)("xdg-open",[a],{detached:!0,stdio:"ignore"}).unref(),{success:!0,path:a}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to open folder"}}}a.i(12714),(0,d.ensureServerEntryExports)([s]),(0,b.registerServerReference)(s,"4049e6f8ecdd0b75842cf02b8ac52a8157bebc0142",null),(0,d.ensureServerEntryExports)([t]),(0,b.registerServerReference)(t,"407c4c1533c9b75110ad59cefcdabb70ac5b5401b3",null);let u={platform:process.platform,exec:(a,b)=>(0,p.execSync)(a,b)},v={darwin:"osascript -e 'POSIX path of (choose folder with prompt \"Select a repository folder\")'",linux:'zenity --file-selection --directory --title="Select a repository folder" 2>/dev/null',win32:"powershell -NoProfile -Command \"Add-Type -AssemblyName System.Windows.Forms; $f = New-Object System.Windows.Forms.FolderBrowserDialog; $f.Description = 'Select a repository folder'; if ($f.ShowDialog() -eq 'OK') { $f.SelectedPath } else { exit 1 }\""};class w{deps;constructor(a={}){this.deps={...u,...a}}getCommand(){return v[this.deps.platform]??null}pickFolder(){let a=this.getCommand();if(!a)throw Error(`Unsupported platform: ${this.deps.platform}`);try{let b=this.deps.exec(a,{encoding:"utf-8",timeout:6e4}).trim();return b.length>0?b:null}catch(a){var b;if("object"==typeof(b=a)&&null!==b&&"status"in b&&1===a.status)return null;throw a}}}async function x(){let a=new w;try{return{path:a.pickFolder()}}catch(a){return{path:null,error:a instanceof Error?a.message:"Failed to open folder dialog"}}}async function y(a){let{name:b,description:d,repositoryPath:e,attachments:f,approvalGates:g,push:h,openPr:i}=a;if(!b?.trim())return{error:"name is required"};if(!e?.trim())return{error:"repositoryPath is required"};let j=function(a,b,c){let d=`Feature: ${a}`;if(b&&(d+=`
3
+
4
+ ${b}`),c&&c.length>0){let a=c.map(a=>`- ${a.path}`).join("\n");d+=`
5
+
6
+ Attached files:
7
+ ${a}`}return d}(b,d,f),k={allowPrd:g?.allowPrd??!1,allowPlan:g?.allowPlan??!1,allowMerge:g?.allowMerge??!1};try{let a=(0,c.resolve)("CreateFeatureUseCase");return{feature:(await a.execute({userInput:j,repositoryPath:e,approvalGates:k,push:h??!1,openPr:i??!1})).feature}}catch(a){return{error:a instanceof Error?a.message:"Failed to create feature"}}}async function z(a){if(!a?.trim())return{error:"id is required"};try{let b=(0,c.resolve)("DeleteFeatureUseCase");return{feature:await b.execute(a)}}catch(a){return{error:a instanceof Error?a.message:"Failed to delete feature"}}}async function A(a){let{path:b,name:d}=a;if(!b?.trim())return{error:"path is required"};try{let a=(0,c.resolve)("AddRepositoryUseCase");return{repository:await a.execute({path:b,name:d})}}catch(a){return{error:a instanceof Error?a.message:"Failed to add repository"}}}async function B(a){if(!a?.trim())return{success:!1,error:"id is required"};try{let b=(0,c.resolve)("DeleteRepositoryUseCase");return await b.execute(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to delete repository"}}}(0,d.ensureServerEntryExports)([x]),(0,b.registerServerReference)(x,"005600d5f26056661789ce94bb1f2138a1be4b514d",null),(0,d.ensureServerEntryExports)([y]),(0,b.registerServerReference)(y,"402ca918bcfe848cb370fc9398dd4822598236b08b",null),(0,d.ensureServerEntryExports)([z]),(0,b.registerServerReference)(z,"406ebd5e8423afbbb122410891f7083f04e7932897",null),(0,d.ensureServerEntryExports)([A]),(0,b.registerServerReference)(A,"409b87593fd7e237b4bb51d81f1b3f1465df6b8efc",null),(0,d.ensureServerEntryExports)([B]),(0,b.registerServerReference)(B,"4002db4a13cd5cd14cc6f0bfd87a9b1e38cb990411",null),a.s([],36114),a.i(36114),a.s(["005600d5f26056661789ce94bb1f2138a1be4b514d",()=>x,"0094559528ecdb02319480522b15f2b0fbabf70de0",()=>k,"4002db4a13cd5cd14cc6f0bfd87a9b1e38cb990411",()=>B,"402ca918bcfe848cb370fc9398dd4822598236b08b",()=>y,"4034da6eaae02e393a605d9a77a1475647a322e92b",()=>g,"4049e6f8ecdd0b75842cf02b8ac52a8157bebc0142",()=>s,"406ebd5e8423afbbb122410891f7083f04e7932897",()=>z,"407c4c1533c9b75110ad59cefcdabb70ac5b5401b3",()=>t,"409b87593fd7e237b4bb51d81f1b3f1465df6b8efc",()=>A,"40a4ae95c3eb64cfde57dc6db22db9f3660b7a764f",()=>l,"40c39d9f141368b3a789ccd8a1818bbb0fc304657e",()=>h,"40e3cffaa33524a12e55626b274ab07a38f5271589",()=>m,"605e21808f0e88d6e49558246e7498db1a31108458",()=>f,"60725e6edd6c9743fb7fa2acdedba221ea99a22c99",()=>e],4510)}];
8
+
9
+ //# sourceMappingURL=%5Broot-of-the-server%5D__2d1a8e37._.js.map
@@ -0,0 +1,3 @@
1
+ module.exports=[50227,(a,b,c)=>{b.exports=a.x("node:path",()=>require("node:path"))},60526,(a,b,c)=>{b.exports=a.x("node:os",()=>require("node:os"))},2157,(a,b,c)=>{b.exports=a.x("node:fs",()=>require("node:fs"))},74533,(a,b,c)=>{b.exports=a.x("node:child_process",()=>require("node:child_process"))},96380,a=>{"use strict";function b(a){let b=globalThis.__shepContainer;if(!b)throw Error("DI container not available. Ensure the CLI bootstrap or dev-server has initialized it.");return b.resolve(a)}a.s(["resolve",()=>b])}];
2
+
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__d8fbe735._.js.map
@@ -1,2 +1,2 @@
1
- <!DOCTYPE html><!--1kZFDMQ0i_Y8dy1KkHlzv--><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/b13aa397579082e7.js"/><script src="/_next/static/chunks/07f00e2e73d322d2.js" async=""></script><script src="/_next/static/chunks/cfe4dc9904fcfddb.js" async=""></script><script src="/_next/static/chunks/084314470f2144d2.js" async=""></script><script src="/_next/static/chunks/turbopack-35ff53de4dab1e56.js" async=""></script><script src="/_next/static/chunks/ab02eec995295bef.js" async=""></script><script src="/_next/static/chunks/fe70e73feb07bcfd.js" async=""></script><title>500: Internal Server Error.</title><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}
2
- @media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/b13aa397579082e7.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[40799,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"default\"]\n3:I[73006,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"default\"]\n4:I[66658,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[66658,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"ViewportBoundary\"]\n9:I[66658,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"MetadataBoundary\"]\nb:I[42726,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"1kZFDMQ0i-Y8dy1KkHlzv\",\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"title\",null,{\"children\":\"500: Internal Server Error.\"}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"lineHeight\":\"48px\"},\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"paddingRight\":23,\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\"},\"children\":\"500\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"28px\"},\"children\":\"Internal Server Error.\"}]}]]}]}]}]]}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/ab02eec995295bef.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/fe70e73feb07bcfd.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\na:[]\n"])</script></body></html>
1
+ <!DOCTYPE html><!--UT60KjU8SOYIjqeqo2WT_--><html id="__next_error__"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/b13aa397579082e7.js"/><script src="/_next/static/chunks/07f00e2e73d322d2.js" async=""></script><script src="/_next/static/chunks/cfe4dc9904fcfddb.js" async=""></script><script src="/_next/static/chunks/084314470f2144d2.js" async=""></script><script src="/_next/static/chunks/turbopack-35ff53de4dab1e56.js" async=""></script><script src="/_next/static/chunks/ab02eec995295bef.js" async=""></script><script src="/_next/static/chunks/fe70e73feb07bcfd.js" async=""></script><title>500: Internal Server Error.</title><script src="/_next/static/chunks/a6dad97d9634a72d.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}
2
+ @media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/b13aa397579082e7.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[40799,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"default\"]\n3:I[73006,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"default\"]\n4:I[66658,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"OutletBoundary\"]\n5:\"$Sreact.suspense\"\n7:I[66658,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"ViewportBoundary\"]\n9:I[66658,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"MetadataBoundary\"]\nb:I[42726,[\"/_next/static/chunks/ab02eec995295bef.js\",\"/_next/static/chunks/fe70e73feb07bcfd.js\"],\"default\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"UT60KjU8SOYIjqeqo2WT-\",\"c\":[\"\",\"_global-error\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]}],[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L2\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L3\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"html\",null,{\"id\":\"__next_error__\",\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"title\",null,{\"children\":\"500: Internal Server Error.\"}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"style\":{\"lineHeight\":\"48px\"},\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}\\n@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"paddingRight\":23,\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\"},\"children\":\"500\"}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"28px\"},\"children\":\"Internal Server Error.\"}]}]]}]}]}]]}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/ab02eec995295bef.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/fe70e73feb07bcfd.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L4\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@6\"}]}]]}],{},null,false,false]},null,false,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$L7\",null,{\"children\":\"$L8\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$5\",null,{\"name\":\"Next.Metadata\",\"children\":\"$La\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$b\",\"$undefined\"],\"S\":true}\n"])</script><script>self.__next_f.push([1,"8:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n"])</script><script>self.__next_f.push([1,"6:null\na:[]\n"])</script></body></html>
@@ -1 +1 @@
1
- self.__RSC_SERVER_MANIFEST="{\n \"node\": {\n \"405927de7a51b3fdbf3bce187705d5f3a33c599793\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 30953,\n \"async\": false,\n \"exportedName\": \"approveFeature\",\n \"filename\": \"src/presentation/web/app/actions/approve-feature.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/approve-feature.ts\",\n \"exportedName\": \"approveFeature\"\n },\n \"40bd05da6b59c64afa59bd767ea7563b23608711a0\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 30953,\n \"async\": false,\n \"exportedName\": \"getFeatureArtifact\",\n \"filename\": \"src/presentation/web/app/actions/get-feature-artifact.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-feature-artifact.ts\",\n \"exportedName\": \"getFeatureArtifact\"\n },\n \"4052167b4529af8c247a75b3051a28f058af8a0ac9\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 30953,\n \"async\": false,\n \"exportedName\": \"getResearchArtifact\",\n \"filename\": \"src/presentation/web/app/actions/get-research-artifact.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-research-artifact.ts\",\n \"exportedName\": \"getResearchArtifact\"\n },\n \"00fd01b28bb7867f8544c9906f5037e63c7202fa8e\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 30953,\n \"async\": false,\n \"exportedName\": \"getWorkflowDefaults\",\n \"filename\": \"src/presentation/web/app/actions/get-workflow-defaults.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-workflow-defaults.ts\",\n \"exportedName\": \"getWorkflowDefaults\"\n },\n \"40952da4050947a94de113924015351244089d8ffe\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 30953,\n \"async\": false,\n \"exportedName\": \"getMergeReviewData\",\n \"filename\": \"src/presentation/web/app/actions/get-merge-review-data.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-merge-review-data.ts\",\n \"exportedName\": \"getMergeReviewData\"\n },\n \"40bfc128861432d76522cc52efd6249895ce00ab03\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 30953,\n \"async\": false,\n \"exportedName\": \"openIde\",\n \"filename\": \"src/presentation/web/app/actions/open-ide.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/open-ide.ts\",\n \"exportedName\": \"openIde\"\n },\n \"4033b24b3695151d1f14d8d9b2df4db2ab821d1aa1\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 30953,\n \"async\": false,\n \"exportedName\": \"openShell\",\n \"filename\": \"src/presentation/web/app/actions/open-shell.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/open-shell.ts\",\n \"exportedName\": \"openShell\"\n },\n \"400805d5028779c5a42a1b209d0ccd103df6aae782\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 30953,\n \"async\": false,\n \"exportedName\": \"openFolder\",\n \"filename\": \"src/presentation/web/app/actions/open-folder.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/open-folder.ts\",\n \"exportedName\": \"openFolder\"\n },\n \"002086e55ab6adb498958985cc6b499caadb8efe8a\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 30953,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\",\n \"exportedName\": \"pickFolder\"\n },\n \"4070bbfbc7263457fbf281a0e0dcd7a43c12b30a17\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 30953,\n \"async\": false,\n \"exportedName\": \"createFeature\",\n \"filename\": \"src/presentation/web/app/actions/create-feature.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/create-feature.ts\",\n \"exportedName\": \"createFeature\"\n },\n \"4045ff41ea532f2c3e9970f8022b64a977da6e2eca\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 30953,\n \"async\": false,\n \"exportedName\": \"deleteFeature\",\n \"filename\": \"src/presentation/web/app/actions/delete-feature.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/delete-feature.ts\",\n \"exportedName\": \"deleteFeature\"\n },\n \"40c7ab52e7389ec3d2f6a78fdd2b5686746b247b24\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 30953,\n \"async\": false,\n \"exportedName\": \"addRepository\",\n \"filename\": \"src/presentation/web/app/actions/add-repository.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/add-repository.ts\",\n \"exportedName\": \"addRepository\"\n },\n \"406251232c435014ef64078d485da082110be0fb37\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 30953,\n \"async\": false,\n \"exportedName\": \"deleteRepository\",\n \"filename\": \"src/presentation/web/app/actions/delete-repository.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/delete-repository.ts\",\n \"exportedName\": \"deleteRepository\"\n }\n },\n \"edge\": {},\n \"encryptionKey\": \"hCzppyIeZCi6mpL+ZJ0dlbq42XLKa14KFhRtB9jR6iI=\"\n}"
1
+ self.__RSC_SERVER_MANIFEST="{\n \"node\": {\n \"60725e6edd6c9743fb7fa2acdedba221ea99a22c99\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"approveFeature\",\n \"filename\": \"src/presentation/web/app/actions/approve-feature.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/approve-feature.ts\",\n \"exportedName\": \"approveFeature\"\n },\n \"605e21808f0e88d6e49558246e7498db1a31108458\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"rejectFeature\",\n \"filename\": \"src/presentation/web/app/actions/reject-feature.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/reject-feature.ts\",\n \"exportedName\": \"rejectFeature\"\n },\n \"4034da6eaae02e393a605d9a77a1475647a322e92b\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"getFeatureArtifact\",\n \"filename\": \"src/presentation/web/app/actions/get-feature-artifact.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-feature-artifact.ts\",\n \"exportedName\": \"getFeatureArtifact\"\n },\n \"40c39d9f141368b3a789ccd8a1818bbb0fc304657e\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"getResearchArtifact\",\n \"filename\": \"src/presentation/web/app/actions/get-research-artifact.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-research-artifact.ts\",\n \"exportedName\": \"getResearchArtifact\"\n },\n \"0094559528ecdb02319480522b15f2b0fbabf70de0\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"getWorkflowDefaults\",\n \"filename\": \"src/presentation/web/app/actions/get-workflow-defaults.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-workflow-defaults.ts\",\n \"exportedName\": \"getWorkflowDefaults\"\n },\n \"40a4ae95c3eb64cfde57dc6db22db9f3660b7a764f\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"getMergeReviewData\",\n \"filename\": \"src/presentation/web/app/actions/get-merge-review-data.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-merge-review-data.ts\",\n \"exportedName\": \"getMergeReviewData\"\n },\n \"40e3cffaa33524a12e55626b274ab07a38f5271589\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"openIde\",\n \"filename\": \"src/presentation/web/app/actions/open-ide.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/open-ide.ts\",\n \"exportedName\": \"openIde\"\n },\n \"4049e6f8ecdd0b75842cf02b8ac52a8157bebc0142\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"openShell\",\n \"filename\": \"src/presentation/web/app/actions/open-shell.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/open-shell.ts\",\n \"exportedName\": \"openShell\"\n },\n \"407c4c1533c9b75110ad59cefcdabb70ac5b5401b3\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"openFolder\",\n \"filename\": \"src/presentation/web/app/actions/open-folder.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/open-folder.ts\",\n \"exportedName\": \"openFolder\"\n },\n \"005600d5f26056661789ce94bb1f2138a1be4b514d\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\",\n \"exportedName\": \"pickFolder\"\n },\n \"402ca918bcfe848cb370fc9398dd4822598236b08b\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"createFeature\",\n \"filename\": \"src/presentation/web/app/actions/create-feature.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/create-feature.ts\",\n \"exportedName\": \"createFeature\"\n },\n \"406ebd5e8423afbbb122410891f7083f04e7932897\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"deleteFeature\",\n \"filename\": \"src/presentation/web/app/actions/delete-feature.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/delete-feature.ts\",\n \"exportedName\": \"deleteFeature\"\n },\n \"409b87593fd7e237b4bb51d81f1b3f1465df6b8efc\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"addRepository\",\n \"filename\": \"src/presentation/web/app/actions/add-repository.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/add-repository.ts\",\n \"exportedName\": \"addRepository\"\n },\n \"4002db4a13cd5cd14cc6f0bfd87a9b1e38cb990411\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 4510,\n \"async\": false,\n \"exportedName\": \"deleteRepository\",\n \"filename\": \"src/presentation/web/app/actions/delete-repository.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/delete-repository.ts\",\n \"exportedName\": \"deleteRepository\"\n }\n },\n \"edge\": {},\n \"encryptionKey\": \"lfDMOktcEgm3EhZyios0W88TuAca2toOgnxMajteruU=\"\n}"
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "node": {
3
- "405927de7a51b3fdbf3bce187705d5f3a33c599793": {
3
+ "60725e6edd6c9743fb7fa2acdedba221ea99a22c99": {
4
4
  "workers": {
5
5
  "app/page": {
6
- "moduleId": 30953,
6
+ "moduleId": 4510,
7
7
  "async": false,
8
8
  "exportedName": "approveFeature",
9
9
  "filename": "src/presentation/web/app/actions/approve-feature.ts"
@@ -15,10 +15,25 @@
15
15
  "filename": "src/presentation/web/app/actions/approve-feature.ts",
16
16
  "exportedName": "approveFeature"
17
17
  },
18
- "40bd05da6b59c64afa59bd767ea7563b23608711a0": {
18
+ "605e21808f0e88d6e49558246e7498db1a31108458": {
19
19
  "workers": {
20
20
  "app/page": {
21
- "moduleId": 30953,
21
+ "moduleId": 4510,
22
+ "async": false,
23
+ "exportedName": "rejectFeature",
24
+ "filename": "src/presentation/web/app/actions/reject-feature.ts"
25
+ }
26
+ },
27
+ "layer": {
28
+ "app/page": "action-browser"
29
+ },
30
+ "filename": "src/presentation/web/app/actions/reject-feature.ts",
31
+ "exportedName": "rejectFeature"
32
+ },
33
+ "4034da6eaae02e393a605d9a77a1475647a322e92b": {
34
+ "workers": {
35
+ "app/page": {
36
+ "moduleId": 4510,
22
37
  "async": false,
23
38
  "exportedName": "getFeatureArtifact",
24
39
  "filename": "src/presentation/web/app/actions/get-feature-artifact.ts"
@@ -30,10 +45,10 @@
30
45
  "filename": "src/presentation/web/app/actions/get-feature-artifact.ts",
31
46
  "exportedName": "getFeatureArtifact"
32
47
  },
33
- "4052167b4529af8c247a75b3051a28f058af8a0ac9": {
48
+ "40c39d9f141368b3a789ccd8a1818bbb0fc304657e": {
34
49
  "workers": {
35
50
  "app/page": {
36
- "moduleId": 30953,
51
+ "moduleId": 4510,
37
52
  "async": false,
38
53
  "exportedName": "getResearchArtifact",
39
54
  "filename": "src/presentation/web/app/actions/get-research-artifact.ts"
@@ -45,10 +60,10 @@
45
60
  "filename": "src/presentation/web/app/actions/get-research-artifact.ts",
46
61
  "exportedName": "getResearchArtifact"
47
62
  },
48
- "00fd01b28bb7867f8544c9906f5037e63c7202fa8e": {
63
+ "0094559528ecdb02319480522b15f2b0fbabf70de0": {
49
64
  "workers": {
50
65
  "app/page": {
51
- "moduleId": 30953,
66
+ "moduleId": 4510,
52
67
  "async": false,
53
68
  "exportedName": "getWorkflowDefaults",
54
69
  "filename": "src/presentation/web/app/actions/get-workflow-defaults.ts"
@@ -60,10 +75,10 @@
60
75
  "filename": "src/presentation/web/app/actions/get-workflow-defaults.ts",
61
76
  "exportedName": "getWorkflowDefaults"
62
77
  },
63
- "40952da4050947a94de113924015351244089d8ffe": {
78
+ "40a4ae95c3eb64cfde57dc6db22db9f3660b7a764f": {
64
79
  "workers": {
65
80
  "app/page": {
66
- "moduleId": 30953,
81
+ "moduleId": 4510,
67
82
  "async": false,
68
83
  "exportedName": "getMergeReviewData",
69
84
  "filename": "src/presentation/web/app/actions/get-merge-review-data.ts"
@@ -75,10 +90,10 @@
75
90
  "filename": "src/presentation/web/app/actions/get-merge-review-data.ts",
76
91
  "exportedName": "getMergeReviewData"
77
92
  },
78
- "40bfc128861432d76522cc52efd6249895ce00ab03": {
93
+ "40e3cffaa33524a12e55626b274ab07a38f5271589": {
79
94
  "workers": {
80
95
  "app/page": {
81
- "moduleId": 30953,
96
+ "moduleId": 4510,
82
97
  "async": false,
83
98
  "exportedName": "openIde",
84
99
  "filename": "src/presentation/web/app/actions/open-ide.ts"
@@ -90,10 +105,10 @@
90
105
  "filename": "src/presentation/web/app/actions/open-ide.ts",
91
106
  "exportedName": "openIde"
92
107
  },
93
- "4033b24b3695151d1f14d8d9b2df4db2ab821d1aa1": {
108
+ "4049e6f8ecdd0b75842cf02b8ac52a8157bebc0142": {
94
109
  "workers": {
95
110
  "app/page": {
96
- "moduleId": 30953,
111
+ "moduleId": 4510,
97
112
  "async": false,
98
113
  "exportedName": "openShell",
99
114
  "filename": "src/presentation/web/app/actions/open-shell.ts"
@@ -105,10 +120,10 @@
105
120
  "filename": "src/presentation/web/app/actions/open-shell.ts",
106
121
  "exportedName": "openShell"
107
122
  },
108
- "400805d5028779c5a42a1b209d0ccd103df6aae782": {
123
+ "407c4c1533c9b75110ad59cefcdabb70ac5b5401b3": {
109
124
  "workers": {
110
125
  "app/page": {
111
- "moduleId": 30953,
126
+ "moduleId": 4510,
112
127
  "async": false,
113
128
  "exportedName": "openFolder",
114
129
  "filename": "src/presentation/web/app/actions/open-folder.ts"
@@ -120,10 +135,10 @@
120
135
  "filename": "src/presentation/web/app/actions/open-folder.ts",
121
136
  "exportedName": "openFolder"
122
137
  },
123
- "002086e55ab6adb498958985cc6b499caadb8efe8a": {
138
+ "005600d5f26056661789ce94bb1f2138a1be4b514d": {
124
139
  "workers": {
125
140
  "app/page": {
126
- "moduleId": 30953,
141
+ "moduleId": 4510,
127
142
  "async": false,
128
143
  "exportedName": "pickFolder",
129
144
  "filename": "src/presentation/web/app/actions/pick-folder.ts"
@@ -135,10 +150,10 @@
135
150
  "filename": "src/presentation/web/app/actions/pick-folder.ts",
136
151
  "exportedName": "pickFolder"
137
152
  },
138
- "4070bbfbc7263457fbf281a0e0dcd7a43c12b30a17": {
153
+ "402ca918bcfe848cb370fc9398dd4822598236b08b": {
139
154
  "workers": {
140
155
  "app/page": {
141
- "moduleId": 30953,
156
+ "moduleId": 4510,
142
157
  "async": false,
143
158
  "exportedName": "createFeature",
144
159
  "filename": "src/presentation/web/app/actions/create-feature.ts"
@@ -150,10 +165,10 @@
150
165
  "filename": "src/presentation/web/app/actions/create-feature.ts",
151
166
  "exportedName": "createFeature"
152
167
  },
153
- "4045ff41ea532f2c3e9970f8022b64a977da6e2eca": {
168
+ "406ebd5e8423afbbb122410891f7083f04e7932897": {
154
169
  "workers": {
155
170
  "app/page": {
156
- "moduleId": 30953,
171
+ "moduleId": 4510,
157
172
  "async": false,
158
173
  "exportedName": "deleteFeature",
159
174
  "filename": "src/presentation/web/app/actions/delete-feature.ts"
@@ -165,10 +180,10 @@
165
180
  "filename": "src/presentation/web/app/actions/delete-feature.ts",
166
181
  "exportedName": "deleteFeature"
167
182
  },
168
- "40c7ab52e7389ec3d2f6a78fdd2b5686746b247b24": {
183
+ "409b87593fd7e237b4bb51d81f1b3f1465df6b8efc": {
169
184
  "workers": {
170
185
  "app/page": {
171
- "moduleId": 30953,
186
+ "moduleId": 4510,
172
187
  "async": false,
173
188
  "exportedName": "addRepository",
174
189
  "filename": "src/presentation/web/app/actions/add-repository.ts"
@@ -180,10 +195,10 @@
180
195
  "filename": "src/presentation/web/app/actions/add-repository.ts",
181
196
  "exportedName": "addRepository"
182
197
  },
183
- "406251232c435014ef64078d485da082110be0fb37": {
198
+ "4002db4a13cd5cd14cc6f0bfd87a9b1e38cb990411": {
184
199
  "workers": {
185
200
  "app/page": {
186
- "moduleId": 30953,
201
+ "moduleId": 4510,
187
202
  "async": false,
188
203
  "exportedName": "deleteRepository",
189
204
  "filename": "src/presentation/web/app/actions/delete-repository.ts"
@@ -197,5 +212,5 @@
197
212
  }
198
213
  },
199
214
  "edge": {},
200
- "encryptionKey": "hCzppyIeZCi6mpL+ZJ0dlbq42XLKa14KFhRtB9jR6iI="
215
+ "encryptionKey": "lfDMOktcEgm3EhZyios0W88TuAca2toOgnxMajteruU="
201
216
  }
@@ -3,9 +3,11 @@
3
3
  import { resolve } from '@/lib/server-container';
4
4
  import type { ApproveAgentRunUseCase } from '@shepai/core/application/use-cases/agents/approve-agent-run.use-case';
5
5
  import type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';
6
+ import type { PrdApprovalPayload } from '@shepai/core/domain/generated/output';
6
7
 
7
8
  export async function approveFeature(
8
- featureId: string
9
+ featureId: string,
10
+ payload?: PrdApprovalPayload
9
11
  ): Promise<{ approved: boolean; error?: string }> {
10
12
  if (!featureId.trim()) {
11
13
  return { approved: false, error: 'Feature id is required' };
@@ -24,7 +26,7 @@ export async function approveFeature(
24
26
  }
25
27
 
26
28
  const approveUseCase = resolve<ApproveAgentRunUseCase>('ApproveAgentRunUseCase');
27
- const result = await approveUseCase.execute(feature.agentRunId);
29
+ const result = await approveUseCase.execute(feature.agentRunId, payload);
28
30
 
29
31
  if (!result.approved) {
30
32
  return { approved: false, error: result.reason };
@@ -0,0 +1,52 @@
1
+ 'use server';
2
+
3
+ import { resolve } from '@/lib/server-container';
4
+ import type { RejectAgentRunUseCase } from '@shepai/core/application/use-cases/agents/reject-agent-run.use-case';
5
+ import type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';
6
+
7
+ export async function rejectFeature(
8
+ featureId: string,
9
+ feedback: string
10
+ ): Promise<{
11
+ rejected: boolean;
12
+ iteration?: number;
13
+ iterationWarning?: boolean;
14
+ error?: string;
15
+ }> {
16
+ if (!featureId.trim()) {
17
+ return { rejected: false, error: 'Feature id is required' };
18
+ }
19
+
20
+ if (!feedback.trim()) {
21
+ return { rejected: false, error: 'Feedback is required' };
22
+ }
23
+
24
+ try {
25
+ const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');
26
+ const feature = await featureRepo.findById(featureId);
27
+
28
+ if (!feature) {
29
+ return { rejected: false, error: 'Feature not found' };
30
+ }
31
+
32
+ if (!feature.agentRunId) {
33
+ return { rejected: false, error: 'Feature has no agent run' };
34
+ }
35
+
36
+ const rejectUseCase = resolve<RejectAgentRunUseCase>('RejectAgentRunUseCase');
37
+ const result = await rejectUseCase.execute(feature.agentRunId, feedback);
38
+
39
+ if (!result.rejected) {
40
+ return { rejected: false, error: result.reason };
41
+ }
42
+
43
+ return {
44
+ rejected: true,
45
+ iteration: result.iteration,
46
+ iterationWarning: result.iterationWarning,
47
+ };
48
+ } catch (error: unknown) {
49
+ const message = error instanceof Error ? error.message : 'Failed to reject feature';
50
+ return { rejected: false, error: message };
51
+ }
52
+ }
@@ -0,0 +1,24 @@
1
+ import type { ReactNode } from 'react';
2
+
3
+ export interface DrawerActionBarProps {
4
+ /** Callback when user rejects with feedback (inline input or dialog) */
5
+ onReject?: (feedback: string) => void;
6
+ /** Callback when user approves */
7
+ onApprove: () => void;
8
+ /** Label for the approve button */
9
+ approveLabel: string;
10
+ /** Icon element for the approve button */
11
+ approveIcon?: ReactNode;
12
+ /** Placeholder for the inline revision input */
13
+ revisionPlaceholder?: string;
14
+ /** Title for the reject feedback dialog */
15
+ rejectDialogTitle?: string;
16
+ /** Whether an approval/processing operation is in flight */
17
+ isProcessing?: boolean;
18
+ /** Whether a reject operation is in flight */
19
+ isRejecting?: boolean;
20
+ /** Whether to show the reject button (defaults to true when onReject is provided) */
21
+ showRejectButton?: boolean;
22
+ /** Content rendered between revision input and action buttons (e.g. progress bar) */
23
+ children?: ReactNode;
24
+ }
@@ -0,0 +1,64 @@
1
+ 'use client';
2
+
3
+ import { useState } from 'react';
4
+ import { X } from 'lucide-react';
5
+ import { Button } from '@/components/ui/button';
6
+ import { RejectFeedbackDialog } from '@/components/common/reject-feedback-dialog';
7
+ import { DrawerRevisionInput } from '@/components/common/drawer-revision-input';
8
+ import type { DrawerActionBarProps } from './drawer-action-bar-config';
9
+
10
+ export function DrawerActionBar({
11
+ onReject,
12
+ onApprove,
13
+ approveLabel,
14
+ approveIcon,
15
+ revisionPlaceholder,
16
+ rejectDialogTitle,
17
+ isProcessing = false,
18
+ isRejecting = false,
19
+ showRejectButton = true,
20
+ children,
21
+ }: DrawerActionBarProps) {
22
+ const [rejectDialogOpen, setRejectDialogOpen] = useState(false);
23
+ const disabled = isProcessing || isRejecting;
24
+
25
+ return (
26
+ <div className="border-border shrink-0 border-t">
27
+ {children}
28
+ {onReject ? (
29
+ <DrawerRevisionInput
30
+ onSubmit={onReject}
31
+ placeholder={revisionPlaceholder}
32
+ disabled={disabled || !onReject}
33
+ />
34
+ ) : null}
35
+ <div className="flex items-center gap-2 px-4 pb-4">
36
+ {onReject && showRejectButton ? (
37
+ <>
38
+ <Button
39
+ type="button"
40
+ variant="outline"
41
+ className="text-destructive hover:text-destructive"
42
+ disabled={disabled}
43
+ onClick={() => setRejectDialogOpen(true)}
44
+ >
45
+ <X className="mr-1.5 h-4 w-4" />
46
+ Reject
47
+ </Button>
48
+ <RejectFeedbackDialog
49
+ open={rejectDialogOpen}
50
+ onOpenChange={setRejectDialogOpen}
51
+ onConfirm={onReject}
52
+ isSubmitting={isRejecting}
53
+ title={rejectDialogTitle}
54
+ />
55
+ </>
56
+ ) : null}
57
+ <Button type="button" className="flex-1" disabled={disabled} onClick={onApprove}>
58
+ {approveIcon}
59
+ {approveLabel}
60
+ </Button>
61
+ </div>
62
+ </div>
63
+ );
64
+ }
@@ -0,0 +1,2 @@
1
+ export { DrawerActionBar } from './drawer-action-bar';
2
+ export type { DrawerActionBarProps } from './drawer-action-bar-config';
@@ -0,0 +1,10 @@
1
+ export interface DrawerRevisionInputProps {
2
+ /** Callback when user submits revision text */
3
+ onSubmit: (text: string) => void;
4
+ /** Placeholder text for the input */
5
+ placeholder?: string;
6
+ /** Accessible label for the input */
7
+ ariaLabel?: string;
8
+ /** Whether the input should be disabled */
9
+ disabled?: boolean;
10
+ }
@@ -0,0 +1,41 @@
1
+ 'use client';
2
+
3
+ import { useState } from 'react';
4
+ import { Send } from 'lucide-react';
5
+ import { Button } from '@/components/ui/button';
6
+ import { Input } from '@/components/ui/input';
7
+ import type { DrawerRevisionInputProps } from './drawer-revision-input-config';
8
+
9
+ export function DrawerRevisionInput({
10
+ onSubmit,
11
+ placeholder = 'Ask AI to revise...',
12
+ ariaLabel,
13
+ disabled = false,
14
+ }: DrawerRevisionInputProps) {
15
+ const [chatInput, setChatInput] = useState('');
16
+
17
+ function handleSubmit(e: { preventDefault: () => void }) {
18
+ e.preventDefault();
19
+ const text = chatInput.trim();
20
+ if (!text) return;
21
+ onSubmit(text);
22
+ setChatInput('');
23
+ }
24
+
25
+ return (
26
+ <form onSubmit={handleSubmit} className="flex items-center gap-2 p-4">
27
+ <Input
28
+ type="text"
29
+ placeholder={placeholder}
30
+ aria-label={ariaLabel ?? placeholder}
31
+ disabled={disabled}
32
+ value={chatInput}
33
+ onChange={(e) => setChatInput(e.target.value)}
34
+ className="flex-1"
35
+ />
36
+ <Button type="submit" variant="secondary" size="icon" aria-label="Send" disabled={disabled}>
37
+ <Send />
38
+ </Button>
39
+ </form>
40
+ );
41
+ }
@@ -0,0 +1,2 @@
1
+ export { DrawerRevisionInput } from './drawer-revision-input';
2
+ export type { DrawerRevisionInputProps } from './drawer-revision-input-config';
@@ -52,10 +52,12 @@ export interface MergeReviewProps {
52
52
  data: MergeReviewData;
53
53
  /** Approve merge callback */
54
54
  onApprove: () => void;
55
- /** Send refinement text to AI */
56
- onRefine: (text: string) => void;
55
+ /** Reject merge callback — opens feedback dialog when provided; also used for inline text rejection */
56
+ onReject?: (feedback: string) => void;
57
57
  /** Controls disabled state during approval */
58
58
  isProcessing?: boolean;
59
+ /** Whether a reject operation is in flight */
60
+ isRejecting?: boolean;
59
61
  }
60
62
 
61
63
  /** Props for the merge review drawer (shell wrapper) */
@@ -36,7 +36,7 @@ const fullData: MergeReviewData = {
36
36
 
37
37
  const defaultActions = {
38
38
  onApprove: fn().mockName('onApprove'),
39
- onRefine: fn().mockName('onRefine'),
39
+ onReject: fn().mockName('onReject'),
40
40
  };
41
41
 
42
42
  /* ─── Standalone MergeReview ─── */