@shepai/cli 1.70.1 → 1.71.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 (312) hide show
  1. package/dist/packages/core/src/application/ports/output/services/deployment-service.interface.d.ts +32 -0
  2. package/dist/packages/core/src/application/ports/output/services/deployment-service.interface.d.ts.map +1 -1
  3. package/dist/packages/core/src/infrastructure/services/deployment/deployment.service.d.ts +16 -2
  4. package/dist/packages/core/src/infrastructure/services/deployment/deployment.service.d.ts.map +1 -1
  5. package/dist/packages/core/src/infrastructure/services/deployment/deployment.service.js +46 -9
  6. package/dist/packages/core/src/infrastructure/services/deployment/log-ring-buffer.d.ts +23 -0
  7. package/dist/packages/core/src/infrastructure/services/deployment/log-ring-buffer.d.ts.map +1 -0
  8. package/dist/packages/core/src/infrastructure/services/deployment/log-ring-buffer.js +46 -0
  9. package/dist/src/presentation/web/app/actions/get-deployment-logs.d.ts +3 -0
  10. package/dist/src/presentation/web/app/actions/get-deployment-logs.d.ts.map +1 -0
  11. package/dist/src/presentation/web/app/actions/get-deployment-logs.js +9 -0
  12. package/dist/src/presentation/web/app/actions/get-feature-artifact.d.ts +2 -0
  13. package/dist/src/presentation/web/app/actions/get-feature-artifact.d.ts.map +1 -1
  14. package/dist/src/presentation/web/app/actions/get-feature-artifact.js +23 -1
  15. package/dist/src/presentation/web/app/api/deployment-logs/route.d.ts +15 -0
  16. package/dist/src/presentation/web/app/api/deployment-logs/route.d.ts.map +1 -0
  17. package/dist/src/presentation/web/app/api/deployment-logs/route.js +94 -0
  18. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.js +2 -2
  19. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.stories.js +1 -1
  20. package/dist/src/presentation/web/components/common/control-center-drawer/control-center-drawer.d.ts.map +1 -1
  21. package/dist/src/presentation/web/components/common/control-center-drawer/control-center-drawer.js +34 -4
  22. package/dist/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.d.ts +2 -1
  23. package/dist/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.d.ts.map +1 -1
  24. package/dist/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.js +16 -5
  25. package/dist/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.stories.d.ts +4 -0
  26. package/dist/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.stories.d.ts.map +1 -1
  27. package/dist/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.stories.js +8 -0
  28. package/dist/src/presentation/web/components/common/merge-review/merge-review.js +1 -1
  29. package/dist/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.js +1 -1
  30. package/dist/src/presentation/web/components/common/product-decisions-summary/index.d.ts +3 -0
  31. package/dist/src/presentation/web/components/common/product-decisions-summary/index.d.ts.map +1 -0
  32. package/dist/src/presentation/web/components/common/product-decisions-summary/index.js +1 -0
  33. package/dist/src/presentation/web/components/common/product-decisions-summary/product-decisions-summary-config.d.ts +23 -0
  34. package/dist/src/presentation/web/components/common/product-decisions-summary/product-decisions-summary-config.d.ts.map +1 -0
  35. package/dist/src/presentation/web/components/common/product-decisions-summary/product-decisions-summary-config.js +1 -0
  36. package/dist/src/presentation/web/components/common/product-decisions-summary/product-decisions-summary.d.ts +3 -0
  37. package/dist/src/presentation/web/components/common/product-decisions-summary/product-decisions-summary.d.ts.map +1 -0
  38. package/dist/src/presentation/web/components/common/product-decisions-summary/product-decisions-summary.js +13 -0
  39. package/dist/src/presentation/web/components/common/product-decisions-summary/product-decisions-summary.stories.d.ts +14 -0
  40. package/dist/src/presentation/web/components/common/product-decisions-summary/product-decisions-summary.stories.d.ts.map +1 -0
  41. package/dist/src/presentation/web/components/common/product-decisions-summary/product-decisions-summary.stories.js +74 -0
  42. package/dist/src/presentation/web/components/common/repository-node/repository-node.d.ts.map +1 -1
  43. package/dist/src/presentation/web/components/common/repository-node/repository-node.js +1 -1
  44. package/dist/src/presentation/web/components/common/server-log-viewer/index.d.ts +2 -0
  45. package/dist/src/presentation/web/components/common/server-log-viewer/index.d.ts.map +1 -0
  46. package/dist/src/presentation/web/components/common/server-log-viewer/index.js +1 -0
  47. package/dist/src/presentation/web/components/common/server-log-viewer/server-log-viewer.d.ts +15 -0
  48. package/dist/src/presentation/web/components/common/server-log-viewer/server-log-viewer.d.ts.map +1 -0
  49. package/dist/src/presentation/web/components/common/server-log-viewer/server-log-viewer.js +31 -0
  50. package/dist/src/presentation/web/components/common/server-log-viewer/server-log-viewer.stories.d.ts +18 -0
  51. package/dist/src/presentation/web/components/common/server-log-viewer/server-log-viewer.stories.d.ts.map +1 -0
  52. package/dist/src/presentation/web/components/common/server-log-viewer/server-log-viewer.stories.js +113 -0
  53. package/dist/src/presentation/web/components/common/tech-decisions-review/index.d.ts +1 -1
  54. package/dist/src/presentation/web/components/common/tech-decisions-review/index.d.ts.map +1 -1
  55. package/dist/src/presentation/web/components/common/tech-decisions-review/index.js +1 -1
  56. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.d.ts +8 -1
  57. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.d.ts.map +1 -1
  58. package/dist/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.js +11 -2
  59. package/dist/src/presentation/web/components/common/tech-review-tabs/index.d.ts +3 -0
  60. package/dist/src/presentation/web/components/common/tech-review-tabs/index.d.ts.map +1 -0
  61. package/dist/src/presentation/web/components/common/tech-review-tabs/index.js +1 -0
  62. package/dist/src/presentation/web/components/common/tech-review-tabs/tech-review-tabs-config.d.ts +17 -0
  63. package/dist/src/presentation/web/components/common/tech-review-tabs/tech-review-tabs-config.d.ts.map +1 -0
  64. package/dist/src/presentation/web/components/common/tech-review-tabs/tech-review-tabs-config.js +1 -0
  65. package/dist/src/presentation/web/components/common/tech-review-tabs/tech-review-tabs.d.ts +3 -0
  66. package/dist/src/presentation/web/components/common/tech-review-tabs/tech-review-tabs.d.ts.map +1 -0
  67. package/dist/src/presentation/web/components/common/tech-review-tabs/tech-review-tabs.js +12 -0
  68. package/dist/src/presentation/web/components/common/tech-review-tabs/tech-review-tabs.stories.d.ts +16 -0
  69. package/dist/src/presentation/web/components/common/tech-review-tabs/tech-review-tabs.stories.d.ts.map +1 -0
  70. package/dist/src/presentation/web/components/common/tech-review-tabs/tech-review-tabs.stories.js +110 -0
  71. package/dist/src/presentation/web/hooks/use-deployment-logs.d.ts +7 -0
  72. package/dist/src/presentation/web/hooks/use-deployment-logs.d.ts.map +1 -0
  73. package/dist/src/presentation/web/hooks/use-deployment-logs.js +50 -0
  74. package/dist/tsconfig.build.tsbuildinfo +1 -1
  75. package/package.json +1 -1
  76. package/web/.next/BUILD_ID +1 -1
  77. package/web/.next/app-path-routes-manifest.json +1 -0
  78. package/web/.next/build-manifest.json +2 -2
  79. package/web/.next/cache/.previewinfo +1 -1
  80. package/web/.next/cache/.rscinfo +1 -1
  81. package/web/.next/cache/.tsbuildinfo +1 -1
  82. package/web/.next/cache/config.json +3 -3
  83. package/web/.next/fallback-build-manifest.json +2 -2
  84. package/web/.next/prerender-manifest.json +3 -3
  85. package/web/.next/required-server-files.js +1 -1
  86. package/web/.next/required-server-files.json +1 -1
  87. package/web/.next/routes-manifest.json +6 -0
  88. package/web/.next/server/app/_global-error.html +2 -2
  89. package/web/.next/server/app/_global-error.rsc +1 -1
  90. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  91. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  92. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  93. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  94. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  95. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  96. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  97. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  98. package/web/.next/server/app/api/deployment-logs/route/app-paths-manifest.json +3 -0
  99. package/web/.next/server/app/api/deployment-logs/route/build-manifest.json +11 -0
  100. package/web/.next/server/app/api/deployment-logs/route/server-reference-manifest.json +4 -0
  101. package/web/.next/server/app/api/deployment-logs/route.js +6 -0
  102. package/web/.next/server/app/api/deployment-logs/route.js.map +5 -0
  103. package/web/.next/server/app/api/deployment-logs/route.js.nft.json +1 -0
  104. package/web/.next/server/app/api/deployment-logs/route_client-reference-manifest.js +2 -0
  105. package/web/.next/server/app/api/tools/[id]/install/route.js +1 -1
  106. package/web/.next/server/app/api/tools/[id]/install/route.js.nft.json +1 -1
  107. package/web/.next/server/app/page/server-reference-manifest.json +51 -36
  108. package/web/.next/server/app/page.js +1 -1
  109. package/web/.next/server/app/page.js.nft.json +1 -1
  110. package/web/.next/server/app/page_client-reference-manifest.js +1 -1
  111. package/web/.next/server/app/skills/page/server-reference-manifest.json +25 -10
  112. package/web/.next/server/app/skills/page.js +1 -1
  113. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  114. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  115. package/web/.next/server/app/tools/page/server-reference-manifest.json +1 -1
  116. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  117. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  118. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  119. package/web/.next/server/app/version/page.js +1 -1
  120. package/web/.next/server/app/version/page.js.nft.json +1 -1
  121. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  122. package/web/.next/server/app-paths-manifest.json +1 -0
  123. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_deployment-logs_route_actions_b785cd3a.js +3 -0
  124. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_deployment-logs_route_actions_b785cd3a.js.map +1 -0
  125. package/web/.next/server/chunks/[root-of-the-server]__9a136c79._.js +9 -0
  126. package/web/.next/server/chunks/[root-of-the-server]__9a136c79._.js.map +1 -0
  127. package/web/.next/server/chunks/{[root-of-the-server]__09413611._.js → [root-of-the-server]__e926de65._.js} +2 -2
  128. package/web/.next/server/chunks/{[root-of-the-server]__09413611._.js.map → [root-of-the-server]__e926de65._.js.map} +1 -1
  129. package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +1 -1
  130. package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js.map +1 -1
  131. package/web/.next/server/chunks/ssr/[root-of-the-server]__5f968713._.js +3 -0
  132. package/web/.next/server/chunks/ssr/[root-of-the-server]__5f968713._.js.map +1 -0
  133. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  134. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
  135. package/web/.next/server/chunks/ssr/{[root-of-the-server]__249c74f6._.js → [root-of-the-server]__6e8b5181._.js} +2 -2
  136. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  137. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
  138. package/web/.next/server/chunks/ssr/[root-of-the-server]__970ba1be._.js +3 -0
  139. package/web/.next/server/chunks/ssr/[root-of-the-server]__970ba1be._.js.map +1 -0
  140. package/web/.next/server/chunks/ssr/[root-of-the-server]__97a1f9c2._.js +4 -0
  141. package/web/.next/server/chunks/ssr/[root-of-the-server]__97a1f9c2._.js.map +1 -0
  142. package/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js +2 -2
  143. package/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js.map +1 -1
  144. package/web/.next/server/chunks/ssr/[root-of-the-server]__ad7c18fa._.js +9 -0
  145. package/web/.next/server/chunks/ssr/[root-of-the-server]__ad7c18fa._.js.map +1 -0
  146. package/web/.next/server/chunks/ssr/[root-of-the-server]__b22d8535._.js +3 -0
  147. package/web/.next/server/chunks/ssr/[root-of-the-server]__b22d8535._.js.map +1 -0
  148. package/web/.next/server/chunks/ssr/_25e0eb34._.js +3 -0
  149. package/web/.next/server/chunks/ssr/_25e0eb34._.js.map +1 -0
  150. package/web/.next/server/chunks/ssr/_49bf495c._.js +1 -1
  151. package/web/.next/server/chunks/ssr/_49bf495c._.js.map +1 -1
  152. package/web/.next/server/chunks/ssr/_68b5e0de._.js +1 -1
  153. package/web/.next/server/chunks/ssr/_68b5e0de._.js.map +1 -1
  154. package/web/.next/server/chunks/ssr/_725584e5._.js +1 -1
  155. package/web/.next/server/chunks/ssr/_725584e5._.js.map +1 -1
  156. package/web/.next/server/chunks/ssr/_72ce07df._.js +3 -0
  157. package/web/.next/server/chunks/ssr/_72ce07df._.js.map +1 -0
  158. package/web/.next/server/chunks/ssr/{node_modules__pnpm_febcbea6._.js → node_modules__pnpm_3288606c._.js} +2 -2
  159. package/web/.next/server/chunks/ssr/{node_modules__pnpm_febcbea6._.js.map → node_modules__pnpm_3288606c._.js.map} +1 -1
  160. package/web/.next/server/chunks/ssr/src_presentation_web_components_5124369c._.js +3 -0
  161. package/web/.next/server/chunks/ssr/src_presentation_web_components_5124369c._.js.map +1 -0
  162. package/web/.next/server/chunks/ssr/src_presentation_web_components_ui_tabs_tsx_b226ea9b._.js +3 -0
  163. package/web/.next/server/chunks/ssr/src_presentation_web_components_ui_tabs_tsx_b226ea9b._.js.map +1 -0
  164. package/web/.next/server/pages/500.html +2 -2
  165. package/web/.next/server/server-reference-manifest.js +1 -1
  166. package/web/.next/server/server-reference-manifest.json +64 -42
  167. package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
  168. package/web/.next/standalone/src/presentation/web/.next/app-path-routes-manifest.json +1 -0
  169. package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +2 -2
  170. package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
  171. package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +1 -1
  172. package/web/.next/standalone/src/presentation/web/.next/routes-manifest.json +6 -0
  173. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
  174. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
  175. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  176. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  177. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  178. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  179. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  180. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  181. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  182. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  183. package/web/.next/standalone/src/presentation/web/.next/server/app/api/deployment-logs/route/app-paths-manifest.json +3 -0
  184. package/web/.next/standalone/src/presentation/web/.next/server/app/api/deployment-logs/route/build-manifest.json +11 -0
  185. package/web/.next/standalone/src/presentation/web/.next/server/app/api/deployment-logs/route/server-reference-manifest.json +4 -0
  186. package/web/.next/standalone/src/presentation/web/.next/server/app/api/deployment-logs/route.js +6 -0
  187. package/web/.next/standalone/src/presentation/web/.next/server/app/api/deployment-logs/route.js.map +5 -0
  188. package/web/.next/standalone/src/presentation/web/.next/server/app/api/deployment-logs/route.js.nft.json +1 -0
  189. package/web/.next/standalone/src/presentation/web/.next/server/app/api/deployment-logs/route_client-reference-manifest.js +2 -0
  190. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/route.js +1 -1
  191. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/route.js.nft.json +1 -1
  192. package/web/.next/standalone/src/presentation/web/.next/server/app/page/server-reference-manifest.json +51 -36
  193. package/web/.next/standalone/src/presentation/web/.next/server/app/page.js +1 -1
  194. package/web/.next/standalone/src/presentation/web/.next/server/app/page.js.nft.json +1 -1
  195. package/web/.next/standalone/src/presentation/web/.next/server/app/page_client-reference-manifest.js +1 -1
  196. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +25 -10
  197. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js +1 -1
  198. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js.nft.json +1 -1
  199. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  200. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +1 -1
  201. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js.nft.json +1 -1
  202. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  203. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  204. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js +1 -1
  205. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js.nft.json +1 -1
  206. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  207. package/web/.next/standalone/src/presentation/web/.next/server/app-paths-manifest.json +1 -0
  208. package/web/.next/standalone/src/presentation/web/.next/server/chunks/744ca_web__next-internal_server_app_api_deployment-logs_route_actions_b785cd3a.js +3 -0
  209. package/web/.next/standalone/src/presentation/web/.next/server/chunks/[root-of-the-server]__9a136c79._.js +9 -0
  210. package/web/.next/standalone/src/presentation/web/.next/server/chunks/{[root-of-the-server]__09413611._.js → [root-of-the-server]__e926de65._.js} +2 -2
  211. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +1 -1
  212. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__5f968713._.js +3 -0
  213. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  214. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{[root-of-the-server]__249c74f6._.js → [root-of-the-server]__6e8b5181._.js} +2 -2
  215. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  216. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__970ba1be._.js +3 -0
  217. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__97a1f9c2._.js +4 -0
  218. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__9add7c3a._.js +2 -2
  219. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__ad7c18fa._.js +9 -0
  220. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__b22d8535._.js +3 -0
  221. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_25e0eb34._.js +3 -0
  222. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_49bf495c._.js +1 -1
  223. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_68b5e0de._.js +1 -1
  224. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_725584e5._.js +1 -1
  225. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_72ce07df._.js +3 -0
  226. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/{node_modules__pnpm_febcbea6._.js → node_modules__pnpm_3288606c._.js} +2 -2
  227. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_5124369c._.js +3 -0
  228. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_ui_tabs_tsx_b226ea9b._.js +3 -0
  229. package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
  230. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
  231. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +64 -42
  232. package/web/.next/standalone/src/presentation/web/app/actions/get-deployment-logs.ts +16 -0
  233. package/web/.next/standalone/src/presentation/web/app/actions/get-feature-artifact.ts +26 -1
  234. package/web/.next/standalone/src/presentation/web/app/api/deployment-logs/route.ts +112 -0
  235. package/web/.next/standalone/src/presentation/web/components/common/base-drawer/base-drawer.stories.tsx +1 -1
  236. package/web/.next/standalone/src/presentation/web/components/common/base-drawer/base-drawer.tsx +6 -2
  237. package/web/.next/standalone/src/presentation/web/components/common/control-center-drawer/control-center-drawer.tsx +44 -6
  238. package/web/.next/standalone/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.stories.tsx +10 -0
  239. package/web/.next/standalone/src/presentation/web/components/common/deployment-status-badge/deployment-status-badge.tsx +76 -23
  240. package/web/.next/standalone/src/presentation/web/components/common/merge-review/merge-review.tsx +1 -1
  241. package/web/.next/standalone/src/presentation/web/components/common/prd-questionnaire/prd-questionnaire.tsx +1 -1
  242. package/web/.next/standalone/src/presentation/web/components/common/product-decisions-summary/index.ts +6 -0
  243. package/web/.next/standalone/src/presentation/web/components/common/product-decisions-summary/product-decisions-summary-config.ts +24 -0
  244. package/web/.next/standalone/src/presentation/web/components/common/product-decisions-summary/product-decisions-summary.stories.tsx +87 -0
  245. package/web/.next/standalone/src/presentation/web/components/common/product-decisions-summary/product-decisions-summary.tsx +52 -0
  246. package/web/.next/standalone/src/presentation/web/components/common/repository-node/repository-node.tsx +5 -1
  247. package/web/.next/standalone/src/presentation/web/components/common/server-log-viewer/index.ts +6 -0
  248. package/web/.next/standalone/src/presentation/web/components/common/server-log-viewer/server-log-viewer.stories.tsx +168 -0
  249. package/web/.next/standalone/src/presentation/web/components/common/server-log-viewer/server-log-viewer.tsx +110 -0
  250. package/web/.next/standalone/src/presentation/web/components/common/tech-decisions-review/index.ts +1 -1
  251. package/web/.next/standalone/src/presentation/web/components/common/tech-decisions-review/tech-decisions-review.tsx +47 -29
  252. package/web/.next/standalone/src/presentation/web/components/common/tech-review-tabs/index.ts +2 -0
  253. package/web/.next/standalone/src/presentation/web/components/common/tech-review-tabs/tech-review-tabs-config.ts +17 -0
  254. package/web/.next/standalone/src/presentation/web/components/common/tech-review-tabs/tech-review-tabs.stories.tsx +129 -0
  255. package/web/.next/standalone/src/presentation/web/components/common/tech-review-tabs/tech-review-tabs.tsx +60 -0
  256. package/web/.next/standalone/src/presentation/web/hooks/use-deployment-logs.ts +67 -0
  257. package/web/.next/standalone/src/presentation/web/server.js +1 -1
  258. package/web/.next/static/chunks/01ae2241bd4b44b6.js +1 -0
  259. package/web/.next/static/chunks/20f7876f292cfd82.js +1 -0
  260. package/web/.next/static/chunks/224ed5f5dbd33154.css +2 -0
  261. package/web/.next/static/chunks/{87421ab1062a39b7.js → 3e1227e02ef8bcc6.js} +2 -2
  262. package/web/.next/static/chunks/{1ed0df845a1625f6.js → 62c8ebbd9c7bb287.js} +1 -1
  263. package/web/.next/static/chunks/673e0c1000a91948.js +1 -0
  264. package/web/.next/static/chunks/8b6df4f8e194d0ce.js +1 -0
  265. package/web/.next/static/chunks/b025563d959150a1.js +1 -0
  266. package/web/.next/static/chunks/{9db5c06001f3e664.js → c7fb052190a02a9c.js} +2 -2
  267. package/web/.next/static/chunks/d450d8db6be36b8d.js +1 -0
  268. package/web/.next/static/chunks/d9e3cf214ac2f386.js +1 -0
  269. package/web/.next/trace +1 -1
  270. package/web/.next/trace-build +1 -1
  271. package/web/.next/types/link.d.ts +1 -0
  272. package/web/.next/types/routes.d.ts +2 -1
  273. package/web/.next/types/validator.ts +9 -0
  274. package/web/.next/server/chunks/ssr/6769f_@radix-ui_react-roving-focus_dist_index_mjs_b3be3d8e._.js +0 -3
  275. package/web/.next/server/chunks/ssr/6769f_@radix-ui_react-roving-focus_dist_index_mjs_b3be3d8e._.js.map +0 -1
  276. package/web/.next/server/chunks/ssr/[root-of-the-server]__2ffb27f1._.js +0 -3
  277. package/web/.next/server/chunks/ssr/[root-of-the-server]__2ffb27f1._.js.map +0 -1
  278. package/web/.next/server/chunks/ssr/[root-of-the-server]__551fb7e1._.js +0 -4
  279. package/web/.next/server/chunks/ssr/[root-of-the-server]__551fb7e1._.js.map +0 -1
  280. package/web/.next/server/chunks/ssr/[root-of-the-server]__7f4180a1._.js +0 -3
  281. package/web/.next/server/chunks/ssr/[root-of-the-server]__7f4180a1._.js.map +0 -1
  282. package/web/.next/server/chunks/ssr/[root-of-the-server]__e41b5eec._.js +0 -9
  283. package/web/.next/server/chunks/ssr/[root-of-the-server]__e41b5eec._.js.map +0 -1
  284. package/web/.next/server/chunks/ssr/[root-of-the-server]__eaf6100f._.js +0 -3
  285. package/web/.next/server/chunks/ssr/[root-of-the-server]__eaf6100f._.js.map +0 -1
  286. package/web/.next/server/chunks/ssr/_28993370._.js +0 -3
  287. package/web/.next/server/chunks/ssr/_28993370._.js.map +0 -1
  288. package/web/.next/server/chunks/ssr/_690ea95f._.js +0 -3
  289. package/web/.next/server/chunks/ssr/_690ea95f._.js.map +0 -1
  290. package/web/.next/server/chunks/ssr/src_presentation_web_components_0286756b._.js +0 -3
  291. package/web/.next/server/chunks/ssr/src_presentation_web_components_0286756b._.js.map +0 -1
  292. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/6769f_@radix-ui_react-roving-focus_dist_index_mjs_b3be3d8e._.js +0 -3
  293. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__2ffb27f1._.js +0 -3
  294. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__551fb7e1._.js +0 -4
  295. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__7f4180a1._.js +0 -3
  296. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__e41b5eec._.js +0 -9
  297. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__eaf6100f._.js +0 -3
  298. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_28993370._.js +0 -3
  299. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_690ea95f._.js +0 -3
  300. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_0286756b._.js +0 -3
  301. package/web/.next/static/chunks/16e380b8dd9d11bc.js +0 -1
  302. package/web/.next/static/chunks/24e1d97cab8bad6d.js +0 -1
  303. package/web/.next/static/chunks/505c6a9e4c5d0808.js +0 -1
  304. package/web/.next/static/chunks/a186bbb822ccb655.css +0 -2
  305. package/web/.next/static/chunks/a5c59952485e875e.js +0 -1
  306. package/web/.next/static/chunks/a9626385607910b3.js +0 -1
  307. package/web/.next/static/chunks/d4379644a6145352.js +0 -1
  308. package/web/.next/static/chunks/fb703cf73aba2eb8.js +0 -1
  309. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__249c74f6._.js.map → [root-of-the-server]__6e8b5181._.js.map} +0 -0
  310. /package/web/.next/static/{8xZoRkWykApYNlvamCGUe → F3mdpVVEgR5m2xHY_SnYx}/_buildManifest.js +0 -0
  311. /package/web/.next/static/{8xZoRkWykApYNlvamCGUe → F3mdpVVEgR5m2xHY_SnYx}/_clientMiddlewareManifest.json +0 -0
  312. /package/web/.next/static/{8xZoRkWykApYNlvamCGUe → F3mdpVVEgR5m2xHY_SnYx}/_ssgManifest.js +0 -0
