@shepai/cli 1.83.0 → 1.84.0-pr246.f230189

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 (302) hide show
  1. package/apis/json-schema/Attachment.yaml +31 -0
  2. package/apis/json-schema/Feature.yaml +10 -0
  3. package/dist/packages/core/src/application/use-cases/agents/reject-agent-run.use-case.d.ts.map +1 -1
  4. package/dist/packages/core/src/application/use-cases/agents/reject-agent-run.use-case.js +3 -0
  5. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts +3 -1
  6. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.d.ts.map +1 -1
  7. package/dist/packages/core/src/application/use-cases/features/create/create-feature.use-case.js +35 -3
  8. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts +7 -1
  9. package/dist/packages/core/src/application/use-cases/features/create/types.d.ts.map +1 -1
  10. package/dist/packages/core/src/domain/generated/output.d.ts +33 -0
  11. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  12. package/dist/packages/core/src/infrastructure/di/container.d.ts.map +1 -1
  13. package/dist/packages/core/src/infrastructure/di/container.js +3 -0
  14. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts +1 -0
  15. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.d.ts.map +1 -1
  16. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/feature.mapper.js +4 -0
  17. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.d.ts.map +1 -1
  18. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations.js +16 -0
  19. package/dist/packages/core/src/infrastructure/services/attachment-storage.service.d.ts +31 -0
  20. package/dist/packages/core/src/infrastructure/services/attachment-storage.service.d.ts.map +1 -0
  21. package/dist/packages/core/src/infrastructure/services/attachment-storage.service.js +136 -0
  22. package/dist/src/presentation/cli/commands/feat/new.command.d.ts.map +1 -1
  23. package/dist/src/presentation/cli/commands/feat/new.command.js +21 -1
  24. package/dist/src/presentation/web/app/actions/compose-user-input.d.ts +7 -0
  25. package/dist/src/presentation/web/app/actions/compose-user-input.d.ts.map +1 -0
  26. package/dist/src/presentation/web/app/actions/compose-user-input.js +7 -0
  27. package/dist/src/presentation/web/app/actions/create-feature.d.ts +1 -0
  28. package/dist/src/presentation/web/app/actions/create-feature.d.ts.map +1 -1
  29. package/dist/src/presentation/web/app/actions/create-feature.js +3 -9
  30. package/dist/src/presentation/web/app/actions/get-feature-phase-timings.d.ts +6 -0
  31. package/dist/src/presentation/web/app/actions/get-feature-phase-timings.d.ts.map +1 -1
  32. package/dist/src/presentation/web/app/actions/get-feature-phase-timings.js +26 -1
  33. package/dist/src/presentation/web/app/api/attachments/preview/route.d.ts +4 -0
  34. package/dist/src/presentation/web/app/api/attachments/preview/route.d.ts.map +1 -0
  35. package/dist/src/presentation/web/app/api/attachments/preview/route.js +47 -0
  36. package/dist/src/presentation/web/app/api/attachments/upload/route.d.ts +3 -0
  37. package/dist/src/presentation/web/app/api/attachments/upload/route.d.ts.map +1 -0
  38. package/dist/src/presentation/web/app/api/attachments/upload/route.js +100 -0
  39. package/dist/src/presentation/web/components/common/attachment-card/attachment-card.d.ts +16 -0
  40. package/dist/src/presentation/web/components/common/attachment-card/attachment-card.d.ts.map +1 -0
  41. package/dist/src/presentation/web/components/common/attachment-card/attachment-card.js +53 -0
  42. package/dist/src/presentation/web/components/common/attachment-card/attachment-card.stories.d.ts +12 -0
  43. package/dist/src/presentation/web/components/common/attachment-card/attachment-card.stories.d.ts.map +1 -0
  44. package/dist/src/presentation/web/components/common/attachment-card/attachment-card.stories.js +55 -0
  45. package/dist/src/presentation/web/components/common/attachment-card/index.d.ts +3 -0
  46. package/dist/src/presentation/web/components/common/attachment-card/index.d.ts.map +1 -0
  47. package/dist/src/presentation/web/components/common/attachment-card/index.js +1 -0
  48. package/dist/src/presentation/web/components/common/attachment-chip/attachment-chip.d.ts +11 -0
  49. package/dist/src/presentation/web/components/common/attachment-chip/attachment-chip.d.ts.map +1 -0
  50. package/dist/src/presentation/web/components/common/attachment-chip/attachment-chip.js +34 -0
  51. package/dist/src/presentation/web/components/common/attachment-chip/attachment-chip.stories.d.ts +10 -0
  52. package/dist/src/presentation/web/components/common/attachment-chip/attachment-chip.stories.d.ts.map +1 -0
  53. package/dist/src/presentation/web/components/common/attachment-chip/attachment-chip.stories.js +44 -0
  54. package/dist/src/presentation/web/components/common/attachment-chip/index.d.ts +3 -0
  55. package/dist/src/presentation/web/components/common/attachment-chip/index.d.ts.map +1 -0
  56. package/dist/src/presentation/web/components/common/attachment-chip/index.js +1 -0
  57. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts +11 -2
  58. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.d.ts.map +1 -1
  59. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.js +199 -60
  60. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts +6 -0
  61. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.d.ts.map +1 -1
  62. package/dist/src/presentation/web/components/common/feature-create-drawer/feature-create-drawer.stories.js +18 -0
  63. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.d.ts +3 -2
  64. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.d.ts.map +1 -1
  65. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.js +29 -6
  66. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.stories.d.ts +2 -0
  67. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.stories.d.ts.map +1 -1
  68. package/dist/src/presentation/web/components/common/feature-drawer-tabs/activity-tab.stories.js +72 -0
  69. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.d.ts.map +1 -1
  70. package/dist/src/presentation/web/components/common/feature-drawer-tabs/feature-drawer-tabs.js +2 -2
  71. package/dist/src/presentation/web/components/ui/dialog.js +1 -1
  72. package/dist/src/presentation/web/next.config.d.ts.map +1 -1
  73. package/dist/src/presentation/web/next.config.js +6 -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 +2 -0
  78. package/web/.next/build-manifest.json +2 -2
  79. package/web/.next/fallback-build-manifest.json +2 -2
  80. package/web/.next/prerender-manifest.json +3 -3
  81. package/web/.next/required-server-files.js +4 -1
  82. package/web/.next/required-server-files.json +4 -1
  83. package/web/.next/routes-manifest.json +12 -0
  84. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +18 -18
  85. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +2 -2
  86. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  87. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  88. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +21 -21
  89. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +3 -3
  90. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  91. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  92. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  93. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +2 -2
  94. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  95. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  96. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +18 -18
  97. package/web/.next/server/app/(dashboard)/create/page.js +2 -2
  98. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  99. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  100. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +21 -21
  101. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +3 -3
  102. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  103. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  104. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +14 -14
  105. package/web/.next/server/app/(dashboard)/page.js +2 -2
  106. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  107. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  108. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +14 -14
  109. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +2 -2
  110. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  111. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  112. package/web/.next/server/app/_global-error/page.js +2 -2
  113. package/web/.next/server/app/_global-error/page.js.nft.json +1 -1
  114. package/web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  115. package/web/.next/server/app/_global-error.html +2 -2
  116. package/web/.next/server/app/_global-error.rsc +1 -1
  117. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  118. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  119. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  120. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  121. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  122. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  123. package/web/.next/server/app/_not-found/page.js +2 -2
  124. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  125. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  126. package/web/.next/server/app/api/attachments/preview/route/app-paths-manifest.json +3 -0
  127. package/web/.next/server/app/api/attachments/preview/route/build-manifest.json +11 -0
  128. package/web/.next/server/app/api/attachments/preview/route/server-reference-manifest.json +4 -0
  129. package/web/.next/server/app/api/attachments/preview/route.js +7 -0
  130. package/web/.next/server/app/api/attachments/preview/route.js.map +5 -0
  131. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -0
  132. package/web/.next/server/app/api/attachments/preview/route_client-reference-manifest.js +2 -0
  133. package/web/.next/server/app/api/attachments/upload/route/app-paths-manifest.json +3 -0
  134. package/web/.next/server/app/api/attachments/upload/route/build-manifest.json +11 -0
  135. package/web/.next/server/app/api/attachments/upload/route/server-reference-manifest.json +4 -0
  136. package/web/.next/server/app/api/attachments/upload/route.js +7 -0
  137. package/web/.next/server/app/api/attachments/upload/route.js.map +5 -0
  138. package/web/.next/server/app/api/attachments/upload/route.js.nft.json +1 -0
  139. package/web/.next/server/app/api/attachments/upload/route_client-reference-manifest.js +2 -0
  140. package/web/.next/server/app/api/dialog/pick-files/route.js +1 -1
  141. package/web/.next/server/app/api/dialog/pick-files/route.js.nft.json +1 -1
  142. package/web/.next/server/app/api/feature-logs/route.js +1 -1
  143. package/web/.next/server/app/api/feature-logs/route.js.nft.json +1 -1
  144. package/web/.next/server/app/settings/page/server-reference-manifest.json +5 -5
  145. package/web/.next/server/app/settings/page.js +2 -2
  146. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  147. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  148. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  149. package/web/.next/server/app/skills/page.js +5 -4
  150. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  151. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  152. package/web/.next/server/app/tools/page/server-reference-manifest.json +6 -6
  153. package/web/.next/server/app/tools/page.js +2 -2
  154. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  155. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  156. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  157. package/web/.next/server/app/version/page.js +2 -2
  158. package/web/.next/server/app/version/page.js.nft.json +1 -1
  159. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  160. package/web/.next/server/app-paths-manifest.json +2 -0
  161. package/web/.next/server/chunks/403f9_next_dist_esm_build_templates_app-route_4d623b8e.js.map +1 -1
  162. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_attachments_preview_route_actions_0f48c3e9.js +3 -0
  163. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_attachments_preview_route_actions_0f48c3e9.js.map +1 -0
  164. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_attachments_upload_route_actions_48fe4a8f.js +3 -0
  165. package/web/.next/server/chunks/744ca_web__next-internal_server_app_api_attachments_upload_route_actions_48fe4a8f.js.map +1 -0
  166. package/web/.next/server/chunks/[root-of-the-server]__0b10355c._.js +3 -0
  167. package/web/.next/server/chunks/[root-of-the-server]__0b10355c._.js.map +1 -0
  168. package/web/.next/server/chunks/{[root-of-the-server]__a6bf88cc._.js → [root-of-the-server]__332c8d91._.js} +2 -2
  169. package/web/.next/server/chunks/{[root-of-the-server]__91d44424._.js → [root-of-the-server]__52c318d1._.js} +2 -2
  170. package/web/.next/server/chunks/[root-of-the-server]__b2f9a412._.js +3 -0
  171. package/web/.next/server/chunks/[root-of-the-server]__b2f9a412._.js.map +1 -0
  172. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  173. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  174. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_9751e686._.js +3 -0
  175. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_9751e686._.js.map +1 -0
  176. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js +1 -1
  177. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_da7eef33.js.map +1 -1
  178. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js +1 -1
  179. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_0a9251aa.js.map +1 -1
  180. package/web/.next/server/chunks/ssr/90b01_js-yaml_dist_js-yaml_mjs_c897fb57._.js +3 -0
  181. package/web/.next/server/chunks/ssr/90b01_js-yaml_dist_js-yaml_mjs_c897fb57._.js.map +1 -0
  182. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js +1 -1
  183. package/web/.next/server/chunks/ssr/[root-of-the-server]__11033878._.js.map +1 -1
  184. package/web/.next/server/chunks/ssr/[root-of-the-server]__17143953._.js +3 -0
  185. package/web/.next/server/chunks/ssr/[root-of-the-server]__17143953._.js.map +1 -0
  186. package/web/.next/server/chunks/ssr/[root-of-the-server]__357d99f9._.js +1 -1
  187. package/web/.next/server/chunks/ssr/[root-of-the-server]__4be9a9bb._.js +1 -1
  188. package/web/.next/server/chunks/ssr/[root-of-the-server]__5d87af2e._.js +1 -1
  189. package/web/.next/server/chunks/ssr/{[root-of-the-server]__3534949f._.js → [root-of-the-server]__8d9536c4._.js} +2 -2
  190. package/web/.next/server/chunks/ssr/[root-of-the-server]__9de266fa._.js +3 -0
  191. package/web/.next/server/chunks/ssr/[root-of-the-server]__9de266fa._.js.map +1 -0
  192. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +1 -1
  193. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -1
  194. package/web/.next/server/chunks/ssr/[root-of-the-server]__b14946f5._.js +10 -0
  195. package/web/.next/server/chunks/ssr/{[root-of-the-server]__c3694f82._.js.map → [root-of-the-server]__b14946f5._.js.map} +1 -1
  196. package/web/.next/server/chunks/ssr/[root-of-the-server]__b3a4cef4._.js +1 -1
  197. package/web/.next/server/chunks/ssr/[root-of-the-server]__b3a4cef4._.js.map +1 -1
  198. package/web/.next/server/chunks/ssr/[root-of-the-server]__b65f78cf._.js +3 -0
  199. package/web/.next/server/chunks/ssr/{[root-of-the-server]__55f60c9d._.js.map → [root-of-the-server]__b65f78cf._.js.map} +1 -1
  200. package/web/.next/server/chunks/ssr/[root-of-the-server]__f0d8d054._.js +2 -2
  201. package/web/.next/server/chunks/ssr/[root-of-the-server]__f0d8d054._.js.map +1 -1
  202. package/web/.next/server/chunks/ssr/{[root-of-the-server]__ad2b2a3c._.js → [root-of-the-server]__f1a05100._.js} +2 -2
  203. package/web/.next/server/chunks/ssr/[root-of-the-server]__f8210f45._.js +3 -0
  204. package/web/.next/server/chunks/ssr/{[root-of-the-server]__01a37f7a._.js.map → [root-of-the-server]__f8210f45._.js.map} +1 -1
  205. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js +1 -1
  206. package/web/.next/server/chunks/ssr/[root-of-the-server]__fdc75809._.js.map +1 -1
  207. package/web/.next/server/chunks/ssr/_1bb131c4._.js +1 -1
  208. package/web/.next/server/chunks/ssr/_1bb131c4._.js.map +1 -1
  209. package/web/.next/server/chunks/ssr/_1e3cf73b._.js +1 -1
  210. package/web/.next/server/chunks/ssr/_1e3cf73b._.js.map +1 -1
  211. package/web/.next/server/chunks/ssr/_34fbed18._.js +1 -1
  212. package/web/.next/server/chunks/ssr/_34fbed18._.js.map +1 -1
  213. package/web/.next/server/chunks/ssr/_3a4c94e3._.js +1 -1
  214. package/web/.next/server/chunks/ssr/_3a4c94e3._.js.map +1 -1
  215. package/web/.next/server/chunks/ssr/_63868199._.js +1 -1
  216. package/web/.next/server/chunks/ssr/_63868199._.js.map +1 -1
  217. package/web/.next/server/chunks/ssr/_6e08ce21._.js.map +1 -1
  218. package/web/.next/server/chunks/ssr/_8dacd1e7._.js +1 -1
  219. package/web/.next/server/chunks/ssr/_8dacd1e7._.js.map +1 -1
  220. package/web/.next/server/chunks/ssr/_9ac70f88._.js +5 -0
  221. package/web/.next/server/chunks/ssr/_9ac70f88._.js.map +1 -0
  222. package/web/.next/server/chunks/ssr/{_3e88ce9d._.js → _cf366ac8._.js} +2 -2
  223. package/web/.next/server/chunks/ssr/{_3e88ce9d._.js.map → _cf366ac8._.js.map} +1 -1
  224. package/web/.next/server/chunks/ssr/_d42594dd._.js +3 -0
  225. package/web/.next/server/chunks/ssr/_d42594dd._.js.map +1 -0
  226. package/web/.next/server/chunks/ssr/{_1c1bf992._.js → _f95d315b._.js} +2 -2
  227. package/web/.next/server/chunks/ssr/_f95d315b._.js.map +1 -0
  228. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js +1 -1
  229. package/web/.next/server/chunks/ssr/b1a17_presentation_web_components_features_settings_settings-page-client_tsx_6ed9d5f8._.js.map +1 -1
  230. package/web/.next/server/chunks/ssr/node_modules__pnpm_07f6911c._.js +3 -0
  231. package/web/.next/server/chunks/ssr/node_modules__pnpm_07f6911c._.js.map +1 -0
  232. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js +1 -1
  233. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_021a05f2.js.map +1 -1
  234. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js +1 -1
  235. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_1fa8042e.js.map +1 -1
  236. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js +1 -1
  237. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_24684200.js.map +1 -1
  238. package/web/.next/server/chunks/ssr/src_presentation_web_c4348b8a._.js +2 -3
  239. package/web/.next/server/chunks/ssr/src_presentation_web_c4348b8a._.js.map +1 -1
  240. package/web/.next/server/chunks/ssr/src_presentation_web_components_80b5b4bc._.js +3 -0
  241. package/web/.next/server/chunks/ssr/src_presentation_web_components_80b5b4bc._.js.map +1 -0
  242. package/web/.next/server/chunks/ssr/src_presentation_web_components_82416b8f._.js +3 -0
  243. package/web/.next/server/chunks/ssr/src_presentation_web_components_82416b8f._.js.map +1 -0
  244. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  245. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  246. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_3d0aa70c._.js +1 -1
  247. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_3d0aa70c._.js.map +1 -1
  248. package/web/.next/server/chunks/ssr/src_presentation_web_e4510d10._.js +2 -3
  249. package/web/.next/server/chunks/ssr/src_presentation_web_e4510d10._.js.map +1 -1
  250. package/web/.next/server/pages/500.html +2 -2
  251. package/web/.next/server/server-reference-manifest.js +1 -1
  252. package/web/.next/server/server-reference-manifest.json +28 -28
  253. package/web/.next/static/chunks/01c38223d965f45d.js +1 -0
  254. package/web/.next/static/chunks/06d565dc763cad04.js +1 -0
  255. package/web/.next/static/chunks/{d1e04a49da8d02f9.js → 28aa439fc1b5f6b6.js} +1 -1
  256. package/web/.next/static/chunks/30c827a88342741e.js +1 -0
  257. package/web/.next/static/chunks/46d3853fdf7c5efc.js +1 -0
  258. package/web/.next/static/chunks/48650231d9933738.js +1 -0
  259. package/web/.next/static/chunks/50f89c3112f6dd23.css +2 -0
  260. package/web/.next/static/chunks/52b56677c842e45f.js +3 -0
  261. package/web/.next/static/chunks/7d1c741ac3db2eae.js +1 -0
  262. package/web/.next/static/chunks/{996902d74a48276d.js → 96a1c17f680f9aa6.js} +1 -1
  263. package/web/.next/static/chunks/{34f6df8ccffe5d52.js → abf7985ed51675bb.js} +1 -1
  264. package/web/.next/static/chunks/{0fb7745c30469b39.js → b31f2c82654437a6.js} +1 -1
  265. package/web/.next/static/chunks/{2d4cc4000f402d7f.js → b59390a4c830ad08.js} +3 -3
  266. package/web/.next/static/chunks/b5d6f0436f9bbe9b.js +1 -0
  267. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_c7cfe351._.js +0 -3
  268. package/web/.next/server/chunks/ssr/7f428_lucide-react_dist_esm_icons_c7cfe351._.js.map +0 -1
  269. package/web/.next/server/chunks/ssr/[root-of-the-server]__01a37f7a._.js +0 -3
  270. package/web/.next/server/chunks/ssr/[root-of-the-server]__55f60c9d._.js +0 -3
  271. package/web/.next/server/chunks/ssr/[root-of-the-server]__c3694f82._.js +0 -10
  272. package/web/.next/server/chunks/ssr/_1c1bf992._.js.map +0 -1
  273. package/web/.next/server/chunks/ssr/_1f7387a5._.js +0 -3
  274. package/web/.next/server/chunks/ssr/_1f7387a5._.js.map +0 -1
  275. package/web/.next/server/chunks/ssr/_51505c5a._.js +0 -3
  276. package/web/.next/server/chunks/ssr/_51505c5a._.js.map +0 -1
  277. package/web/.next/server/chunks/ssr/_c3a8bcb1._.js +0 -3
  278. package/web/.next/server/chunks/ssr/_c3a8bcb1._.js.map +0 -1
  279. package/web/.next/server/chunks/ssr/node_modules__pnpm_04f4e45f._.js +0 -5
  280. package/web/.next/server/chunks/ssr/node_modules__pnpm_04f4e45f._.js.map +0 -1
  281. package/web/.next/server/chunks/ssr/node_modules__pnpm_c931457d._.js +0 -3
  282. package/web/.next/server/chunks/ssr/node_modules__pnpm_c931457d._.js.map +0 -1
  283. package/web/.next/server/chunks/ssr/src_presentation_web_7efa14ca._.js +0 -3
  284. package/web/.next/server/chunks/ssr/src_presentation_web_7efa14ca._.js.map +0 -1
  285. package/web/.next/server/chunks/ssr/src_presentation_web_b59d79db._.js +0 -3
  286. package/web/.next/server/chunks/ssr/src_presentation_web_b59d79db._.js.map +0 -1
  287. package/web/.next/static/chunks/0543f7be533ecb32.js +0 -1
  288. package/web/.next/static/chunks/1e5cf3d452bf9f47.js +0 -1
  289. package/web/.next/static/chunks/2a24ac257fc1c10b.js +0 -1
  290. package/web/.next/static/chunks/6e77201e99d50131.js +0 -1
  291. package/web/.next/static/chunks/96bab6d3820504f3.css +0 -2
  292. package/web/.next/static/chunks/a453628f546647a7.js +0 -1
  293. package/web/.next/static/chunks/d9829b5681886395.js +0 -1
  294. package/web/.next/static/chunks/e405f0502431ea60.js +0 -3
  295. package/web/.next/static/chunks/ed0297ac085a1f85.js +0 -1
  296. /package/web/.next/server/chunks/{[root-of-the-server]__a6bf88cc._.js.map → [root-of-the-server]__332c8d91._.js.map} +0 -0
  297. /package/web/.next/server/chunks/{[root-of-the-server]__91d44424._.js.map → [root-of-the-server]__52c318d1._.js.map} +0 -0
  298. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__3534949f._.js.map → [root-of-the-server]__8d9536c4._.js.map} +0 -0
  299. /package/web/.next/server/chunks/ssr/{[root-of-the-server]__ad2b2a3c._.js.map → [root-of-the-server]__f1a05100._.js.map} +0 -0
  300. /package/web/.next/static/{W2fL0P9VKhEH6f0RCcR8s → e0oQotcTVoj0dtOxfFjEK}/_buildManifest.js +0 -0
  301. /package/web/.next/static/{W2fL0P9VKhEH6f0RCcR8s → e0oQotcTVoj0dtOxfFjEK}/_clientMiddlewareManifest.json +0 -0
  302. /package/web/.next/static/{W2fL0P9VKhEH6f0RCcR8s → e0oQotcTVoj0dtOxfFjEK}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-collection%401.1.7_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types%2Br_2988d950cbd44144aec5e6ce60804441/node_modules/%40radix-ui/react-collection/src/collection-legacy.tsx","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-collection%401.1.7_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types%2Br_2988d950cbd44144aec5e6ce60804441/node_modules/%40radix-ui/react-collection/src/collection.tsx","../../../../../../../node_modules/.pnpm/%40radix-ui%2Breact-collection%401.1.7_%40types%2Breact-dom%4019.2.3_%40types%2Breact%4019.2.10__%40types%2Br_2988d950cbd44144aec5e6ce60804441/node_modules/%40radix-ui/react-collection/src/ordered-dictionary.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/git-branch.ts","../../../../../../../node_modules/.pnpm/lucide-react%400.563.0_react%4019.2.4/node_modules/lucide-react/src/icons/rocket.ts"],"sourcesContent":["import React from 'react';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createSlot, type Slot } from '@radix-ui/react-slot';\n\ntype SlotProps = React.ComponentPropsWithoutRef<typeof Slot>;\ntype CollectionElement = HTMLElement;\ninterface CollectionProps extends SlotProps {\n scope: any;\n}\n\n// We have resorted to returning slots directly rather than exposing primitives that can then\n// be slotted like `<CollectionItem as={Slot}>\u2026</CollectionItem>`.\n// This is because we encountered issues with generic types that cannot be statically analysed\n// due to creating them dynamically via createCollection.\n\nfunction createCollection<ItemElement extends HTMLElement, ItemData = {}>(name: string) {\n /* -----------------------------------------------------------------------------------------------\n * CollectionProvider\n * ---------------------------------------------------------------------------------------------*/\n\n const PROVIDER_NAME = name + 'CollectionProvider';\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n\n type ContextValue = {\n collectionRef: React.RefObject<CollectionElement | null>;\n itemMap: Map<\n React.RefObject<ItemElement | null>,\n { ref: React.RefObject<ItemElement | null> } & ItemData\n >;\n };\n\n const [CollectionProviderImpl, useCollectionContext] = createCollectionContext<ContextValue>(\n PROVIDER_NAME,\n { collectionRef: { current: null }, itemMap: new Map() }\n );\n\n const CollectionProvider: React.FC<{ children?: React.ReactNode; scope: any }> = (props) => {\n const { scope, children } = props;\n const ref = React.useRef<CollectionElement>(null);\n const itemMap = React.useRef<ContextValue['itemMap']>(new Map()).current;\n return (\n <CollectionProviderImpl scope={scope} itemMap={itemMap} collectionRef={ref}>\n {children}\n </CollectionProviderImpl>\n );\n };\n\n CollectionProvider.displayName = PROVIDER_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionSlot\n * ---------------------------------------------------------------------------------------------*/\n\n const COLLECTION_SLOT_NAME = name + 'CollectionSlot';\n\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef<CollectionElement, CollectionProps>(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return <CollectionSlotImpl ref={composedRefs}>{children}</CollectionSlotImpl>;\n }\n );\n\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionItem\n * ---------------------------------------------------------------------------------------------*/\n\n const ITEM_SLOT_NAME = name + 'CollectionItemSlot';\n const ITEM_DATA_ATTR = 'data-radix-collection-item';\n\n type CollectionItemSlotProps = ItemData & {\n children: React.ReactNode;\n scope: any;\n };\n\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef<ItemElement, CollectionItemSlotProps>(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef<ItemElement>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n\n React.useEffect(() => {\n context.itemMap.set(ref, { ref, ...(itemData as unknown as ItemData) });\n return () => void context.itemMap.delete(ref);\n });\n\n return (\n <CollectionItemSlotImpl {...{ [ITEM_DATA_ATTR]: '' }} ref={composedRefs}>\n {children}\n </CollectionItemSlotImpl>\n );\n }\n );\n\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * useCollection\n * ---------------------------------------------------------------------------------------------*/\n\n function useCollection(scope: any) {\n const context = useCollectionContext(name + 'CollectionConsumer', scope);\n\n const getItems = React.useCallback(() => {\n const collectionNode = context.collectionRef.current;\n if (!collectionNode) return [];\n const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));\n const items = Array.from(context.itemMap.values());\n const orderedItems = items.sort(\n (a, b) => orderedNodes.indexOf(a.ref.current!) - orderedNodes.indexOf(b.ref.current!)\n );\n return orderedItems;\n }, [context.collectionRef, context.itemMap]);\n\n return getItems;\n }\n\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n useCollection,\n createCollectionScope,\n ] as const;\n}\n\nexport { createCollection };\nexport type { CollectionProps };\n","import React from 'react';\nimport { createContextScope } from '@radix-ui/react-context';\nimport { useComposedRefs } from '@radix-ui/react-compose-refs';\nimport { createSlot, type Slot } from '@radix-ui/react-slot';\nimport type { EntryOf } from './ordered-dictionary';\nimport { OrderedDict } from './ordered-dictionary';\n\ntype SlotProps = React.ComponentPropsWithoutRef<typeof Slot>;\ntype CollectionElement = HTMLElement;\ninterface CollectionProps extends SlotProps {\n scope: any;\n}\n\ninterface BaseItemData {\n id?: string;\n}\n\ntype ItemDataWithElement<\n ItemData extends BaseItemData,\n ItemElement extends HTMLElement,\n> = ItemData & {\n element: ItemElement;\n};\n\ntype ItemMap<ItemElement extends HTMLElement, ItemData extends BaseItemData> = OrderedDict<\n ItemElement,\n ItemDataWithElement<ItemData, ItemElement>\n>;\n\nfunction createCollection<\n ItemElement extends HTMLElement,\n ItemData extends BaseItemData = BaseItemData,\n>(name: string) {\n /* -----------------------------------------------------------------------------------------------\n * CollectionProvider\n * ---------------------------------------------------------------------------------------------*/\n\n const PROVIDER_NAME = name + 'CollectionProvider';\n const [createCollectionContext, createCollectionScope] = createContextScope(PROVIDER_NAME);\n\n type ContextValue = {\n collectionElement: CollectionElement | null;\n collectionRef: React.Ref<CollectionElement | null>;\n collectionRefObject: React.RefObject<CollectionElement | null>;\n itemMap: ItemMap<ItemElement, ItemData>;\n setItemMap: React.Dispatch<React.SetStateAction<ItemMap<ItemElement, ItemData>>>;\n };\n\n const [CollectionContextProvider, useCollectionContext] = createCollectionContext<ContextValue>(\n PROVIDER_NAME,\n {\n collectionElement: null,\n collectionRef: { current: null },\n collectionRefObject: { current: null },\n itemMap: new OrderedDict(),\n setItemMap: () => void 0,\n }\n );\n\n type CollectionState = [\n ItemMap: ItemMap<ItemElement, ItemData>,\n SetItemMap: React.Dispatch<React.SetStateAction<ItemMap<ItemElement, ItemData>>>,\n ];\n\n const CollectionProvider: React.FC<{\n children?: React.ReactNode;\n scope: any;\n state?: CollectionState;\n }> = ({ state, ...props }) => {\n return state ? (\n <CollectionProviderImpl {...props} state={state} />\n ) : (\n <CollectionInit {...props} />\n );\n };\n CollectionProvider.displayName = PROVIDER_NAME;\n\n const CollectionInit: React.FC<{\n children?: React.ReactNode;\n scope: any;\n }> = (props) => {\n const state = useInitCollection();\n return <CollectionProviderImpl {...props} state={state} />;\n };\n CollectionInit.displayName = PROVIDER_NAME + 'Init';\n\n const CollectionProviderImpl: React.FC<{\n children?: React.ReactNode;\n scope: any;\n state: CollectionState;\n }> = (props) => {\n const { scope, children, state } = props;\n const ref = React.useRef<CollectionElement>(null);\n const [collectionElement, setCollectionElement] = React.useState<CollectionElement | null>(\n null\n );\n const composeRefs = useComposedRefs(ref, setCollectionElement);\n const [itemMap, setItemMap] = state;\n\n React.useEffect(() => {\n if (!collectionElement) return;\n\n const observer = getChildListObserver(() => {\n // setItemMap((map) => {\n // const copy = new OrderedDict(map).toSorted(([, a], [, b]) =>\n // !a.element || !b.element ? 0 : isElementPreceding(a.element, b.element) ? -1 : 1\n // );\n // // check if the order has changed\n // let index = -1;\n // for (const entry of copy) {\n // index++;\n // const key = map.keyAt(index)!;\n // const [copyKey] = entry;\n // if (key !== copyKey) {\n // // order has changed!\n // return copy;\n // }\n // }\n // return map;\n // });\n });\n observer.observe(collectionElement, {\n childList: true,\n subtree: true,\n });\n return () => {\n observer.disconnect();\n };\n }, [collectionElement]);\n\n return (\n <CollectionContextProvider\n scope={scope}\n itemMap={itemMap}\n setItemMap={setItemMap}\n collectionRef={composeRefs}\n collectionRefObject={ref}\n collectionElement={collectionElement}\n >\n {children}\n </CollectionContextProvider>\n );\n };\n\n CollectionProviderImpl.displayName = PROVIDER_NAME + 'Impl';\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionSlot\n * ---------------------------------------------------------------------------------------------*/\n\n const COLLECTION_SLOT_NAME = name + 'CollectionSlot';\n\n const CollectionSlotImpl = createSlot(COLLECTION_SLOT_NAME);\n const CollectionSlot = React.forwardRef<CollectionElement, CollectionProps>(\n (props, forwardedRef) => {\n const { scope, children } = props;\n const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);\n const composedRefs = useComposedRefs(forwardedRef, context.collectionRef);\n return <CollectionSlotImpl ref={composedRefs}>{children}</CollectionSlotImpl>;\n }\n );\n\n CollectionSlot.displayName = COLLECTION_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * CollectionItem\n * ---------------------------------------------------------------------------------------------*/\n\n const ITEM_SLOT_NAME = name + 'CollectionItemSlot';\n const ITEM_DATA_ATTR = 'data-radix-collection-item';\n\n type CollectionItemSlotProps = ItemData & {\n children: React.ReactNode;\n scope: any;\n };\n\n const CollectionItemSlotImpl = createSlot(ITEM_SLOT_NAME);\n const CollectionItemSlot = React.forwardRef<ItemElement, CollectionItemSlotProps>(\n (props, forwardedRef) => {\n const { scope, children, ...itemData } = props;\n const ref = React.useRef<ItemElement>(null);\n const [element, setElement] = React.useState<ItemElement | null>(null);\n const composedRefs = useComposedRefs(forwardedRef, ref, setElement);\n const context = useCollectionContext(ITEM_SLOT_NAME, scope);\n\n const { setItemMap } = context;\n\n const itemDataRef = React.useRef(itemData);\n if (!shallowEqual(itemDataRef.current, itemData)) {\n itemDataRef.current = itemData;\n }\n const memoizedItemData = itemDataRef.current;\n\n React.useEffect(() => {\n const itemData = memoizedItemData;\n setItemMap((map) => {\n if (!element) {\n return map;\n }\n\n if (!map.has(element)) {\n map.set(element, { ...(itemData as unknown as ItemData), element });\n return map.toSorted(sortByDocumentPosition);\n }\n\n return map\n .set(element, { ...(itemData as unknown as ItemData), element })\n .toSorted(sortByDocumentPosition);\n });\n\n return () => {\n setItemMap((map) => {\n if (!element || !map.has(element)) {\n return map;\n }\n map.delete(element);\n return new OrderedDict(map);\n });\n };\n }, [element, memoizedItemData, setItemMap]);\n\n return (\n <CollectionItemSlotImpl {...{ [ITEM_DATA_ATTR]: '' }} ref={composedRefs as any}>\n {children}\n </CollectionItemSlotImpl>\n );\n }\n );\n\n CollectionItemSlot.displayName = ITEM_SLOT_NAME;\n\n /* -----------------------------------------------------------------------------------------------\n * useInitCollection\n * ---------------------------------------------------------------------------------------------*/\n\n function useInitCollection() {\n return React.useState<ItemMap<ItemElement, ItemData>>(new OrderedDict());\n }\n\n /* -----------------------------------------------------------------------------------------------\n * useCollection\n * ---------------------------------------------------------------------------------------------*/\n\n function useCollection(scope: any) {\n const { itemMap } = useCollectionContext(name + 'CollectionConsumer', scope);\n\n return itemMap;\n }\n\n const functions = {\n createCollectionScope,\n useCollection,\n useInitCollection,\n };\n\n return [\n { Provider: CollectionProvider, Slot: CollectionSlot, ItemSlot: CollectionItemSlot },\n functions,\n ] as const;\n}\n\nexport { createCollection };\nexport type { CollectionProps };\n\nfunction shallowEqual(a: any, b: any) {\n if (a === b) return true;\n if (typeof a !== 'object' || typeof b !== 'object') return false;\n if (a == null || b == null) return false;\n const keysA = Object.keys(a);\n const keysB = Object.keys(b);\n if (keysA.length !== keysB.length) return false;\n for (const key of keysA) {\n if (!Object.prototype.hasOwnProperty.call(b, key)) return false;\n if (a[key] !== b[key]) return false;\n }\n return true;\n}\n\nfunction isElementPreceding(a: Element, b: Element) {\n return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);\n}\n\nfunction sortByDocumentPosition<E extends HTMLElement, T extends BaseItemData>(\n a: EntryOf<ItemMap<E, T>>,\n b: EntryOf<ItemMap<E, T>>\n) {\n return !a[1].element || !b[1].element\n ? 0\n : isElementPreceding(a[1].element, b[1].element)\n ? -1\n : 1;\n}\n\nfunction getChildListObserver(callback: () => void) {\n const observer = new MutationObserver((mutationsList) => {\n for (const mutation of mutationsList) {\n if (mutation.type === 'childList') {\n callback();\n return;\n }\n }\n });\n\n return observer;\n}\n","// Not a real member because it shouldn't be accessible, but the super class\n// calls `set` which needs to read the instanciation state, so it can't be a\n// private member.\nconst __instanciated = new WeakMap<OrderedDict<any, any>, boolean>();\nexport class OrderedDict<K, V> extends Map<K, V> {\n #keys: K[];\n\n constructor(iterable?: Iterable<readonly [K, V]> | null | undefined);\n constructor(entries?: readonly (readonly [K, V])[] | null) {\n super(entries);\n this.#keys = [...super.keys()];\n __instanciated.set(this, true);\n }\n\n set(key: K, value: V) {\n if (__instanciated.get(this)) {\n if (this.has(key)) {\n this.#keys[this.#keys.indexOf(key)] = key;\n } else {\n this.#keys.push(key);\n }\n }\n super.set(key, value);\n return this;\n }\n\n insert(index: number, key: K, value: V) {\n const has = this.has(key);\n const length = this.#keys.length;\n const relativeIndex = toSafeInteger(index);\n let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n\n if (safeIndex === this.size || (has && safeIndex === this.size - 1) || safeIndex === -1) {\n this.set(key, value);\n return this;\n }\n\n const size = this.size + (has ? 0 : 1);\n\n // If you insert at, say, -2, without this bit you'd replace the\n // second-to-last item and push the rest up one, which means the new item is\n // 3rd to last. This isn't very intuitive; inserting at -2 is more like\n // saying \"make this item the second to last\".\n if (relativeIndex < 0) {\n actualIndex++;\n }\n\n const keys = [...this.#keys];\n let nextValue: V | undefined;\n let shouldSkip = false;\n for (let i = actualIndex; i < size; i++) {\n if (actualIndex === i) {\n let nextKey = keys[i]!;\n if (keys[i] === key) {\n nextKey = keys[i + 1]!;\n }\n if (has) {\n // delete first to ensure that the item is moved to the end\n this.delete(key);\n }\n nextValue = this.get(nextKey);\n this.set(key, value);\n } else {\n if (!shouldSkip && keys[i - 1] === key) {\n shouldSkip = true;\n }\n const currentKey = keys[shouldSkip ? i : i - 1]!;\n const currentValue = nextValue!;\n nextValue = this.get(currentKey);\n this.delete(currentKey);\n this.set(currentKey, currentValue);\n }\n }\n return this;\n }\n\n with(index: number, key: K, value: V) {\n const copy = new OrderedDict(this);\n copy.insert(index, key, value);\n return copy;\n }\n\n before(key: K) {\n const index = this.#keys.indexOf(key) - 1;\n if (index < 0) {\n return undefined;\n }\n return this.entryAt(index);\n }\n\n /**\n * Sets a new key-value pair at the position before the given key.\n */\n setBefore(key: K, newKey: K, value: V) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index, newKey, value);\n }\n\n after(key: K) {\n let index = this.#keys.indexOf(key);\n index = index === -1 || index === this.size - 1 ? -1 : index + 1;\n if (index === -1) {\n return undefined;\n }\n return this.entryAt(index);\n }\n\n /**\n * Sets a new key-value pair at the position after the given key.\n */\n setAfter(key: K, newKey: K, value: V) {\n const index = this.#keys.indexOf(key);\n if (index === -1) {\n return this;\n }\n return this.insert(index + 1, newKey, value);\n }\n\n first() {\n return this.entryAt(0);\n }\n\n last() {\n return this.entryAt(-1);\n }\n\n clear() {\n this.#keys = [];\n return super.clear();\n }\n\n delete(key: K) {\n const deleted = super.delete(key);\n if (deleted) {\n this.#keys.splice(this.#keys.indexOf(key), 1);\n }\n return deleted;\n }\n\n deleteAt(index: number) {\n const key = this.keyAt(index);\n if (key !== undefined) {\n return this.delete(key);\n }\n return false;\n }\n\n at(index: number) {\n const key = at(this.#keys, index);\n if (key !== undefined) {\n return this.get(key);\n }\n }\n\n entryAt(index: number): [K, V] | undefined {\n const key = at(this.#keys, index);\n if (key !== undefined) {\n return [key, this.get(key)!];\n }\n }\n\n indexOf(key: K) {\n return this.#keys.indexOf(key);\n }\n\n keyAt(index: number) {\n return at(this.#keys, index);\n }\n\n from(key: K, offset: number) {\n const index = this.indexOf(key);\n if (index === -1) {\n return undefined;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.at(dest);\n }\n\n keyFrom(key: K, offset: number) {\n const index = this.indexOf(key);\n if (index === -1) {\n return undefined;\n }\n let dest = index + offset;\n if (dest < 0) dest = 0;\n if (dest >= this.size) dest = this.size - 1;\n return this.keyAt(dest);\n }\n\n find(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => boolean,\n thisArg?: any\n ) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return entry;\n }\n index++;\n }\n return undefined;\n }\n\n findIndex(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => boolean,\n thisArg?: any\n ) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return index;\n }\n index++;\n }\n return -1;\n }\n\n filter<KK extends K, VV extends V>(\n predicate: (entry: [K, V], index: number, dict: OrderedDict<K, V>) => entry is [KK, VV],\n thisArg?: any\n ): OrderedDict<KK, VV>;\n\n filter(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => unknown,\n thisArg?: any\n ): OrderedDict<K, V>;\n\n filter(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => unknown,\n thisArg?: any\n ) {\n const entries: Array<[K, V]> = [];\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n entries.push(entry);\n }\n index++;\n }\n return new OrderedDict(entries);\n }\n\n map<U>(\n callbackfn: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => U,\n thisArg?: any\n ): OrderedDict<K, U> {\n const entries: [K, U][] = [];\n let index = 0;\n for (const entry of this) {\n entries.push([entry[0], Reflect.apply(callbackfn, thisArg, [entry, index, this])]);\n index++;\n }\n return new OrderedDict(entries);\n }\n\n reduce(\n callbackfn: (\n previousValue: [K, V],\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => [K, V]\n ): [K, V];\n reduce(\n callbackfn: (\n previousValue: [K, V],\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => [K, V],\n initialValue: [K, V]\n ): [K, V];\n reduce<U>(\n callbackfn: (\n previousValue: U,\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => U,\n initialValue: U\n ): U;\n\n reduce<U>(\n ...args: [\n (\n previousValue: U,\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => U,\n U?,\n ]\n ) {\n const [callbackfn, initialValue] = args;\n let index = 0;\n let accumulator = initialValue ?? this.at(0)!;\n for (const entry of this) {\n if (index === 0 && args.length === 1) {\n accumulator = entry as any;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n index++;\n }\n return accumulator;\n }\n\n reduceRight(\n callbackfn: (\n previousValue: [K, V],\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => [K, V]\n ): [K, V];\n reduceRight(\n callbackfn: (\n previousValue: [K, V],\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => [K, V],\n initialValue: [K, V]\n ): [K, V];\n reduceRight<U>(\n callbackfn: (\n previousValue: [K, V],\n currentValue: U,\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => U,\n initialValue: U\n ): U;\n\n reduceRight<U>(\n ...args: [\n (\n previousValue: U,\n currentEntry: [K, V],\n currentIndex: number,\n dictionary: OrderedDict<K, V>\n ) => U,\n U?,\n ]\n ) {\n const [callbackfn, initialValue] = args;\n let accumulator = initialValue ?? this.at(-1)!;\n for (let index = this.size - 1; index >= 0; index--) {\n const entry = this.at(index)!;\n if (index === this.size - 1 && args.length === 1) {\n accumulator = entry as any;\n } else {\n accumulator = Reflect.apply(callbackfn, this, [accumulator, entry, index, this]);\n }\n }\n return accumulator;\n }\n\n toSorted(compareFn?: (a: [K, V], b: [K, V]) => number): OrderedDict<K, V> {\n const entries = [...this.entries()].sort(compareFn);\n return new OrderedDict(entries);\n }\n\n toReversed(): OrderedDict<K, V> {\n const reversed = new OrderedDict<K, V>();\n for (let index = this.size - 1; index >= 0; index--) {\n const key = this.keyAt(index)!;\n const element = this.get(key)!;\n reversed.set(key, element);\n }\n return reversed;\n }\n\n toSpliced(start: number, deleteCount?: number): OrderedDict<K, V>;\n toSpliced(start: number, deleteCount: number, ...items: [K, V][]): OrderedDict<K, V>;\n\n toSpliced(...args: [start: number, deleteCount: number, ...items: [K, V][]]) {\n const entries = [...this.entries()];\n entries.splice(...args);\n return new OrderedDict(entries);\n }\n\n slice(start?: number, end?: number) {\n const result = new OrderedDict<K, V>();\n let stop = this.size - 1;\n\n if (start === undefined) {\n return result;\n }\n\n if (start < 0) {\n start = start + this.size;\n }\n\n if (end !== undefined && end > 0) {\n stop = end - 1;\n }\n\n for (let index = start; index <= stop; index++) {\n const key = this.keyAt(index)!;\n const element = this.get(key)!;\n result.set(key, element);\n }\n return result;\n }\n\n every(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => unknown,\n thisArg?: any\n ) {\n let index = 0;\n for (const entry of this) {\n if (!Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return false;\n }\n index++;\n }\n return true;\n }\n\n some(\n predicate: (entry: [K, V], index: number, dictionary: OrderedDict<K, V>) => unknown,\n thisArg?: any\n ) {\n let index = 0;\n for (const entry of this) {\n if (Reflect.apply(predicate, thisArg, [entry, index, this])) {\n return true;\n }\n index++;\n }\n return false;\n }\n}\n\nexport type KeyOf<D extends OrderedDict<any, any>> =\n D extends OrderedDict<infer K, any> ? K : never;\nexport type ValueOf<D extends OrderedDict<any, any>> =\n D extends OrderedDict<any, infer V> ? V : never;\nexport type EntryOf<D extends OrderedDict<any, any>> = [KeyOf<D>, ValueOf<D>];\nexport type KeyFrom<E extends EntryOf<any>> = E[0];\nexport type ValueFrom<E extends EntryOf<any>> = E[1];\n\nfunction at<T>(array: ArrayLike<T>, index: number): T | undefined {\n if ('at' in Array.prototype) {\n return Array.prototype.at.call(array, index);\n }\n const actualIndex = toSafeIndex(array, index);\n return actualIndex === -1 ? undefined : array[actualIndex];\n}\n\nfunction toSafeIndex(array: ArrayLike<any>, index: number) {\n const length = array.length;\n const relativeIndex = toSafeInteger(index);\n const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;\n return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;\n}\n\nfunction toSafeInteger(number: number) {\n // eslint-disable-next-line no-self-compare\n return number !== number || number === 0 ? 0 : Math.trunc(number);\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['line', { x1: '6', x2: '6', y1: '3', y2: '15', key: '17qcm7' }],\n ['circle', { cx: '18', cy: '6', r: '3', key: '1h7g24' }],\n ['circle', { cx: '6', cy: '18', r: '3', key: 'fqmcym' }],\n ['path', { d: 'M18 9a9 9 0 0 1-9 9', key: 'n2h4wq' }],\n];\n\n/**\n * @component @name GitBranch\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8bGluZSB4MT0iNiIgeDI9IjYiIHkxPSIzIiB5Mj0iMTUiIC8+CiAgPGNpcmNsZSBjeD0iMTgiIGN5PSI2IiByPSIzIiAvPgogIDxjaXJjbGUgY3g9IjYiIGN5PSIxOCIgcj0iMyIgLz4KICA8cGF0aCBkPSJNMTggOWE5IDkgMCAwIDEtOSA5IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/git-branch\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst GitBranch = createLucideIcon('git-branch', __iconNode);\n\nexport default GitBranch;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z',\n key: 'm3kijz',\n },\n ],\n [\n 'path',\n {\n d: 'm12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z',\n key: '1fmvmk',\n },\n ],\n ['path', { d: 'M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0', key: '1f8sc4' }],\n ['path', { d: 'M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5', key: 'qeys4' }],\n];\n\n/**\n * @component @name Rocket\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNC41IDE2LjVjLTEuNSAxLjI2LTIgNS0yIDVzMy43NC0uNSA1LTJjLjcxLS44NC43LTIuMTMtLjA5LTIuOTFhMi4xOCAyLjE4IDAgMCAwLTIuOTEtLjA5eiIgLz4KICA8cGF0aCBkPSJtMTIgMTUtMy0zYTIyIDIyIDAgMCAxIDItMy45NUExMi44OCAxMi44OCAwIDAgMSAyMiAyYzAgMi43Mi0uNzggNy41LTYgMTFhMjIuMzUgMjIuMzUgMCAwIDEtNCAyeiIgLz4KICA8cGF0aCBkPSJNOSAxMkg0cy41NS0zLjAzIDItNGMxLjYyLTEuMDggNSAwIDUgMCIgLz4KICA8cGF0aCBkPSJNMTIgMTV2NXMzLjAzLS41NSA0LTJjMS4wOC0xLjYyIDAtNSAwLTUiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/rocket\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Rocket = createLucideIcon('rocket', __iconNode);\n\nexport default Rocket;\n"],"names":["React","createContextScope","useComposedRefs","createSlot","jsx","createCollection","itemData"],"mappings":"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","ignoreList":[3,4]}