@@ -0,0 +1,3 @@
1
+ module.exports=[41305,63496,77127,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(59653),e=a.i(7420),f=a.i(6175),g=a.i(90986);function h(a){let d=a+"CollectionProvider",[h,i]=(0,e.createContextScope)(d),[j,k]=h(d,{collectionRef:{current:null},itemMap:new Map}),l=a=>{let{scope:d,children:e}=a,f=c.default.useRef(null),g=c.default.useRef(new Map).current;return(0,b.jsx)(j,{scope:d,itemMap:g,collectionRef:f,children:e})};l.displayName=d;let m=a+"CollectionSlot",n=(0,g.createSlot)(m),o=c.default.forwardRef((a,c)=>{let{scope:d,children:e}=a,g=k(m,d),h=(0,f.useComposedRefs)(c,g.collectionRef);return(0,b.jsx)(n,{ref:h,children:e})});o.displayName=m;let p=a+"CollectionItemSlot",q="data-radix-collection-item",r=(0,g.createSlot)(p),s=c.default.forwardRef((a,d)=>{let{scope:e,children:g,...h}=a,i=c.default.useRef(null),j=(0,f.useComposedRefs)(d,i),l=k(p,e);return c.default.useEffect(()=>(l.itemMap.set(i,{ref:i,...h}),()=>void l.itemMap.delete(i))),(0,b.jsx)(r,{...{[q]:""},ref:j,children:g})});return s.displayName=p,[{Provider:l,Slot:o,ItemSlot:s},function(b){let d=k(a+"CollectionConsumer",b);return c.default.useCallback(()=>{let a=d.collectionRef.current;if(!a)return[];let b=Array.from(a.querySelectorAll(`[${q}]`));return Array.from(d.itemMap.values()).sort((a,c)=>b.indexOf(a.ref.current)-b.indexOf(c.ref.current))},[d.collectionRef,d.itemMap])},i]}var i=new WeakMap;function j(a,b){var c,d;let e,f,g;if("at"in Array.prototype)return Array.prototype.at.call(a,b);let h=(c=a,d=b,e=c.length,(g=(f=k(d))>=0?f:e+f)<0||g>=e?-1:g);return -1===h?void 0:a[h]}function k(a){return a!=a||0===a?0:Math.trunc(a)}(class a extends Map{#a;constructor(a){super(a),this.#a=[...super.keys()],i.set(this,!0)}set(a,b){return i.get(this)&&(this.has(a)?this.#a[this.#a.indexOf(a)]=a:this.#a.push(a)),super.set(a,b),this}insert(a,b,c){let d,e=this.has(b),f=this.#a.length,g=k(a),h=g>=0?g:f+g,i=h<0||h>=f?-1:h;if(i===this.size||e&&i===this.size-1||-1===i)return this.set(b,c),this;let j=this.size+ +!e;g<0&&h++;let l=[...this.#a],m=!1;for(let a=h;a<j;a++)if(h===a){let f=l[a];l[a]===b&&(f=l[a+1]),e&&this.delete(b),d=this.get(f),this.set(b,c)}else{m||l[a-1]!==b||(m=!0);let c=l[m?a:a-1],e=d;d=this.get(c),this.delete(c),this.set(c,e)}return this}with(b,c,d){let e=new a(this);return e.insert(b,c,d),e}before(a){let b=this.#a.indexOf(a)-1;if(!(b<0))return this.entryAt(b)}setBefore(a,b,c){let d=this.#a.indexOf(a);return -1===d?this:this.insert(d,b,c)}after(a){let b=this.#a.indexOf(a);if(-1!==(b=-1===b||b===this.size-1?-1:b+1))return this.entryAt(b)}setAfter(a,b,c){let d=this.#a.indexOf(a);return -1===d?this:this.insert(d+1,b,c)}first(){return this.entryAt(0)}last(){return this.entryAt(-1)}clear(){return this.#a=[],super.clear()}delete(a){let b=super.delete(a);return b&&this.#a.splice(this.#a.indexOf(a),1),b}deleteAt(a){let b=this.keyAt(a);return void 0!==b&&this.delete(b)}at(a){let b=j(this.#a,a);if(void 0!==b)return this.get(b)}entryAt(a){let b=j(this.#a,a);if(void 0!==b)return[b,this.get(b)]}indexOf(a){return this.#a.indexOf(a)}keyAt(a){return j(this.#a,a)}from(a,b){let c=this.indexOf(a);if(-1===c)return;let d=c+b;return d<0&&(d=0),d>=this.size&&(d=this.size-1),this.at(d)}keyFrom(a,b){let c=this.indexOf(a);if(-1===c)return;let d=c+b;return d<0&&(d=0),d>=this.size&&(d=this.size-1),this.keyAt(d)}find(a,b){let c=0;for(let d of this){if(Reflect.apply(a,b,[d,c,this]))return d;c++}}findIndex(a,b){let c=0;for(let d of this){if(Reflect.apply(a,b,[d,c,this]))return c;c++}return -1}filter(b,c){let d=[],e=0;for(let a of this)Reflect.apply(b,c,[a,e,this])&&d.push(a),e++;return new a(d)}map(b,c){let d=[],e=0;for(let a of this)d.push([a[0],Reflect.apply(b,c,[a,e,this])]),e++;return new a(d)}reduce(...a){let[b,c]=a,d=0,e=c??this.at(0);for(let c of this)e=0===d&&1===a.length?c:Reflect.apply(b,this,[e,c,d,this]),d++;return e}reduceRight(...a){let[b,c]=a,d=c??this.at(-1);for(let c=this.size-1;c>=0;c--){let e=this.at(c);d=c===this.size-1&&1===a.length?e:Reflect.apply(b,this,[d,e,c,this])}return d}toSorted(b){return new a([...this.entries()].sort(b))}toReversed(){let b=new a;for(let a=this.size-1;a>=0;a--){let c=this.keyAt(a),d=this.get(c);b.set(c,d)}return b}toSpliced(...b){let c=[...this.entries()];return c.splice(...b),new a(c)}slice(b,c){let d=new a,e=this.size-1;if(void 0===b)return d;b<0&&(b+=this.size),void 0!==c&&c>0&&(e=c-1);for(let a=b;a<=e;a++){let b=this.keyAt(a),c=this.get(b);d.set(b,c)}return d}every(a,b){let c=0;for(let d of this){if(!Reflect.apply(a,b,[d,c,this]))return!1;c++}return!0}some(a,b){let c=0;for(let d of this){if(Reflect.apply(a,b,[d,c,this]))return!0;c++}return!1}}),a.s(["createCollection",()=>h],63496);var l=a.i(5472),m=a.i(66873),n=a.i(79406),o=a.i(17329),p=a.i(48939),q="rovingFocusGroup.onEntryFocus",r={bubbles:!1,cancelable:!0},s="RovingFocusGroup",[t,u,v]=h(s),[w,x]=(0,e.createContextScope)(s,[v]),[y,z]=w(s),A=c.forwardRef((a,c)=>(0,b.jsx)(t.Provider,{scope:a.__scopeRovingFocusGroup,children:(0,b.jsx)(t.Slot,{scope:a.__scopeRovingFocusGroup,children:(0,b.jsx)(B,{...a,ref:c})})}));A.displayName=s;var B=c.forwardRef((a,e)=>{let{__scopeRovingFocusGroup:g,orientation:h,loop:i=!1,dir:j,currentTabStopId:k,defaultCurrentTabStopId:l,onCurrentTabStopIdChange:t,onEntryFocus:v,preventScrollOnEntryFocus:w=!1,...x}=a,z=c.useRef(null),A=(0,f.useComposedRefs)(e,z),B=(0,p.useDirection)(j),[C,D]=(0,o.useControllableState)({prop:k,defaultProp:l??null,onChange:t,caller:s}),[E,G]=c.useState(!1),H=(0,n.useCallbackRef)(v),I=u(g),J=c.useRef(!1),[K,L]=c.useState(0);return c.useEffect(()=>{let a=z.current;if(a)return a.addEventListener(q,H),()=>a.removeEventListener(q,H)},[H]),(0,b.jsx)(y,{scope:g,orientation:h,dir:B,loop:i,currentTabStopId:C,onItemFocus:c.useCallback(a=>D(a),[D]),onItemShiftTab:c.useCallback(()=>G(!0),[]),onFocusableItemAdd:c.useCallback(()=>L(a=>a+1),[]),onFocusableItemRemove:c.useCallback(()=>L(a=>a-1),[]),children:(0,b.jsx)(m.Primitive.div,{tabIndex:E||0===K?-1:0,"data-orientation":h,...x,ref:A,style:{outline:"none",...a.style},onMouseDown:(0,d.composeEventHandlers)(a.onMouseDown,()=>{J.current=!0}),onFocus:(0,d.composeEventHandlers)(a.onFocus,a=>{let b=!J.current;if(a.target===a.currentTarget&&b&&!E){let b=new CustomEvent(q,r);if(a.currentTarget.dispatchEvent(b),!b.defaultPrevented){let a=I().filter(a=>a.focusable);F([a.find(a=>a.active),a.find(a=>a.id===C),...a].filter(Boolean).map(a=>a.ref.current),w)}}J.current=!1}),onBlur:(0,d.composeEventHandlers)(a.onBlur,()=>G(!1))})})}),C="RovingFocusGroupItem",D=c.forwardRef((a,e)=>{let{__scopeRovingFocusGroup:f,focusable:g=!0,active:h=!1,tabStopId:i,children:j,...k}=a,n=(0,l.useId)(),o=i||n,p=z(C,f),q=p.currentTabStopId===o,r=u(f),{onFocusableItemAdd:s,onFocusableItemRemove:v,currentTabStopId:w}=p;return c.useEffect(()=>{if(g)return s(),()=>v()},[g,s,v]),(0,b.jsx)(t.ItemSlot,{scope:f,id:o,focusable:g,active:h,children:(0,b.jsx)(m.Primitive.span,{tabIndex:q?0:-1,"data-orientation":p.orientation,...k,ref:e,onMouseDown:(0,d.composeEventHandlers)(a.onMouseDown,a=>{g?p.onItemFocus(o):a.preventDefault()}),onFocus:(0,d.composeEventHandlers)(a.onFocus,()=>p.onItemFocus(o)),onKeyDown:(0,d.composeEventHandlers)(a.onKeyDown,a=>{if("Tab"===a.key&&a.shiftKey)return void p.onItemShiftTab();if(a.target!==a.currentTarget)return;let b=function(a,b,c){var d;let e=(d=a.key,"rtl"!==c?d:"ArrowLeft"===d?"ArrowRight":"ArrowRight"===d?"ArrowLeft":d);if(!("vertical"===b&&["ArrowLeft","ArrowRight"].includes(e))&&!("horizontal"===b&&["ArrowUp","ArrowDown"].includes(e)))return E[e]}(a,p.orientation,p.dir);if(void 0!==b){if(a.metaKey||a.ctrlKey||a.altKey||a.shiftKey)return;a.preventDefault();let e=r().filter(a=>a.focusable).map(a=>a.ref.current);if("last"===b)e.reverse();else if("prev"===b||"next"===b){var c,d;"prev"===b&&e.reverse();let f=e.indexOf(a.currentTarget);e=p.loop?(c=e,d=f+1,c.map((a,b)=>c[(d+b)%c.length])):e.slice(f+1)}setTimeout(()=>F(e))}}),children:"function"==typeof j?j({isCurrentTabStop:q,hasTabStop:null!=w}):j})})});D.displayName=C;var E={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function F(a,b=!1){let c=document.activeElement;for(let d of a)if(d===c||(d.focus({preventScroll:b}),document.activeElement!==c))return}a.s(["Item",()=>D,"Root",()=>A,"createRovingFocusGroupScope",()=>x],77127);var G=a.i(14272),H="Tabs",[I,J]=(0,e.createContextScope)(H,[x]),K=x(),[L,M]=I(H),N=c.forwardRef((a,c)=>{let{__scopeTabs:d,value:e,onValueChange:f,defaultValue:g,orientation:h="horizontal",dir:i,activationMode:j="automatic",...k}=a,n=(0,p.useDirection)(i),[q,r]=(0,o.useControllableState)({prop:e,onChange:f,defaultProp:g??"",caller:H});return(0,b.jsx)(L,{scope:d,baseId:(0,l.useId)(),value:q,onValueChange:r,orientation:h,dir:n,activationMode:j,children:(0,b.jsx)(m.Primitive.div,{dir:n,"data-orientation":h,...k,ref:c})})});N.displayName=H;var O="TabsList",P=c.forwardRef((a,c)=>{let{__scopeTabs:d,loop:e=!0,...f}=a,g=M(O,d),h=K(d);return(0,b.jsx)(A,{asChild:!0,...h,orientation:g.orientation,dir:g.dir,loop:e,children:(0,b.jsx)(m.Primitive.div,{role:"tablist","aria-orientation":g.orientation,...f,ref:c})})});P.displayName=O;var Q="TabsTrigger",R=c.forwardRef((a,c)=>{let{__scopeTabs:e,value:f,disabled:g=!1,...h}=a,i=M(Q,e),j=K(e),k=U(i.baseId,f),l=V(i.baseId,f),n=f===i.value;return(0,b.jsx)(D,{asChild:!0,...j,focusable:!g,active:n,children:(0,b.jsx)(m.Primitive.button,{type:"button",role:"tab","aria-selected":n,"aria-controls":l,"data-state":n?"active":"inactive","data-disabled":g?"":void 0,disabled:g,id:k,...h,ref:c,onMouseDown:(0,d.composeEventHandlers)(a.onMouseDown,a=>{g||0!==a.button||!1!==a.ctrlKey?a.preventDefault():i.onValueChange(f)}),onKeyDown:(0,d.composeEventHandlers)(a.onKeyDown,a=>{[" ","Enter"].includes(a.key)&&i.onValueChange(f)}),onFocus:(0,d.composeEventHandlers)(a.onFocus,()=>{let a="manual"!==i.activationMode;n||g||!a||i.onValueChange(f)})})})});R.displayName=Q;var S="TabsContent",T=c.forwardRef((a,d)=>{let{__scopeTabs:e,value:f,forceMount:g,children:h,...i}=a,j=M(S,e),k=U(j.baseId,f),l=V(j.baseId,f),n=f===j.value,o=c.useRef(n);return c.useEffect(()=>{let a=requestAnimationFrame(()=>o.current=!1);return()=>cancelAnimationFrame(a)},[]),(0,b.jsx)(G.Presence,{present:g||n,children:({present:c})=>(0,b.jsx)(m.Primitive.div,{"data-state":n?"active":"inactive","data-orientation":j.orientation,role:"tabpanel","aria-labelledby":k,hidden:!c,id:l,tabIndex:0,...i,ref:d,style:{...a.style,animationDuration:o.current?"0s":void 0},children:c&&h})})});function U(a,b){return`${a}-trigger-${b}`}function V(a,b){return`${a}-content-${b}`}T.displayName=S,a.s(["Content",()=>T,"List",()=>P,"Root",()=>N,"Tabs",()=>N,"TabsContent",()=>T,"TabsList",()=>P,"TabsTrigger",()=>R,"Trigger",()=>R,"createTabsScope",()=>J],287);var W=a.i(287),W=W,X=a.i(85536);let Y=W.Root,Z=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(W.List,{ref:d,className:(0,X.cn)("bg-muted text-muted-foreground inline-flex h-9 items-center justify-center rounded-lg p-1",a),...c}));Z.displayName=W.List.displayName;let $=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(W.Trigger,{ref:d,className:(0,X.cn)("ring-offset-background focus-visible:ring-ring data-[state=active]:bg-background data-[state=active]:text-foreground inline-flex items-center justify-center rounded-md px-3 py-1 text-sm font-medium whitespace-nowrap transition-all focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow",a),...c}));$.displayName=W.Trigger.displayName;let _=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(W.Content,{ref:d,className:(0,X.cn)("ring-offset-background focus-visible:ring-ring mt-2 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none",a),...c}));_.displayName=W.Content.displayName,a.s(["Tabs",()=>Y,"TabsContent",()=>_,"TabsList",()=>Z,"TabsTrigger",()=>$],41305)}];
2
+
3
+ //# sourceMappingURL=src_presentation_web_components_ui_tabs_tsx_b226ea9b._.js.map
@@ -1,2 +1,2 @@
1
- <!DOCTYPE html><!--8xZoRkWykApYNlvamCGUe--><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/c1c15470a7b058c8.js"/><script src="/_next/static/chunks/c7e793951b20a67f.js" async=""></script><script src="/_next/static/chunks/cfe4dc9904fcfddb.js" async=""></script><script src="/_next/static/chunks/4b6cc9f65260f2bd.js" async=""></script><script src="/_next/static/chunks/07f00e2e73d322d2.js" async=""></script><script src="/_next/static/chunks/turbopack-958ac34b879d0dce.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/c1c15470a7b058c8.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\":\"8xZoRkWykApYNlvamCGUe\",\"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><!--F3mdpVVEgR5m2xHY_SnYx--><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/c1c15470a7b058c8.js"/><script src="/_next/static/chunks/c7e793951b20a67f.js" async=""></script><script src="/_next/static/chunks/cfe4dc9904fcfddb.js" async=""></script><script src="/_next/static/chunks/4b6cc9f65260f2bd.js" async=""></script><script src="/_next/static/chunks/07f00e2e73d322d2.js" async=""></script><script src="/_next/static/chunks/turbopack-958ac34b879d0dce.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/c1c15470a7b058c8.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\":\"F3mdpVVEgR5m2xHY_SnYx\",\"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 \"000e60150a5bd5fe57a992f7f3d5b373a5b72d07c5\": {\n \"workers\": {\n \"app/_not-found/page\": {\n \"moduleId\": 66973,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n },\n \"app/page\": {\n \"moduleId\": 80894,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n },\n \"app/skills/page\": {\n \"moduleId\": 43368,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n },\n \"app/tools/page\": {\n \"moduleId\": 19036,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n },\n \"app/version/page\": {\n \"moduleId\": 86139,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n }\n },\n \"layer\": {\n \"app/_not-found/page\": \"action-browser\",\n \"app/page\": \"action-browser\",\n \"app/skills/page\": \"action-browser\",\n \"app/tools/page\": \"action-browser\",\n \"app/version/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\",\n \"exportedName\": \"pickFolder\"\n },\n \"4006b7a73487a4e583f3422160008ccfc06c941c75\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 80894,\n \"async\": false,\n \"exportedName\": \"deployFeature\",\n \"filename\": \"src/presentation/web/app/actions/deploy-feature.ts\"\n },\n \"app/skills/page\": {\n \"moduleId\": 43368,\n \"async\": false,\n \"exportedName\": \"deployFeature\",\n \"filename\": \"src/presentation/web/app/actions/deploy-feature.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\",\n \"app/skills/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/deploy-feature.ts\",\n \"exportedName\": \"deployFeature\"\n },\n \"40a8c0bacad41d1221c10df1eb2b2902eb4b44dd6b\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 80894,\n \"async\": false,\n \"exportedName\": \"deployRepository\",\n \"filename\": \"src/presentation/web/app/actions/deploy-repository.ts\"\n },\n \"app/skills/page\": {\n \"moduleId\": 43368,\n \"async\": false,\n \"exportedName\": \"deployRepository\",\n \"filename\": \"src/presentation/web/app/actions/deploy-repository.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\",\n \"app/skills/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/deploy-repository.ts\",\n \"exportedName\": \"deployRepository\"\n },\n \"40a7808d5c3be6afa44680ca161c6c013e4140ff15\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 80894,\n \"async\": false,\n \"exportedName\": \"stopDeployment\",\n \"filename\": \"src/presentation/web/app/actions/stop-deployment.ts\"\n },\n \"app/skills/page\": {\n \"moduleId\": 43368,\n \"async\": false,\n \"exportedName\": \"stopDeployment\",\n \"filename\": \"src/presentation/web/app/actions/stop-deployment.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\",\n \"app/skills/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/stop-deployment.ts\",\n \"exportedName\": \"stopDeployment\"\n },\n \"402466b72a304624e93d5c2c6f5a6ab2d3a5fc0776\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 80894,\n \"async\": false,\n \"exportedName\": \"getDeploymentStatus\",\n \"filename\": \"src/presentation/web/app/actions/get-deployment-status.ts\"\n },\n \"app/skills/page\": {\n \"moduleId\": 43368,\n \"async\": false,\n \"exportedName\": \"getDeploymentStatus\",\n \"filename\": \"src/presentation/web/app/actions/get-deployment-status.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\",\n \"app/skills/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-deployment-status.ts\",\n \"exportedName\": \"getDeploymentStatus\"\n },\n \"40586c6e08c6e26189e7a5e793e5c00209887c279b\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 80894,\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 \"4006427d5287b1d3973433061cea850f13646c9e07\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 80894,\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 \"40e686944689a8f502a6159c14bf7caae017e1a60c\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 80894,\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 \"604c33fef1fd06c507a5a65e2499ec0ad197e665f0\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 80894,\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 \"601d13360450eccda16c3440bd790cfc7b1887152b\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 80894,\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 \"40ef0bba49aa61001a6009ebf44c9d8f71efad216c\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 80894,\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 \"40701f1088380107d159b1849990e3b1b215f79212\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 80894,\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 \"4085078afa0f7085c1fec31cfd996ce2618ac56a5a\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 80894,\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 \"00cdc86bf5f0dde92e833594440ac170ba06c5db71\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 80894,\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 \"4009cfef5e3392805f561a9304e43b8d388b29177f\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 80894,\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 \"404bf2faddeceacfdd335d16ada005d6b30c51b992\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 80894,\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 \"40855dec31849b5c0c28e5f6082eac11aceb58a7b7\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 80894,\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 \"406a13d633eb2132d39b8f66f9031ae1860d8b780e\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 80894,\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\": \"dhye7k1caLZxuETREY4n1SvoPMCP7El/AClmu6Lx8Cc=\"\n}"
1
+ self.__RSC_SERVER_MANIFEST="{\n \"node\": {\n \"008f3b5239bc2e4cf4f138f128408ea0e3dd0c6a6c\": {\n \"workers\": {\n \"app/_not-found/page\": {\n \"moduleId\": 66973,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n },\n \"app/page\": {\n \"moduleId\": 84650,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n },\n \"app/skills/page\": {\n \"moduleId\": 87596,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n },\n \"app/tools/page\": {\n \"moduleId\": 19036,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n },\n \"app/version/page\": {\n \"moduleId\": 86139,\n \"async\": false,\n \"exportedName\": \"pickFolder\",\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\"\n }\n },\n \"layer\": {\n \"app/_not-found/page\": \"action-browser\",\n \"app/page\": \"action-browser\",\n \"app/skills/page\": \"action-browser\",\n \"app/tools/page\": \"action-browser\",\n \"app/version/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/pick-folder.ts\",\n \"exportedName\": \"pickFolder\"\n },\n \"40b5cac552678afe968327ef051beb1afb844598f0\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 84650,\n \"async\": false,\n \"exportedName\": \"getDeploymentLogs\",\n \"filename\": \"src/presentation/web/app/actions/get-deployment-logs.ts\"\n },\n \"app/skills/page\": {\n \"moduleId\": 87596,\n \"async\": false,\n \"exportedName\": \"getDeploymentLogs\",\n \"filename\": \"src/presentation/web/app/actions/get-deployment-logs.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\",\n \"app/skills/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-deployment-logs.ts\",\n \"exportedName\": \"getDeploymentLogs\"\n },\n \"4049fbb99006e8baa544bfa4f59e2dfb160b2e973e\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 84650,\n \"async\": false,\n \"exportedName\": \"deployFeature\",\n \"filename\": \"src/presentation/web/app/actions/deploy-feature.ts\"\n },\n \"app/skills/page\": {\n \"moduleId\": 87596,\n \"async\": false,\n \"exportedName\": \"deployFeature\",\n \"filename\": \"src/presentation/web/app/actions/deploy-feature.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\",\n \"app/skills/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/deploy-feature.ts\",\n \"exportedName\": \"deployFeature\"\n },\n \"40f4308a7480d093a961240ba690f1bdb1cbc4ec83\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 84650,\n \"async\": false,\n \"exportedName\": \"deployRepository\",\n \"filename\": \"src/presentation/web/app/actions/deploy-repository.ts\"\n },\n \"app/skills/page\": {\n \"moduleId\": 87596,\n \"async\": false,\n \"exportedName\": \"deployRepository\",\n \"filename\": \"src/presentation/web/app/actions/deploy-repository.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\",\n \"app/skills/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/deploy-repository.ts\",\n \"exportedName\": \"deployRepository\"\n },\n \"400b8e9be9da2b766660386410fa0fd914e66243bb\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 84650,\n \"async\": false,\n \"exportedName\": \"stopDeployment\",\n \"filename\": \"src/presentation/web/app/actions/stop-deployment.ts\"\n },\n \"app/skills/page\": {\n \"moduleId\": 87596,\n \"async\": false,\n \"exportedName\": \"stopDeployment\",\n \"filename\": \"src/presentation/web/app/actions/stop-deployment.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\",\n \"app/skills/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/stop-deployment.ts\",\n \"exportedName\": \"stopDeployment\"\n },\n \"408cdd234a979fd352fb252d6cb7da7f27cdd12775\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 84650,\n \"async\": false,\n \"exportedName\": \"getDeploymentStatus\",\n \"filename\": \"src/presentation/web/app/actions/get-deployment-status.ts\"\n },\n \"app/skills/page\": {\n \"moduleId\": 87596,\n \"async\": false,\n \"exportedName\": \"getDeploymentStatus\",\n \"filename\": \"src/presentation/web/app/actions/get-deployment-status.ts\"\n }\n },\n \"layer\": {\n \"app/page\": \"action-browser\",\n \"app/skills/page\": \"action-browser\"\n },\n \"filename\": \"src/presentation/web/app/actions/get-deployment-status.ts\",\n \"exportedName\": \"getDeploymentStatus\"\n },\n \"40c28aa7f306252cc09923a48b6e43fd5d54c29739\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 84650,\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 \"40dabe1fb4d62b34d0b83a3482d49fbba937a8afb4\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 84650,\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 \"40c8fbddaf5ba9b7f75ab2667ad2d0a00a08057d52\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 84650,\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 \"606162054797ccf8623cd80dab2005743fe272ff9d\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 84650,\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 \"60e4ec246ebd6bb206bb036dd3d9ad681802d032b4\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 84650,\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 \"40e6cc58719d29dabe459667784db3719ba09e4449\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 84650,\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 \"40e1fb29288efbc07db55189b841a0509f5ffd97cb\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 84650,\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 \"40ae457cb185e9580bcbed473d992319ebd581c4c2\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 84650,\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 \"0053c3ff0f71843718aaf0390cfa0dd521f80c9b4e\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 84650,\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 \"405f542a25f1524640048f2bcc6e3049089edd8d2e\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 84650,\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 \"40204f7ee5bc6c1457d2a0bcf9c9a7dc7145b0ec56\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 84650,\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 \"40cb5fa9bc4efd513e8c8fa4d43c95e5e4ae1f68c8\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 84650,\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 \"40ebd8d7b7555d751b78d73ff5f2d4593ce9a6129d\": {\n \"workers\": {\n \"app/page\": {\n \"moduleId\": 84650,\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\": \"HY46JcUhpTHPuRBQm7R/oNQTnKkCWc5QxDB/1EuP3Us=\"\n}"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "node": {
3
- "000e60150a5bd5fe57a992f7f3d5b373a5b72d07c5": {
3
+ "008f3b5239bc2e4cf4f138f128408ea0e3dd0c6a6c": {
4
4
  "workers": {
5
5
  "app/_not-found/page": {
6
6
  "moduleId": 66973,
@@ -9,13 +9,13 @@
9
9
  "filename": "src/presentation/web/app/actions/pick-folder.ts"
10
10
  },
11
11
  "app/page": {
12
- "moduleId": 80894,
12
+ "moduleId": 84650,
13
13
  "async": false,
14
14
  "exportedName": "pickFolder",
15
15
  "filename": "src/presentation/web/app/actions/pick-folder.ts"
16
16
  },
17
17
  "app/skills/page": {
18
- "moduleId": 43368,
18
+ "moduleId": 87596,
19
19
  "async": false,
20
20
  "exportedName": "pickFolder",
21
21
  "filename": "src/presentation/web/app/actions/pick-folder.ts"
@@ -43,16 +43,38 @@
43
43
  "filename": "src/presentation/web/app/actions/pick-folder.ts",
44
44
  "exportedName": "pickFolder"
45
45
  },
46
- "4006b7a73487a4e583f3422160008ccfc06c941c75": {
46
+ "40b5cac552678afe968327ef051beb1afb844598f0": {
47
47
  "workers": {
48
48
  "app/page": {
49
- "moduleId": 80894,
49
+ "moduleId": 84650,
50
+ "async": false,
51
+ "exportedName": "getDeploymentLogs",
52
+ "filename": "src/presentation/web/app/actions/get-deployment-logs.ts"
53
+ },
54
+ "app/skills/page": {
55
+ "moduleId": 87596,
56
+ "async": false,
57
+ "exportedName": "getDeploymentLogs",
58
+ "filename": "src/presentation/web/app/actions/get-deployment-logs.ts"
59
+ }
60
+ },
61
+ "layer": {
62
+ "app/page": "action-browser",
63
+ "app/skills/page": "action-browser"
64
+ },
65
+ "filename": "src/presentation/web/app/actions/get-deployment-logs.ts",
66
+ "exportedName": "getDeploymentLogs"
67
+ },
68
+ "4049fbb99006e8baa544bfa4f59e2dfb160b2e973e": {
69
+ "workers": {
70
+ "app/page": {
71
+ "moduleId": 84650,
50
72
  "async": false,
51
73
  "exportedName": "deployFeature",
52
74
  "filename": "src/presentation/web/app/actions/deploy-feature.ts"
53
75
  },
54
76
  "app/skills/page": {
55
- "moduleId": 43368,
77
+ "moduleId": 87596,
56
78
  "async": false,
57
79
  "exportedName": "deployFeature",
58
80
  "filename": "src/presentation/web/app/actions/deploy-feature.ts"
@@ -65,16 +87,16 @@
65
87
  "filename": "src/presentation/web/app/actions/deploy-feature.ts",
66
88
  "exportedName": "deployFeature"
67
89
  },
68
- "40a8c0bacad41d1221c10df1eb2b2902eb4b44dd6b": {
90
+ "40f4308a7480d093a961240ba690f1bdb1cbc4ec83": {
69
91
  "workers": {
70
92
  "app/page": {
71
- "moduleId": 80894,
93
+ "moduleId": 84650,
72
94
  "async": false,
73
95
  "exportedName": "deployRepository",
74
96
  "filename": "src/presentation/web/app/actions/deploy-repository.ts"
75
97
  },
76
98
  "app/skills/page": {
77
- "moduleId": 43368,
99
+ "moduleId": 87596,
78
100
  "async": false,
79
101
  "exportedName": "deployRepository",
80
102
  "filename": "src/presentation/web/app/actions/deploy-repository.ts"
@@ -87,16 +109,16 @@
87
109
  "filename": "src/presentation/web/app/actions/deploy-repository.ts",
88
110
  "exportedName": "deployRepository"
89
111
  },
90
- "40a7808d5c3be6afa44680ca161c6c013e4140ff15": {
112
+ "400b8e9be9da2b766660386410fa0fd914e66243bb": {
91
113
  "workers": {
92
114
  "app/page": {
93
- "moduleId": 80894,
115
+ "moduleId": 84650,
94
116
  "async": false,
95
117
  "exportedName": "stopDeployment",
96
118
  "filename": "src/presentation/web/app/actions/stop-deployment.ts"
97
119
  },
98
120
  "app/skills/page": {
99
- "moduleId": 43368,
121
+ "moduleId": 87596,
100
122
  "async": false,
101
123
  "exportedName": "stopDeployment",
102
124
  "filename": "src/presentation/web/app/actions/stop-deployment.ts"
@@ -109,16 +131,16 @@
109
131
  "filename": "src/presentation/web/app/actions/stop-deployment.ts",
110
132
  "exportedName": "stopDeployment"
111
133
  },
112
- "402466b72a304624e93d5c2c6f5a6ab2d3a5fc0776": {
134
+ "408cdd234a979fd352fb252d6cb7da7f27cdd12775": {
113
135
  "workers": {
114
136
  "app/page": {
115
- "moduleId": 80894,
137
+ "moduleId": 84650,
116
138
  "async": false,
117
139
  "exportedName": "getDeploymentStatus",
118
140
  "filename": "src/presentation/web/app/actions/get-deployment-status.ts"
119
141
  },
120
142
  "app/skills/page": {
121
- "moduleId": 43368,
143
+ "moduleId": 87596,
122
144
  "async": false,
123
145
  "exportedName": "getDeploymentStatus",
124
146
  "filename": "src/presentation/web/app/actions/get-deployment-status.ts"
@@ -131,10 +153,10 @@
131
153
  "filename": "src/presentation/web/app/actions/get-deployment-status.ts",
132
154
  "exportedName": "getDeploymentStatus"
133
155
  },
134
- "40586c6e08c6e26189e7a5e793e5c00209887c279b": {
156
+ "40c28aa7f306252cc09923a48b6e43fd5d54c29739": {
135
157
  "workers": {
136
158
  "app/page": {
137
- "moduleId": 80894,
159
+ "moduleId": 84650,
138
160
  "async": false,
139
161
  "exportedName": "openIde",
140
162
  "filename": "src/presentation/web/app/actions/open-ide.ts"
@@ -146,10 +168,10 @@
146
168
  "filename": "src/presentation/web/app/actions/open-ide.ts",
147
169
  "exportedName": "openIde"
148
170
  },
149
- "4006427d5287b1d3973433061cea850f13646c9e07": {
171
+ "40dabe1fb4d62b34d0b83a3482d49fbba937a8afb4": {
150
172
  "workers": {
151
173
  "app/page": {
152
- "moduleId": 80894,
174
+ "moduleId": 84650,
153
175
  "async": false,
154
176
  "exportedName": "openShell",
155
177
  "filename": "src/presentation/web/app/actions/open-shell.ts"
@@ -161,10 +183,10 @@
161
183
  "filename": "src/presentation/web/app/actions/open-shell.ts",
162
184
  "exportedName": "openShell"
163
185
  },
164
- "40e686944689a8f502a6159c14bf7caae017e1a60c": {
186
+ "40c8fbddaf5ba9b7f75ab2667ad2d0a00a08057d52": {
165
187
  "workers": {
166
188
  "app/page": {
167
- "moduleId": 80894,
189
+ "moduleId": 84650,
168
190
  "async": false,
169
191
  "exportedName": "openFolder",
170
192
  "filename": "src/presentation/web/app/actions/open-folder.ts"
@@ -176,10 +198,10 @@
176
198
  "filename": "src/presentation/web/app/actions/open-folder.ts",
177
199
  "exportedName": "openFolder"
178
200
  },
179
- "604c33fef1fd06c507a5a65e2499ec0ad197e665f0": {
201
+ "606162054797ccf8623cd80dab2005743fe272ff9d": {
180
202
  "workers": {
181
203
  "app/page": {
182
- "moduleId": 80894,
204
+ "moduleId": 84650,
183
205
  "async": false,
184
206
  "exportedName": "approveFeature",
185
207
  "filename": "src/presentation/web/app/actions/approve-feature.ts"
@@ -191,10 +213,10 @@
191
213
  "filename": "src/presentation/web/app/actions/approve-feature.ts",
192
214
  "exportedName": "approveFeature"
193
215
  },
194
- "601d13360450eccda16c3440bd790cfc7b1887152b": {
216
+ "60e4ec246ebd6bb206bb036dd3d9ad681802d032b4": {
195
217
  "workers": {
196
218
  "app/page": {
197
- "moduleId": 80894,
219
+ "moduleId": 84650,
198
220
  "async": false,
199
221
  "exportedName": "rejectFeature",
200
222
  "filename": "src/presentation/web/app/actions/reject-feature.ts"
@@ -206,10 +228,10 @@
206
228
  "filename": "src/presentation/web/app/actions/reject-feature.ts",
207
229
  "exportedName": "rejectFeature"
208
230
  },
209
- "40ef0bba49aa61001a6009ebf44c9d8f71efad216c": {
231
+ "40e6cc58719d29dabe459667784db3719ba09e4449": {
210
232
  "workers": {
211
233
  "app/page": {
212
- "moduleId": 80894,
234
+ "moduleId": 84650,
213
235
  "async": false,
214
236
  "exportedName": "getFeatureArtifact",
215
237
  "filename": "src/presentation/web/app/actions/get-feature-artifact.ts"
@@ -221,10 +243,10 @@
221
243
  "filename": "src/presentation/web/app/actions/get-feature-artifact.ts",
222
244
  "exportedName": "getFeatureArtifact"
223
245
  },
224
- "40701f1088380107d159b1849990e3b1b215f79212": {
246
+ "40e1fb29288efbc07db55189b841a0509f5ffd97cb": {
225
247
  "workers": {
226
248
  "app/page": {
227
- "moduleId": 80894,
249
+ "moduleId": 84650,
228
250
  "async": false,
229
251
  "exportedName": "getResearchArtifact",
230
252
  "filename": "src/presentation/web/app/actions/get-research-artifact.ts"
@@ -236,10 +258,10 @@
236
258
  "filename": "src/presentation/web/app/actions/get-research-artifact.ts",
237
259
  "exportedName": "getResearchArtifact"
238
260
  },
239
- "4085078afa0f7085c1fec31cfd996ce2618ac56a5a": {
261
+ "40ae457cb185e9580bcbed473d992319ebd581c4c2": {
240
262
  "workers": {
241
263
  "app/page": {
242
- "moduleId": 80894,
264
+ "moduleId": 84650,
243
265
  "async": false,
244
266
  "exportedName": "getMergeReviewData",
245
267
  "filename": "src/presentation/web/app/actions/get-merge-review-data.ts"
@@ -251,10 +273,10 @@
251
273
  "filename": "src/presentation/web/app/actions/get-merge-review-data.ts",
252
274
  "exportedName": "getMergeReviewData"
253
275
  },
254
- "00cdc86bf5f0dde92e833594440ac170ba06c5db71": {
276
+ "0053c3ff0f71843718aaf0390cfa0dd521f80c9b4e": {
255
277
  "workers": {
256
278
  "app/page": {
257
- "moduleId": 80894,
279
+ "moduleId": 84650,
258
280
  "async": false,
259
281
  "exportedName": "getWorkflowDefaults",
260
282
  "filename": "src/presentation/web/app/actions/get-workflow-defaults.ts"
@@ -266,10 +288,10 @@
266
288
  "filename": "src/presentation/web/app/actions/get-workflow-defaults.ts",
267
289
  "exportedName": "getWorkflowDefaults"
268
290
  },
269
- "4009cfef5e3392805f561a9304e43b8d388b29177f": {
291
+ "405f542a25f1524640048f2bcc6e3049089edd8d2e": {
270
292
  "workers": {
271
293
  "app/page": {
272
- "moduleId": 80894,
294
+ "moduleId": 84650,
273
295
  "async": false,
274
296
  "exportedName": "createFeature",
275
297
  "filename": "src/presentation/web/app/actions/create-feature.ts"
@@ -281,10 +303,10 @@
281
303
  "filename": "src/presentation/web/app/actions/create-feature.ts",
282
304
  "exportedName": "createFeature"
283
305
  },
284
- "404bf2faddeceacfdd335d16ada005d6b30c51b992": {
306
+ "40204f7ee5bc6c1457d2a0bcf9c9a7dc7145b0ec56": {
285
307
  "workers": {
286
308
  "app/page": {
287
- "moduleId": 80894,
309
+ "moduleId": 84650,
288
310
  "async": false,
289
311
  "exportedName": "deleteFeature",
290
312
  "filename": "src/presentation/web/app/actions/delete-feature.ts"
@@ -296,10 +318,10 @@
296
318
  "filename": "src/presentation/web/app/actions/delete-feature.ts",
297
319
  "exportedName": "deleteFeature"
298
320
  },
299
- "40855dec31849b5c0c28e5f6082eac11aceb58a7b7": {
321
+ "40cb5fa9bc4efd513e8c8fa4d43c95e5e4ae1f68c8": {
300
322
  "workers": {
301
323
  "app/page": {
302
- "moduleId": 80894,
324
+ "moduleId": 84650,
303
325
  "async": false,
304
326
  "exportedName": "addRepository",
305
327
  "filename": "src/presentation/web/app/actions/add-repository.ts"
@@ -311,10 +333,10 @@
311
333
  "filename": "src/presentation/web/app/actions/add-repository.ts",
312
334
  "exportedName": "addRepository"
313
335
  },
314
- "406a13d633eb2132d39b8f66f9031ae1860d8b780e": {
336
+ "40ebd8d7b7555d751b78d73ff5f2d4593ce9a6129d": {
315
337
  "workers": {
316
338
  "app/page": {
317
- "moduleId": 80894,
339
+ "moduleId": 84650,
318
340
  "async": false,
319
341
  "exportedName": "deleteRepository",
320
342
  "filename": "src/presentation/web/app/actions/delete-repository.ts"
@@ -328,5 +350,5 @@
328
350
  }
329
351
  },
330
352
  "edge": {},
331
- "encryptionKey": "dhye7k1caLZxuETREY4n1SvoPMCP7El/AClmu6Lx8Cc="
353
+ "encryptionKey": "HY46JcUhpTHPuRBQm7R/oNQTnKkCWc5QxDB/1EuP3Us="
332
354
  }
@@ -0,0 +1,16 @@
1
+ 'use server';
2
+
3
+ import { resolve } from '@/lib/server-container';
4
+ import type {
5
+ IDeploymentService,
6
+ LogEntry,
7
+ } from '@shepai/core/application/ports/output/services/deployment-service.interface';
8
+
9
+ export async function getDeploymentLogs(targetId: string): Promise<LogEntry[] | null> {
10
+ if (!targetId?.trim()) {
11
+ return null;
12
+ }
13
+
14
+ const deploymentService = resolve<IDeploymentService>('IDeploymentService');
15
+ return deploymentService.getLogs(targetId);
16
+ }
@@ -4,9 +4,11 @@ import { resolve } from '@/lib/server-container';
4
4
  import type { GetFeatureArtifactUseCase } from '@shepai/core/application/use-cases/features/get-feature-artifact.use-case';
5
5
  import type { FeatureArtifact } from '@shepai/core/domain/generated/output';
6
6
  import type { PrdQuestionnaireData } from '@shepai/core/domain/generated/output';
7
+ import type { ProductDecisionsSummaryData } from '@/components/common/product-decisions-summary';
7
8
 
8
9
  interface GetFeatureArtifactResult {
9
10
  questionnaire?: PrdQuestionnaireData;
11
+ productDecisions?: ProductDecisionsSummaryData;
10
12
  artifact?: FeatureArtifact;
11
13
  error?: string;
12
14
  }
@@ -38,6 +40,28 @@ function toQuestionnaireData(artifact: FeatureArtifact): PrdQuestionnaireData {
38
40
  };
39
41
  }
40
42
 
43
+ /**
44
+ * Map FeatureArtifact openQuestions into a read-only summary for the
45
+ * Product Decisions tab in the tech review drawer.
46
+ */
47
+ function toProductDecisionsData(artifact: FeatureArtifact): ProductDecisionsSummaryData {
48
+ return {
49
+ question: 'Goal',
50
+ context: artifact.oneLiner,
51
+ questions: artifact.openQuestions
52
+ .filter((oq) => oq.resolved)
53
+ .map((oq) => {
54
+ const selected = oq.options?.find((o) => o.selected);
55
+ return {
56
+ question: oq.question,
57
+ selectedOption: selected?.option ?? oq.answer ?? 'N/A',
58
+ rationale: oq.selectionRationale ?? selected?.description ?? '',
59
+ wasRecommended: false,
60
+ };
61
+ }),
62
+ };
63
+ }
64
+
41
65
  export async function getFeatureArtifact(featureId: string): Promise<GetFeatureArtifactResult> {
42
66
  if (!featureId.trim()) {
43
67
  return { error: 'Feature id is required' };
@@ -47,7 +71,8 @@ export async function getFeatureArtifact(featureId: string): Promise<GetFeatureA
47
71
  const useCase = resolve<GetFeatureArtifactUseCase>('GetFeatureArtifactUseCase');
48
72
  const artifact = await useCase.execute(featureId);
49
73
  const questionnaire = toQuestionnaireData(artifact);
50
- return { questionnaire, artifact };
74
+ const productDecisions = toProductDecisionsData(artifact);
75
+ return { questionnaire, productDecisions, artifact };
51
76
  } catch (error: unknown) {
52
77
  const message = error instanceof Error ? error.message : 'Failed to load feature artifact';
53
78
  return { error: message };
@@ -0,0 +1,112 @@
1
+ /**
2
+ * SSE API Route: GET /api/deployment-logs
3
+ *
4
+ * Streams deployment log events to the client via Server-Sent Events.
5
+ * Subscribes to the DeploymentService EventEmitter for real-time log
6
+ * entries, filtered by targetId.
7
+ *
8
+ * - Accepts ?targetId query parameter (required)
9
+ * - Sends log entries as SSE "log" events
10
+ * - Sends heartbeat comments every 30 seconds to keep connection alive
11
+ * - Cleans up EventEmitter subscription on client disconnect
12
+ */
13
+
14
+ import { resolve } from '@/lib/server-container';
15
+ import type {
16
+ IDeploymentService,
17
+ LogEntry,
18
+ } from '@shepai/core/application/ports/output/services/deployment-service.interface';
19
+
20
+ // Force dynamic — SSE streams must never be statically optimized or cached
21
+ export const dynamic = 'force-dynamic';
22
+
23
+ const HEARTBEAT_INTERVAL_MS = 30_000;
24
+
25
+ export function GET(request: Request): Response {
26
+ try {
27
+ const url = new URL(request.url);
28
+ const targetId = url.searchParams.get('targetId');
29
+
30
+ if (!targetId?.trim()) {
31
+ const errorStream = new ReadableStream<Uint8Array>({
32
+ start(controller) {
33
+ const encoder = new TextEncoder();
34
+ controller.enqueue(
35
+ encoder.encode(
36
+ `event: error\ndata: ${JSON.stringify({ error: 'targetId is required' })}\n\n`
37
+ )
38
+ );
39
+ controller.close();
40
+ },
41
+ });
42
+
43
+ return new Response(errorStream, {
44
+ headers: {
45
+ 'Content-Type': 'text/event-stream',
46
+ 'Cache-Control': 'no-cache',
47
+ Connection: 'keep-alive',
48
+ },
49
+ });
50
+ }
51
+
52
+ const stream = new ReadableStream<Uint8Array>({
53
+ start(controller) {
54
+ const encoder = new TextEncoder();
55
+ let stopped = false;
56
+
57
+ function enqueue(text: string) {
58
+ if (stopped) return;
59
+ try {
60
+ controller.enqueue(encoder.encode(text));
61
+ } catch {
62
+ // Stream may be closed
63
+ }
64
+ }
65
+
66
+ const deploymentService = resolve<IDeploymentService>('IDeploymentService');
67
+
68
+ // Subscribe to log events, filtering by targetId
69
+ const logHandler = (entry: LogEntry) => {
70
+ if (entry.targetId !== targetId) return;
71
+ enqueue(`event: log\ndata: ${JSON.stringify(entry)}\n\n`);
72
+ };
73
+
74
+ deploymentService.on('log', logHandler);
75
+
76
+ // Heartbeat to keep connection alive
77
+ const heartbeatInterval = setInterval(() => {
78
+ enqueue(': heartbeat\n\n');
79
+ }, HEARTBEAT_INTERVAL_MS);
80
+
81
+ // Cleanup on client disconnect
82
+ const cleanup = () => {
83
+ stopped = true;
84
+ deploymentService.off('log', logHandler);
85
+ clearInterval(heartbeatInterval);
86
+ try {
87
+ controller.close();
88
+ } catch {
89
+ // Stream may already be closed
90
+ }
91
+ };
92
+
93
+ request.signal.addEventListener('abort', cleanup, { once: true });
94
+ },
95
+ });
96
+
97
+ return new Response(stream, {
98
+ headers: {
99
+ 'Content-Type': 'text/event-stream',
100
+ 'Cache-Control': 'no-cache',
101
+ Connection: 'keep-alive',
102
+ },
103
+ });
104
+ } catch (error) {
105
+ // eslint-disable-next-line no-console
106
+ console.error('[SSE route] GET /api/deployment-logs error:', error);
107
+ return new Response(JSON.stringify({ error: String(error) }), {
108
+ status: 500,
109
+ headers: { 'Content-Type': 'application/json' },
110
+ });
111
+ }
112
+ }