@@ -1,3 +0,0 @@
1
- module.exports=[61402,76052,13008,74607,6542,740,12104,a=>{"use strict";var b=a.i(92658),c=a.i(96380),d=a.i(12581);async function e(a,b){if(!a.trim())return{approved:!1,error:"Feature id is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{approved:!1,error:"Feature not found"};if(!e.agentRunId)return{approved:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("ApproveAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.approved)return{approved:!1,error:g.reason};return{approved:!0}}catch(a){return{approved:!1,error:a instanceof Error?a.message:"Failed to approve feature"}}}async function f(a,b){if(!a.trim())return{rejected:!1,error:"Feature id is required"};if(!b.trim())return{rejected:!1,error:"Feedback is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{rejected:!1,error:"Feature not found"};if(!e.agentRunId)return{rejected:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("RejectAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.rejected)return{rejected:!1,error:g.reason};return{rejected:!0,iteration:g.iteration,iterationWarning:g.iterationWarning}}catch(a){return{rejected:!1,error:a instanceof Error?a.message:"Failed to reject feature"}}}async function g(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("GetFeatureArtifactUseCase"),d=await b.execute(a),e={question:"Goal",context:d.oneLiner,questions:d.openQuestions.map((a,b)=>({id:`q-${b}`,question:a.question,type:"select",options:(a.options??[]).map((a,c)=>({id:`q-${b}-opt-${c}`,label:a.option,rationale:a.description,...a.selected?{recommended:!0}:{}}))})),finalAction:{id:"approve-reqs",label:"Approve Requirements",description:"Finalize and lock the requirements for implementation"}},f={question:"Goal",context:d.oneLiner,questions:d.openQuestions.filter(a=>a.resolved).map(a=>{let b=a.options?.find(a=>a.selected);return{question:a.question,selectedOption:b?.option??a.answer??"N/A",rationale:a.selectionRationale??b?.description??"",wasRecommended:!1}})};return{questionnaire:e,productDecisions:f,artifact:d}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature artifact"}}}async function h(a){if(!a.trim())return{error:"Feature id is required"};try{var b;let d=(0,c.resolve)("GetResearchArtifactUseCase");return{techDecisions:{name:(b=await d.execute(a)).name,summary:b.summary,decisions:b.decisions,technologies:b.technologies}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load research artifact"}}}async function i(a){if(!a.trim())return{error:"Feature id is required"};try{let b,d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{error:"Feature not found"};let f=e.pr?{url:e.pr.url,number:e.pr.number,status:e.pr.status,commitHash:e.pr.commitHash,ciStatus:e.pr.ciStatus}:void 0,g=e.branch?{source:e.branch,target:"main"}:void 0;try{let d=(0,c.resolve)("GetPlanArtifactUseCase");b=(await d.execute(a)).phases.map(({id:a,name:b,description:c})=>({id:a,name:b,description:c}))}catch{}if(!e.worktreePath)return{pr:f,branch:g,phases:b,warning:f?void 0:"No PR or diff data available"};try{let a=(0,c.resolve)("IGitPrService"),d=await a.getPrDiffSummary(e.worktreePath,"main");return{pr:f,branch:g,phases:b,diffSummary:d}}catch{return{pr:f,branch:g,phases:b,warning:"Diff statistics unavailable"}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load merge review data"}}}async function j(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("IPhaseTimingRepository");return{timings:(await b.findByFeatureId(a)).map(a=>({agentRunId:a.agentRunId,phase:a.phase,startedAt:a.startedAt,completedAt:a.completedAt,durationMs:null!=a.durationMs?Number(a.durationMs):void 0,waitingApprovalAt:a.waitingApprovalAt,approvalWaitMs:null!=a.approvalWaitMs?Number(a.approvalWaitMs):void 0}))}}catch(a){return{error:a instanceof Error?a.message:"Failed to load phase timings"}}}async function k(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("IFeatureRepository"),d=await b.findById(a);if(!d)return{error:"Feature not found"};if(!d.plan)return{plan:void 0};return{plan:{state:d.plan.state,overview:d.plan.overview,tasks:d.plan.tasks.map(a=>({title:a.title??"",description:a.description??"",state:a.state}))}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature plan"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"6073458b8049293853e18c15fd32ebc12a376ceb2f",null),a.s(["approveFeature",()=>e],61402),(0,d.ensureServerEntryExports)([f]),(0,b.registerServerReference)(f,"605e8ac4c2f0bf378ffc14c85b4eb1888059112ad0",null),a.s(["rejectFeature",()=>f],76052),(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"40372baa6f79ef76b537f37294b4db595c2f424d4c",null),a.s(["getFeatureArtifact",()=>g],13008),(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"40221f162bdbca8392bdd0949fc93c85679806e045",null),a.s(["getResearchArtifact",()=>h],74607),(0,d.ensureServerEntryExports)([i]),(0,b.registerServerReference)(i,"40f4bbce5b322b4af6dbe32ee0ec273fa837028a4b",null),a.s(["getMergeReviewData",()=>i],6542),(0,d.ensureServerEntryExports)([j]),(0,b.registerServerReference)(j,"400fd8b1391ddd84784de427fd73fd371b40ae7682",null),a.s(["getFeaturePhaseTimings",()=>j],740),(0,d.ensureServerEntryExports)([k]),(0,b.registerServerReference)(k,"40be714314344273cdc6aa10a445a7560711fd5dcf",null),a.s(["getFeaturePlan",()=>k],12104)},48216,a=>{"use strict";var b=a.i(12513),c=a.i(94691),d=a.i(33841),e=a.i(46646),f=a.i(68670),g=a.i(85321),h=a.i(84095),i=a.i(56799),j=a.i(80496),k=a.i(50845),l=a.i(49560),m=a.i(39353),n=a.i(29207),o=a.i(31075),p=a.i(61402),q=a.i(76052),r=a.i(13008),s=a.i(74607),t=a.i(6542),u=a.i(740),v=a.i(12104);a.s([],2950),a.i(2950),a.s(["000b27e459f90368a65591bd386cfaa3814e639c2f",()=>b.pickFolder,"00557dc820bd4837e92a8ebd067d2c89aa4a4a5536",()=>o.fetchGraphData,"400a2714191db759f5678ed9983aa65e56b5702436",()=>f.stopDeployment,"400fd8b1391ddd84784de427fd73fd371b40ae7682",()=>u.getFeaturePhaseTimings,"40221f162bdbca8392bdd0949fc93c85679806e045",()=>s.getResearchArtifact,"40372baa6f79ef76b537f37294b4db595c2f424d4c",()=>r.getFeatureArtifact,"4044920962946cb6ade38d1de17779b7db83b78f26",()=>d.deployFeature,"40491e4c4a49eeff7b33232ed3870a9b2916ad8409",()=>m.deleteRepository,"404de25f4ae9ca6ce83f5b6117554994c73e406478",()=>i.openShell,"4053a95ca56a4a559e1efc4e936a1d72aa3237e390",()=>g.getDeploymentStatus,"406c909c35fd5e63f0d2d1cfde59bfd3adda5217a0",()=>h.openIde,"40807c512fa418f17446b40324be1a7262ede890dc",()=>c.getDeploymentLogs,"40912d02e73402af2f77a63bcfce6b292d453fa09b",()=>j.openFolder,"4096d7329abd12311fb179ccc13ea2566df3a91423",()=>n.getFeatureMetadata,"40a6d3d0c6c43479858588fa72fafc06936842f723",()=>k.deleteFeature,"40be714314344273cdc6aa10a445a7560711fd5dcf",()=>v.getFeaturePlan,"40c56ce35af09db3451caa50e9b58ec985c8276dc5",()=>e.deployRepository,"40d981a4920dd6c16ffa8a9842f54f9ae04bb136ce",()=>l.addRepository,"40f4bbce5b322b4af6dbe32ee0ec273fa837028a4b",()=>t.getMergeReviewData,"605e8ac4c2f0bf378ffc14c85b4eb1888059112ad0",()=>q.rejectFeature,"6073458b8049293853e18c15fd32ebc12a376ceb2f",()=>p.approveFeature],48216)}];
2
-
3
- //# sourceMappingURL=src_presentation_web_7efa14ca._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/approve-feature.ts","../../../../../../../src/presentation/web/app/actions/reject-feature.ts","../../../../../../../src/presentation/web/app/actions/get-feature-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-research-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-merge-review-data.ts","../../../../../../../src/presentation/web/app/actions/get-feature-phase-timings.ts","../../../../../../../src/presentation/web/app/actions/get-feature-plan.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/feature/%5BfeatureId%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { ApproveAgentRunUseCase } from '@shepai/core/application/use-cases/agents/approve-agent-run.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { PrdApprovalPayload } from '@shepai/core/domain/generated/output';\n\nexport async function approveFeature(\n featureId: string,\n payload?: PrdApprovalPayload\n): Promise<{ approved: boolean; error?: string }> {\n if (!featureId.trim()) {\n return { approved: false, error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { approved: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { approved: false, error: 'Feature has no agent run' };\n }\n\n const approveUseCase = resolve<ApproveAgentRunUseCase>('ApproveAgentRunUseCase');\n const result = await approveUseCase.execute(feature.agentRunId, payload);\n\n if (!result.approved) {\n return { approved: false, error: result.reason };\n }\n\n return { approved: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to approve feature';\n return { approved: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { RejectAgentRunUseCase } from '@shepai/core/application/use-cases/agents/reject-agent-run.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport async function rejectFeature(\n featureId: string,\n feedback: string\n): Promise<{\n rejected: boolean;\n iteration?: number;\n iterationWarning?: boolean;\n error?: string;\n}> {\n if (!featureId.trim()) {\n return { rejected: false, error: 'Feature id is required' };\n }\n\n if (!feedback.trim()) {\n return { rejected: false, error: 'Feedback is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { rejected: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { rejected: false, error: 'Feature has no agent run' };\n }\n\n const rejectUseCase = resolve<RejectAgentRunUseCase>('RejectAgentRunUseCase');\n const result = await rejectUseCase.execute(feature.agentRunId, feedback);\n\n if (!result.rejected) {\n return { rejected: false, error: result.reason };\n }\n\n return {\n rejected: true,\n iteration: result.iteration,\n iterationWarning: result.iterationWarning,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to reject feature';\n return { rejected: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetFeatureArtifactUseCase } from '@shepai/core/application/use-cases/features/get-feature-artifact.use-case';\nimport type { FeatureArtifact } from '@shepai/core/domain/generated/output';\nimport type { PrdQuestionnaireData } from '@shepai/core/domain/generated/output';\nimport type { ProductDecisionsSummaryData } from '@/components/common/product-decisions-summary';\n\ninterface GetFeatureArtifactResult {\n questionnaire?: PrdQuestionnaireData;\n productDecisions?: ProductDecisionsSummaryData;\n artifact?: FeatureArtifact;\n error?: string;\n}\n\n/**\n * Map FeatureArtifact openQuestions into the PrdQuestionnaireData shape\n * expected by the PrdQuestionnaireDrawer component.\n */\nfunction toQuestionnaireData(artifact: FeatureArtifact): PrdQuestionnaireData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions.map((oq, idx) => ({\n id: `q-${idx}`,\n question: oq.question,\n type: 'select' as const,\n options: (oq.options ?? []).map((opt, optIdx) => ({\n id: `q-${idx}-opt-${optIdx}`,\n label: opt.option,\n rationale: opt.description,\n ...(opt.selected ? { recommended: true } : {}),\n })),\n })),\n finalAction: {\n id: 'approve-reqs',\n label: 'Approve Requirements',\n description: 'Finalize and lock the requirements for implementation',\n },\n };\n}\n\n/**\n * Map FeatureArtifact openQuestions into a read-only summary for the\n * Product Decisions tab in the tech review drawer.\n */\nfunction toProductDecisionsData(artifact: FeatureArtifact): ProductDecisionsSummaryData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions\n .filter((oq) => oq.resolved)\n .map((oq) => {\n const selected = oq.options?.find((o) => o.selected);\n return {\n question: oq.question,\n selectedOption: selected?.option ?? oq.answer ?? 'N/A',\n rationale: oq.selectionRationale ?? selected?.description ?? '',\n wasRecommended: false,\n };\n }),\n };\n}\n\nexport async function getFeatureArtifact(featureId: string): Promise<GetFeatureArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetFeatureArtifactUseCase>('GetFeatureArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const questionnaire = toQuestionnaireData(artifact);\n const productDecisions = toProductDecisionsData(artifact);\n return { questionnaire, productDecisions, artifact };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load feature artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetResearchArtifactUseCase } from '@shepai/core/application/use-cases/features/get-research-artifact.use-case';\nimport type { ResearchArtifact, TechDecision } from '@shepai/core/domain/generated/output';\n\nexport interface TechDecisionsReviewData {\n name: string;\n summary: string;\n decisions: TechDecision[];\n technologies: string[];\n}\n\ninterface GetResearchArtifactResult {\n techDecisions?: TechDecisionsReviewData;\n error?: string;\n}\n\nfunction toTechDecisionsData(artifact: ResearchArtifact): TechDecisionsReviewData {\n return {\n name: artifact.name,\n summary: artifact.summary,\n decisions: artifact.decisions,\n technologies: artifact.technologies,\n };\n}\n\nexport async function getResearchArtifact(featureId: string): Promise<GetResearchArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetResearchArtifactUseCase>('GetResearchArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const techDecisions = toTechDecisionsData(artifact);\n return { techDecisions };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load research artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { IGitPrService } from '@shepai/core/application/ports/output/services/git-pr-service.interface';\nimport type { GetPlanArtifactUseCase } from '@shepai/core/application/use-cases/features/get-plan-artifact.use-case';\nimport type {\n MergeReviewData,\n MergeReviewPhase,\n} from '@/components/common/merge-review/merge-review-config';\n\ntype GetMergeReviewDataResult = MergeReviewData | { error: string };\n\nexport async function getMergeReviewData(featureId: string): Promise<GetMergeReviewDataResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { error: 'Feature not found' };\n }\n\n const pr = feature.pr\n ? {\n url: feature.pr.url,\n number: feature.pr.number,\n status: feature.pr.status,\n commitHash: feature.pr.commitHash,\n ciStatus: feature.pr.ciStatus,\n }\n : undefined;\n\n const branch = feature.branch ? { source: feature.branch, target: 'main' } : undefined;\n\n // Load plan phases (best-effort)\n let phases: MergeReviewPhase[] | undefined;\n try {\n const planUseCase = resolve<GetPlanArtifactUseCase>('GetPlanArtifactUseCase');\n const plan = await planUseCase.execute(featureId);\n phases = plan.phases.map(({ id, name, description }) => ({ id, name, description }));\n } catch {\n // Plan unavailable — not critical\n }\n\n if (!feature.worktreePath) {\n return { pr, branch, phases, warning: pr ? undefined : 'No PR or diff data available' };\n }\n\n try {\n const gitPrService = resolve<IGitPrService>('IGitPrService');\n const diffSummary = await gitPrService.getPrDiffSummary(feature.worktreePath, 'main');\n return { pr, branch, phases, diffSummary };\n } catch {\n return { pr, branch, phases, warning: 'Diff statistics unavailable' };\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load merge review data';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IPhaseTimingRepository } from '@shepai/core/application/ports/output/agents/phase-timing-repository.interface';\n\nexport interface PhaseTimingData {\n agentRunId: string;\n phase: string;\n startedAt: string;\n completedAt?: string;\n durationMs?: number;\n waitingApprovalAt?: string;\n approvalWaitMs?: number;\n}\n\ntype GetPhaseTimingsResult = { timings: PhaseTimingData[] } | { error: string };\n\nexport async function getFeaturePhaseTimings(featureId: string): Promise<GetPhaseTimingsResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const repo = resolve<IPhaseTimingRepository>('IPhaseTimingRepository');\n const phaseTimings = await repo.findByFeatureId(featureId);\n\n const timings: PhaseTimingData[] = phaseTimings.map((t) => ({\n agentRunId: t.agentRunId,\n phase: t.phase,\n startedAt: t.startedAt,\n completedAt: t.completedAt,\n durationMs: t.durationMs != null ? Number(t.durationMs) : undefined,\n waitingApprovalAt: t.waitingApprovalAt,\n approvalWaitMs: t.approvalWaitMs != null ? Number(t.approvalWaitMs) : undefined,\n }));\n\n return { timings };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load phase timings';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport interface PlanTaskData {\n title: string;\n description: string;\n state: string;\n}\n\nexport interface PlanData {\n state: string;\n overview: string;\n tasks: PlanTaskData[];\n}\n\ntype GetPlanResult = { plan: PlanData | undefined } | { error: string };\n\nexport async function getFeaturePlan(featureId: string): Promise<GetPlanResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const repo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await repo.findById(featureId);\n\n if (!feature) {\n return { error: 'Feature not found' };\n }\n\n if (!feature.plan) {\n return { plan: undefined };\n }\n\n const plan: PlanData = {\n state: feature.plan.state,\n overview: feature.plan.overview,\n tasks: feature.plan.tasks.map((t) => ({\n title: t.title ?? '',\n description: t.description ?? '',\n state: t.state,\n })),\n };\n\n return { plan };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load feature plan';\n return { error: message };\n }\n}\n","export {pickFolder as '000b27e459f90368a65591bd386cfaa3814e639c2f'} from 'ACTIONS_MODULE0'\nexport {getDeploymentLogs as '40807c512fa418f17446b40324be1a7262ede890dc'} from 'ACTIONS_MODULE1'\nexport {deployFeature as '4044920962946cb6ade38d1de17779b7db83b78f26'} from 'ACTIONS_MODULE2'\nexport {deployRepository as '40c56ce35af09db3451caa50e9b58ec985c8276dc5'} from 'ACTIONS_MODULE3'\nexport {stopDeployment as '400a2714191db759f5678ed9983aa65e56b5702436'} from 'ACTIONS_MODULE4'\nexport {getDeploymentStatus as '4053a95ca56a4a559e1efc4e936a1d72aa3237e390'} from 'ACTIONS_MODULE5'\nexport {openIde as '406c909c35fd5e63f0d2d1cfde59bfd3adda5217a0'} from 'ACTIONS_MODULE6'\nexport {openShell as '404de25f4ae9ca6ce83f5b6117554994c73e406478'} from 'ACTIONS_MODULE7'\nexport {openFolder as '40912d02e73402af2f77a63bcfce6b292d453fa09b'} from 'ACTIONS_MODULE8'\nexport {deleteFeature as '40a6d3d0c6c43479858588fa72fafc06936842f723'} from 'ACTIONS_MODULE9'\nexport {addRepository as '40d981a4920dd6c16ffa8a9842f54f9ae04bb136ce'} from 'ACTIONS_MODULE10'\nexport {deleteRepository as '40491e4c4a49eeff7b33232ed3870a9b2916ad8409'} from 'ACTIONS_MODULE11'\nexport {getFeatureMetadata as '4096d7329abd12311fb179ccc13ea2566df3a91423'} from 'ACTIONS_MODULE12'\nexport {fetchGraphData as '00557dc820bd4837e92a8ebd067d2c89aa4a4a5536'} from 'ACTIONS_MODULE13'\nexport {approveFeature as '6073458b8049293853e18c15fd32ebc12a376ceb2f'} from 'ACTIONS_MODULE14'\nexport {rejectFeature as '605e8ac4c2f0bf378ffc14c85b4eb1888059112ad0'} from 'ACTIONS_MODULE15'\nexport {getFeatureArtifact as '40372baa6f79ef76b537f37294b4db595c2f424d4c'} from 'ACTIONS_MODULE16'\nexport {getResearchArtifact as '40221f162bdbca8392bdd0949fc93c85679806e045'} from 'ACTIONS_MODULE17'\nexport {getMergeReviewData as '40f4bbce5b322b4af6dbe32ee0ec273fa837028a4b'} from 'ACTIONS_MODULE18'\nexport {getFeaturePhaseTimings as '400fd8b1391ddd84784de427fd73fd371b40ae7682'} from 'ACTIONS_MODULE19'\nexport {getFeaturePlan as '40be714314344273cdc6aa10a445a7560711fd5dcf'} from 'ACTIONS_MODULE20'\n"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- module.exports=[61402,76052,13008,74607,6542,740,12104,a=>{"use strict";var b=a.i(92658),c=a.i(96380),d=a.i(12581);async function e(a,b){if(!a.trim())return{approved:!1,error:"Feature id is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{approved:!1,error:"Feature not found"};if(!e.agentRunId)return{approved:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("ApproveAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.approved)return{approved:!1,error:g.reason};return{approved:!0}}catch(a){return{approved:!1,error:a instanceof Error?a.message:"Failed to approve feature"}}}async function f(a,b){if(!a.trim())return{rejected:!1,error:"Feature id is required"};if(!b.trim())return{rejected:!1,error:"Feedback is required"};try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{rejected:!1,error:"Feature not found"};if(!e.agentRunId)return{rejected:!1,error:"Feature has no agent run"};let f=(0,c.resolve)("RejectAgentRunUseCase"),g=await f.execute(e.agentRunId,b);if(!g.rejected)return{rejected:!1,error:g.reason};return{rejected:!0,iteration:g.iteration,iterationWarning:g.iterationWarning}}catch(a){return{rejected:!1,error:a instanceof Error?a.message:"Failed to reject feature"}}}async function g(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("GetFeatureArtifactUseCase"),d=await b.execute(a),e={question:"Goal",context:d.oneLiner,questions:d.openQuestions.map((a,b)=>({id:`q-${b}`,question:a.question,type:"select",options:(a.options??[]).map((a,c)=>({id:`q-${b}-opt-${c}`,label:a.option,rationale:a.description,...a.selected?{recommended:!0}:{}}))})),finalAction:{id:"approve-reqs",label:"Approve Requirements",description:"Finalize and lock the requirements for implementation"}},f={question:"Goal",context:d.oneLiner,questions:d.openQuestions.filter(a=>a.resolved).map(a=>{let b=a.options?.find(a=>a.selected);return{question:a.question,selectedOption:b?.option??a.answer??"N/A",rationale:a.selectionRationale??b?.description??"",wasRecommended:!1}})};return{questionnaire:e,productDecisions:f,artifact:d}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature artifact"}}}async function h(a){if(!a.trim())return{error:"Feature id is required"};try{var b;let d=(0,c.resolve)("GetResearchArtifactUseCase");return{techDecisions:{name:(b=await d.execute(a)).name,summary:b.summary,decisions:b.decisions,technologies:b.technologies}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load research artifact"}}}async function i(a){if(!a.trim())return{error:"Feature id is required"};try{let b,d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(a);if(!e)return{error:"Feature not found"};let f=e.pr?{url:e.pr.url,number:e.pr.number,status:e.pr.status,commitHash:e.pr.commitHash,ciStatus:e.pr.ciStatus}:void 0,g=e.branch?{source:e.branch,target:"main"}:void 0;try{let d=(0,c.resolve)("GetPlanArtifactUseCase");b=(await d.execute(a)).phases.map(({id:a,name:b,description:c})=>({id:a,name:b,description:c}))}catch{}if(!e.worktreePath)return{pr:f,branch:g,phases:b,warning:f?void 0:"No PR or diff data available"};try{let a=(0,c.resolve)("IGitPrService"),d=await a.getPrDiffSummary(e.worktreePath,"main");return{pr:f,branch:g,phases:b,diffSummary:d}}catch{return{pr:f,branch:g,phases:b,warning:"Diff statistics unavailable"}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load merge review data"}}}async function j(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("IPhaseTimingRepository");return{timings:(await b.findByFeatureId(a)).map(a=>({agentRunId:a.agentRunId,phase:a.phase,startedAt:a.startedAt,completedAt:a.completedAt,durationMs:null!=a.durationMs?Number(a.durationMs):void 0,waitingApprovalAt:a.waitingApprovalAt,approvalWaitMs:null!=a.approvalWaitMs?Number(a.approvalWaitMs):void 0}))}}catch(a){return{error:a instanceof Error?a.message:"Failed to load phase timings"}}}async function k(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("IFeatureRepository"),d=await b.findById(a);if(!d)return{error:"Feature not found"};if(!d.plan)return{plan:void 0};return{plan:{state:d.plan.state,overview:d.plan.overview,tasks:d.plan.tasks.map(a=>({title:a.title??"",description:a.description??"",state:a.state}))}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature plan"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"6073458b8049293853e18c15fd32ebc12a376ceb2f",null),a.s(["approveFeature",()=>e],61402),(0,d.ensureServerEntryExports)([f]),(0,b.registerServerReference)(f,"605e8ac4c2f0bf378ffc14c85b4eb1888059112ad0",null),a.s(["rejectFeature",()=>f],76052),(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"40372baa6f79ef76b537f37294b4db595c2f424d4c",null),a.s(["getFeatureArtifact",()=>g],13008),(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"40221f162bdbca8392bdd0949fc93c85679806e045",null),a.s(["getResearchArtifact",()=>h],74607),(0,d.ensureServerEntryExports)([i]),(0,b.registerServerReference)(i,"40f4bbce5b322b4af6dbe32ee0ec273fa837028a4b",null),a.s(["getMergeReviewData",()=>i],6542),(0,d.ensureServerEntryExports)([j]),(0,b.registerServerReference)(j,"400fd8b1391ddd84784de427fd73fd371b40ae7682",null),a.s(["getFeaturePhaseTimings",()=>j],740),(0,d.ensureServerEntryExports)([k]),(0,b.registerServerReference)(k,"40be714314344273cdc6aa10a445a7560711fd5dcf",null),a.s(["getFeaturePlan",()=>k],12104)},6025,a=>{"use strict";var b=a.i(12513),c=a.i(94691),d=a.i(33841),e=a.i(46646),f=a.i(68670),g=a.i(85321),h=a.i(84095),i=a.i(56799),j=a.i(80496),k=a.i(50845),l=a.i(49560),m=a.i(39353),n=a.i(29207),o=a.i(31075),p=a.i(61402),q=a.i(76052),r=a.i(13008),s=a.i(74607),t=a.i(6542),u=a.i(740),v=a.i(12104);a.s([],1549),a.i(1549),a.s(["000b27e459f90368a65591bd386cfaa3814e639c2f",()=>b.pickFolder,"00557dc820bd4837e92a8ebd067d2c89aa4a4a5536",()=>o.fetchGraphData,"400a2714191db759f5678ed9983aa65e56b5702436",()=>f.stopDeployment,"400fd8b1391ddd84784de427fd73fd371b40ae7682",()=>u.getFeaturePhaseTimings,"40221f162bdbca8392bdd0949fc93c85679806e045",()=>s.getResearchArtifact,"40372baa6f79ef76b537f37294b4db595c2f424d4c",()=>r.getFeatureArtifact,"4044920962946cb6ade38d1de17779b7db83b78f26",()=>d.deployFeature,"40491e4c4a49eeff7b33232ed3870a9b2916ad8409",()=>m.deleteRepository,"404de25f4ae9ca6ce83f5b6117554994c73e406478",()=>i.openShell,"4053a95ca56a4a559e1efc4e936a1d72aa3237e390",()=>g.getDeploymentStatus,"406c909c35fd5e63f0d2d1cfde59bfd3adda5217a0",()=>h.openIde,"40807c512fa418f17446b40324be1a7262ede890dc",()=>c.getDeploymentLogs,"40912d02e73402af2f77a63bcfce6b292d453fa09b",()=>j.openFolder,"4096d7329abd12311fb179ccc13ea2566df3a91423",()=>n.getFeatureMetadata,"40a6d3d0c6c43479858588fa72fafc06936842f723",()=>k.deleteFeature,"40be714314344273cdc6aa10a445a7560711fd5dcf",()=>v.getFeaturePlan,"40c56ce35af09db3451caa50e9b58ec985c8276dc5",()=>e.deployRepository,"40d981a4920dd6c16ffa8a9842f54f9ae04bb136ce",()=>l.addRepository,"40f4bbce5b322b4af6dbe32ee0ec273fa837028a4b",()=>t.getMergeReviewData,"605e8ac4c2f0bf378ffc14c85b4eb1888059112ad0",()=>q.rejectFeature,"6073458b8049293853e18c15fd32ebc12a376ceb2f",()=>p.approveFeature],6025)}];
2
-
3
- //# sourceMappingURL=src_presentation_web_b59d79db._.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/app/actions/approve-feature.ts","../../../../../../../src/presentation/web/app/actions/reject-feature.ts","../../../../../../../src/presentation/web/app/actions/get-feature-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-research-artifact.ts","../../../../../../../src/presentation/web/app/actions/get-merge-review-data.ts","../../../../../../../src/presentation/web/app/actions/get-feature-phase-timings.ts","../../../../../../../src/presentation/web/app/actions/get-feature-plan.ts","../../../../../../../src/presentation/web/.next-internal/server/app/%28dashboard%29/%40drawer/feature/%5BfeatureId%5D/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { ApproveAgentRunUseCase } from '@shepai/core/application/use-cases/agents/approve-agent-run.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { PrdApprovalPayload } from '@shepai/core/domain/generated/output';\n\nexport async function approveFeature(\n featureId: string,\n payload?: PrdApprovalPayload\n): Promise<{ approved: boolean; error?: string }> {\n if (!featureId.trim()) {\n return { approved: false, error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { approved: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { approved: false, error: 'Feature has no agent run' };\n }\n\n const approveUseCase = resolve<ApproveAgentRunUseCase>('ApproveAgentRunUseCase');\n const result = await approveUseCase.execute(feature.agentRunId, payload);\n\n if (!result.approved) {\n return { approved: false, error: result.reason };\n }\n\n return { approved: true };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to approve feature';\n return { approved: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { RejectAgentRunUseCase } from '@shepai/core/application/use-cases/agents/reject-agent-run.use-case';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport async function rejectFeature(\n featureId: string,\n feedback: string\n): Promise<{\n rejected: boolean;\n iteration?: number;\n iterationWarning?: boolean;\n error?: string;\n}> {\n if (!featureId.trim()) {\n return { rejected: false, error: 'Feature id is required' };\n }\n\n if (!feedback.trim()) {\n return { rejected: false, error: 'Feedback is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { rejected: false, error: 'Feature not found' };\n }\n\n if (!feature.agentRunId) {\n return { rejected: false, error: 'Feature has no agent run' };\n }\n\n const rejectUseCase = resolve<RejectAgentRunUseCase>('RejectAgentRunUseCase');\n const result = await rejectUseCase.execute(feature.agentRunId, feedback);\n\n if (!result.rejected) {\n return { rejected: false, error: result.reason };\n }\n\n return {\n rejected: true,\n iteration: result.iteration,\n iterationWarning: result.iterationWarning,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to reject feature';\n return { rejected: false, error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetFeatureArtifactUseCase } from '@shepai/core/application/use-cases/features/get-feature-artifact.use-case';\nimport type { FeatureArtifact } from '@shepai/core/domain/generated/output';\nimport type { PrdQuestionnaireData } from '@shepai/core/domain/generated/output';\nimport type { ProductDecisionsSummaryData } from '@/components/common/product-decisions-summary';\n\ninterface GetFeatureArtifactResult {\n questionnaire?: PrdQuestionnaireData;\n productDecisions?: ProductDecisionsSummaryData;\n artifact?: FeatureArtifact;\n error?: string;\n}\n\n/**\n * Map FeatureArtifact openQuestions into the PrdQuestionnaireData shape\n * expected by the PrdQuestionnaireDrawer component.\n */\nfunction toQuestionnaireData(artifact: FeatureArtifact): PrdQuestionnaireData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions.map((oq, idx) => ({\n id: `q-${idx}`,\n question: oq.question,\n type: 'select' as const,\n options: (oq.options ?? []).map((opt, optIdx) => ({\n id: `q-${idx}-opt-${optIdx}`,\n label: opt.option,\n rationale: opt.description,\n ...(opt.selected ? { recommended: true } : {}),\n })),\n })),\n finalAction: {\n id: 'approve-reqs',\n label: 'Approve Requirements',\n description: 'Finalize and lock the requirements for implementation',\n },\n };\n}\n\n/**\n * Map FeatureArtifact openQuestions into a read-only summary for the\n * Product Decisions tab in the tech review drawer.\n */\nfunction toProductDecisionsData(artifact: FeatureArtifact): ProductDecisionsSummaryData {\n return {\n question: 'Goal',\n context: artifact.oneLiner,\n questions: artifact.openQuestions\n .filter((oq) => oq.resolved)\n .map((oq) => {\n const selected = oq.options?.find((o) => o.selected);\n return {\n question: oq.question,\n selectedOption: selected?.option ?? oq.answer ?? 'N/A',\n rationale: oq.selectionRationale ?? selected?.description ?? '',\n wasRecommended: false,\n };\n }),\n };\n}\n\nexport async function getFeatureArtifact(featureId: string): Promise<GetFeatureArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetFeatureArtifactUseCase>('GetFeatureArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const questionnaire = toQuestionnaireData(artifact);\n const productDecisions = toProductDecisionsData(artifact);\n return { questionnaire, productDecisions, artifact };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load feature artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { GetResearchArtifactUseCase } from '@shepai/core/application/use-cases/features/get-research-artifact.use-case';\nimport type { ResearchArtifact, TechDecision } from '@shepai/core/domain/generated/output';\n\nexport interface TechDecisionsReviewData {\n name: string;\n summary: string;\n decisions: TechDecision[];\n technologies: string[];\n}\n\ninterface GetResearchArtifactResult {\n techDecisions?: TechDecisionsReviewData;\n error?: string;\n}\n\nfunction toTechDecisionsData(artifact: ResearchArtifact): TechDecisionsReviewData {\n return {\n name: artifact.name,\n summary: artifact.summary,\n decisions: artifact.decisions,\n technologies: artifact.technologies,\n };\n}\n\nexport async function getResearchArtifact(featureId: string): Promise<GetResearchArtifactResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const useCase = resolve<GetResearchArtifactUseCase>('GetResearchArtifactUseCase');\n const artifact = await useCase.execute(featureId);\n const techDecisions = toTechDecisionsData(artifact);\n return { techDecisions };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load research artifact';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\nimport type { IGitPrService } from '@shepai/core/application/ports/output/services/git-pr-service.interface';\nimport type { GetPlanArtifactUseCase } from '@shepai/core/application/use-cases/features/get-plan-artifact.use-case';\nimport type {\n MergeReviewData,\n MergeReviewPhase,\n} from '@/components/common/merge-review/merge-review-config';\n\ntype GetMergeReviewDataResult = MergeReviewData | { error: string };\n\nexport async function getMergeReviewData(featureId: string): Promise<GetMergeReviewDataResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const featureRepo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await featureRepo.findById(featureId);\n\n if (!feature) {\n return { error: 'Feature not found' };\n }\n\n const pr = feature.pr\n ? {\n url: feature.pr.url,\n number: feature.pr.number,\n status: feature.pr.status,\n commitHash: feature.pr.commitHash,\n ciStatus: feature.pr.ciStatus,\n }\n : undefined;\n\n const branch = feature.branch ? { source: feature.branch, target: 'main' } : undefined;\n\n // Load plan phases (best-effort)\n let phases: MergeReviewPhase[] | undefined;\n try {\n const planUseCase = resolve<GetPlanArtifactUseCase>('GetPlanArtifactUseCase');\n const plan = await planUseCase.execute(featureId);\n phases = plan.phases.map(({ id, name, description }) => ({ id, name, description }));\n } catch {\n // Plan unavailable — not critical\n }\n\n if (!feature.worktreePath) {\n return { pr, branch, phases, warning: pr ? undefined : 'No PR or diff data available' };\n }\n\n try {\n const gitPrService = resolve<IGitPrService>('IGitPrService');\n const diffSummary = await gitPrService.getPrDiffSummary(feature.worktreePath, 'main');\n return { pr, branch, phases, diffSummary };\n } catch {\n return { pr, branch, phases, warning: 'Diff statistics unavailable' };\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load merge review data';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IPhaseTimingRepository } from '@shepai/core/application/ports/output/agents/phase-timing-repository.interface';\n\nexport interface PhaseTimingData {\n agentRunId: string;\n phase: string;\n startedAt: string;\n completedAt?: string;\n durationMs?: number;\n waitingApprovalAt?: string;\n approvalWaitMs?: number;\n}\n\ntype GetPhaseTimingsResult = { timings: PhaseTimingData[] } | { error: string };\n\nexport async function getFeaturePhaseTimings(featureId: string): Promise<GetPhaseTimingsResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const repo = resolve<IPhaseTimingRepository>('IPhaseTimingRepository');\n const phaseTimings = await repo.findByFeatureId(featureId);\n\n const timings: PhaseTimingData[] = phaseTimings.map((t) => ({\n agentRunId: t.agentRunId,\n phase: t.phase,\n startedAt: t.startedAt,\n completedAt: t.completedAt,\n durationMs: t.durationMs != null ? Number(t.durationMs) : undefined,\n waitingApprovalAt: t.waitingApprovalAt,\n approvalWaitMs: t.approvalWaitMs != null ? Number(t.approvalWaitMs) : undefined,\n }));\n\n return { timings };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load phase timings';\n return { error: message };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { IFeatureRepository } from '@shepai/core/application/ports/output/repositories/feature-repository.interface';\n\nexport interface PlanTaskData {\n title: string;\n description: string;\n state: string;\n}\n\nexport interface PlanData {\n state: string;\n overview: string;\n tasks: PlanTaskData[];\n}\n\ntype GetPlanResult = { plan: PlanData | undefined } | { error: string };\n\nexport async function getFeaturePlan(featureId: string): Promise<GetPlanResult> {\n if (!featureId.trim()) {\n return { error: 'Feature id is required' };\n }\n\n try {\n const repo = resolve<IFeatureRepository>('IFeatureRepository');\n const feature = await repo.findById(featureId);\n\n if (!feature) {\n return { error: 'Feature not found' };\n }\n\n if (!feature.plan) {\n return { plan: undefined };\n }\n\n const plan: PlanData = {\n state: feature.plan.state,\n overview: feature.plan.overview,\n tasks: feature.plan.tasks.map((t) => ({\n title: t.title ?? '',\n description: t.description ?? '',\n state: t.state,\n })),\n };\n\n return { plan };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to load feature plan';\n return { error: message };\n }\n}\n","export {pickFolder as '000b27e459f90368a65591bd386cfaa3814e639c2f'} from 'ACTIONS_MODULE0'\nexport {getDeploymentLogs as '40807c512fa418f17446b40324be1a7262ede890dc'} from 'ACTIONS_MODULE1'\nexport {deployFeature as '4044920962946cb6ade38d1de17779b7db83b78f26'} from 'ACTIONS_MODULE2'\nexport {deployRepository as '40c56ce35af09db3451caa50e9b58ec985c8276dc5'} from 'ACTIONS_MODULE3'\nexport {stopDeployment as '400a2714191db759f5678ed9983aa65e56b5702436'} from 'ACTIONS_MODULE4'\nexport {getDeploymentStatus as '4053a95ca56a4a559e1efc4e936a1d72aa3237e390'} from 'ACTIONS_MODULE5'\nexport {openIde as '406c909c35fd5e63f0d2d1cfde59bfd3adda5217a0'} from 'ACTIONS_MODULE6'\nexport {openShell as '404de25f4ae9ca6ce83f5b6117554994c73e406478'} from 'ACTIONS_MODULE7'\nexport {openFolder as '40912d02e73402af2f77a63bcfce6b292d453fa09b'} from 'ACTIONS_MODULE8'\nexport {deleteFeature as '40a6d3d0c6c43479858588fa72fafc06936842f723'} from 'ACTIONS_MODULE9'\nexport {addRepository as '40d981a4920dd6c16ffa8a9842f54f9ae04bb136ce'} from 'ACTIONS_MODULE10'\nexport {deleteRepository as '40491e4c4a49eeff7b33232ed3870a9b2916ad8409'} from 'ACTIONS_MODULE11'\nexport {getFeatureMetadata as '4096d7329abd12311fb179ccc13ea2566df3a91423'} from 'ACTIONS_MODULE12'\nexport {fetchGraphData as '00557dc820bd4837e92a8ebd067d2c89aa4a4a5536'} from 'ACTIONS_MODULE13'\nexport {approveFeature as '6073458b8049293853e18c15fd32ebc12a376ceb2f'} from 'ACTIONS_MODULE14'\nexport {rejectFeature as '605e8ac4c2f0bf378ffc14c85b4eb1888059112ad0'} from 'ACTIONS_MODULE15'\nexport {getFeatureArtifact as '40372baa6f79ef76b537f37294b4db595c2f424d4c'} from 'ACTIONS_MODULE16'\nexport {getResearchArtifact as '40221f162bdbca8392bdd0949fc93c85679806e045'} from 'ACTIONS_MODULE17'\nexport {getMergeReviewData as '40f4bbce5b322b4af6dbe32ee0ec273fa837028a4b'} from 'ACTIONS_MODULE18'\nexport {getFeaturePhaseTimings as '400fd8b1391ddd84784de427fd73fd371b40ae7682'} from 'ACTIONS_MODULE19'\nexport {getFeaturePlan as '40be714314344273cdc6aa10a445a7560711fd5dcf'} from 'ACTIONS_MODULE20'\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,24042,64970,e=>{"use strict";var t=e.i(3645);let n=(0,t.default)("play",[["path",{d:"M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z",key:"10ikf1"}]]);e.s(["Play",()=>n],24042);let r=(0,t.default)("square",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}]]);e.s(["Square",()=>r],64970)},81803,72714,e=>{"use strict";var t=e.i(20314),n=e.i(83428),r=e.i(51251),a=e.i(31777),o=e.i(35364),l=e.i(8361);function i({label:e,onClick:i,loading:s,error:u,icon:d,iconOnly:c=!1,variant:f="outline",size:p="sm"}){let m=(0,l.useSoundAction)("click");return(0,t.jsxs)(o.Button,{variant:f,size:p,"aria-label":e,disabled:s,onClick:()=>{m.play(),i()},className:(0,a.cn)("gap-1.5",u&&"text-destructive hover:text-destructive",!u&&c&&"ghost"===f&&"text-muted-foreground cursor-pointer rounded-full transition-colors hover:text-blue-500"),children:[s?(0,t.jsx)(n.Loader2,{className:"size-4 animate-spin"}):u?(0,t.jsx)(r.CircleAlert,{className:"size-4"}):(0,t.jsx)(d,{className:"size-4"}),c?null:e]})}e.s(["ActionButton",()=>i],72714),e.s([],81803)},2287,e=>{"use strict";var t=e.i(20314),n=e.i(79054),r=e.i(90033),a=e.i(90537),a=a,o=e.i(31777);let l=r.Dialog.Root;r.Dialog.Trigger;let i=r.Dialog.Portal,s=r.Dialog.Close,u=n.forwardRef(({className:e,onClick:n,...a},l)=>(0,t.jsx)(r.Dialog.Overlay,{ref:l,className:(0,o.cn)("fixed inset-0 z-50 bg-black/80",e),onClick:e=>{e.stopPropagation(),n?.(e)},...a}));u.displayName=r.Dialog.Overlay.displayName;let d=n.forwardRef(({className:e,children:n,...l},s)=>(0,t.jsxs)(i,{children:[(0,t.jsx)(u,{}),(0,t.jsxs)(r.Dialog.Content,{ref:s,className:(0,o.cn)("bg-background fixed top-[50%] left-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border p-6 shadow-lg sm:rounded-lg",e),...l,children:[n,(0,t.jsxs)(r.Dialog.Close,{className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:pointer-events-none",children:[(0,t.jsx)(a.default,{className:"h-4 w-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Close"})]})]})]}));d.displayName=r.Dialog.Content.displayName;let c=({className:e,...n})=>(0,t.jsx)("div",{className:(0,o.cn)("flex flex-col space-y-1.5 text-center sm:text-left",e),...n});c.displayName="DialogHeader";let f=({className:e,...n})=>(0,t.jsx)("div",{className:(0,o.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",e),...n});f.displayName="DialogFooter";let p=n.forwardRef(({className:e,...n},a)=>(0,t.jsx)(r.Dialog.Title,{ref:a,className:(0,o.cn)("text-lg leading-none font-semibold tracking-tight",e),...n}));p.displayName=r.Dialog.Title.displayName;let m=n.forwardRef(({className:e,...n},a)=>(0,t.jsx)(r.Dialog.Description,{ref:a,className:(0,o.cn)("text-muted-foreground text-sm",e),...n}));m.displayName=r.Dialog.Description.displayName,e.s(["Dialog",()=>l,"DialogClose",()=>s,"DialogContent",()=>d,"DialogDescription",()=>m,"DialogFooter",()=>f,"DialogHeader",()=>c,"DialogTitle",()=>p],2287)},99348,17466,e=>{"use strict";var t=e.i(20314),n=e.i(79054),r=e.i(83428),a=e.i(30702),o=e.i(38573),l=e.i(17406),i=e.i(81846),s=e.i(2287),u=e.i(21023);let d=(0,u.createServerReference)("40807c512fa418f17446b40324be1a7262ede890dc",u.callServer,void 0,u.findSourceMapURL,"getDeploymentLogs");function c({open:e,onOpenChange:r,targetId:a}){let{logs:o,isConnected:l}=function(e){let[t,r]=(0,n.useState)([]),[a,o]=(0,n.useState)(!1),l=(0,n.useRef)(null),i=(0,n.useCallback)(()=>{l.current&&(l.current.close(),l.current=null),o(!1)},[]);return(0,n.useEffect)(()=>{if(!e){r([]),o(!1);return}d(e).then(e=>{e&&r(e)}).catch(()=>{});let t=new EventSource(`/api/deployment-logs?targetId=${e}`);return l.current=t,t.onopen=()=>{o(!0)},t.addEventListener("log",e=>{let t=JSON.parse(e.data);r(e=>[...e,t])}),t.onerror=()=>{o(!1)},()=>{t.close(),l.current=null}},[e,i]),{logs:t,isConnected:a}}(e?a:null);return(0,t.jsx)(f,{open:e,onOpenChange:r,logs:o,isConnected:l})}function f({open:e,onOpenChange:r,logs:a,isConnected:l}){let i=(0,n.useRef)(null),u=(0,n.useRef)(!0),d=(0,n.useCallback)(()=>{let e=i.current;e&&(u.current=e.scrollTop+e.clientHeight>=e.scrollHeight-50)},[]);return(0,n.useEffect)(()=>{u.current&&i.current&&(i.current.scrollTop=i.current.scrollHeight)},[a]),(0,t.jsx)(s.Dialog,{open:e,onOpenChange:r,children:(0,t.jsxs)(s.DialogContent,{className:"flex h-[calc(100vh-48px)] max-h-[calc(100vh-48px)] w-full max-w-[calc(100vw-48px)] flex-col gap-0 bg-zinc-950 p-0 text-zinc-100 sm:rounded-lg","aria-describedby":void 0,children:[(0,t.jsxs)(s.DialogHeader,{className:"flex flex-row items-center justify-between border-b border-zinc-800 px-4 py-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(o.Terminal,{className:"h-4 w-4 text-zinc-400"}),(0,t.jsx)(s.DialogTitle,{className:"text-sm font-medium text-zinc-100",children:"Server Logs"})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2 pr-8",children:[(0,t.jsx)("span",{className:`inline-block h-2 w-2 rounded-full ${l?"bg-green-500":"bg-zinc-500"}`}),(0,t.jsx)("span",{className:"text-xs text-zinc-400",children:l?"Connected":"Disconnected"})]})]}),(0,t.jsxs)("div",{ref:i,onScroll:d,className:"flex-1 overflow-auto p-4 font-mono text-sm leading-relaxed",children:[0===a.length?(0,t.jsx)("p",{className:"text-zinc-500",children:"Waiting for log output..."}):a.map(e=>(0,t.jsx)(p,{entry:e},`${e.timestamp}-${e.stream}-${e.line}`)),!l&&a.length>0&&(0,t.jsx)("div",{className:"mt-2 border-t border-zinc-800 pt-2 text-zinc-500",children:"[Server stopped]"})]})]})})}function p({entry:e}){return(0,t.jsx)("div",{"data-stream":e.stream,className:"stderr"===e.stream?"text-red-400":"text-zinc-200",children:(0,t.jsx)("span",{className:"break-all whitespace-pre-wrap",children:e.line})})}function m({status:e,url:s,targetId:u}){let[d,f]=(0,n.useState)(!1),p=u&&(e===l.DeploymentState.Booting||e===l.DeploymentState.Ready);switch(e){case l.DeploymentState.Booting:return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(i.Badge,{className:"border-transparent bg-blue-50 text-blue-700 hover:bg-blue-50",children:[(0,t.jsx)(r.Loader2,{className:"mr-1 h-3.5 w-3.5 animate-spin"}),"Starting...",p?(0,t.jsx)("button",{type:"button","aria-label":"View server logs",className:"ml-1.5 inline-flex items-center rounded-sm p-0.5 hover:bg-blue-100",onClick:e=>{e.stopPropagation(),f(!0)},children:(0,t.jsx)(o.Terminal,{className:"h-3 w-3"})}):null]}),p?(0,t.jsx)(c,{open:d,onOpenChange:f,targetId:u}):null]});case l.DeploymentState.Ready:return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(i.Badge,{className:"border-transparent bg-green-50 text-green-700 hover:bg-green-50",children:[(0,t.jsx)("span",{className:"mr-1 inline-block h-2 w-2 rounded-full bg-green-500"}),s?(0,t.jsxs)("a",{href:s,target:"_blank",rel:"noopener noreferrer",className:"inline-flex items-center gap-1 hover:underline",onClick:e=>e.stopPropagation(),children:[s,(0,t.jsx)(a.ExternalLink,{className:"h-3 w-3"})]}):"Ready",p?(0,t.jsx)("button",{type:"button","aria-label":"View server logs",className:"ml-1.5 inline-flex items-center rounded-sm p-0.5 hover:bg-green-100",onClick:e=>{e.stopPropagation(),f(!0)},children:(0,t.jsx)(o.Terminal,{className:"h-3 w-3"})}):null]}),p?(0,t.jsx)(c,{open:d,onOpenChange:f,targetId:u}):null]});default:return null}}e.s(["DeploymentStatusBadge",()=>m],17466),e.s([],99348)},45811,e=>{"use strict";let t;var n=e.i(20314),r=e.i(48249),a=e.i(567),o=e.i(79054);let l=o.default.createContext({drawerRef:{current:null},overlayRef:{current:null},onPress:()=>{},onRelease:()=>{},onDrag:()=>{},onNestedDrag:()=>{},onNestedOpenChange:()=>{},onNestedRelease:()=>{},openProp:void 0,dismissible:!1,isOpen:!1,isDragging:!1,keyboardIsOpen:{current:!1},snapPointsOffset:null,snapPoints:null,handleOnly:!1,modal:!1,shouldFade:!1,activeSnapPoint:null,onOpenChange:()=>{},setActiveSnapPoint:()=>{},closeDrawer:()=>{},direction:"bottom",shouldAnimate:{current:!0},shouldScaleBackground:!1,setBackgroundColorOnScale:!0,noBodyStyles:!1,container:null,autoFocus:!1}),i=()=>{let e=o.default.useContext(l);if(!e)throw Error("useDrawerContext must be used within a Drawer.Root");return e};function s(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}function u(){return d(/^iPhone/)||d(/^iPad/)||d(/^Mac/)&&navigator.maxTouchPoints>1}function d(e){return"u">typeof window&&null!=window.navigator?e.test(window.navigator.platform):void 0}!function(e){if(!e||"u"<typeof document)return;let t=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css",t.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}("[data-vaul-drawer]{touch-action:none;will-change:transform;transition:transform .5s cubic-bezier(.32, .72, 0, 1);animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=open]{animation-name:slideFromBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=bottom][data-state=closed]{animation-name:slideToBottom}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=open]{animation-name:slideFromTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=top][data-state=closed]{animation-name:slideToTop}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=open]{animation-name:slideFromLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=left][data-state=closed]{animation-name:slideToLeft}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=open]{animation-name:slideFromRight}[data-vaul-drawer][data-vaul-snap-points=false][data-vaul-drawer-direction=right][data-state=closed]{animation-name:slideToRight}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--initial-transform,100%),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}[data-vaul-drawer][data-vaul-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--initial-transform,100%),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=top]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=bottom]{transform:translate3d(0,var(--snap-point-height,0),0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=left]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-drawer][data-vaul-delayed-snap-points=true][data-vaul-drawer-direction=right]{transform:translate3d(var(--snap-point-height,0),0,0)}[data-vaul-overlay][data-vaul-snap-points=false]{animation-duration:.5s;animation-timing-function:cubic-bezier(0.32,0.72,0,1)}[data-vaul-overlay][data-vaul-snap-points=false][data-state=open]{animation-name:fadeIn}[data-vaul-overlay][data-state=closed]{animation-name:fadeOut}[data-vaul-animate=false]{animation:none!important}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:0;transition:opacity .5s cubic-bezier(.32, .72, 0, 1)}[data-vaul-overlay][data-vaul-snap-points=true]{opacity:1}[data-vaul-drawer]:not([data-vaul-custom-container=true])::after{content:'';position:absolute;background:inherit;background-color:inherit}[data-vaul-drawer][data-vaul-drawer-direction=top]::after{top:initial;bottom:100%;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=bottom]::after{top:100%;bottom:initial;left:0;right:0;height:200%}[data-vaul-drawer][data-vaul-drawer-direction=left]::after{left:initial;right:100%;top:0;bottom:0;width:200%}[data-vaul-drawer][data-vaul-drawer-direction=right]::after{left:100%;right:initial;top:0;bottom:0;width:200%}[data-vaul-overlay][data-vaul-snap-points=true]:not([data-vaul-snap-points-overlay=true]):not(\n[data-state=closed]\n){opacity:0}[data-vaul-overlay][data-vaul-snap-points-overlay=true]{opacity:1}[data-vaul-handle]{display:block;position:relative;opacity:.7;background:#e2e2e4;margin-left:auto;margin-right:auto;height:5px;width:32px;border-radius:1rem;touch-action:pan-y}[data-vaul-handle]:active,[data-vaul-handle]:hover{opacity:1}[data-vaul-handle-hitarea]{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:max(100%,2.75rem);height:max(100%,2.75rem);touch-action:inherit}@media (hover:hover) and (pointer:fine){[data-vaul-drawer]{user-select:none}}@media (pointer:fine){[data-vaul-handle-hitarea]:{width:100%;height:100%}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{to{opacity:0}}@keyframes slideFromBottom{from{transform:translate3d(0,var(--initial-transform,100%),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToBottom{to{transform:translate3d(0,var(--initial-transform,100%),0)}}@keyframes slideFromTop{from{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}to{transform:translate3d(0,0,0)}}@keyframes slideToTop{to{transform:translate3d(0,calc(var(--initial-transform,100%) * -1),0)}}@keyframes slideFromLeft{from{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToLeft{to{transform:translate3d(calc(var(--initial-transform,100%) * -1),0,0)}}@keyframes slideFromRight{from{transform:translate3d(var(--initial-transform,100%),0,0)}to{transform:translate3d(0,0,0)}}@keyframes slideToRight{to{transform:translate3d(var(--initial-transform,100%),0,0)}}");let c="u">typeof window?o.useLayoutEffect:o.useEffect;function f(...e){return(...t)=>{for(let n of e)"function"==typeof n&&n(...t)}}let p="u">typeof document&&window.visualViewport;function m(e){let t=window.getComputedStyle(e);return/(auto|scroll)/.test(t.overflow+t.overflowX+t.overflowY)}function g(e){for(m(e)&&(e=e.parentElement);e&&!m(e);)e=e.parentElement;return e||document.scrollingElement||document.documentElement}let h=new Set(["checkbox","radio","range","color","file","image","button","submit","reset"]),v=0;function w(e,t,n,r){return e.addEventListener(t,n,r),()=>{e.removeEventListener(t,n,r)}}function y(e){let t=document.scrollingElement||document.documentElement;for(;e&&e!==t;){let t=g(e);if(t!==document.documentElement&&t!==document.body&&t!==e){let n=t.getBoundingClientRect().top,r=e.getBoundingClientRect().top;e.getBoundingClientRect().bottom>t.getBoundingClientRect().bottom+24&&(t.scrollTop+=r-n)}e=t.parentElement}}function x(e){return e instanceof HTMLInputElement&&!h.has(e.type)||e instanceof HTMLTextAreaElement||e instanceof HTMLElement&&e.isContentEditable}function b(...e){return o.useCallback(function(...e){return t=>e.forEach(e=>{"function"==typeof e?e(t):null!=e&&(e.current=t)})}(...e),e)}let D=new WeakMap;function j(e,t,n=!1){if(!e||!(e instanceof HTMLElement))return;let r={};Object.entries(t).forEach(([t,n])=>{t.startsWith("--")?e.style.setProperty(t,n):(r[t]=e.style[t],e.style[t]=n)}),n||D.set(e,r)}let R=e=>{switch(e){case"top":case"bottom":return!0;case"left":case"right":return!1;default:return e}};function C(e,t){if(!e)return null;let n=window.getComputedStyle(e),r=n.transform||n.webkitTransform||n.mozTransform,a=r.match(/^matrix3d\((.+)\)$/);return a?parseFloat(a[1].split(", ")[R(t)?13:12]):(a=r.match(/^matrix\((.+)\)$/))?parseFloat(a[1].split(", ")[R(t)?5:4]):null}function T(e,t){if(!e)return()=>{};let n=e.style.cssText;return Object.assign(e.style,t),()=>{e.style.cssText=n}}let N=[.32,.72,0,1],E="vaul-dragging";function S(e){let t=o.default.useRef(e);return o.default.useEffect(()=>{t.current=e}),o.default.useMemo(()=>(...e)=>null==t.current?void 0:t.current.call(t,...e),[])}function $({prop:e,defaultProp:t,onChange:n=()=>{}}){let[r,a]=function({defaultProp:e,onChange:t}){let n=o.default.useState(e),[r]=n,a=o.default.useRef(r),l=S(t);return o.default.useEffect(()=>{a.current!==r&&(l(r),a.current=r)},[r,a,l]),n}({defaultProp:t,onChange:n}),l=void 0!==e,i=l?e:r,s=S(n);return[i,o.default.useCallback(t=>{if(l){let n="function"==typeof t?t(e):t;n!==e&&s(n)}else a(t)},[l,e,a,s])]}let k=()=>()=>{},P=null;function M({open:e,onOpenChange:n,children:r,onDrag:i,onRelease:d,snapPoints:m,shouldScaleBackground:h=!1,setBackgroundColorOnScale:b=!0,closeThreshold:T=.25,scrollLockTimeout:S=100,dismissible:k=!0,handleOnly:M=!1,fadeFromIndex:O=m&&m.length-1,activeSnapPoint:z,setActiveSnapPoint:L,fixed:B,modal:F=!0,onClose:A,nested:I,noBodyStyles:H=!1,direction:W="bottom",defaultOpen:q=!1,disablePreventScroll:Y=!0,snapToSequentialPoint:U=!1,preventScrollRestoration:X=!1,repositionInputs:V=!0,onAnimationEnd:K,container:J,autoFocus:_=!1}){var G,Q;let[Z=!1,ee]=$({defaultProp:q,prop:e,onChange:e=>{null==n||n(e),e||I||ek(),setTimeout(()=>{null==K||K(e)},500),e&&!F&&"u">typeof window&&window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"}),e||(document.body.style.pointerEvents="auto")}}),[et,en]=o.default.useState(!1),[er,ea]=o.default.useState(!1),[eo,el]=o.default.useState(!1),ei=o.default.useRef(null),es=o.default.useRef(null),eu=o.default.useRef(null),ed=o.default.useRef(null),ec=o.default.useRef(null),ef=o.default.useRef(!1),ep=o.default.useRef(null),em=o.default.useRef(0),eg=o.default.useRef(!1),eh=o.default.useRef(!q),ev=o.default.useRef(0),ew=o.default.useRef(null),ey=o.default.useRef((null==(G=ew.current)?void 0:G.getBoundingClientRect().height)||0),ex=o.default.useRef((null==(Q=ew.current)?void 0:Q.getBoundingClientRect().width)||0),eb=o.default.useRef(0),eD=o.default.useCallback(e=>{m&&e===eN.length-1&&(es.current=new Date)},[]),{activeSnapPoint:ej,activeSnapPointIndex:eR,setActiveSnapPoint:eC,onRelease:eT,snapPointsOffset:eN,onDrag:eE,shouldFade:eS,getPercentageDragged:e$}=function({activeSnapPointProp:e,setActiveSnapPointProp:t,snapPoints:n,drawerRef:r,overlayRef:a,fadeFromIndex:l,onSnapPointChange:i,direction:s="bottom",container:u,snapToSequentialPoint:d}){let[c,f]=$({prop:e,defaultProp:null==n?void 0:n[0],onChange:t}),[p,m]=o.default.useState("u">typeof window?{innerWidth:window.innerWidth,innerHeight:window.innerHeight}:void 0);o.default.useEffect(()=>{function e(){m({innerWidth:window.innerWidth,innerHeight:window.innerHeight})}return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);let g=o.default.useMemo(()=>c===(null==n?void 0:n[n.length-1])||null,[n,c]),h=o.default.useMemo(()=>{var e;return null!=(e=null==n?void 0:n.findIndex(e=>e===c))?e:null},[n,c]),v=n&&n.length>0&&(l||0===l)&&!Number.isNaN(l)&&n[l]===c||!n,w=o.default.useMemo(()=>{var e;let t=u?{width:u.getBoundingClientRect().width,height:u.getBoundingClientRect().height}:"u">typeof window?{width:window.innerWidth,height:window.innerHeight}:{width:0,height:0};return null!=(e=null==n?void 0:n.map(e=>{let n="string"==typeof e,r=0;if(n&&(r=parseInt(e,10)),R(s)){let a=n?r:p?e*t.height:0;return p?"bottom"===s?t.height-a:-t.height+a:a}let a=n?r:p?e*t.width:0;return p?"right"===s?t.width-a:-t.width+a:a}))?e:[]},[n,p,u]),y=o.default.useMemo(()=>null!==h?null==w?void 0:w[h]:null,[w,h]),x=o.default.useCallback(e=>{var t;let o=null!=(t=null==w?void 0:w.findIndex(t=>t===e))?t:null;i(o),j(r.current,{transition:`transform 0.5s cubic-bezier(${N.join(",")})`,transform:R(s)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`}),w&&o!==w.length-1&&void 0!==l&&o!==l&&o<l?j(a.current,{transition:`opacity 0.5s cubic-bezier(${N.join(",")})`,opacity:"0"}):j(a.current,{transition:`opacity 0.5s cubic-bezier(${N.join(",")})`,opacity:"1"}),f(null==n?void 0:n[Math.max(o,0)])},[r.current,n,w,l,a,f]);return o.default.useEffect(()=>{if(c||e){var t;let r=null!=(t=null==n?void 0:n.findIndex(t=>t===e||t===c))?t:-1;w&&-1!==r&&"number"==typeof w[r]&&x(w[r])}},[c,e,n,w,x]),{isLastSnapPoint:g,activeSnapPoint:c,shouldFade:v,getPercentageDragged:function(e,t){if(!n||"number"!=typeof h||!w||void 0===l)return null;let r=h===l-1;if(h>=l&&t)return 0;if(r&&!t)return 1;if(!v&&!r)return null;let a=r?h+1:h-1,o=e/Math.abs(r?w[a]-w[a-1]:w[a+1]-w[a]);return r?1-o:o},setActiveSnapPoint:f,activeSnapPointIndex:h,onRelease:function({draggedDistance:e,closeDrawer:t,velocity:r,dismissible:o}){if(void 0===l)return;let i="bottom"===s||"right"===s?(null!=y?y:0)-e:(null!=y?y:0)+e,u=h===l-1,c=0===h,f=e>0;if(u&&j(a.current,{transition:`opacity 0.5s cubic-bezier(${N.join(",")})`}),!d&&r>2&&!f)return void(o?t():x(w[0]));if(!d&&r>2&&f&&w&&n)return void x(w[n.length-1]);let p=null==w?void 0:w.reduce((e,t)=>"number"!=typeof e||"number"!=typeof t?e:Math.abs(t-i)<Math.abs(e-i)?t:e),m=R(s)?window.innerHeight:window.innerWidth;if(r>.4&&Math.abs(e)<.4*m){let e=f?1:-1;return e>0&&g&&n?void x(w[n.length-1]):void(c&&e<0&&o&&t(),null===h||x(w[h+e]))}x(p)},onDrag:function({draggedDistance:e}){if(null===y)return;let t="bottom"===s||"right"===s?y-e:y+e;("bottom"===s||"right"===s)&&t<w[w.length-1]||("top"===s||"left"===s)&&t>w[w.length-1]||j(r.current,{transform:R(s)?`translate3d(0, ${t}px, 0)`:`translate3d(${t}px, 0, 0)`})},snapPointsOffset:w}}({snapPoints:m,activeSnapPointProp:z,setActiveSnapPointProp:L,drawerRef:ew,fadeFromIndex:O,overlayRef:ei,onSnapPointChange:eD,direction:W,container:J,snapToSequentialPoint:U});!function(e={}){let{isDisabled:n}=e;c(()=>{if(!n){var e,r,a;let n,o,l,i,s,d,c;return 1==++v&&u()&&(l=0,i=window.pageXOffset,s=window.pageYOffset,d=f((e=document.documentElement,r="paddingRight",a=`${window.innerWidth-document.documentElement.clientWidth}px`,n=e.style[r],e.style[r]=a,()=>{e.style[r]=n})),window.scrollTo(0,0),c=f(w(document,"touchstart",e=>{((o=g(e.target))!==document.documentElement||o!==document.body)&&(l=e.changedTouches[0].pageY)},{passive:!1,capture:!0}),w(document,"touchmove",e=>{if(!o||o===document.documentElement||o===document.body)return void e.preventDefault();let t=e.changedTouches[0].pageY,n=o.scrollTop,r=o.scrollHeight-o.clientHeight;0!==r&&((n<=0&&t>l||n>=r&&t<l)&&e.preventDefault(),l=t)},{passive:!1,capture:!0}),w(document,"touchend",e=>{let t=e.target;x(t)&&t!==document.activeElement&&(e.preventDefault(),t.style.transform="translateY(-2000px)",t.focus(),requestAnimationFrame(()=>{t.style.transform=""}))},{passive:!1,capture:!0}),w(document,"focus",e=>{let t=e.target;x(t)&&(t.style.transform="translateY(-2000px)",requestAnimationFrame(()=>{t.style.transform="",p&&(p.height<window.innerHeight?requestAnimationFrame(()=>{y(t)}):p.addEventListener("resize",()=>y(t),{once:!0}))}))},!0),w(window,"scroll",()=>{window.scrollTo(0,0)})),t=()=>{d(),c(),window.scrollTo(i,s)}),()=>{0==--v&&(null==t||t())}}},[n])}({isDisabled:!Z||er||!F||eo||!et||!V||!Y});let{restorePositionSetting:ek}=function({isOpen:e,modal:t,nested:n,hasBeenOpened:r,preventScrollRestoration:a,noBodyStyles:l}){let[i,u]=o.default.useState(()=>"u">typeof window?window.location.href:""),d=o.default.useRef(0),c=o.default.useCallback(()=>{if(s()&&null===P&&e&&!l){P={position:document.body.style.position,top:document.body.style.top,left:document.body.style.left,height:document.body.style.height,right:"unset"};let{scrollX:e,innerHeight:t}=window;document.body.style.setProperty("position","fixed","important"),Object.assign(document.body.style,{top:`${-d.current}px`,left:`${-e}px`,right:"0px",height:"auto"}),window.setTimeout(()=>window.requestAnimationFrame(()=>{let e=t-window.innerHeight;e&&d.current>=t&&(document.body.style.top=`${-(d.current+e)}px`)}),300)}},[e]),f=o.default.useCallback(()=>{if(s()&&null!==P&&!l){let e=-parseInt(document.body.style.top,10),t=-parseInt(document.body.style.left,10);Object.assign(document.body.style,P),window.requestAnimationFrame(()=>{a&&i!==window.location.href?u(window.location.href):window.scrollTo(t,e)}),P=null}},[i]);return o.default.useEffect(()=>{function e(){d.current=window.scrollY}return e(),window.addEventListener("scroll",e),()=>{window.removeEventListener("scroll",e)}},[]),o.default.useEffect(()=>{if(t)return()=>{"u"<typeof document||document.querySelector("[data-vaul-drawer]")||f()}},[t,f]),o.default.useEffect(()=>{!n&&r&&(e?(window.matchMedia("(display-mode: standalone)").matches||c(),t||window.setTimeout(()=>{f()},500)):f())},[e,r,i,t,n,c,f]),{restorePositionSetting:f}}({isOpen:Z,modal:F,nested:null!=I&&I,hasBeenOpened:et,preventScrollRestoration:X,noBodyStyles:H});function eP(){return(window.innerWidth-26)/window.innerWidth}function eM(e,t){var n;let r=e,a=null==(n=window.getSelection())?void 0:n.toString(),o=ew.current?C(ew.current,W):null,l=new Date;if("SELECT"===r.tagName||r.hasAttribute("data-vaul-no-drag")||r.closest("[data-vaul-no-drag]"))return!1;if("right"===W||"left"===W)return!0;if(es.current&&l.getTime()-es.current.getTime()<500)return!1;if(null!==o&&("bottom"===W?o>0:o<0))return!0;if(a&&a.length>0)return!1;if(ec.current&&l.getTime()-ec.current.getTime()<S&&0===o||t)return ec.current=l,!1;for(;r;){if(r.scrollHeight>r.clientHeight){if(0!==r.scrollTop)return ec.current=new Date,!1;if("dialog"===r.getAttribute("role"))break}r=r.parentNode}return!0}function eO(e){er&&ew.current&&(ew.current.classList.remove(E),ef.current=!1,ea(!1),ed.current=new Date),null==A||A(),e||ee(!1),setTimeout(()=>{m&&eC(m[0])},500)}function ez(){if(!ew.current)return;let e=document.querySelector("[data-vaul-drawer-wrapper]"),t=C(ew.current,W);j(ew.current,{transform:"translate3d(0, 0, 0)",transition:`transform 0.5s cubic-bezier(${N.join(",")})`}),j(ei.current,{transition:`opacity 0.5s cubic-bezier(${N.join(",")})`,opacity:"1"}),h&&t&&t>0&&Z&&j(e,{borderRadius:"8px",overflow:"hidden",...R(W)?{transform:`scale(${eP()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`,transformOrigin:"top"}:{transform:`scale(${eP()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`,transformOrigin:"left"},transitionProperty:"transform, border-radius",transitionDuration:"0.5s",transitionTimingFunction:`cubic-bezier(${N.join(",")})`},!0)}return o.default.useEffect(()=>{window.requestAnimationFrame(()=>{eh.current=!0})},[]),o.default.useEffect(()=>{var e;function t(){if(ew.current&&V&&(x(document.activeElement)||eg.current)){var e;let t=(null==(e=window.visualViewport)?void 0:e.height)||0,n=window.innerHeight,r=n-t,a=ew.current.getBoundingClientRect().height||0;eb.current||(eb.current=a);let o=ew.current.getBoundingClientRect().top;if(Math.abs(ev.current-r)>60&&(eg.current=!eg.current),m&&m.length>0&&eN&&eR&&(r+=eN[eR]||0),ev.current=r,a>t||eg.current){let e=ew.current.getBoundingClientRect().height,l=e;e>t&&(l=t-(a>.8*n?o:26)),B?ew.current.style.height=`${e-Math.max(r,0)}px`:ew.current.style.height=`${Math.max(l,t-o)}px`}else{let e;e=navigator.userAgent,"u">typeof window&&(/Firefox/.test(e)&&/Mobile/.test(e)||/FxiOS/.test(e))||(ew.current.style.height=`${eb.current}px`)}m&&m.length>0&&!eg.current?ew.current.style.bottom="0px":ew.current.style.bottom=`${Math.max(r,0)}px`}}return null==(e=window.visualViewport)||e.addEventListener("resize",t),()=>{var e;return null==(e=window.visualViewport)?void 0:e.removeEventListener("resize",t)}},[eR,m,eN]),o.default.useEffect(()=>(Z&&(j(document.documentElement,{scrollBehavior:"auto"}),es.current=new Date),()=>{!function(e,t){if(!e||!(e instanceof HTMLElement))return;let n=D.get(e);n&&(e.style[t]=n[t])}(document.documentElement,"scrollBehavior")}),[Z]),o.default.useEffect(()=>{F||window.requestAnimationFrame(()=>{document.body.style.pointerEvents="auto"})},[F]),o.default.createElement(a.Root,{defaultOpen:q,onOpenChange:e=>{(k||e)&&(e?en(!0):eO(!0),ee(e))},open:Z},o.default.createElement(l.Provider,{value:{activeSnapPoint:ej,snapPoints:m,setActiveSnapPoint:eC,drawerRef:ew,overlayRef:ei,onOpenChange:n,onPress:function(e){var t,n;!k&&!m||(!ew.current||ew.current.contains(e.target))&&(ey.current=(null==(t=ew.current)?void 0:t.getBoundingClientRect().height)||0,ex.current=(null==(n=ew.current)?void 0:n.getBoundingClientRect().width)||0,ea(!0),eu.current=new Date,u()&&window.addEventListener("touchend",()=>ef.current=!1,{once:!0}),e.target.setPointerCapture(e.pointerId),em.current=R(W)?e.pageY:e.pageX)},onRelease:function(e){var t,n;if(!er||!ew.current)return;ew.current.classList.remove(E),ef.current=!1,ea(!1),ed.current=new Date;let r=C(ew.current,W);if(!e||!eM(e.target,!1)||!r||Number.isNaN(r)||null===eu.current)return;let a=ed.current.getTime()-eu.current.getTime(),o=em.current-(R(W)?e.pageY:e.pageX),l=Math.abs(o)/a;if(l>.05&&(el(!0),setTimeout(()=>{el(!1)},200)),m){eT({draggedDistance:o*("bottom"===W||"right"===W?1:-1),closeDrawer:eO,velocity:l,dismissible:k}),null==d||d(e,!0);return}if("bottom"===W||"right"===W?o>0:o<0){ez(),null==d||d(e,!0);return}if(l>.4){eO(),null==d||d(e,!1);return}let i=Math.min(null!=(t=ew.current.getBoundingClientRect().height)?t:0,window.innerHeight),s=Math.min(null!=(n=ew.current.getBoundingClientRect().width)?n:0,window.innerWidth);if(Math.abs(r)>=("left"===W||"right"===W?s:i)*T){eO(),null==d||d(e,!1);return}null==d||d(e,!0),ez()},onDrag:function(e){if(ew.current&&er){let t="bottom"===W||"right"===W?1:-1,n=(em.current-(R(W)?e.pageY:e.pageX))*t,r=n>0,a=m&&!k&&!r;if(a&&0===eR)return;let o=Math.abs(n),l=document.querySelector("[data-vaul-drawer-wrapper]"),s=o/("bottom"===W||"top"===W?ey.current:ex.current),u=e$(o,r);if(null!==u&&(s=u),a&&s>=1||!ef.current&&!eM(e.target,r))return;if(ew.current.classList.add(E),ef.current=!0,j(ew.current,{transition:"none"}),j(ei.current,{transition:"none"}),m&&eE({draggedDistance:n}),r&&!m){let e=Math.min(-(8*(Math.log(n+1)-2)*1),0)*t;j(ew.current,{transform:R(W)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`});return}let d=1-s;if((eS||O&&eR===O-1)&&(null==i||i(e,s),j(ei.current,{opacity:`${d}`,transition:"none"},!0)),l&&ei.current&&h){let e=Math.min(eP()+s*(1-eP()),1),t=8-8*s,n=Math.max(0,14-14*s);j(l,{borderRadius:`${t}px`,transform:R(W)?`scale(${e}) translate3d(0, ${n}px, 0)`:`scale(${e}) translate3d(${n}px, 0, 0)`,transition:"none"},!0)}if(!m){let e=o*t;j(ew.current,{transform:R(W)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`})}}},dismissible:k,shouldAnimate:eh,handleOnly:M,isOpen:Z,isDragging:er,shouldFade:eS,closeDrawer:eO,onNestedDrag:function(e,t){if(t<0)return;let n=(window.innerWidth-16)/window.innerWidth,r=n+t*(1-n),a=-16+16*t;j(ew.current,{transform:R(W)?`scale(${r}) translate3d(0, ${a}px, 0)`:`scale(${r}) translate3d(${a}px, 0, 0)`,transition:"none"})},onNestedOpenChange:function(e){let t=e?(window.innerWidth-16)/window.innerWidth:1,n=e?-16:0;ep.current&&window.clearTimeout(ep.current),j(ew.current,{transition:`transform 0.5s cubic-bezier(${N.join(",")})`,transform:R(W)?`scale(${t}) translate3d(0, ${n}px, 0)`:`scale(${t}) translate3d(${n}px, 0, 0)`}),!e&&ew.current&&(ep.current=setTimeout(()=>{let e=C(ew.current,W);j(ew.current,{transition:"none",transform:R(W)?`translate3d(0, ${e}px, 0)`:`translate3d(${e}px, 0, 0)`})},500))},onNestedRelease:function(e,t){let n=R(W)?window.innerHeight:window.innerWidth,r=t?(n-16)/n:1,a=t?-16:0;t&&j(ew.current,{transition:`transform 0.5s cubic-bezier(${N.join(",")})`,transform:R(W)?`scale(${r}) translate3d(0, ${a}px, 0)`:`scale(${r}) translate3d(${a}px, 0, 0)`})},keyboardIsOpen:eg,modal:F,snapPointsOffset:eN,activeSnapPointIndex:eR,direction:W,shouldScaleBackground:h,setBackgroundColorOnScale:b,noBodyStyles:H,container:J,autoFocus:_}},r))}let O=o.default.forwardRef(function({...e},t){let{overlayRef:n,snapPoints:r,onRelease:l,shouldFade:s,isOpen:u,modal:d,shouldAnimate:c}=i(),f=b(t,n),p=r&&r.length>0;if(!d)return null;let m=o.default.useCallback(e=>l(e),[l]);return o.default.createElement(a.Overlay,{onMouseUp:m,ref:f,"data-vaul-overlay":"","data-vaul-snap-points":u&&p?"true":"false","data-vaul-snap-points-overlay":u&&s?"true":"false","data-vaul-animate":(null==c?void 0:c.current)?"true":"false",...e})});O.displayName="Drawer.Overlay";let z=o.default.forwardRef(function({onPointerDownOutside:e,style:t,onOpenAutoFocus:n,...r},l){let{drawerRef:s,onPress:u,onRelease:d,onDrag:c,keyboardIsOpen:f,snapPointsOffset:p,activeSnapPointIndex:m,modal:g,isOpen:h,direction:v,snapPoints:w,container:y,handleOnly:x,shouldAnimate:D,autoFocus:j}=i(),[C,E]=o.default.useState(!1),S=b(l,s),$=o.default.useRef(null),P=o.default.useRef(null),M=o.default.useRef(!1),O=w&&w.length>0;function z(e){$.current=null,M.current=!1,d(e)}return!function(){let{direction:e,isOpen:t,shouldScaleBackground:n,setBackgroundColorOnScale:r,noBodyStyles:a}=i(),l=o.default.useRef(null),s=(0,o.useMemo)(()=>document.body.style.backgroundColor,[]);function u(){return(window.innerWidth-26)/window.innerWidth}o.default.useEffect(()=>{if(t&&n){l.current&&clearTimeout(l.current);let t=document.querySelector("[data-vaul-drawer-wrapper]")||document.querySelector("[vaul-drawer-wrapper]");if(!t)return;!function(...e){}(r&&!a?T(document.body,{background:"black"}):k,T(t,{transformOrigin:R(e)?"top":"left",transitionProperty:"transform, border-radius",transitionDuration:"0.5s",transitionTimingFunction:`cubic-bezier(${N.join(",")})`}));let n=T(t,{borderRadius:"8px",overflow:"hidden",...R(e)?{transform:`scale(${u()}) translate3d(0, calc(env(safe-area-inset-top) + 14px), 0)`}:{transform:`scale(${u()}) translate3d(calc(env(safe-area-inset-top) + 14px), 0, 0)`}});return()=>{n(),l.current=window.setTimeout(()=>{s?document.body.style.background=s:document.body.style.removeProperty("background")},500)}}},[t,n,s])}(),o.default.useEffect(()=>{O&&window.requestAnimationFrame(()=>{E(!0)})},[]),o.default.createElement(a.Content,{"data-vaul-drawer-direction":v,"data-vaul-drawer":"","data-vaul-delayed-snap-points":C?"true":"false","data-vaul-snap-points":h&&O?"true":"false","data-vaul-custom-container":y?"true":"false","data-vaul-animate":(null==D?void 0:D.current)?"true":"false",...r,ref:S,style:p&&p.length>0?{"--snap-point-height":`${p[null!=m?m:0]}px`,...t}:t,onPointerDown:e=>{x||(null==r.onPointerDown||r.onPointerDown.call(r,e),$.current={x:e.pageX,y:e.pageY},u(e))},onOpenAutoFocus:e=>{null==n||n(e),j||e.preventDefault()},onPointerDownOutside:t=>{(null==e||e(t),!g||t.defaultPrevented)?t.preventDefault():f.current&&(f.current=!1)},onFocusOutside:e=>{if(!g)return void e.preventDefault()},onPointerMove:e=>{if(P.current=e,x||(null==r.onPointerMove||r.onPointerMove.call(r,e),!$.current))return;let t=e.pageY-$.current.y,n=e.pageX-$.current.x,a="touch"===e.pointerType?10:2;((e,t,n=0)=>{if(M.current)return!0;let r=Math.abs(e.y),a=Math.abs(e.x),o=a>r,l=["bottom","right"].includes(t)?1:-1;if("left"===t||"right"===t){if(!(e.x*l<0)&&a>=0&&a<=n)return o}else if(!(e.y*l<0)&&r>=0&&r<=n)return!o;return M.current=!0,!0})({x:n,y:t},v,a)?c(e):(Math.abs(n)>a||Math.abs(t)>a)&&($.current=null)},onPointerUp:e=>{null==r.onPointerUp||r.onPointerUp.call(r,e),$.current=null,M.current=!1,d(e)},onPointerOut:e=>{null==r.onPointerOut||r.onPointerOut.call(r,e),z(P.current)},onContextMenu:e=>{null==r.onContextMenu||r.onContextMenu.call(r,e),P.current&&z(P.current)}})});z.displayName="Drawer.Content";let L=o.default.forwardRef(function({preventCycle:e=!1,children:t,...n},r){let{closeDrawer:a,isDragging:l,snapPoints:s,activeSnapPoint:u,setActiveSnapPoint:d,dismissible:c,handleOnly:f,isOpen:p,onPress:m,onDrag:g}=i(),h=o.default.useRef(null),v=o.default.useRef(!1);function w(){h.current&&window.clearTimeout(h.current),v.current=!1}return o.default.createElement("div",{onClick:function(){v.current?w():window.setTimeout(()=>{!function(){if(l||e||v.current)return w();if(w(),!s||0===s.length){c||a();return}if(u===s[s.length-1]&&c)return a();let t=s.findIndex(e=>e===u);-1===t||d(s[t+1])}()},120)},onPointerCancel:w,onPointerDown:e=>{f&&m(e),h.current=window.setTimeout(()=>{v.current=!0},250)},onPointerMove:e=>{f&&g(e)},ref:r,"data-vaul-drawer-visible":p?"true":"false","data-vaul-handle":"","aria-hidden":"true",...n},o.default.createElement("span",{"data-vaul-handle-hitarea":"","aria-hidden":"true"},t))});L.displayName="Drawer.Handle";let B={Root:M,NestedRoot:function({onDrag:e,onOpenChange:t,open:n,...r}){let{onNestedDrag:a,onNestedOpenChange:l,onNestedRelease:s}=i();if(!a)throw Error("Drawer.NestedRoot must be placed in another drawer");return o.default.createElement(M,{nested:!0,open:n,onClose:()=>{l(!1)},onDrag:(t,n)=>{a(t,n),null==e||e(t,n)},onOpenChange:e=>{e&&l(e),null==t||t(e)},onRelease:s,...r})},Content:z,Overlay:O,Trigger:a.Trigger,Portal:function(e){let t=i(),{container:n=t.container,...r}=e;return o.default.createElement(a.Portal,{container:n,...r})},Handle:L,Close:a.Close,Title:a.Title,Description:a.Description};var F=e.i(31777);function A({...e}){return(0,n.jsx)(B.Root,{"data-slot":"drawer",...e})}function I({...e}){return(0,n.jsx)(B.Portal,{"data-slot":"drawer-portal",...e})}function H({className:e,...t}){return(0,n.jsx)(B.Overlay,{"data-slot":"drawer-overlay",className:(0,F.cn)("fixed inset-0 z-50 bg-black/50",e),...t})}function W({className:e,children:t,direction:a="bottom",showCloseButton:o=!0,...l}){return(0,n.jsx)(I,{children:(0,n.jsxs)(B.Content,{"data-slot":"drawer-content",className:(0,F.cn)("bg-background fixed z-50 flex flex-col shadow-lg","bottom"===a&&"inset-x-0 bottom-0 mb-24 rounded-t-lg border-t","top"===a&&"inset-x-0 top-0 mt-24 rounded-b-lg border-b","right"===a&&"inset-y-0 right-0 h-full w-3/4 border-l","left"===a&&"inset-y-0 left-0 h-full w-3/4 border-r",e),style:{"--initial-transform":"right"===a?"calc(100% + 8px)":"left"===a||"top"===a?"calc(-100% - 8px)":"calc(100% + 8px)",userSelect:"text",...l.style??{}},...l,children:[t,o?(0,n.jsxs)(B.Close,{className:"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none",children:[(0,n.jsx)(r.XIcon,{className:"size-4"}),(0,n.jsx)("span",{className:"sr-only",children:"Close"})]}):null]})})}function q({className:e,...t}){return(0,n.jsx)("div",{"data-slot":"drawer-header",className:(0,F.cn)("flex flex-col gap-1.5 p-4",e),...t})}function Y({className:e,...t}){return(0,n.jsx)("div",{"data-slot":"drawer-footer",className:(0,F.cn)("mt-auto flex flex-col gap-2 p-4",e),...t})}function U({className:e,...t}){return(0,n.jsx)(B.Title,{"data-slot":"drawer-title",className:(0,F.cn)("text-foreground font-semibold",e),...t})}function X({className:e,...t}){return(0,n.jsx)(B.Description,{"data-slot":"drawer-description",className:(0,F.cn)("text-muted-foreground text-sm",e),...t})}e.s(["Drawer",()=>A,"DrawerContent",()=>W,"DrawerDescription",()=>X,"DrawerFooter",()=>Y,"DrawerHeader",()=>q,"DrawerOverlay",()=>H,"DrawerTitle",()=>U],45811)},8537,e=>{"use strict";var t=e.i(79054),n=e.i(18354),r=e.i(21023);let a=(0,r.createServerReference)("4044920962946cb6ade38d1de17779b7db83b78f26",r.callServer,void 0,r.findSourceMapURL,"deployFeature"),o=(0,r.createServerReference)("40c56ce35af09db3451caa50e9b58ec985c8276dc5",r.callServer,void 0,r.findSourceMapURL,"deployRepository"),l=(0,r.createServerReference)("400a2714191db759f5678ed9983aa65e56b5702436",r.callServer,void 0,r.findSourceMapURL,"stopDeployment"),i=(0,r.createServerReference)("4053a95ca56a4a559e1efc4e936a1d72aa3237e390",r.callServer,void 0,r.findSourceMapURL,"getDeploymentStatus"),s=(0,n.createLogger)("[useDeployAction]");function u(e){let[n,r]=(0,t.useState)(!1),[u,d]=(0,t.useState)(!1),[c,f]=(0,t.useState)(null),[p,m]=(0,t.useState)(null),[g,h]=(0,t.useState)(null),v=(0,t.useRef)(null),w=(0,t.useRef)(null),y=(0,t.useRef)(!0),x=(0,t.useRef)(p);(0,t.useEffect)(()=>{x.current=p},[p]),(0,t.useEffect)(()=>(y.current=!0,()=>{y.current=!1}),[]),(0,t.useEffect)(()=>()=>{v.current&&clearTimeout(v.current),w.current&&clearInterval(w.current)},[]);let b=(0,t.useCallback)(()=>{w.current&&(s.debug("stopping polling"),clearInterval(w.current),w.current=null)},[]),D=(0,t.useCallback)(e=>{b(),s.debug(`starting polling for "${e}" every 3000ms`),w.current=setInterval(async()=>{if(!y.current)return void b();let t=await i(e);y.current&&(t&&"Stopped"!==t.state?(t.state!==x.current&&s.info(`poll state changed: ${x.current} → ${t.state}, url=${t.url}`),m(t.state),h(t.url)):(s.info(`poll result: ${t?`state=${t.state}`:"null (deployment gone)"} — stopping poll`),m(null),h(null),b()))},3e3)},[b]),j=(0,t.useCallback)(async()=>{if(!e)return void s.warn("deploy() called but input is null — no-op");if(n)return void s.warn("deploy() called but already loading — no-op");s.info(`deploy() — targetType="${e.targetType}", targetId="${e.targetId}", repositoryPath="${e.repositoryPath}"`),v.current&&clearTimeout(v.current),r(!0),f(null);try{let t="feature"===e.targetType?await a(e.targetId):await o(e.repositoryPath);if(s.info("server action result:",t),!y.current)return void s.warn("component unmounted after deploy — discarding result");if(t.success)s.info(`deploy succeeded — initial state=${t.state}, starting polling`),m(t.state??null),h(null),D(e.targetId);else{let e=t.error??"An unexpected error occurred";s.error(`deploy failed: ${e}`),f(e),v.current=setTimeout(()=>f(null),5e3)}}catch(t){if(!y.current)return;let e=t instanceof Error?t.message:"An unexpected error occurred";s.error(`deploy threw exception: ${e}`,t),f(e),v.current=setTimeout(()=>f(null),5e3)}finally{y.current&&r(!1)}},[e,n,D]),R=(0,t.useCallback)(async()=>{if(e&&!u){s.info(`stop() — targetId="${e.targetId}"`),d(!0);try{let t=await l(e.targetId);if(s.info("stop result:",t),!y.current)return;t.success&&(b(),m(null),h(null))}catch(e){s.warn("stop error (non-critical):",e)}finally{y.current&&d(!1)}}},[e,u,b]);return{deploy:j,stop:R,deployLoading:n,stopLoading:u,deployError:c,status:p,url:g}}e.s(["useDeployAction",()=>u],8537)},11495,e=>{"use strict";var t=e.i(20314),n=e.i(79054),r=e.i(48249),a=e.i(24042),o=e.i(64970),l=e.i(94237),i=e.i(31777);e.i(81803);var s=e.i(72714);e.i(99348);var u=e.i(17466),d=e.i(45811),c=e.i(25235),f=e.i(2828),p=e.i(8537),m=e.i(75921);let g=(0,l.cva)("",{variants:{size:{sm:"w-96",md:"w-xl"}},defaultVariants:{size:"sm"}});function h({open:e,onClose:a,modal:o=!1,dismissOnOutsideClick:l=!1,title:s="Drawer",size:u,header:f,children:p,footer:h,className:w,"data-testid":y,deployTarget:x}){let b=(0,m.useFeatureFlags)(),D=(0,n.useRef)(null);return(0,n.useEffect)(()=>{if(!e||o)return;let t=e=>{let t=e.target;!document.body.contains(t)||D.current?.contains(t)||t.closest(l?'[role="alertdialog"], [role="dialog"], [role="menu"], [role="listbox"], [data-radix-popper-content-wrapper]':'[data-no-drawer-close], [role="alertdialog"], [role="dialog"], [role="menu"], [role="listbox"], [data-radix-popper-content-wrapper]')||a()};return document.addEventListener("click",t),()=>document.removeEventListener("click",t)},[e,o,a,l]),(0,t.jsxs)(d.Drawer,{direction:"right",modal:o,handleOnly:!0,open:e,onOpenChange:e=>{e||a()},children:[o?(0,t.jsx)(d.DrawerOverlay,{}):null,(0,t.jsxs)(d.DrawerContent,{ref:D,direction:"right",showCloseButton:!1,className:(0,i.cn)(g({size:u}),w),"data-testid":y,onInteractOutside:o?void 0:e=>e.preventDefault(),children:[(0,t.jsx)(d.DrawerTitle,{asChild:!0,children:(0,t.jsx)("span",{className:"sr-only",children:s})}),(0,t.jsx)(d.DrawerDescription,{asChild:!0,children:(0,t.jsx)("span",{className:"sr-only",children:s})}),(0,t.jsxs)("button",{type:"button","aria-label":"Close",onClick:a,className:"ring-offset-background focus:ring-ring absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden","data-testid":y?`${y}-close-button`:void 0,children:[(0,t.jsx)(r.XIcon,{className:"size-4"}),(0,t.jsx)("span",{className:"sr-only",children:"Close"})]}),f?(0,t.jsx)(d.DrawerHeader,{className:"shrink-0",children:f}):null,f?(0,t.jsx)(c.Separator,{}):null,b.envDeploy&&x?(0,t.jsx)(v,{deployTarget:x}):null,(0,t.jsx)("div",{className:"flex min-h-0 flex-1 flex-col overflow-hidden",children:p}),h?(0,t.jsx)(d.DrawerFooter,{className:"shrink-0",children:h}):null]})]})}function v({deployTarget:e}){let n=(0,p.useDeployAction)(e),r="Booting"===n.status||"Ready"===n.status;return(0,t.jsxs)("div",{"data-testid":"base-drawer-deploy-bar",className:"flex items-center gap-2 px-4 pb-3",children:[(0,t.jsx)(f.TooltipProvider,{children:(0,t.jsxs)(f.Tooltip,{children:[(0,t.jsx)(f.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("span",{children:(0,t.jsx)(s.ActionButton,{label:r?"Stop Dev Server":"Start Dev Server",onClick:r?n.stop:n.deploy,loading:n.deployLoading||n.stopLoading,error:!!n.deployError,icon:r?o.Square:a.Play,iconOnly:!0,variant:"outline",size:"icon-sm"})})}),(0,t.jsx)(f.TooltipContent,{children:r?"Stop Dev Server":"Start Dev Server"})]})}),r?(0,t.jsx)(u.DeploymentStatusBadge,{status:n.status,url:n.url,targetId:e.targetId}):null]})}e.s(["BaseDrawer",()=>h])}]);