@shipit-ai/cli 1.169.0 → 1.170.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. package/apis/json-schema/FeatureFlags.yaml +5 -0
  2. package/apis/json-schema/LiteLLMProxyConfig.yaml +14 -0
  3. package/apis/json-schema/Settings.yaml +3 -0
  4. package/dist/packages/core/src/application/ports/output/services/index.d.ts +1 -0
  5. package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
  6. package/dist/packages/core/src/application/ports/output/services/plugin-marketplace.interface.d.ts +46 -0
  7. package/dist/packages/core/src/application/ports/output/services/plugin-marketplace.interface.d.ts.map +1 -0
  8. package/dist/packages/core/src/application/ports/output/services/plugin-marketplace.interface.js +12 -0
  9. package/dist/packages/core/src/application/use-cases/plugins/add-marketplace.use-case.d.ts +16 -0
  10. package/dist/packages/core/src/application/use-cases/plugins/add-marketplace.use-case.d.ts.map +1 -0
  11. package/dist/packages/core/src/application/use-cases/plugins/add-marketplace.use-case.js +34 -0
  12. package/dist/packages/core/src/application/use-cases/plugins/fetch-plugin-catalog.use-case.d.ts +24 -0
  13. package/dist/packages/core/src/application/use-cases/plugins/fetch-plugin-catalog.use-case.d.ts.map +1 -0
  14. package/dist/packages/core/src/application/use-cases/plugins/fetch-plugin-catalog.use-case.js +52 -0
  15. package/dist/packages/core/src/application/use-cases/plugins/install-plugin.use-case.d.ts +17 -0
  16. package/dist/packages/core/src/application/use-cases/plugins/install-plugin.use-case.d.ts.map +1 -0
  17. package/dist/packages/core/src/application/use-cases/plugins/install-plugin.use-case.js +33 -0
  18. package/dist/packages/core/src/application/use-cases/plugins/toggle-plugin.use-case.d.ts +17 -0
  19. package/dist/packages/core/src/application/use-cases/plugins/toggle-plugin.use-case.d.ts.map +1 -0
  20. package/dist/packages/core/src/application/use-cases/plugins/toggle-plugin.use-case.js +33 -0
  21. package/dist/packages/core/src/application/use-cases/plugins/uninstall-plugin.use-case.d.ts +16 -0
  22. package/dist/packages/core/src/application/use-cases/plugins/uninstall-plugin.use-case.d.ts.map +1 -0
  23. package/dist/packages/core/src/application/use-cases/plugins/uninstall-plugin.use-case.js +33 -0
  24. package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
  25. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +1 -0
  26. package/dist/packages/core/src/domain/generated/output.d.ts +25 -0
  27. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  28. package/dist/packages/core/src/infrastructure/di/modules/services.module.d.ts.map +1 -1
  29. package/dist/packages/core/src/infrastructure/di/modules/services.module.js +13 -0
  30. package/dist/packages/core/src/infrastructure/di/modules/use-cases.module.d.ts.map +1 -1
  31. package/dist/packages/core/src/infrastructure/di/modules/use-cases.module.js +12 -0
  32. package/dist/packages/core/src/infrastructure/di/modules/web-tokens.module.d.ts.map +1 -1
  33. package/dist/packages/core/src/infrastructure/di/modules/web-tokens.module.js +22 -0
  34. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +4 -0
  35. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  36. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +18 -0
  37. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/054-add-litellm-proxy.d.ts +14 -0
  38. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/054-add-litellm-proxy.d.ts.map +1 -0
  39. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/054-add-litellm-proxy.js +28 -0
  40. package/dist/packages/core/src/infrastructure/services/plugin-marketplace/index.d.ts +4 -0
  41. package/dist/packages/core/src/infrastructure/services/plugin-marketplace/index.d.ts.map +1 -0
  42. package/dist/packages/core/src/infrastructure/services/plugin-marketplace/index.js +3 -0
  43. package/dist/packages/core/src/infrastructure/services/plugin-marketplace/plugin-marketplace.schema.d.ts +78 -0
  44. package/dist/packages/core/src/infrastructure/services/plugin-marketplace/plugin-marketplace.schema.d.ts.map +1 -0
  45. package/dist/packages/core/src/infrastructure/services/plugin-marketplace/plugin-marketplace.schema.js +46 -0
  46. package/dist/packages/core/src/infrastructure/services/plugin-marketplace/plugin-marketplace.service.d.ts +29 -0
  47. package/dist/packages/core/src/infrastructure/services/plugin-marketplace/plugin-marketplace.service.d.ts.map +1 -0
  48. package/dist/packages/core/src/infrastructure/services/plugin-marketplace/plugin-marketplace.service.js +147 -0
  49. package/dist/packages/core/src/infrastructure/services/plugin-marketplace/plugin-marketplace.validators.d.ts +11 -0
  50. package/dist/packages/core/src/infrastructure/services/plugin-marketplace/plugin-marketplace.validators.d.ts.map +1 -0
  51. package/dist/packages/core/src/infrastructure/services/plugin-marketplace/plugin-marketplace.validators.js +47 -0
  52. package/dist/src/presentation/web/app/actions/add-marketplace.d.ts +5 -0
  53. package/dist/src/presentation/web/app/actions/add-marketplace.d.ts.map +1 -0
  54. package/dist/src/presentation/web/app/actions/add-marketplace.js +11 -0
  55. package/dist/src/presentation/web/app/actions/fetch-plugin-catalog.d.ts +5 -0
  56. package/dist/src/presentation/web/app/actions/fetch-plugin-catalog.d.ts.map +1 -0
  57. package/dist/src/presentation/web/app/actions/fetch-plugin-catalog.js +11 -0
  58. package/dist/src/presentation/web/app/actions/install-plugin.d.ts +5 -0
  59. package/dist/src/presentation/web/app/actions/install-plugin.d.ts.map +1 -0
  60. package/dist/src/presentation/web/app/actions/install-plugin.js +11 -0
  61. package/dist/src/presentation/web/app/actions/toggle-plugin.d.ts +5 -0
  62. package/dist/src/presentation/web/app/actions/toggle-plugin.d.ts.map +1 -0
  63. package/dist/src/presentation/web/app/actions/toggle-plugin.js +11 -0
  64. package/dist/src/presentation/web/app/actions/uninstall-plugin.d.ts +5 -0
  65. package/dist/src/presentation/web/app/actions/uninstall-plugin.d.ts.map +1 -0
  66. package/dist/src/presentation/web/app/actions/uninstall-plugin.js +11 -0
  67. package/dist/src/presentation/web/app/plugins/page.d.ts +2 -0
  68. package/dist/src/presentation/web/app/plugins/page.d.ts.map +1 -0
  69. package/dist/src/presentation/web/app/plugins/page.js +23 -0
  70. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.d.ts.map +1 -1
  71. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.js +1 -0
  72. package/dist/src/presentation/web/components/features/plugins/plugin-card.d.ts +9 -0
  73. package/dist/src/presentation/web/components/features/plugins/plugin-card.d.ts.map +1 -0
  74. package/dist/src/presentation/web/components/features/plugins/plugin-card.js +15 -0
  75. package/dist/src/presentation/web/components/features/plugins/plugin-card.stories.d.ts +17 -0
  76. package/dist/src/presentation/web/components/features/plugins/plugin-card.stories.d.ts.map +1 -0
  77. package/dist/src/presentation/web/components/features/plugins/plugin-card.stories.js +60 -0
  78. package/dist/src/presentation/web/components/features/plugins/plugin-detail-drawer.d.ts +11 -0
  79. package/dist/src/presentation/web/components/features/plugins/plugin-detail-drawer.d.ts.map +1 -0
  80. package/dist/src/presentation/web/components/features/plugins/plugin-detail-drawer.js +33 -0
  81. package/dist/src/presentation/web/components/features/plugins/plugin-detail-drawer.stories.d.ts +18 -0
  82. package/dist/src/presentation/web/components/features/plugins/plugin-detail-drawer.stories.d.ts.map +1 -0
  83. package/dist/src/presentation/web/components/features/plugins/plugin-detail-drawer.stories.js +51 -0
  84. package/dist/src/presentation/web/components/features/plugins/plugins-page-client.d.ts +6 -0
  85. package/dist/src/presentation/web/components/features/plugins/plugins-page-client.d.ts.map +1 -0
  86. package/dist/src/presentation/web/components/features/plugins/plugins-page-client.js +115 -0
  87. package/dist/src/presentation/web/components/features/plugins/plugins-page-client.stories.d.ts +12 -0
  88. package/dist/src/presentation/web/components/features/plugins/plugins-page-client.stories.d.ts.map +1 -0
  89. package/dist/src/presentation/web/components/features/plugins/plugins-page-client.stories.js +24 -0
  90. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.d.ts.map +1 -1
  91. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.js +5 -0
  92. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.d.ts.map +1 -1
  93. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.js +2 -0
  94. package/dist/src/presentation/web/components/features/settings/litellm-proxy-settings-section.d.ts +6 -0
  95. package/dist/src/presentation/web/components/features/settings/litellm-proxy-settings-section.d.ts.map +1 -0
  96. package/dist/src/presentation/web/components/features/settings/litellm-proxy-settings-section.js +76 -0
  97. package/dist/src/presentation/web/components/features/settings/litellm-proxy-settings-section.stories.d.ts +15 -0
  98. package/dist/src/presentation/web/components/features/settings/litellm-proxy-settings-section.stories.d.ts.map +1 -0
  99. package/dist/src/presentation/web/components/features/settings/litellm-proxy-settings-section.stories.js +29 -0
  100. package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
  101. package/dist/src/presentation/web/components/features/settings/settings-page-client.js +4 -2
  102. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts.map +1 -1
  103. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.js +1 -0
  104. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
  105. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +2 -2
  106. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.d.ts.map +1 -1
  107. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.js +1 -0
  108. package/dist/src/presentation/web/hooks/feature-flags-context.d.ts.map +1 -1
  109. package/dist/src/presentation/web/hooks/feature-flags-context.js +1 -0
  110. package/dist/src/presentation/web/lib/feature-flags.d.ts +2 -0
  111. package/dist/src/presentation/web/lib/feature-flags.d.ts.map +1 -1
  112. package/dist/src/presentation/web/lib/feature-flags.js +6 -0
  113. package/dist/translations/ar/web.json +39 -2
  114. package/dist/translations/de/web.json +39 -2
  115. package/dist/translations/en/web.json +39 -2
  116. package/dist/translations/es/web.json +39 -2
  117. package/dist/translations/fr/web.json +39 -2
  118. package/dist/translations/he/web.json +39 -2
  119. package/dist/translations/pt/web.json +39 -2
  120. package/dist/translations/ru/web.json +39 -2
  121. package/dist/tsconfig.build.tsbuildinfo +1 -1
  122. package/package.json +1 -1
  123. package/web/.next/BUILD_ID +1 -1
  124. package/web/.next/app-path-routes-manifest.json +1 -0
  125. package/web/.next/build-manifest.json +3 -3
  126. package/web/.next/fallback-build-manifest.json +3 -3
  127. package/web/.next/prerender-manifest.json +3 -3
  128. package/web/.next/required-server-files.js +2 -2
  129. package/web/.next/required-server-files.json +2 -2
  130. package/web/.next/routes-manifest.json +6 -0
  131. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
  132. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  133. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  134. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
  135. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  136. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  137. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +31 -31
  138. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  139. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  140. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
  141. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  142. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  143. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +37 -37
  144. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  145. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  146. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  147. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  148. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  149. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  150. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  151. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  152. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
  153. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  154. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  155. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +31 -31
  156. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  157. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  158. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
  159. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  160. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  161. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +37 -37
  162. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  163. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  164. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
  165. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  166. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  167. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  168. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  169. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  170. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  171. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  172. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  173. package/web/.next/server/app/_global-error.html +1 -1
  174. package/web/.next/server/app/_global-error.rsc +1 -1
  175. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  176. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  177. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  178. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  179. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  180. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
  181. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  182. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  183. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  184. package/web/.next/server/app/api/dialog/pick-files/route.js.nft.json +1 -1
  185. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  186. package/web/.next/server/app/api/graph-data/route.js +1 -1
  187. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  188. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js +1 -1
  189. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
  190. package/web/.next/server/app/api/sessions-batch/route.js +1 -1
  191. package/web/.next/server/app/api/sessions-batch/route.js.nft.json +1 -1
  192. package/web/.next/server/app/plugins/page/app-paths-manifest.json +3 -0
  193. package/web/.next/server/app/plugins/page/build-manifest.json +18 -0
  194. package/web/.next/server/app/plugins/page/next-font-manifest.json +10 -0
  195. package/web/.next/server/app/plugins/page/react-loadable-manifest.json +8 -0
  196. package/web/.next/server/app/plugins/page/server-reference-manifest.json +185 -0
  197. package/web/.next/server/app/plugins/page.js +17 -0
  198. package/web/.next/server/app/plugins/page.js.map +5 -0
  199. package/web/.next/server/app/plugins/page.js.nft.json +1 -0
  200. package/web/.next/server/app/plugins/page_client-reference-manifest.js +3 -0
  201. package/web/.next/server/app/settings/page/server-reference-manifest.json +34 -22
  202. package/web/.next/server/app/settings/page.js +1 -1
  203. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  204. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  205. package/web/.next/server/app/skills/page/server-reference-manifest.json +11 -11
  206. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  207. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  208. package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
  209. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  210. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  211. package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
  212. package/web/.next/server/app/version/page.js.nft.json +1 -1
  213. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  214. package/web/.next/server/app-paths-manifest.json +1 -0
  215. package/web/.next/server/chunks/11es_next_dist_esm_build_templates_app-route_067cwst.js.map +1 -1
  216. package/web/.next/server/chunks/{[root-of-the-server]__0zu_byw._.js → [root-of-the-server]__07suer1._.js} +2 -2
  217. package/web/.next/server/chunks/{[root-of-the-server]__0u1jyv9._.js → [root-of-the-server]__0sgzo7y._.js} +2 -2
  218. package/web/.next/server/chunks/[root-of-the-server]__0tb~wwk._.js +1 -1
  219. package/web/.next/server/chunks/{[root-of-the-server]__08cpfre._.js → [root-of-the-server]__0uxlr84._.js} +2 -2
  220. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js +1 -1
  221. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js.map +1 -1
  222. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js +2 -2
  223. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js.map +1 -1
  224. package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js +1 -1
  225. package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js.map +1 -1
  226. package/web/.next/server/chunks/ssr/11es_next_dist_esm_build_templates_app-page_0y6lfp8.js +4 -0
  227. package/web/.next/server/chunks/ssr/11es_next_dist_esm_build_templates_app-page_0y6lfp8.js.map +1 -0
  228. package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js +1 -1
  229. package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js.map +1 -1
  230. package/web/.next/server/chunks/ssr/{_04s_q5r._.js → 12k._sonner_dist_index_mjs_0-vmpk5._.js} +2 -2
  231. package/web/.next/server/chunks/ssr/12k._sonner_dist_index_mjs_0-vmpk5._.js.map +1 -0
  232. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0rvrr1j._.js → [root-of-the-server]__0.5ojmt._.js} +2 -2
  233. package/web/.next/server/chunks/ssr/[root-of-the-server]__0.5ojmt._.js.map +1 -0
  234. package/web/.next/server/chunks/ssr/[root-of-the-server]__04h~gav._.js +3 -0
  235. package/web/.next/server/chunks/ssr/[root-of-the-server]__04h~gav._.js.map +1 -0
  236. package/web/.next/server/chunks/ssr/[root-of-the-server]__05_qc0n._.js +1 -1
  237. package/web/.next/server/chunks/ssr/[root-of-the-server]__05_qc0n._.js.map +1 -1
  238. package/web/.next/server/chunks/ssr/[root-of-the-server]__0ge~xny._.js +1 -1
  239. package/web/.next/server/chunks/ssr/[root-of-the-server]__0ge~xny._.js.map +1 -1
  240. package/web/.next/server/chunks/ssr/[root-of-the-server]__0qda~yi._.js +1 -1
  241. package/web/.next/server/chunks/ssr/[root-of-the-server]__0qda~yi._.js.map +1 -1
  242. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rv1gci._.js +1 -1
  243. package/web/.next/server/chunks/ssr/[root-of-the-server]__0tq2syh._.js +1 -1
  244. package/web/.next/server/chunks/ssr/[root-of-the-server]__0t~u8sd._.js +1 -1
  245. package/web/.next/server/chunks/ssr/[root-of-the-server]__0t~u8sd._.js.map +1 -1
  246. package/web/.next/server/chunks/ssr/[root-of-the-server]__0~v1~b9._.js +3 -0
  247. package/web/.next/server/chunks/ssr/[root-of-the-server]__0~v1~b9._.js.map +1 -0
  248. package/web/.next/server/chunks/ssr/[root-of-the-server]__10tll_l._.js +1 -1
  249. package/web/.next/server/chunks/ssr/[root-of-the-server]__10tll_l._.js.map +1 -1
  250. package/web/.next/server/chunks/ssr/[root-of-the-server]__12j29w-._.js +1 -1
  251. package/web/.next/server/chunks/ssr/[root-of-the-server]__12j29w-._.js.map +1 -1
  252. package/web/.next/server/chunks/ssr/{_01qdxy2._.js → _0.ra89t._.js} +2 -2
  253. package/web/.next/server/chunks/ssr/{_01qdxy2._.js.map → _0.ra89t._.js.map} +1 -1
  254. package/web/.next/server/chunks/ssr/_01sesw0._.js +1 -1
  255. package/web/.next/server/chunks/ssr/_01sesw0._.js.map +1 -1
  256. package/web/.next/server/chunks/ssr/{_00u~.41._.js → _03x4h9e._.js} +2 -2
  257. package/web/.next/server/chunks/ssr/_03x4h9e._.js.map +1 -0
  258. package/web/.next/server/chunks/ssr/{_0~0jkp_._.js → _05fk0a4._.js} +2 -2
  259. package/web/.next/server/chunks/ssr/_05fk0a4._.js.map +1 -0
  260. package/web/.next/server/chunks/ssr/_069y.js._.js +2 -2
  261. package/web/.next/server/chunks/ssr/_069y.js._.js.map +1 -1
  262. package/web/.next/server/chunks/ssr/{_0wor25i._.js → _069ybyi._.js} +2 -2
  263. package/web/.next/server/chunks/ssr/{_0wor25i._.js.map → _069ybyi._.js.map} +1 -1
  264. package/web/.next/server/chunks/ssr/_083k45~._.js +3 -0
  265. package/web/.next/server/chunks/ssr/_083k45~._.js.map +1 -0
  266. package/web/.next/server/chunks/ssr/_0_17.-n._.js +3 -0
  267. package/web/.next/server/chunks/ssr/_0_17.-n._.js.map +1 -0
  268. package/web/.next/server/chunks/ssr/_0__4si~._.js +1 -1
  269. package/web/.next/server/chunks/ssr/_0__4si~._.js.map +1 -1
  270. package/web/.next/server/chunks/ssr/_0_m17kl._.js +1 -1
  271. package/web/.next/server/chunks/ssr/_0_m17kl._.js.map +1 -1
  272. package/web/.next/server/chunks/ssr/_0d4miu.._.js +1 -1
  273. package/web/.next/server/chunks/ssr/_0d4miu.._.js.map +1 -1
  274. package/web/.next/server/chunks/ssr/_0e8ern9._.js +1 -1
  275. package/web/.next/server/chunks/ssr/_0e8ern9._.js.map +1 -1
  276. package/web/.next/server/chunks/ssr/_0i~-084._.js +3 -0
  277. package/web/.next/server/chunks/ssr/_0i~-084._.js.map +1 -0
  278. package/web/.next/server/chunks/ssr/_0kt18~b._.js +3 -0
  279. package/web/.next/server/chunks/ssr/_0kt18~b._.js.map +1 -0
  280. package/web/.next/server/chunks/ssr/{_0hw~zvl._.js → _0o_oaao._.js} +2 -2
  281. package/web/.next/server/chunks/ssr/_0o_oaao._.js.map +1 -0
  282. package/web/.next/server/chunks/ssr/_0p3~u8u._.js +2 -2
  283. package/web/.next/server/chunks/ssr/_0p3~u8u._.js.map +1 -1
  284. package/web/.next/server/chunks/ssr/_0r.3n~3._.js +1 -1
  285. package/web/.next/server/chunks/ssr/_0r.3n~3._.js.map +1 -1
  286. package/web/.next/server/chunks/ssr/_0rcx2-c._.js +9 -0
  287. package/web/.next/server/chunks/ssr/_0rcx2-c._.js.map +1 -0
  288. package/web/.next/server/chunks/ssr/_0t59q8r._.js +1 -1
  289. package/web/.next/server/chunks/ssr/_0t59q8r._.js.map +1 -1
  290. package/web/.next/server/chunks/ssr/_0tcccbb._.js +1 -1
  291. package/web/.next/server/chunks/ssr/_0tcccbb._.js.map +1 -1
  292. package/web/.next/server/chunks/ssr/{_0pa1dkv._.js → _0u3d8.n._.js} +2 -2
  293. package/web/.next/server/chunks/ssr/_0u3d8.n._.js.map +1 -0
  294. package/web/.next/server/chunks/ssr/_0vyfc4b._.js +1 -1
  295. package/web/.next/server/chunks/ssr/_0vyfc4b._.js.map +1 -1
  296. package/web/.next/server/chunks/ssr/_0w-_hww._.js +1 -1
  297. package/web/.next/server/chunks/ssr/_0w-_hww._.js.map +1 -1
  298. package/web/.next/server/chunks/ssr/{_09r54oy._.js → _0ygafoy._.js} +2 -2
  299. package/web/.next/server/chunks/ssr/{_09r54oy._.js.map → _0ygafoy._.js.map} +1 -1
  300. package/web/.next/server/chunks/ssr/_0zk-h5w._.js +1 -1
  301. package/web/.next/server/chunks/ssr/_0zk-h5w._.js.map +1 -1
  302. package/web/.next/server/chunks/ssr/_0~7lwu_._.js +1 -1
  303. package/web/.next/server/chunks/ssr/_0~7lwu_._.js.map +1 -1
  304. package/web/.next/server/chunks/ssr/_10joy2y._.js +3 -0
  305. package/web/.next/server/chunks/ssr/_10joy2y._.js.map +1 -0
  306. package/web/.next/server/chunks/ssr/_1161g9x._.js +1 -1
  307. package/web/.next/server/chunks/ssr/_1161g9x._.js.map +1 -1
  308. package/web/.next/server/chunks/ssr/_12uy.45._.js +3 -0
  309. package/web/.next/server/chunks/ssr/_12uy.45._.js.map +1 -0
  310. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_plugins_page_actions_0rdndum.js +3 -0
  311. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_plugins_page_actions_0rdndum.js.map +1 -0
  312. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_05m2q~u.js +1 -1
  313. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_05m2q~u.js.map +1 -1
  314. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_0.6zk.t.js +1 -1
  315. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_0.6zk.t.js.map +1 -1
  316. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_0pjb_re._.js +1 -1
  317. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_0w2wqvu._.js +1 -1
  318. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js +1 -1
  319. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js.map +1 -1
  320. package/web/.next/server/middleware-build-manifest.js +3 -3
  321. package/web/.next/server/next-font-manifest.js +1 -1
  322. package/web/.next/server/next-font-manifest.json +3 -0
  323. package/web/.next/server/pages/500.html +1 -1
  324. package/web/.next/server/server-reference-manifest.js +1 -1
  325. package/web/.next/server/server-reference-manifest.json +187 -61
  326. package/web/.next/static/chunks/{0dq50gtgaj63f.js → 01zrwm.x3kpdo.js} +1 -1
  327. package/web/.next/static/chunks/{12axopx66pocj.js → 024vi1xxw5ccj.js} +1 -1
  328. package/web/.next/static/chunks/{00m_fbc2z1gyi.js → 043zp6fpfaz07.js} +3 -3
  329. package/web/.next/static/chunks/{0fg~vc93spa9c.js → 07gal-~-zwagj.js} +1 -1
  330. package/web/.next/static/chunks/{1874_wt9rit96.js → 09lcrhxslt-u8.js} +1 -1
  331. package/web/.next/static/chunks/0aq9-lg.5r.nk.js +5 -0
  332. package/web/.next/static/chunks/{0in4l8mne5y~_.js → 0b2pi58fg3lt3.js} +1 -1
  333. package/web/.next/static/chunks/0dprl~vdhvhk7.js +1 -0
  334. package/web/.next/static/chunks/{11vbir.u7_zf7.js → 0e.8n42~fpeqa.js} +1 -1
  335. package/web/.next/static/chunks/0jt5jzg88skg5.js +1 -0
  336. package/web/.next/static/chunks/{0v~n9z6b639zm.js → 0jwq.mr-.ltps.js} +1 -1
  337. package/web/.next/static/chunks/0k8m.qcahm63g.js +1 -0
  338. package/web/.next/static/chunks/0lc0x8kcu46ae.js +1 -0
  339. package/web/.next/static/chunks/{121v1_d_dfk2k.js → 0lwuepa24tqxy.js} +1 -1
  340. package/web/.next/static/chunks/0lz-oq74e_ciu.js +1 -0
  341. package/web/.next/static/chunks/0nkujbu62z1jl.js +7 -0
  342. package/web/.next/static/chunks/{0u_27fdqa2jeg.js → 0rb5cx51f5u8h.js} +1 -1
  343. package/web/.next/static/chunks/0tdbctvrma.oi.js +1 -0
  344. package/web/.next/static/chunks/{0yibymrb2j05t.css → 0v7r7y~3e~oo6.css} +1 -1
  345. package/web/.next/static/chunks/{0k0j7anrbg-of.js → 0vq.b40jzhi7r.js} +1 -1
  346. package/web/.next/static/chunks/0wd.i4f822qoa.js +1 -0
  347. package/web/.next/static/chunks/{183ehj-b80a~o.js → 0xo.hi4px83w2.js} +1 -1
  348. package/web/.next/static/chunks/{09f2lesd_dd3~.js → 0xzs6jdtkmbic.js} +1 -1
  349. package/web/.next/static/chunks/{0o33urrd3lk~u.js → 0~4c6tnw7xnnl.js} +1 -1
  350. package/web/.next/static/chunks/16jgc8hqxrp.u.js +1 -0
  351. package/web/.next/server/chunks/ssr/[root-of-the-server]__0qxd563._.js +0 -3
  352. package/web/.next/server/chunks/ssr/[root-of-the-server]__0qxd563._.js.map +0 -1
  353. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rvrr1j._.js.map +0 -1
  354. package/web/.next/server/chunks/ssr/_00u~.41._.js.map +0 -1
  355. package/web/.next/server/chunks/ssr/_04s_q5r._.js.map +0 -1
  356. package/web/.next/server/chunks/ssr/_0a_8rlj._.js +0 -3
  357. package/web/.next/server/chunks/ssr/_0a_8rlj._.js.map +0 -1
  358. package/web/.next/server/chunks/ssr/_0dy8.0k._.js +0 -3
  359. package/web/.next/server/chunks/ssr/_0dy8.0k._.js.map +0 -1
  360. package/web/.next/server/chunks/ssr/_0gdghcr._.js +0 -3
  361. package/web/.next/server/chunks/ssr/_0gdghcr._.js.map +0 -1
  362. package/web/.next/server/chunks/ssr/_0hw~zvl._.js.map +0 -1
  363. package/web/.next/server/chunks/ssr/_0l2~~pi._.js +0 -3
  364. package/web/.next/server/chunks/ssr/_0l2~~pi._.js.map +0 -1
  365. package/web/.next/server/chunks/ssr/_0n.magx._.js +0 -3
  366. package/web/.next/server/chunks/ssr/_0n.magx._.js.map +0 -1
  367. package/web/.next/server/chunks/ssr/_0pa1dkv._.js.map +0 -1
  368. package/web/.next/server/chunks/ssr/_0y8u4.e._.js +0 -9
  369. package/web/.next/server/chunks/ssr/_0y8u4.e._.js.map +0 -1
  370. package/web/.next/server/chunks/ssr/_0~0jkp_._.js.map +0 -1
  371. package/web/.next/static/chunks/0-ud~1jj7chzu.js +0 -7
  372. package/web/.next/static/chunks/0c0dau5pmseko.js +0 -1
  373. package/web/.next/static/chunks/0inayq2zzadja.js +0 -1
  374. package/web/.next/static/chunks/0n3kuj7t_-jzp.js +0 -1
  375. package/web/.next/static/chunks/0pt-d18f7zxvv.js +0 -1
  376. package/web/.next/static/chunks/0xwh.0u-dexsl.js +0 -1
  377. package/web/.next/static/chunks/103xnw203o9k1.js +0 -1
  378. package/web/.next/static/chunks/12pd180jp8zu..js +0 -5
  379. package/web/.next/static/chunks/13fcwhkw7dle2.js +0 -1
  380. /package/web/.next/server/chunks/{[root-of-the-server]__0zu_byw._.js.map → [root-of-the-server]__07suer1._.js.map} +0 -0
  381. /package/web/.next/server/chunks/{[root-of-the-server]__0u1jyv9._.js.map → [root-of-the-server]__0sgzo7y._.js.map} +0 -0
  382. /package/web/.next/server/chunks/{[root-of-the-server]__08cpfre._.js.map → [root-of-the-server]__0uxlr84._.js.map} +0 -0
  383. /package/web/.next/static/{SNdaKJ9fpre8tUMRe1jlA → kDUolP-Zj2jCRleGJJGX0}/_buildManifest.js +0 -0
  384. /package/web/.next/static/{SNdaKJ9fpre8tUMRe1jlA → kDUolP-Zj2jCRleGJJGX0}/_clientMiddlewareManifest.js +0 -0
  385. /package/web/.next/static/{SNdaKJ9fpre8tUMRe1jlA → kDUolP-Zj2jCRleGJJGX0}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../node_modules/.pnpm/next%4016.2.2_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.59.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/client/use-merged-ref.ts","../../../../../../../node_modules/.pnpm/next%4016.2.2_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.59.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/shared/lib/utils/warn-once.ts","../../../../../../../node_modules/.pnpm/next%4016.2.2_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.59.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/shared/lib/deployment-id.ts","../../../../../../../node_modules/.pnpm/next%4016.2.2_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.59.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/shared/lib/segment.ts","../../../../../../../node_modules/.pnpm/next%4016.2.2_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.59.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/shared/lib/invariant-error.ts","../../../../../../../node_modules/.pnpm/next%4016.2.2_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.59.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/src/shared/lib/promise-with-resolvers.ts","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/download.ts","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/paperclip.ts","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/sticky-note.ts","../../../../../../../src/presentation/web/components/ui/textarea.tsx","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/file.ts","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/file-text.ts","../../../../../../../src/presentation/web/components/common/attachment-chip/attachment-chip.tsx","../../../../../../../src/presentation/web/components/common/attachment-card/attachment-card.tsx","../../../../../../../node_modules/.pnpm/lucide-react%401.7.0_react%4019.2.4/node_modules/lucide-react/src/icons/image.ts"],"sourcesContent":["import { useCallback, useRef, type Ref } from 'react'\n\n// This is a compatibility hook to support React 18 and 19 refs.\n// In 19, a cleanup function from refs may be returned.\n// In 18, returning a cleanup function creates a warning.\n// Since we take userspace refs, we don't know ahead of time if a cleanup function will be returned.\n// This implements cleanup functions with the old behavior in 18.\n// We know refs are always called alternating with `null` and then `T`.\n// So a call with `null` means we need to call the previous cleanup functions.\nexport function useMergedRef<TElement>(\n refA: Ref<TElement>,\n refB: Ref<TElement>\n): Ref<TElement> {\n const cleanupA = useRef<(() => void) | null>(null)\n const cleanupB = useRef<(() => void) | null>(null)\n\n // NOTE: In theory, we could skip the wrapping if only one of the refs is non-null.\n // (this happens often if the user doesn't pass a ref to Link/Form/Image)\n // But this can cause us to leak a cleanup-ref into user code (previously via `<Link legacyBehavior>`),\n // and the user might pass that ref into ref-merging library that doesn't support cleanup refs\n // (because it hasn't been updated for React 19)\n // which can then cause things to blow up, because a cleanup-returning ref gets called with `null`.\n // So in practice, it's safer to be defensive and always wrap the ref, even on React 19.\n return useCallback(\n (current: TElement | null): void => {\n if (current === null) {\n const cleanupFnA = cleanupA.current\n if (cleanupFnA) {\n cleanupA.current = null\n cleanupFnA()\n }\n const cleanupFnB = cleanupB.current\n if (cleanupFnB) {\n cleanupB.current = null\n cleanupFnB()\n }\n } else {\n if (refA) {\n cleanupA.current = applyRef(refA, current)\n }\n if (refB) {\n cleanupB.current = applyRef(refB, current)\n }\n }\n },\n [refA, refB]\n )\n}\n\nfunction applyRef<TElement>(\n refA: NonNullable<Ref<TElement>>,\n current: TElement\n) {\n if (typeof refA === 'function') {\n const cleanup = refA(current)\n if (typeof cleanup === 'function') {\n return cleanup\n } else {\n return () => refA(null)\n }\n } else {\n refA.current = current\n return () => {\n refA.current = null\n }\n }\n}\n","let warnOnce = (_: string) => {}\nif (process.env.NODE_ENV !== 'production') {\n const warnings = new Set<string>()\n warnOnce = (msg: string) => {\n if (!warnings.has(msg)) {\n console.warn(msg)\n }\n warnings.add(msg)\n }\n}\n\nexport { warnOnce }\n","let deploymentId: string | undefined\n\nif (typeof window !== 'undefined') {\n deploymentId = document.documentElement.dataset.dplId\n // Immediately remove the attribute to prevent hydration errors (the dplId was inserted into the\n // HTML only), React isn't aware of it at all.\n delete document.documentElement.dataset.dplId\n} else {\n // Client side: replaced with globalThis.NEXT_DEPLOYMENT_ID\n // Server side: left as is or replaced with a string or replaced with false\n deploymentId = process.env.NEXT_DEPLOYMENT_ID || undefined\n}\n\nexport function getDeploymentId(): string | undefined {\n return deploymentId\n}\n\nexport function getDeploymentIdQuery(ampersand = false): string {\n let id = getDeploymentId()\n if (id) {\n return `${ampersand ? '&' : '?'}dpl=${id}`\n }\n return ''\n}\n\nexport function getAssetToken(): string | undefined {\n return (\n process.env.NEXT_IMMUTABLE_ASSET_TOKEN || process.env.NEXT_DEPLOYMENT_ID\n )\n}\n\nexport function getAssetTokenQuery(ampersand = false): string {\n let id = getAssetToken()\n if (id) {\n return `${ampersand ? '&' : '?'}dpl=${id}`\n }\n return ''\n}\n","import type { FlightRouterState, Segment } from './app-router-types'\n\nexport function getSegmentValue(segment: Segment) {\n return Array.isArray(segment) ? segment[1] : segment\n}\n\nexport function isGroupSegment(segment: string) {\n // Use array[0] for performant purpose\n return segment[0] === '(' && segment.endsWith(')')\n}\n\nexport function isParallelRouteSegment(segment: string) {\n return segment.startsWith('@') && segment !== '@children'\n}\n\nexport function addSearchParamsIfPageSegment(\n segment: Segment,\n searchParams: Record<string, string | string[] | undefined>\n) {\n const isPageSegment = segment.includes(PAGE_SEGMENT_KEY)\n\n if (isPageSegment) {\n const stringifiedQuery = JSON.stringify(searchParams)\n return stringifiedQuery !== '{}'\n ? PAGE_SEGMENT_KEY + '?' + stringifiedQuery\n : PAGE_SEGMENT_KEY\n }\n\n return segment\n}\n\nexport function computeSelectedLayoutSegment(\n segments: string[] | null,\n parallelRouteKey: string\n): string | null {\n if (!segments || segments.length === 0) {\n return null\n }\n\n // For 'children', use first segment; for other parallel routes, use last segment\n const rawSegment =\n parallelRouteKey === 'children'\n ? segments[0]\n : segments[segments.length - 1]\n\n // If the default slot is showing, return null since it's not technically \"selected\" (it's a fallback)\n // Returning an internal value like `__DEFAULT__` would be confusing\n return rawSegment === DEFAULT_SEGMENT_KEY ? null : rawSegment\n}\n\n/** Get the canonical parameters from the current level to the leaf node. */\nexport function getSelectedLayoutSegmentPath(\n tree: FlightRouterState,\n parallelRouteKey: string,\n first = true,\n segmentPath: string[] = []\n): string[] {\n let node: FlightRouterState\n if (first) {\n // Use the provided parallel route key on the first parallel route\n node = tree[1][parallelRouteKey]\n } else {\n // After first parallel route prefer children, if there's no children pick the first parallel route.\n const parallelRoutes = tree[1]\n node = parallelRoutes.children ?? Object.values(parallelRoutes)[0]\n }\n\n if (!node) return segmentPath\n const segment = node[0]\n\n let segmentValue = getSegmentValue(segment)\n\n if (!segmentValue || segmentValue.startsWith(PAGE_SEGMENT_KEY)) {\n return segmentPath\n }\n\n segmentPath.push(segmentValue)\n\n return getSelectedLayoutSegmentPath(\n node,\n parallelRouteKey,\n false,\n segmentPath\n )\n}\n\nexport const PAGE_SEGMENT_KEY = '__PAGE__'\nexport const DEFAULT_SEGMENT_KEY = '__DEFAULT__'\nexport const NOT_FOUND_SEGMENT_KEY = '/_not-found'\n","export class InvariantError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(\n `Invariant: ${message.endsWith('.') ? message : message + '.'} This is a bug in Next.js.`,\n options\n )\n this.name = 'InvariantError'\n }\n}\n","export function createPromiseWithResolvers<T>(): PromiseWithResolvers<T> {\n // Shim of Stage 4 Promise.withResolvers proposal\n let resolve: (value: T | PromiseLike<T>) => void\n let reject: (reason: any) => void\n const promise = new Promise<T>((res, rej) => {\n resolve = res\n reject = rej\n })\n return { resolve: resolve!, reject: reject!, promise }\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['path', { d: 'M12 15V3', key: 'm9g1x1' }],\n ['path', { d: 'M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4', key: 'ih7n3h' }],\n ['path', { d: 'm7 10 5 5 5-5', key: 'brsn70' }],\n];\n\n/**\n * @component @name Download\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMTIgMTVWMyIgLz4KICA8cGF0aCBkPSJNMjEgMTV2NGEyIDIgMCAwIDEtMiAySDVhMiAyIDAgMCAxLTItMnYtNCIgLz4KICA8cGF0aCBkPSJtNyAxMCA1IDUgNS01IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/download\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 Download = createLucideIcon('download', __iconNode);\n\nexport default Download;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'm16 6-8.414 8.586a2 2 0 0 0 2.829 2.829l8.414-8.586a4 4 0 1 0-5.657-5.657l-8.379 8.551a6 6 0 1 0 8.485 8.485l8.379-8.551',\n key: '1miecu',\n },\n ],\n];\n\n/**\n * @component @name Paperclip\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJtMTYgNi04LjQxNCA4LjU4NmEyIDIgMCAwIDAgMi44MjkgMi44MjlsOC40MTQtOC41ODZhNCA0IDAgMSAwLTUuNjU3LTUuNjU3bC04LjM3OSA4LjU1MWE2IDYgMCAxIDAgOC40ODUgOC40ODVsOC4zNzktOC41NTEiIC8+Cjwvc3ZnPgo=) - https://lucide.dev/icons/paperclip\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 Paperclip = createLucideIcon('paperclip', __iconNode);\n\nexport default Paperclip;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M21 9a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 15 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2z',\n key: '1dfntj',\n },\n ],\n ['path', { d: 'M15 3v5a1 1 0 0 0 1 1h5', key: '6s6qgf' }],\n];\n\n/**\n * @component @name StickyNote\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNMjEgOWEyLjQgMi40IDAgMCAwLS43MDYtMS43MDZsLTMuNTg4LTMuNTg4QTIuNCAyLjQgMCAwIDAgMTUgM0g1YTIgMiAwIDAgMC0yIDJ2MTRhMiAyIDAgMCAwIDIgMmgxNGEyIDIgMCAwIDAgMi0yeiIgLz4KICA8cGF0aCBkPSJNMTUgM3Y1YTEgMSAwIDAgMCAxIDFoNSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/sticky-note\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 StickyNote = createLucideIcon('sticky-note', __iconNode);\n\nexport default StickyNote;\n","import * as React from 'react';\n\nimport { cn } from '@/lib/utils';\n\nfunction Textarea({ className, ...props }: React.ComponentProps<'textarea'>) {\n return (\n <textarea\n data-slot=\"textarea\"\n className={cn(\n 'placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input field-sizing-content min-h-[80px] w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm',\n 'focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]',\n 'aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive',\n className\n )}\n {...props}\n />\n );\n}\n\nexport { Textarea };\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z',\n key: '1oefj6',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n];\n\n/**\n * @component @name File\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNiAyMmEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg4YTIuNCAyLjQgMCAwIDEgMS43MDQuNzA2bDMuNTg4IDMuNTg4QTIuNCAyLjQgMCAwIDEgMjAgOHYxMmEyIDIgMCAwIDEtMiAyeiIgLz4KICA8cGF0aCBkPSJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/file\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 File = createLucideIcon('file', __iconNode);\n\nexport default File;\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n [\n 'path',\n {\n d: 'M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z',\n key: '1oefj6',\n },\n ],\n ['path', { d: 'M14 2v5a1 1 0 0 0 1 1h5', key: 'wfsgrz' }],\n ['path', { d: 'M10 9H8', key: 'b1mrlr' }],\n ['path', { d: 'M16 13H8', key: 't4e002' }],\n ['path', { d: 'M16 17H8', key: 'z1uh3a' }],\n];\n\n/**\n * @component @name FileText\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cGF0aCBkPSJNNiAyMmEyIDIgMCAwIDEtMi0yVjRhMiAyIDAgMCAxIDItMmg4YTIuNCAyLjQgMCAwIDEgMS43MDQuNzA2bDMuNTg4IDMuNTg4QTIuNCAyLjQgMCAwIDEgMjAgOHYxMmEyIDIgMCAwIDEtMiAyeiIgLz4KICA8cGF0aCBkPSJNMTQgMnY1YTEgMSAwIDAgMCAxIDFoNSIgLz4KICA8cGF0aCBkPSJNMTAgOUg4IiAvPgogIDxwYXRoIGQ9Ik0xNiAxM0g4IiAvPgogIDxwYXRoIGQ9Ik0xNiAxN0g4IiAvPgo8L3N2Zz4K) - https://lucide.dev/icons/file-text\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 FileText = createLucideIcon('file-text', __iconNode);\n\nexport default FileText;\n","/* eslint-disable @next/next/no-img-element -- Local file preview requires raw <img>, not next/image */\n'use client';\n\nimport { X, LoaderCircleIcon, DownloadIcon, StickyNoteIcon } from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { Dialog, DialogTrigger, DialogContent, DialogTitle } from '@/components/ui/dialog';\nimport { Textarea } from '@/components/ui/textarea';\nimport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider } from '@/components/ui/tooltip';\nimport { VisuallyHidden } from 'radix-ui';\nimport {\n formatFileSize,\n getFileIcon,\n getFileIconColor,\n} from '@/components/common/attachment-card/attachment-card';\n\nexport interface AttachmentChipProps {\n name: string;\n size: number;\n mimeType: string;\n path: string;\n onRemove: () => void;\n loading?: boolean;\n disabled?: boolean;\n /** Optional notes attached to this image */\n notes?: string;\n /** Callback when user edits notes in the preview modal */\n onNotesChange?: (notes: string) => void;\n}\n\nconst IMAGE_EXTS = new Set(['.png', '.jpg', '.jpeg', '.gif', '.svg', '.webp', '.ico', '.bmp']);\n\nfunction isImage(name: string): boolean {\n const dot = name.lastIndexOf('.');\n return dot >= 0 && IMAGE_EXTS.has(name.slice(dot).toLowerCase());\n}\n\nfunction previewUrl(path: string, mimeType: string): string {\n const params = new URLSearchParams({ path, mimeType });\n return `/api/attachments/preview?${params.toString()}`;\n}\n\nfunction getExtension(filename: string): string {\n const dot = filename.lastIndexOf('.');\n return dot >= 0 ? filename.slice(dot).toLowerCase() : '';\n}\n\nexport function AttachmentChip({\n name,\n size,\n mimeType,\n path,\n onRemove,\n loading = false,\n disabled = false,\n notes,\n onNotesChange,\n}: AttachmentChipProps) {\n const ext = getExtension(name);\n const Icon = getFileIcon(ext);\n const iconColorClass = getFileIconColor(ext);\n const imageFile = isImage(name);\n\n if (loading) {\n return (\n <div className=\"flex h-12 w-12 items-center justify-center rounded-md border\">\n <LoaderCircleIcon className=\"text-muted-foreground h-5 w-5 animate-spin\" />\n </div>\n );\n }\n\n if (imageFile) {\n const thumbnail = (\n <button type=\"button\" className=\"relative block cursor-pointer rounded-md\">\n <img\n src={previewUrl(path, mimeType)}\n alt={name}\n title={name}\n className=\"h-12 w-12 rounded-md border object-cover transition-opacity hover:opacity-80\"\n />\n {notes ? (\n <span className=\"ring-background absolute -right-1 -bottom-1 flex h-4 w-4 items-center justify-center rounded-full bg-amber-500 text-white shadow-sm ring-2\">\n <StickyNoteIcon className=\"h-2.5 w-2.5\" />\n </span>\n ) : null}\n </button>\n );\n\n return (\n <TooltipProvider delayDuration={200}>\n <Dialog>\n <Tooltip>\n <div className=\"group relative\">\n <TooltipTrigger asChild>\n <DialogTrigger asChild>{thumbnail}</DialogTrigger>\n </TooltipTrigger>\n {!disabled && (\n <button\n type=\"button\"\n onClick={onRemove}\n className=\"absolute -top-1.5 -right-1.5 hidden h-5 w-5 cursor-pointer items-center justify-center rounded-full bg-black/70 text-white group-hover:flex\"\n aria-label={`Remove ${name}`}\n >\n <X className=\"h-3 w-3\" />\n </button>\n )}\n </div>\n {notes ? (\n <TooltipContent\n side=\"bottom\"\n className=\"max-w-[220px] border border-amber-200 bg-amber-50 text-amber-950 dark:border-amber-800 dark:bg-amber-950 dark:text-amber-100\"\n >\n <p className=\"line-clamp-3 text-xs leading-snug\">{notes}</p>\n </TooltipContent>\n ) : null}\n </Tooltip>\n <DialogContent className=\"max-w-3xl gap-0 overflow-hidden border-0 p-0 [&>button:last-child]:!cursor-pointer [&>button:last-child]:!rounded-full [&>button:last-child]:!bg-black/70 [&>button:last-child]:!p-1.5 [&>button:last-child]:!text-white [&>button:last-child]:!opacity-100 [&>button:last-child]:!shadow-lg [&>button:last-child]:!backdrop-blur-md [&>button:last-child]:hover:!bg-black/90\">\n <VisuallyHidden.Root>\n <DialogTitle>Preview: {name}</DialogTitle>\n </VisuallyHidden.Root>\n <div className=\"relative bg-black/90\">\n <img\n src={previewUrl(path, mimeType)}\n alt={name}\n className=\"h-auto max-h-[70vh] w-full object-contain\"\n />\n </div>\n <div className=\"bg-background flex flex-col gap-2 px-4 py-3\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"truncate text-sm font-medium\">{name}</span>\n <span className=\"text-muted-foreground text-xs\">{formatFileSize(size)}</span>\n </div>\n <a\n href={previewUrl(path, mimeType)}\n download={name}\n className=\"text-muted-foreground hover:text-foreground shrink-0 cursor-pointer rounded p-1.5 transition-colors\"\n aria-label={`Download ${name}`}\n >\n <DownloadIcon className=\"h-4 w-4\" />\n </a>\n </div>\n {onNotesChange ? (\n <Textarea\n placeholder=\"Add notes about this image…\"\n value={notes ?? ''}\n onChange={(e) => onNotesChange(e.target.value)}\n rows={2}\n className=\"resize-none text-sm\"\n aria-label=\"Image notes\"\n />\n ) : notes ? (\n <p className=\"text-muted-foreground text-sm\">{notes}</p>\n ) : null}\n </div>\n </DialogContent>\n </Dialog>\n </TooltipProvider>\n );\n }\n\n return (\n <div className=\"group relative flex items-center gap-2 rounded-full border py-1 ps-2 pe-3\">\n <div\n className={cn(\n 'flex h-6 w-6 shrink-0 items-center justify-center rounded-full',\n iconColorClass\n )}\n >\n <Icon className=\"h-3 w-3\" />\n </div>\n <span className=\"max-w-[120px] truncate text-sm\">{name}</span>\n <span className=\"text-muted-foreground text-xs\">{formatFileSize(size)}</span>\n {!disabled && (\n <button\n type=\"button\"\n onClick={onRemove}\n className=\"absolute -top-1.5 -right-1.5 hidden h-5 w-5 cursor-pointer items-center justify-center rounded-full bg-black/70 text-white group-hover:flex\"\n aria-label={`Remove ${name}`}\n >\n <X className=\"h-3 w-3\" />\n </button>\n )}\n </div>\n );\n}\n","import type { LucideIcon } from 'lucide-react';\nimport {\n FileIcon,\n FileTextIcon,\n ImageIcon,\n CodeIcon,\n Trash2Icon,\n LoaderCircleIcon,\n} from 'lucide-react';\nimport { cn } from '@/lib/utils';\nimport { Button } from '@/components/ui/button';\n\nexport interface AttachmentCardProps {\n name: string;\n size: number;\n mimeType: string;\n onRemove: () => void;\n loading?: boolean;\n disabled?: boolean;\n /** Optional secondary text shown below the filename (e.g. file path). */\n subtitle?: string;\n}\n\nexport function AttachmentCard({\n name,\n size,\n mimeType: _mimeType,\n onRemove,\n loading = false,\n disabled = false,\n subtitle,\n}: AttachmentCardProps) {\n const ext = getExtension(name);\n const Icon = getFileIcon(ext);\n const iconColorClass = getFileIconColor(ext);\n\n return (\n <div className=\"flex items-center gap-3 rounded-md border p-2\">\n <div\n className={cn('flex h-8 w-8 shrink-0 items-center justify-center rounded', iconColorClass)}\n >\n <Icon className=\"h-4 w-4\" />\n </div>\n <div className=\"flex min-w-0 flex-1 flex-col\">\n <span className=\"truncate text-sm font-medium\">{name}</span>\n {subtitle ? (\n <span className=\"text-muted-foreground truncate text-xs\">{subtitle}</span>\n ) : null}\n <span className=\"text-muted-foreground text-xs\">\n {loading ? 'Uploading...' : formatFileSize(size)}\n </span>\n </div>\n {loading ? (\n <LoaderCircleIcon className=\"text-muted-foreground h-4 w-4 animate-spin\" />\n ) : (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"icon-xs\"\n onClick={onRemove}\n disabled={disabled}\n aria-label={`Remove ${name}`}\n >\n <Trash2Icon className=\"h-3 w-3\" />\n </Button>\n )}\n </div>\n );\n}\n\nfunction getExtension(filename: string): string {\n const dot = filename.lastIndexOf('.');\n return dot >= 0 ? filename.slice(dot).toLowerCase() : '';\n}\n\nconst IMAGE_EXTS = new Set(['.png', '.jpg', '.jpeg', '.gif', '.svg', '.webp', '.ico', '.bmp']);\nconst CODE_EXTS = new Set([\n '.ts',\n '.tsx',\n '.js',\n '.jsx',\n '.json',\n '.yaml',\n '.yml',\n '.xml',\n '.html',\n '.css',\n '.md',\n]);\n\nexport function getFileIcon(ext: string): LucideIcon {\n if (IMAGE_EXTS.has(ext)) return ImageIcon;\n if (ext === '.pdf') return FileTextIcon;\n if (CODE_EXTS.has(ext)) return CodeIcon;\n return FileIcon;\n}\n\nexport function getFileIconColor(ext: string): string {\n if (ext === '.pdf') return 'bg-red-50 text-red-600';\n if (IMAGE_EXTS.has(ext)) return 'bg-blue-50 text-blue-600';\n if (CODE_EXTS.has(ext)) return 'bg-emerald-50 text-emerald-600';\n return 'bg-gray-50 text-gray-600';\n}\n\nexport function formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 B';\n const units = ['B', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(1024));\n return `${(bytes / Math.pow(1024, i)).toFixed(i === 0 ? 0 : 1)} ${units[i]}`;\n}\n","import createLucideIcon from '../createLucideIcon';\nimport { IconNode } from '../types';\n\nexport const __iconNode: IconNode = [\n ['rect', { width: '18', height: '18', x: '3', y: '3', rx: '2', ry: '2', key: '1m3agn' }],\n ['circle', { cx: '9', cy: '9', r: '2', key: 'af1f0g' }],\n ['path', { d: 'm21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21', key: '1xmnt7' }],\n];\n\n/**\n * @component @name Image\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview ![img](data:image/svg+xml;base64,PHN2ZyAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgogIHdpZHRoPSIyNCIKICBoZWlnaHQ9IjI0IgogIHZpZXdCb3g9IjAgMCAyNCAyNCIKICBmaWxsPSJub25lIgogIHN0cm9rZT0iIzAwMCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDJweCIKICBzdHJva2Utd2lkdGg9IjIiCiAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogIHN0cm9rZS1saW5lam9pbj0icm91bmQiCj4KICA8cmVjdCB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHg9IjMiIHk9IjMiIHJ4PSIyIiByeT0iMiIgLz4KICA8Y2lyY2xlIGN4PSI5IiBjeT0iOSIgcj0iMiIgLz4KICA8cGF0aCBkPSJtMjEgMTUtMy4wODYtMy4wODZhMiAyIDAgMCAwLTIuODI4IDBMNiAyMSIgLz4KPC9zdmc+Cg==) - https://lucide.dev/icons/image\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 Image = createLucideIcon('image', __iconNode);\n\nexport default Image;\n"],"names":["useMergedRef","refA","refB","cleanupA","useRef","cleanupB","useCallback","current","cleanupFnA","cleanupFnB","applyRef","cleanup","warnOnce","_","process","env","NODE_ENV","warnings","Set","msg","has","console","warn","add","getAssetToken","getAssetTokenQuery","getDeploymentId","getDeploymentIdQuery","deploymentId","window","document","documentElement","dataset","dplId","NEXT_DEPLOYMENT_ID","undefined","ampersand","id","NEXT_IMMUTABLE_ASSET_TOKEN","DEFAULT_SEGMENT_KEY","NOT_FOUND_SEGMENT_KEY","PAGE_SEGMENT_KEY","addSearchParamsIfPageSegment","computeSelectedLayoutSegment","getSegmentValue","getSelectedLayoutSegmentPath","isGroupSegment","isParallelRouteSegment","segment","Array","isArray","endsWith","startsWith","searchParams","isPageSegment","includes","stringifiedQuery","JSON","stringify","segments","parallelRouteKey","length","rawSegment","tree","first","segmentPath","node","parallelRoutes","children","Object","values","segmentValue","push","InvariantError","Error","constructor","message","options","name","createPromiseWithResolvers","resolve","reject","promise","Promise","res","rej","Textarea","className","props"],"mappings":"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","ignoreList":[0,1,2,3,4,5,8,10,14]}
@@ -0,0 +1,3 @@
1
+ module.exports=[20289,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(94691),i=a.i(33841),j=a.i(46646),k=a.i(68670),l=a.i(85321),m=a.i(2211),n=a.i(96380),o=a.i(50961);async function p(){try{let a=(0,n.resolve)("FetchPluginCatalogUseCase");return await a.execute()}catch{return{plugins:[],installedPlugins:[],error:"Failed to fetch plugin catalog"}}}async function q(a,b,c){try{let d=(0,n.resolve)("InstallPluginUseCase");return await d.execute({pluginId:a,marketplace:b,scope:c})}catch{return{success:!1,error:"Failed to install plugin"}}}async function r(a,b){try{let c=(0,n.resolve)("UninstallPluginUseCase");return await c.execute({pluginId:a,marketplace:b})}catch{return{success:!1,error:"Failed to uninstall plugin"}}}async function s(a,b,c){try{let d=(0,n.resolve)("TogglePluginUseCase");return await d.execute({pluginId:a,marketplace:b,enabled:c})}catch{return{success:!1,error:"Failed to toggle plugin"}}}(0,o.ensureServerEntryExports)([p]),(0,m.registerServerReference)(p,"00425186092e8f157f7f69938da2571e7544ffcc9e",null),(0,o.ensureServerEntryExports)([q]),(0,m.registerServerReference)(q,"70c58f5fb7756301b307fcdc06f9a3299a7ae88ba4",null),(0,o.ensureServerEntryExports)([r]),(0,m.registerServerReference)(r,"60418c739948e9045a8f01b8a21c0a9b63c91da2e2",null),(0,o.ensureServerEntryExports)([s]),(0,m.registerServerReference)(s,"70ddfec2653c4477600d5f8c140fa22c2e72ab43bd",null),a.s([],84514),a.i(84514),a.s(["00425186092e8f157f7f69938da2571e7544ffcc9e",0,p,"006f404c48afbb96195e3fc5a673998b8ee75f1049",()=>d.pickFolder,"006ffa246e488f5da03d382fec4879ee26ae033fb2",()=>b.getAllAgentModels,"00c0e8084e692e3df1eda007d1bd634a59e491d3de",()=>f.listGitHubOrganizations,"4015277cad6ef643d1ac166d2508176c0e771f44b0",()=>h.getDeploymentLogs,"401b4acb5374d46f9311b127d61e4215c027205b04",()=>i.deployFeature,"404b75c046731abf1eaf7114bcd8eadbf4583378c2",()=>j.deployRepository,"40617fac451357c9a4faef65db266a915e4872a472",()=>g.importGitHubRepository,"407b0b8df7355842dffec3719ef4ee43fd852ecee1",()=>k.stopDeployment,"4093ab106c98a5f5c2a0dd8bbb06de9d2e45d66612",()=>l.getDeploymentStatus,"40c0d76e3f8aae8a41cd1b2cdc248965928f818cf3",()=>e.listGitHubRepositories,"60418c739948e9045a8f01b8a21c0a9b63c91da2e2",0,r,"60629bc489f343ac1edd6d91a047554f59a89fc843",()=>c.updateAgentAndModel,"70c58f5fb7756301b307fcdc06f9a3299a7ae88ba4",0,q,"70ddfec2653c4477600d5f8c140fa22c2e72ab43bd",0,s],20289)}];
2
+
3
+ //# sourceMappingURL=src_presentation_web__next-internal_server_app_plugins_page_actions_0rdndum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/.next-internal/server/app/plugins/page/actions.js%20%28server%20actions%20loader%29","../../../../../../../src/presentation/web/app/actions/fetch-plugin-catalog.ts","../../../../../../../src/presentation/web/app/actions/install-plugin.ts","../../../../../../../src/presentation/web/app/actions/uninstall-plugin.ts","../../../../../../../src/presentation/web/app/actions/toggle-plugin.ts"],"sourcesContent":["export {getAllAgentModels as '006ffa246e488f5da03d382fec4879ee26ae033fb2'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '60629bc489f343ac1edd6d91a047554f59a89fc843'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '006f404c48afbb96195e3fc5a673998b8ee75f1049'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '40c0d76e3f8aae8a41cd1b2cdc248965928f818cf3'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '00c0e8084e692e3df1eda007d1bd634a59e491d3de'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '40617fac451357c9a4faef65db266a915e4872a472'} from 'ACTIONS_MODULE5'\nexport {getDeploymentLogs as '4015277cad6ef643d1ac166d2508176c0e771f44b0'} from 'ACTIONS_MODULE6'\nexport {deployFeature as '401b4acb5374d46f9311b127d61e4215c027205b04'} from 'ACTIONS_MODULE7'\nexport {deployRepository as '404b75c046731abf1eaf7114bcd8eadbf4583378c2'} from 'ACTIONS_MODULE8'\nexport {stopDeployment as '407b0b8df7355842dffec3719ef4ee43fd852ecee1'} from 'ACTIONS_MODULE9'\nexport {getDeploymentStatus as '4093ab106c98a5f5c2a0dd8bbb06de9d2e45d66612'} from 'ACTIONS_MODULE10'\nexport {fetchPluginCatalogAction as '00425186092e8f157f7f69938da2571e7544ffcc9e'} from 'ACTIONS_MODULE11'\nexport {installPluginAction as '70c58f5fb7756301b307fcdc06f9a3299a7ae88ba4'} from 'ACTIONS_MODULE12'\nexport {uninstallPluginAction as '60418c739948e9045a8f01b8a21c0a9b63c91da2e2'} from 'ACTIONS_MODULE13'\nexport {togglePluginAction as '70ddfec2653c4477600d5f8c140fa22c2e72ab43bd'} from 'ACTIONS_MODULE14'\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { FetchPluginCatalogUseCase } from '@shipit-ai/core/application/use-cases/plugins/fetch-plugin-catalog.use-case';\nimport type { FetchPluginCatalogResult } from '@shipit-ai/core/application/use-cases/plugins/fetch-plugin-catalog.use-case';\n\nexport async function fetchPluginCatalogAction(): Promise<\n FetchPluginCatalogResult & { error?: string }\n> {\n try {\n const useCase = resolve<FetchPluginCatalogUseCase>('FetchPluginCatalogUseCase');\n return await useCase.execute();\n } catch {\n return { plugins: [], installedPlugins: [], error: 'Failed to fetch plugin catalog' };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { InstallPluginUseCase } from '@shipit-ai/core/application/use-cases/plugins/install-plugin.use-case';\n\nexport async function installPluginAction(\n pluginId: string,\n marketplace: string,\n scope?: string\n): Promise<{ success: boolean; error?: string }> {\n try {\n const useCase = resolve<InstallPluginUseCase>('InstallPluginUseCase');\n return await useCase.execute({ pluginId, marketplace, scope });\n } catch {\n return { success: false, error: 'Failed to install plugin' };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { UninstallPluginUseCase } from '@shipit-ai/core/application/use-cases/plugins/uninstall-plugin.use-case';\n\nexport async function uninstallPluginAction(\n pluginId: string,\n marketplace: string\n): Promise<{ success: boolean; error?: string }> {\n try {\n const useCase = resolve<UninstallPluginUseCase>('UninstallPluginUseCase');\n return await useCase.execute({ pluginId, marketplace });\n } catch {\n return { success: false, error: 'Failed to uninstall plugin' };\n }\n}\n","'use server';\n\nimport { resolve } from '@/lib/server-container';\nimport type { TogglePluginUseCase } from '@shipit-ai/core/application/use-cases/plugins/toggle-plugin.use-case';\n\nexport async function togglePluginAction(\n pluginId: string,\n marketplace: string,\n enabled: boolean\n): Promise<{ success: boolean; error?: string }> {\n try {\n const useCase = resolve<TogglePluginUseCase>('TogglePluginUseCase');\n return await useCase.execute({ pluginId, marketplace, enabled });\n } catch {\n return { success: false, error: 'Failed to toggle plugin' };\n }\n}\n"],"names":["fetchPluginCatalogAction","useCase","execute","plugins","installedPlugins","error"],"mappings":"uCAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,mBCRA,EAAA,EAAA,CAAA,CAAA,oBAIO,eAAeA,IAGpB,GAAI,CACF,IAAMC,EAAU,CAAA,EAAA,EAAA,OAAO,AAAP,EAAmC,6BACnD,OAAO,MAAMA,EAAQC,OAAO,EAC9B,CAAE,KAAM,CACN,MAAO,CAAEC,QAAS,EAAE,CAAEC,iBAAkB,EAAE,CAAEC,MAAO,gCAAiC,CACtF,CACF,CCVO,eAAe,EACpB,CAAgB,CAChB,CAAmB,CACnB,CAAc,EAEd,GAAI,CACF,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAAuB,wBAC9C,OAAO,MAAM,EAAQ,OAAO,CAAC,UAAE,cAAU,QAAa,CAAM,EAC9D,CAAE,KAAM,CACN,MAAO,CAAE,SAAS,EAAO,MAAO,0BAA2B,CAC7D,CACF,CCXO,eAAe,EACpB,CAAgB,CAChB,CAAmB,EAEnB,GAAI,CACF,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAAyB,0BAChD,OAAO,MAAM,EAAQ,OAAO,CAAC,UAAE,cAAU,CAAY,EACvD,CAAE,KAAM,CACN,MAAO,CAAE,SAAS,EAAO,MAAO,4BAA6B,CAC/D,CACF,CCVO,eAAe,EACpB,CAAgB,CAChB,CAAmB,CACnB,CAAgB,EAEhB,GAAI,CACF,IAAM,EAAU,CAAA,EAAA,EAAA,OAAA,AAAO,EAAsB,uBAC7C,OAAO,MAAM,EAAQ,OAAO,CAAC,UAAE,cAAU,UAAa,CAAQ,EAChE,CAAE,KAAM,CACN,MAAO,CAAE,SAAS,EAAO,MAAO,yBAA0B,CAC5D,CACF,iCHVsBL,IAAAA,CAAAA,EAAAA,EAAAA,uBAAAA,EAAAA,EAAAA,6CAAAA,sCCDA,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,sCCAA,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA,sCCAA,IAAA,CAAA,EAAA,EAAA,uBAAA,EAAA,EAAA,6CAAA"}
@@ -1,3 +1,3 @@
1
- module.exports=[14937,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(94691),i=a.i(33841),j=a.i(46646),k=a.i(68670),l=a.i(85321);a.s([],96302),a.i(96302),a.s(["0053fbf05f4fb39eea5650faa3a11092f74426c33b",()=>d.pickFolder,"006c2859816cc99cfcded6ffcec5e916a33bf0e4eb",()=>f.listGitHubOrganizations,"00f3149441b97a1723eb427e92bdf9ca1d03b71775",()=>b.getAllAgentModels,"40479de74822f2e08e931928f55bfdeba6d8ea2ff4",()=>g.importGitHubRepository,"404e854a91b105e053204087e8d1b88d120dd0e0e9",()=>e.listGitHubRepositories,"407db844c7c8ea974d35bc60e37c570e492b746d33",()=>l.getDeploymentStatus,"40899c90d78dac2c7f13da7d63d753f1a792e74872",()=>h.getDeploymentLogs,"409a5c600e176018fe661fb309a718d5a473e07814",()=>i.deployFeature,"40a73e43b2e787d37c80c099d084018fb71b00d9d0",()=>k.stopDeployment,"40d82cb13cb37cb0dd82c4df55e6e7d7db0353485a",()=>j.deployRepository,"602d1387ba85a2db48d0a68022ade2031f6d1a000a",()=>c.updateAgentAndModel],14937)}];
1
+ module.exports=[14937,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(94691),i=a.i(33841),j=a.i(46646),k=a.i(68670),l=a.i(85321);a.s([],96302),a.i(96302),a.s(["006f404c48afbb96195e3fc5a673998b8ee75f1049",()=>d.pickFolder,"006ffa246e488f5da03d382fec4879ee26ae033fb2",()=>b.getAllAgentModels,"00c0e8084e692e3df1eda007d1bd634a59e491d3de",()=>f.listGitHubOrganizations,"4015277cad6ef643d1ac166d2508176c0e771f44b0",()=>h.getDeploymentLogs,"401b4acb5374d46f9311b127d61e4215c027205b04",()=>i.deployFeature,"404b75c046731abf1eaf7114bcd8eadbf4583378c2",()=>j.deployRepository,"40617fac451357c9a4faef65db266a915e4872a472",()=>g.importGitHubRepository,"407b0b8df7355842dffec3719ef4ee43fd852ecee1",()=>k.stopDeployment,"4093ab106c98a5f5c2a0dd8bbb06de9d2e45d66612",()=>l.getDeploymentStatus,"40c0d76e3f8aae8a41cd1b2cdc248965928f818cf3",()=>e.listGitHubRepositories,"60629bc489f343ac1edd6d91a047554f59a89fc843",()=>c.updateAgentAndModel],14937)}];
2
2
 
3
3
  //# sourceMappingURL=src_presentation_web__next-internal_server_app_skills_page_actions_05m2q~u.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/.next-internal/server/app/skills/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["export {getAllAgentModels as '00f3149441b97a1723eb427e92bdf9ca1d03b71775'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '602d1387ba85a2db48d0a68022ade2031f6d1a000a'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '0053fbf05f4fb39eea5650faa3a11092f74426c33b'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '404e854a91b105e053204087e8d1b88d120dd0e0e9'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '006c2859816cc99cfcded6ffcec5e916a33bf0e4eb'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '40479de74822f2e08e931928f55bfdeba6d8ea2ff4'} from 'ACTIONS_MODULE5'\nexport {getDeploymentLogs as '40899c90d78dac2c7f13da7d63d753f1a792e74872'} from 'ACTIONS_MODULE6'\nexport {deployFeature as '409a5c600e176018fe661fb309a718d5a473e07814'} from 'ACTIONS_MODULE7'\nexport {deployRepository as '40d82cb13cb37cb0dd82c4df55e6e7d7db0353485a'} from 'ACTIONS_MODULE8'\nexport {stopDeployment as '40a73e43b2e787d37c80c099d084018fb71b00d9d0'} from 'ACTIONS_MODULE9'\nexport {getDeploymentStatus as '407db844c7c8ea974d35bc60e37c570e492b746d33'} from 'ACTIONS_MODULE10'\n"],"names":[],"mappings":"uCAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/.next-internal/server/app/skills/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["export {getAllAgentModels as '006ffa246e488f5da03d382fec4879ee26ae033fb2'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '60629bc489f343ac1edd6d91a047554f59a89fc843'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '006f404c48afbb96195e3fc5a673998b8ee75f1049'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '40c0d76e3f8aae8a41cd1b2cdc248965928f818cf3'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '00c0e8084e692e3df1eda007d1bd634a59e491d3de'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '40617fac451357c9a4faef65db266a915e4872a472'} from 'ACTIONS_MODULE5'\nexport {getDeploymentLogs as '4015277cad6ef643d1ac166d2508176c0e771f44b0'} from 'ACTIONS_MODULE6'\nexport {deployFeature as '401b4acb5374d46f9311b127d61e4215c027205b04'} from 'ACTIONS_MODULE7'\nexport {deployRepository as '404b75c046731abf1eaf7114bcd8eadbf4583378c2'} from 'ACTIONS_MODULE8'\nexport {stopDeployment as '407b0b8df7355842dffec3719ef4ee43fd852ecee1'} from 'ACTIONS_MODULE9'\nexport {getDeploymentStatus as '4093ab106c98a5f5c2a0dd8bbb06de9d2e45d66612'} from 'ACTIONS_MODULE10'\n"],"names":[],"mappings":"uCAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
@@ -1,3 +1,3 @@
1
- module.exports=[21171,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(94691),i=a.i(33841),j=a.i(46646),k=a.i(68670),l=a.i(85321);a.s([],22977),a.i(22977),a.s(["0053fbf05f4fb39eea5650faa3a11092f74426c33b",()=>d.pickFolder,"006c2859816cc99cfcded6ffcec5e916a33bf0e4eb",()=>f.listGitHubOrganizations,"00f3149441b97a1723eb427e92bdf9ca1d03b71775",()=>b.getAllAgentModels,"40479de74822f2e08e931928f55bfdeba6d8ea2ff4",()=>g.importGitHubRepository,"404e854a91b105e053204087e8d1b88d120dd0e0e9",()=>e.listGitHubRepositories,"407db844c7c8ea974d35bc60e37c570e492b746d33",()=>l.getDeploymentStatus,"40899c90d78dac2c7f13da7d63d753f1a792e74872",()=>h.getDeploymentLogs,"409a5c600e176018fe661fb309a718d5a473e07814",()=>i.deployFeature,"40a73e43b2e787d37c80c099d084018fb71b00d9d0",()=>k.stopDeployment,"40d82cb13cb37cb0dd82c4df55e6e7d7db0353485a",()=>j.deployRepository,"602d1387ba85a2db48d0a68022ade2031f6d1a000a",()=>c.updateAgentAndModel],21171)}];
1
+ module.exports=[21171,a=>{"use strict";var b=a.i(23504),c=a.i(27900),d=a.i(12513),e=a.i(73101),f=a.i(54775),g=a.i(65324),h=a.i(94691),i=a.i(33841),j=a.i(46646),k=a.i(68670),l=a.i(85321);a.s([],22977),a.i(22977),a.s(["006f404c48afbb96195e3fc5a673998b8ee75f1049",()=>d.pickFolder,"006ffa246e488f5da03d382fec4879ee26ae033fb2",()=>b.getAllAgentModels,"00c0e8084e692e3df1eda007d1bd634a59e491d3de",()=>f.listGitHubOrganizations,"4015277cad6ef643d1ac166d2508176c0e771f44b0",()=>h.getDeploymentLogs,"401b4acb5374d46f9311b127d61e4215c027205b04",()=>i.deployFeature,"404b75c046731abf1eaf7114bcd8eadbf4583378c2",()=>j.deployRepository,"40617fac451357c9a4faef65db266a915e4872a472",()=>g.importGitHubRepository,"407b0b8df7355842dffec3719ef4ee43fd852ecee1",()=>k.stopDeployment,"4093ab106c98a5f5c2a0dd8bbb06de9d2e45d66612",()=>l.getDeploymentStatus,"40c0d76e3f8aae8a41cd1b2cdc248965928f818cf3",()=>e.listGitHubRepositories,"60629bc489f343ac1edd6d91a047554f59a89fc843",()=>c.updateAgentAndModel],21171)}];
2
2
 
3
3
  //# sourceMappingURL=src_presentation_web__next-internal_server_app_tools_page_actions_0.6zk.t.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../../src/presentation/web/.next-internal/server/app/tools/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["export {getAllAgentModels as '00f3149441b97a1723eb427e92bdf9ca1d03b71775'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '602d1387ba85a2db48d0a68022ade2031f6d1a000a'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '0053fbf05f4fb39eea5650faa3a11092f74426c33b'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '404e854a91b105e053204087e8d1b88d120dd0e0e9'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '006c2859816cc99cfcded6ffcec5e916a33bf0e4eb'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '40479de74822f2e08e931928f55bfdeba6d8ea2ff4'} from 'ACTIONS_MODULE5'\nexport {getDeploymentLogs as '40899c90d78dac2c7f13da7d63d753f1a792e74872'} from 'ACTIONS_MODULE6'\nexport {deployFeature as '409a5c600e176018fe661fb309a718d5a473e07814'} from 'ACTIONS_MODULE7'\nexport {deployRepository as '40d82cb13cb37cb0dd82c4df55e6e7d7db0353485a'} from 'ACTIONS_MODULE8'\nexport {stopDeployment as '40a73e43b2e787d37c80c099d084018fb71b00d9d0'} from 'ACTIONS_MODULE9'\nexport {getDeploymentStatus as '407db844c7c8ea974d35bc60e37c570e492b746d33'} from 'ACTIONS_MODULE10'\n"],"names":[],"mappings":"uCAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
1
+ {"version":3,"sources":["../../../../../../../src/presentation/web/.next-internal/server/app/tools/page/actions.js%20%28server%20actions%20loader%29"],"sourcesContent":["export {getAllAgentModels as '006ffa246e488f5da03d382fec4879ee26ae033fb2'} from 'ACTIONS_MODULE0'\nexport {updateAgentAndModel as '60629bc489f343ac1edd6d91a047554f59a89fc843'} from 'ACTIONS_MODULE1'\nexport {pickFolder as '006f404c48afbb96195e3fc5a673998b8ee75f1049'} from 'ACTIONS_MODULE2'\nexport {listGitHubRepositories as '40c0d76e3f8aae8a41cd1b2cdc248965928f818cf3'} from 'ACTIONS_MODULE3'\nexport {listGitHubOrganizations as '00c0e8084e692e3df1eda007d1bd634a59e491d3de'} from 'ACTIONS_MODULE4'\nexport {importGitHubRepository as '40617fac451357c9a4faef65db266a915e4872a472'} from 'ACTIONS_MODULE5'\nexport {getDeploymentLogs as '4015277cad6ef643d1ac166d2508176c0e771f44b0'} from 'ACTIONS_MODULE6'\nexport {deployFeature as '401b4acb5374d46f9311b127d61e4215c027205b04'} from 'ACTIONS_MODULE7'\nexport {deployRepository as '404b75c046731abf1eaf7114bcd8eadbf4583378c2'} from 'ACTIONS_MODULE8'\nexport {stopDeployment as '407b0b8df7355842dffec3719ef4ee43fd852ecee1'} from 'ACTIONS_MODULE9'\nexport {getDeploymentStatus as '4093ab106c98a5f5c2a0dd8bbb06de9d2e45d66612'} from 'ACTIONS_MODULE10'\n"],"names":[],"mappings":"uCAAA,IAAA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA,OACA,EAAA,EAAA,CAAA,CAAA"}
@@ -1,3 +1,3 @@
1
- module.exports=[61402,76052,13008,74607,6542,73624,12104,70319,54433,59020,a=>{"use strict";var b=a.i(2211),c=a.i(96380),d=a.i(50961);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,d){if(!a.trim())return{rejected:!1,error:"Feature id is required"};if(!b.trim())return{rejected:!1,error:"Feedback is required"};try{let e=(0,c.resolve)("IFeatureRepository"),f=await e.findById(a);if(!f)return{rejected:!1,error:"Feature not found"};if(!f.agentRunId)return{rejected:!1,error:"Feature has no agent run"};let g=(0,c.resolve)("RejectAgentRunUseCase"),h=await g.execute(f.agentRunId,b,d);if(!h.rejected)return{rejected:!1,error:h.reason};return{rejected:!0,iteration:h.iteration,iterationWarning:h.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"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"601993eae68eee79966aff835941e6d3e1154d369c",null),a.s(["approveFeature",0,e],61402),(0,d.ensureServerEntryExports)([f]),(0,b.registerServerReference)(f,"70d160e610c7f14da88e64957be3afecc7067e6d74",null),a.s(["rejectFeature",0,f],76052),(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"40cd86327fe4e2b976b417f49a227671cd00102d52",null),a.s(["getFeatureArtifact",0,g],13008),(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"40e172f0a3585628ed1f138b3191594eba387ba2f2",null),a.s(["getResearchArtifact",0,h],74607);var i=a.i(66680),j=a.i(2157),k=a.i(50227);function l(a){try{return(0,j.realpathSync)(a)}catch{return null}}function m(a,b){let c=b.replace(/\\/g,"/"),d=a.replace(/\\/g,"/");return d===c||d.startsWith(`${c}/`)}a.i(12714),a.i(1442);var n=a.i(29918),o=a.i(83771);async function p(a){if(!a.trim())return{error:"Feature id is required"};try{var b,d;let e,f,g=(0,c.resolve)("IFeatureRepository"),h=await g.findById(a);if(!h)return{error:"Feature not found"};let p=(0,c.resolve)("LoadSettingsUseCase"),{workflow:q}=await p.execute(),r=h.pr?{url:h.pr.url,number:h.pr.number,status:h.pr.status,commitHash:h.pr.commitHash,ciStatus:h.pr.ciStatus,mergeable:h.pr.mergeable}:void 0,s=h.worktreePath??(h.repositoryPath&&h.branch?(0,n.computeWorktreePath)(h.repositoryPath,h.branch):null),t=(0,c.resolve)("IGitPrService"),u=s??h.repositoryPath??null,v="main";if(u)try{v=await t.getDefaultBranch(u)}catch{}let w=h.branch?{source:h.branch,target:v}:void 0,x=h.repositoryPath?(b=h.repositoryPath,f=(0,i.createHash)("sha256").update(b).digest("hex").slice(0,16),(0,k.join)((0,o.getShipitAiHomeDir)(),"repos",f,"evidence",a).replace(/\\/g,"/")):s?(0,k.join)((0,k.dirname)((0,k.dirname)(s)),"evidence",a).replace(/\\/g,"/"):null;if(x)try{let a=l((0,o.getShipitAiHomeDir)()),b=l(x);if(a&&b&&m(b,a)){let a=l((0,k.join)(b,"manifest.json"));if(a&&m(a,b)){let b=(d=JSON.parse((0,j.readFileSync)(a,"utf-8")),d.map(a=>{if(a.relativePath.startsWith("/"))return a;let b=(0,k.basename)(a.relativePath),c=(0,k.join)(x,b).replace(/\\/g,"/");return{...a,relativePath:c}})),c=new Set;e=b.filter(a=>{let b=`${a.type}:${a.relativePath}`;return!c.has(b)&&(c.add(b),!0)})}}}catch{}if(!s)return{pr:r,branch:w,evidence:e,warning:r?void 0:"No PR or diff data available",hideCiStatus:q.hideCiStatus};try{let[a,b]=await Promise.all([t.getPrDiffSummary(s,v),t.getFileDiffs(s,v).catch(()=>void 0)]);return{pr:r,branch:w,diffSummary:a,fileDiffs:b,evidence:e,hideCiStatus:q.hideCiStatus}}catch{return{pr:r,branch:w,evidence:e,warning:"Diff statistics unavailable",hideCiStatus:q.hideCiStatus}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load merge review data"}}}async function q(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("IPhaseTimingRepository"),d=(await b.findByFeatureId(a)).map(a=>({agentRunId:a.agentRunId,phase:a.phase,startedAt:a.startedAt.toISOString(),completedAt:a.completedAt?.toISOString(),durationMs:null!=a.durationMs?Number(a.durationMs):void 0,waitingApprovalAt:a.waitingApprovalAt?.toISOString(),approvalWaitMs:null!=a.approvalWaitMs?Number(a.approvalWaitMs):void 0,inputTokens:null!=a.inputTokens?Number(a.inputTokens):void 0,outputTokens:null!=a.outputTokens?Number(a.outputTokens):void 0,cacheCreationInputTokens:null!=a.cacheCreationInputTokens?Number(a.cacheCreationInputTokens):void 0,cacheReadInputTokens:null!=a.cacheReadInputTokens?Number(a.cacheReadInputTokens):void 0,costUsd:null!=a.costUsd?Number(a.costUsd):void 0,numTurns:a.numTurns??void 0,durationApiMs:null!=a.durationApiMs?Number(a.durationApiMs):void 0,exitCode:a.exitCode??void 0,errorMessage:a.errorMessage??void 0,prompt:a.prompt??void 0})),e=await r(a);return{timings:d,rejectionFeedback:e}}catch(a){return{error:a instanceof Error?a.message:"Failed to load phase timings"}}}async function r(b){try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(b);if(!e?.specPath)return[];let{readFileSync:f}=await a.A(6714),{join:g}=await a.A(11105),h=(await a.A(29718)).default,i=f(g(e.specPath,"spec.yaml"),"utf-8"),j=h.load(i);if(!Array.isArray(j?.rejectionFeedback))return[];return j.rejectionFeedback.map(a=>({iteration:Number(a.iteration??1),message:String(a.message??""),phase:a.phase?String(a.phase):void 0,timestamp:a.timestamp?String(a.timestamp):void 0,attachments:Array.isArray(a.attachments)?a.attachments.map(String):void 0}))}catch{return[]}}async function s(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,actionItems:(a.actionItems??[]).map(a=>({name:a.name,description:a.description,acceptanceCriteria:(a.acceptanceCriteria??[]).map(a=>({description:a.description,verified:a.verified}))}))}))}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature plan"}}}async function t(a){if(!a?.trim())return{success:!1,error:"Feature id is required"};try{let b=(0,c.resolve)("RebaseFeatureOnMainUseCase");return await b.execute(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to rebase feature"}}}(0,d.ensureServerEntryExports)([p]),(0,b.registerServerReference)(p,"409abfcd63b783c9eedec3387ebbab63d253981d51",null),a.s(["getMergeReviewData",0,p],6542),(0,d.ensureServerEntryExports)([q]),(0,b.registerServerReference)(q,"403d1c2bfe14ed30868a92fb90cd0ae598ca83a8e2",null),a.s(["getFeaturePhaseTimings",0,q],73624),(0,d.ensureServerEntryExports)([s]),(0,b.registerServerReference)(s,"40d4ee88c3ba4ea5a417b3dffec3396063fad67145",null),a.s(["getFeaturePlan",0,s],12104),(0,d.ensureServerEntryExports)([t]),(0,b.registerServerReference)(t,"4076cb0ef940d97f91045e51bd6b9b848da3c62a35",null),a.s(["rebaseFeature",0,t],70319);var u=a.i(31747);async function v(a){try{let b=(0,c.resolve)("IFeatureRepository"),d=(0,c.resolve)("IAgentRunRepository"),e=(0,c.resolve)("IRepositoryRepository"),f=(0,c.resolve)("IGitPrService"),g=(0,c.resolve)("GetFeatureArtifactUseCase"),h=await b.findById(a);if(!h)return null;let i=h.agentRunId?await d.findById(h.agentRunId):null,[j,k,l,m]=await Promise.all([e.findByPath(h.repositoryPath).catch(()=>null),f.getDefaultBranch(h.repositoryPath).catch(()=>"main"),g.execute(a).catch(()=>null),f.getRemoteUrl(h.repositoryPath).catch(()=>null)]),n=(0,c.resolve)("LoadSettingsUseCase"),{workflow:o}=await n.execute();return(0,u.buildFeatureNodeData)(h,i,{repositoryName:j?.name,baseBranch:k,oneLiner:l?.oneLiner,remoteUrl:m??void 0,enableEvidence:o.enableEvidence,commitEvidence:o.commitEvidence,hideCiStatus:o.hideCiStatus})}catch{return null}}async function w(a){if(!a?.trim())return{success:!1,error:"Feature id is required"};try{let b=(0,c.resolve)("GetBranchSyncStatusUseCase"),d=await b.execute(a);return{success:!0,data:{...d,checkedAt:new Date().toISOString()}}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to get branch sync status"}}}(0,d.ensureServerEntryExports)([v]),(0,b.registerServerReference)(v,"402d0805a3b66cb23f39690eb122cf3182c643a6e3",null),a.s(["getFeatureDrawerData",0,v],54433),(0,d.ensureServerEntryExports)([w]),(0,b.registerServerReference)(w,"4050e9790ac14e8c8cb9529131772d30ebc65561ac",null),a.s(["getBranchSyncStatus",0,w],59020)}];
1
+ module.exports=[61402,76052,13008,74607,6542,73624,12104,70319,54433,59020,a=>{"use strict";var b=a.i(2211),c=a.i(96380),d=a.i(50961);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,d){if(!a.trim())return{rejected:!1,error:"Feature id is required"};if(!b.trim())return{rejected:!1,error:"Feedback is required"};try{let e=(0,c.resolve)("IFeatureRepository"),f=await e.findById(a);if(!f)return{rejected:!1,error:"Feature not found"};if(!f.agentRunId)return{rejected:!1,error:"Feature has no agent run"};let g=(0,c.resolve)("RejectAgentRunUseCase"),h=await g.execute(f.agentRunId,b,d);if(!h.rejected)return{rejected:!1,error:h.reason};return{rejected:!0,iteration:h.iteration,iterationWarning:h.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"}}}(0,d.ensureServerEntryExports)([e]),(0,b.registerServerReference)(e,"60a39526da8c492ff9e2065816d05307fbe347b9b7",null),a.s(["approveFeature",0,e],61402),(0,d.ensureServerEntryExports)([f]),(0,b.registerServerReference)(f,"708e18a22a6f26befe1bad77401bbc602d8883e33b",null),a.s(["rejectFeature",0,f],76052),(0,d.ensureServerEntryExports)([g]),(0,b.registerServerReference)(g,"4077150002a1a8edcbaf6497304fba3393ed3c8593",null),a.s(["getFeatureArtifact",0,g],13008),(0,d.ensureServerEntryExports)([h]),(0,b.registerServerReference)(h,"4002e6e138eaf949dbe53ba7aaf53a6dcc3da3f11a",null),a.s(["getResearchArtifact",0,h],74607);var i=a.i(66680),j=a.i(2157),k=a.i(50227);function l(a){try{return(0,j.realpathSync)(a)}catch{return null}}function m(a,b){let c=b.replace(/\\/g,"/"),d=a.replace(/\\/g,"/");return d===c||d.startsWith(`${c}/`)}a.i(12714),a.i(1442);var n=a.i(29918),o=a.i(83771);async function p(a){if(!a.trim())return{error:"Feature id is required"};try{var b,d;let e,f,g=(0,c.resolve)("IFeatureRepository"),h=await g.findById(a);if(!h)return{error:"Feature not found"};let p=(0,c.resolve)("LoadSettingsUseCase"),{workflow:q}=await p.execute(),r=h.pr?{url:h.pr.url,number:h.pr.number,status:h.pr.status,commitHash:h.pr.commitHash,ciStatus:h.pr.ciStatus,mergeable:h.pr.mergeable}:void 0,s=h.worktreePath??(h.repositoryPath&&h.branch?(0,n.computeWorktreePath)(h.repositoryPath,h.branch):null),t=(0,c.resolve)("IGitPrService"),u=s??h.repositoryPath??null,v="main";if(u)try{v=await t.getDefaultBranch(u)}catch{}let w=h.branch?{source:h.branch,target:v}:void 0,x=h.repositoryPath?(b=h.repositoryPath,f=(0,i.createHash)("sha256").update(b).digest("hex").slice(0,16),(0,k.join)((0,o.getShipitAiHomeDir)(),"repos",f,"evidence",a).replace(/\\/g,"/")):s?(0,k.join)((0,k.dirname)((0,k.dirname)(s)),"evidence",a).replace(/\\/g,"/"):null;if(x)try{let a=l((0,o.getShipitAiHomeDir)()),b=l(x);if(a&&b&&m(b,a)){let a=l((0,k.join)(b,"manifest.json"));if(a&&m(a,b)){let b=(d=JSON.parse((0,j.readFileSync)(a,"utf-8")),d.map(a=>{if(a.relativePath.startsWith("/"))return a;let b=(0,k.basename)(a.relativePath),c=(0,k.join)(x,b).replace(/\\/g,"/");return{...a,relativePath:c}})),c=new Set;e=b.filter(a=>{let b=`${a.type}:${a.relativePath}`;return!c.has(b)&&(c.add(b),!0)})}}}catch{}if(!s)return{pr:r,branch:w,evidence:e,warning:r?void 0:"No PR or diff data available",hideCiStatus:q.hideCiStatus};try{let[a,b]=await Promise.all([t.getPrDiffSummary(s,v),t.getFileDiffs(s,v).catch(()=>void 0)]);return{pr:r,branch:w,diffSummary:a,fileDiffs:b,evidence:e,hideCiStatus:q.hideCiStatus}}catch{return{pr:r,branch:w,evidence:e,warning:"Diff statistics unavailable",hideCiStatus:q.hideCiStatus}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load merge review data"}}}async function q(a){if(!a.trim())return{error:"Feature id is required"};try{let b=(0,c.resolve)("IPhaseTimingRepository"),d=(await b.findByFeatureId(a)).map(a=>({agentRunId:a.agentRunId,phase:a.phase,startedAt:a.startedAt.toISOString(),completedAt:a.completedAt?.toISOString(),durationMs:null!=a.durationMs?Number(a.durationMs):void 0,waitingApprovalAt:a.waitingApprovalAt?.toISOString(),approvalWaitMs:null!=a.approvalWaitMs?Number(a.approvalWaitMs):void 0,inputTokens:null!=a.inputTokens?Number(a.inputTokens):void 0,outputTokens:null!=a.outputTokens?Number(a.outputTokens):void 0,cacheCreationInputTokens:null!=a.cacheCreationInputTokens?Number(a.cacheCreationInputTokens):void 0,cacheReadInputTokens:null!=a.cacheReadInputTokens?Number(a.cacheReadInputTokens):void 0,costUsd:null!=a.costUsd?Number(a.costUsd):void 0,numTurns:a.numTurns??void 0,durationApiMs:null!=a.durationApiMs?Number(a.durationApiMs):void 0,exitCode:a.exitCode??void 0,errorMessage:a.errorMessage??void 0,prompt:a.prompt??void 0})),e=await r(a);return{timings:d,rejectionFeedback:e}}catch(a){return{error:a instanceof Error?a.message:"Failed to load phase timings"}}}async function r(b){try{let d=(0,c.resolve)("IFeatureRepository"),e=await d.findById(b);if(!e?.specPath)return[];let{readFileSync:f}=await a.A(6714),{join:g}=await a.A(11105),h=(await a.A(29718)).default,i=f(g(e.specPath,"spec.yaml"),"utf-8"),j=h.load(i);if(!Array.isArray(j?.rejectionFeedback))return[];return j.rejectionFeedback.map(a=>({iteration:Number(a.iteration??1),message:String(a.message??""),phase:a.phase?String(a.phase):void 0,timestamp:a.timestamp?String(a.timestamp):void 0,attachments:Array.isArray(a.attachments)?a.attachments.map(String):void 0}))}catch{return[]}}async function s(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,actionItems:(a.actionItems??[]).map(a=>({name:a.name,description:a.description,acceptanceCriteria:(a.acceptanceCriteria??[]).map(a=>({description:a.description,verified:a.verified}))}))}))}}}catch(a){return{error:a instanceof Error?a.message:"Failed to load feature plan"}}}async function t(a){if(!a?.trim())return{success:!1,error:"Feature id is required"};try{let b=(0,c.resolve)("RebaseFeatureOnMainUseCase");return await b.execute(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to rebase feature"}}}(0,d.ensureServerEntryExports)([p]),(0,b.registerServerReference)(p,"400cd55af942bf34c26e99c0467aa287e5cc5bfdb6",null),a.s(["getMergeReviewData",0,p],6542),(0,d.ensureServerEntryExports)([q]),(0,b.registerServerReference)(q,"40dfeed38f7bdbc0bacd1c199a9394d6af8f304535",null),a.s(["getFeaturePhaseTimings",0,q],73624),(0,d.ensureServerEntryExports)([s]),(0,b.registerServerReference)(s,"400a93df63fa24169c58545ef7cc11013f1feb1658",null),a.s(["getFeaturePlan",0,s],12104),(0,d.ensureServerEntryExports)([t]),(0,b.registerServerReference)(t,"40952285f4affa7d413c7a5a22f56c3d2d2c54e8c1",null),a.s(["rebaseFeature",0,t],70319);var u=a.i(31747);async function v(a){try{let b=(0,c.resolve)("IFeatureRepository"),d=(0,c.resolve)("IAgentRunRepository"),e=(0,c.resolve)("IRepositoryRepository"),f=(0,c.resolve)("IGitPrService"),g=(0,c.resolve)("GetFeatureArtifactUseCase"),h=await b.findById(a);if(!h)return null;let i=h.agentRunId?await d.findById(h.agentRunId):null,[j,k,l,m]=await Promise.all([e.findByPath(h.repositoryPath).catch(()=>null),f.getDefaultBranch(h.repositoryPath).catch(()=>"main"),g.execute(a).catch(()=>null),f.getRemoteUrl(h.repositoryPath).catch(()=>null)]),n=(0,c.resolve)("LoadSettingsUseCase"),{workflow:o}=await n.execute();return(0,u.buildFeatureNodeData)(h,i,{repositoryName:j?.name,baseBranch:k,oneLiner:l?.oneLiner,remoteUrl:m??void 0,enableEvidence:o.enableEvidence,commitEvidence:o.commitEvidence,hideCiStatus:o.hideCiStatus})}catch{return null}}async function w(a){if(!a?.trim())return{success:!1,error:"Feature id is required"};try{let b=(0,c.resolve)("GetBranchSyncStatusUseCase"),d=await b.execute(a);return{success:!0,data:{...d,checkedAt:new Date().toISOString()}}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to get branch sync status"}}}(0,d.ensureServerEntryExports)([v]),(0,b.registerServerReference)(v,"40757a16725be9200875329ee4f8661591d7a80351",null),a.s(["getFeatureDrawerData",0,v],54433),(0,d.ensureServerEntryExports)([w]),(0,b.registerServerReference)(w,"404aa477e187da5bac86afbe2e86ae1d44eb88aaa8",null),a.s(["getBranchSyncStatus",0,w],59020)}];
2
2
 
3
3
  //# sourceMappingURL=src_presentation_web_app_actions_approve-feature_ts_0pjb_re._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[84095,56799,80496,93225,41872,9959,79124,29207,10528,50845,26604,54723,18942,42886,49560,39353,a=>{"use strict";var b=a.i(2211),c=a.i(50227),d=a.i(96380),e=a.i(50961);async function f(a){let{repositoryPath:b,branch:e}=a;if(!b||!(0,c.isAbsolute)(b))return{success:!1,error:"repositoryPath must be an absolute path"};let f=(0,d.resolve)("LoadSettingsUseCase"),g=(await f.execute()).environment.defaultEditor,h=(0,d.resolve)("LaunchIdeUseCase"),i=await h.execute({editorId:g,repositoryPath:b,branch:e,checkAvailability:!0});return i.ok?{success:!0,editor:i.editorName,path:i.worktreePath}:{success:!1,error:i.message}}(0,e.ensureServerEntryExports)([f]),(0,b.registerServerReference)(f,"40d591b1c07cd4d8255ebb865737f680509c6500d0",null),a.s(["openIde",0,f],84095);var g=a.i(2157),h=a.i(60526),i=a.i(74533);a.i(1442);var j=a.i(29918);let k={darwin:{cmd:"open",args:a=>["-a","Terminal",a]},linux:{cmd:"x-terminal-emulator",args:a=>[`--working-directory=${a}`]},win32:{cmd:"cmd.exe",args:a=>["/c","start","powershell","-NoExit","-Command",`Set-Location "${a}"`]}};async function l(a){let{repositoryPath:b,branch:e}=a;if(!b||!(0,c.isAbsolute)(b))return{success:!1,error:"repositoryPath must be an absolute path"};try{let a=(0,d.resolve)("LoadSettingsUseCase"),c=await a.execute(),f=c.environment.shellPreference,l=c.environment.terminalPreference??"system",m=function(a,b){try{let c=b?(0,j.computeWorktreePath)(a,b):a;return(0,g.realpathSync)(c)}catch{return null}}(b,e);if(!m)return{success:!1,error:"Path does not exist"};if("system"!==l)try{let a=(0,d.resolve)("IToolInstallerService").getTerminalOpenConfig(l);if(a?.openDirectory.includes("{dir}")){if(a.shell){let b=`'${m.replace(/'/g,"'\\''")}'`,c=a.openDirectory.replaceAll("{dir}",b),d=(0,i.spawn)(c,[],{detached:!0,stdio:"ignore",shell:!0});d.on("error",()=>void 0),d.unref()}else{let b=a.openDirectory.split(/\s+/).filter(Boolean),c=b[0],d=b.slice(1).map(a=>a.replaceAll("{dir}",m)),e=(0,i.spawn)(c,d,{detached:!0,stdio:"ignore"});e.on("error",()=>void 0),e.unref()}return{success:!0,path:m,shell:f}}}catch{}let n=k[(0,h.platform)()];if(!n)return{success:!1,error:`Unsupported platform: ${(0,h.platform)()}`};let o=(0,i.spawn)(n.cmd,n.args(m),{detached:!0,stdio:"ignore"});return o.on("error",()=>void 0),o.unref(),{success:!0,path:m,shell:f}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to open shell"}}}(0,e.ensureServerEntryExports)([l]),(0,b.registerServerReference)(l,"4010dc860d74ee20206fd729af2a6d1d60e23ad9f9",null),a.s(["openShell",0,l],56799);let m={darwin:{cmd:"open",args:a=>[a]},linux:{cmd:"xdg-open",args:a=>[a]},win32:{cmd:"explorer",args:a=>[a]}};async function n(a){if(!a||!(0,c.isAbsolute)(a))return{success:!1,error:"repositoryPath must be an absolute path"};try{let b;try{b=(0,g.realpathSync)(a)}catch{return{success:!1,error:"Directory not found"}}let d=m[(0,h.platform)()];if(!d)return{success:!1,error:`Unsupported platform: ${(0,h.platform)()}`};let e=(0,c.normalize)(b),f=(0,i.spawn)(d.cmd,d.args(e),{detached:!0,stdio:"ignore"});return f.on("error",()=>void 0),f.unref(),{success:!0,path:b}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to open folder"}}}async function o(a){if(!a?.trim())return{success:!1,error:"Repository id is required"};try{let b=(0,d.resolve)("SyncRepositoryMainUseCase");return await b.execute(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to sync repository"}}}async function p(){try{let a=(0,d.resolve)("LoadSettingsUseCase");return(await a.execute()).onboardingComplete}catch{return!1}}(0,e.ensureServerEntryExports)([n]),(0,b.registerServerReference)(n,"406b000bf868ec884928cdb9575bb56ea8a0c86c09",null),a.s(["openFolder",0,n],80496),(0,e.ensureServerEntryExports)([o]),(0,b.registerServerReference)(o,"404a49f9a14a920f10930d20c298feb588c435dd04",null),a.s(["syncRepository",0,o],93225),(0,e.ensureServerEntryExports)([p]),(0,b.registerServerReference)(p,"00aa4df98bb52f8195a1c5d56b7a3f00dc982390c6",null),a.s(["isAgentSetupComplete",0,p],41872);var q=a.i(37512);let r={"claude-code":"Claude Code","codex-cli":"Codex CLI","copilot-cli":"GitHub Copilot CLI",cursor:"Cursor CLI","gemini-cli":"Gemini CLI","rovo-dev":"Rovo Dev CLI"},s={"claude-code":"claude-code","codex-cli":"codex-cli","copilot-cli":"copilot-cli",cursor:"cursor-cli","gemini-cli":"gemini-cli","rovo-dev":"rovo-dev"},t={"claude-code":"claude","codex-cli":"codex","copilot-cli":"copilot",cursor:"cursor-agent","gemini-cli":"gemini","rovo-dev":"acli"};function u(a,b){return new Promise(c=>{let d,e;switch(a){case"claude-code":d=b,e=["auth","status"];break;case"cursor":d=b,e=["status"];break;case"codex-cli":c(!1);return;case"copilot-cli":default:c(!0);return;case"rovo-dev":{let a=q.IS_WINDOWS?{timeout:5e3,windowsHide:!0}:{timeout:5e3};(0,i.execFile)("acli",["rovodev","auth","status"],a,a=>{c(!a)});return}}try{let a=q.IS_WINDOWS?{timeout:5e3,windowsHide:!0}:{timeout:5e3};(0,i.execFile)(d,e,a,a=>{c(!a)})}catch{c(!1)}})}async function v(){let a;try{let b=(0,d.resolve)("LoadSettingsUseCase");a=(await b.execute()).agent.type}catch{return{agentType:"unknown",installed:!1,authenticated:!1,label:"Unknown",binaryName:null,installCommand:null,authCommand:null}}let b=r[a]??a,e=s[a]??null,f=t[a]??null;if(!e)return{agentType:a,installed:!0,authenticated:!0,label:b,binaryName:null,installCommand:null,authCommand:null};let i=!1,j=null;try{let a=(0,d.resolve)("ListToolsUseCase"),b=(await a.execute()).find(a=>a.id===e);i=b?.status.status==="available",j=b?.installCommand??null}catch{i=!1}if(!i)return{agentType:a,installed:!1,authenticated:!1,label:b,binaryName:f,installCommand:j,authCommand:f?`Install ${b} first`:null};let k=function(a){let b=(0,h.homedir)();switch(a){case"claude-code":{if(process.env.ANTHROPIC_API_KEY||process.env.CLAUDE_CODE_USE_BEDROCK||process.env.CLAUDE_CODE_USE_VERTEX||process.env.CLAUDE_CODE_OAUTH_TOKEN)return"env-var";let a=(0,c.join)(b,".claude",".credentials.json");return!!(0,g.existsSync)(a)&&"file"}case"codex-cli":if(process.env.OPENAI_API_KEY)return"env-var";return!1;case"cursor":{if(process.env.CURSOR_API_KEY)return"env-var";let a=(0,c.join)(b,".cursor");return!!(0,g.existsSync)(a)&&"file"}case"gemini-cli":{if(process.env.GEMINI_API_KEY||process.env.GOOGLE_API_KEY||process.env.GOOGLE_APPLICATION_CREDENTIALS)return"env-var";let a=(0,c.join)(b,".gemini","google_accounts.json");return!!(0,g.existsSync)(a)&&"file"}case"copilot-cli":{if(process.env.COPILOT_GITHUB_TOKEN||process.env.GH_TOKEN||process.env.GITHUB_TOKEN)return"env-var";let a=process.env.COPILOT_HOME?(0,c.join)(process.env.COPILOT_HOME,"config.json"):(0,c.join)(b,".copilot","config.json");return!!(0,g.existsSync)(a)&&"file"}case"rovo-dev":{if(process.env.ATLASSIAN_API_TOKEN)return"env-var";let a=(0,c.join)(b,".acli");return!!(0,g.existsSync)(a)&&"file"}default:return"env-var"}}(a);if("env-var"===k)return{agentType:a,installed:!0,authenticated:!0,label:b,binaryName:f,installCommand:j,authCommand:null};if("file"===k){let c=!0;return f&&(c=await u(a,f)),{agentType:a,installed:!0,authenticated:c,label:b,binaryName:f,installCommand:j,authCommand:c?null:f}}return f&&await u(a,f)?{agentType:a,installed:!0,authenticated:!0,label:b,binaryName:f,installCommand:j,authCommand:null}:{agentType:a,installed:!0,authenticated:!1,label:b,binaryName:f,installCommand:j,authCommand:f}}function w(a,b){return new Promise(c=>{try{let d=q.IS_WINDOWS?{timeout:5e3,windowsHide:!0}:{timeout:5e3};(0,i.execFile)(a,b,d,(a,b)=>{if(a)return void c({installed:!1,version:null});let d=b.match(/(\d+\.\d+(?:\.\d+)?)/);c({installed:!0,version:d?.[1]??null})})}catch{c({installed:!1,version:null})}})}async function x(){let[a,b,c]=await Promise.all([w("git",["--version"]),w("gh",["--version"]),(async()=>{try{let a=(0,d.resolve)("ListToolsUseCase");return await a.execute()}catch{return[]}})()]),e=c.find(a=>"git"===a.id),f=c.find(a=>"gh"===a.id);return{git:{...a,installCommand:e?.installCommand??null,installUrl:e?.website??"https://git-scm.com"},gh:{...b,installCommand:f?.installCommand??null,installUrl:f?.website??"https://cli.github.com"}}}async function y(a){let b=(0,d.resolve)("IFeatureRepository"),c=await b.findById(a);return c?{name:c.name,description:c.description}:null}async function z(a){if(!a?.trim())return{error:"id is required"};try{let b=(0,d.resolve)("ArchiveFeatureUseCase");return{feature:await b.execute(a)}}catch(a){return{error:a instanceof Error?a.message:"Failed to archive feature"}}}async function A(a,b,c,e){if(!a?.trim())return{error:"id is required"};try{let f=(0,d.resolve)("DeleteFeatureUseCase"),g={};return void 0!==b&&(g.cleanup=b),void 0!==c&&(g.cascadeDelete=c),void 0!==e&&(g.closePr=e),{feature:Object.keys(g).length>0?await f.execute(a,g):await f.execute(a)}}catch(a){return{error:a instanceof Error?a.message:"Failed to delete feature"}}}async function B(a){if(!a.trim())return{resumed:!1,error:"Feature id is required"};try{let b=(0,d.resolve)("ResumeFeatureUseCase");return await b.execute(a),{resumed:!0}}catch(a){return{resumed:!1,error:a instanceof Error?a.message:"Failed to resume feature"}}}async function C(a){if(!a.trim())return{started:!1,error:"Feature id is required"};try{let b=(0,d.resolve)("StartFeatureUseCase");return await b.execute(a),{started:!0}}catch(a){return{started:!1,error:a instanceof Error?a.message:"Failed to start feature"}}}async function D(a){if(!a.trim())return{stopped:!1,error:"Feature id is required"};try{let b=(0,d.resolve)("IAgentRunRepository"),c=(await b.list()).find(b=>b.featureId===a&&"completed"!==b.status&&"failed"!==b.status&&"interrupted"!==b.status&&"cancelled"!==b.status);if(!c)return{stopped:!1,error:"No active agent run found for this feature"};let e=(0,d.resolve)("StopAgentRunUseCase"),f=await e.execute(c.id);if(!f.stopped)return{stopped:!1,error:f.reason};return{stopped:!0}}catch(a){return{stopped:!1,error:a instanceof Error?a.message:"Failed to stop agent"}}}async function E(a){if(!a?.trim())return{error:"id is required"};try{let b=(0,d.resolve)("UnarchiveFeatureUseCase");return{feature:await b.execute(a)}}catch(a){return{error:a instanceof Error?a.message:"Failed to unarchive feature"}}}async function F(a){let{path:b,name:c}=a;if(!b?.trim())return{error:"path is required"};try{let a=(0,d.resolve)("AddRepositoryUseCase");return{repository:await a.execute({path:b,name:c})}}catch(a){return{error:a instanceof Error?a.message:"Failed to add repository"}}}async function G(a){if(!a?.trim())return{success:!1,error:"id is required"};try{let b=(0,d.resolve)("DeleteRepositoryUseCase");return await b.execute(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to delete repository"}}}(0,e.ensureServerEntryExports)([v]),(0,b.registerServerReference)(v,"00b39311c3b49e63ca702d96a9abc8ffb4587e694c",null),a.s(["checkAgentAuth",0,v],9959),(0,e.ensureServerEntryExports)([x]),(0,b.registerServerReference)(x,"00e23df8feeee946b4ff1533230330b1c798a885bc",null),a.s(["checkToolStatus",0,x],79124),(0,e.ensureServerEntryExports)([y]),(0,b.registerServerReference)(y,"403e3cf2192e93c64ec6bb28c0ee1b3decb83e6faf",null),a.s(["getFeatureMetadata",0,y],29207),(0,e.ensureServerEntryExports)([z]),(0,b.registerServerReference)(z,"4075fcd9a640859a1d9db7428175134a488dbd2c96",null),a.s(["archiveFeature",0,z],10528),(0,e.ensureServerEntryExports)([A]),(0,b.registerServerReference)(A,"78a58ade378c52c1e58a2d74c3a23f064ebe51ded5",null),a.s(["deleteFeature",0,A],50845),(0,e.ensureServerEntryExports)([B]),(0,b.registerServerReference)(B,"4027e5dad04dbaef13ce3b498018f00b8db9e5851e",null),a.s(["resumeFeature",0,B],26604),(0,e.ensureServerEntryExports)([C]),(0,b.registerServerReference)(C,"40674141e58e40ef789181a00a9ea44950e33d5609",null),a.s(["startFeature",0,C],54723),(0,e.ensureServerEntryExports)([D]),(0,b.registerServerReference)(D,"402451d017667d3e4ce8b9918962f34114fa5362c9",null),a.s(["stopFeature",0,D],18942),(0,e.ensureServerEntryExports)([E]),(0,b.registerServerReference)(E,"401194b480db55d85ed5a05aa4f55fb3922bbfbae5",null),a.s(["unarchiveFeature",0,E],42886),(0,e.ensureServerEntryExports)([F]),(0,b.registerServerReference)(F,"4050506e010d7da3cdb6eea0c8eca46b406aa3d63b",null),a.s(["addRepository",0,F],49560),(0,e.ensureServerEntryExports)([G]),(0,b.registerServerReference)(G,"4007aa7e083f221c2d7f7f3831ea3b907ed234e4e3",null),a.s(["deleteRepository",0,G],39353)}];
1
+ module.exports=[84095,56799,80496,93225,41872,9959,79124,29207,10528,50845,26604,54723,18942,42886,49560,39353,a=>{"use strict";var b=a.i(2211),c=a.i(50227),d=a.i(96380),e=a.i(50961);async function f(a){let{repositoryPath:b,branch:e}=a;if(!b||!(0,c.isAbsolute)(b))return{success:!1,error:"repositoryPath must be an absolute path"};let f=(0,d.resolve)("LoadSettingsUseCase"),g=(await f.execute()).environment.defaultEditor,h=(0,d.resolve)("LaunchIdeUseCase"),i=await h.execute({editorId:g,repositoryPath:b,branch:e,checkAvailability:!0});return i.ok?{success:!0,editor:i.editorName,path:i.worktreePath}:{success:!1,error:i.message}}(0,e.ensureServerEntryExports)([f]),(0,b.registerServerReference)(f,"403b50818c4c8a3d6d430ae3439eb3037c4ca54755",null),a.s(["openIde",0,f],84095);var g=a.i(2157),h=a.i(60526),i=a.i(74533);a.i(1442);var j=a.i(29918);let k={darwin:{cmd:"open",args:a=>["-a","Terminal",a]},linux:{cmd:"x-terminal-emulator",args:a=>[`--working-directory=${a}`]},win32:{cmd:"cmd.exe",args:a=>["/c","start","powershell","-NoExit","-Command",`Set-Location "${a}"`]}};async function l(a){let{repositoryPath:b,branch:e}=a;if(!b||!(0,c.isAbsolute)(b))return{success:!1,error:"repositoryPath must be an absolute path"};try{let a=(0,d.resolve)("LoadSettingsUseCase"),c=await a.execute(),f=c.environment.shellPreference,l=c.environment.terminalPreference??"system",m=function(a,b){try{let c=b?(0,j.computeWorktreePath)(a,b):a;return(0,g.realpathSync)(c)}catch{return null}}(b,e);if(!m)return{success:!1,error:"Path does not exist"};if("system"!==l)try{let a=(0,d.resolve)("IToolInstallerService").getTerminalOpenConfig(l);if(a?.openDirectory.includes("{dir}")){if(a.shell){let b=`'${m.replace(/'/g,"'\\''")}'`,c=a.openDirectory.replaceAll("{dir}",b),d=(0,i.spawn)(c,[],{detached:!0,stdio:"ignore",shell:!0});d.on("error",()=>void 0),d.unref()}else{let b=a.openDirectory.split(/\s+/).filter(Boolean),c=b[0],d=b.slice(1).map(a=>a.replaceAll("{dir}",m)),e=(0,i.spawn)(c,d,{detached:!0,stdio:"ignore"});e.on("error",()=>void 0),e.unref()}return{success:!0,path:m,shell:f}}}catch{}let n=k[(0,h.platform)()];if(!n)return{success:!1,error:`Unsupported platform: ${(0,h.platform)()}`};let o=(0,i.spawn)(n.cmd,n.args(m),{detached:!0,stdio:"ignore"});return o.on("error",()=>void 0),o.unref(),{success:!0,path:m,shell:f}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to open shell"}}}(0,e.ensureServerEntryExports)([l]),(0,b.registerServerReference)(l,"40792ab294bf027b28044da4c8ef078009d30f6a86",null),a.s(["openShell",0,l],56799);let m={darwin:{cmd:"open",args:a=>[a]},linux:{cmd:"xdg-open",args:a=>[a]},win32:{cmd:"explorer",args:a=>[a]}};async function n(a){if(!a||!(0,c.isAbsolute)(a))return{success:!1,error:"repositoryPath must be an absolute path"};try{let b;try{b=(0,g.realpathSync)(a)}catch{return{success:!1,error:"Directory not found"}}let d=m[(0,h.platform)()];if(!d)return{success:!1,error:`Unsupported platform: ${(0,h.platform)()}`};let e=(0,c.normalize)(b),f=(0,i.spawn)(d.cmd,d.args(e),{detached:!0,stdio:"ignore"});return f.on("error",()=>void 0),f.unref(),{success:!0,path:b}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to open folder"}}}async function o(a){if(!a?.trim())return{success:!1,error:"Repository id is required"};try{let b=(0,d.resolve)("SyncRepositoryMainUseCase");return await b.execute(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to sync repository"}}}async function p(){try{let a=(0,d.resolve)("LoadSettingsUseCase");return(await a.execute()).onboardingComplete}catch{return!1}}(0,e.ensureServerEntryExports)([n]),(0,b.registerServerReference)(n,"4014a40a31cf611500dd14f1ee4409c3279343d678",null),a.s(["openFolder",0,n],80496),(0,e.ensureServerEntryExports)([o]),(0,b.registerServerReference)(o,"40bcce76e841141cd8d5df1027db29237885f36a41",null),a.s(["syncRepository",0,o],93225),(0,e.ensureServerEntryExports)([p]),(0,b.registerServerReference)(p,"00e4d0fc6ed963b004c29d432fe764d25f0640bcc5",null),a.s(["isAgentSetupComplete",0,p],41872);var q=a.i(37512);let r={"claude-code":"Claude Code","codex-cli":"Codex CLI","copilot-cli":"GitHub Copilot CLI",cursor:"Cursor CLI","gemini-cli":"Gemini CLI","rovo-dev":"Rovo Dev CLI"},s={"claude-code":"claude-code","codex-cli":"codex-cli","copilot-cli":"copilot-cli",cursor:"cursor-cli","gemini-cli":"gemini-cli","rovo-dev":"rovo-dev"},t={"claude-code":"claude","codex-cli":"codex","copilot-cli":"copilot",cursor:"cursor-agent","gemini-cli":"gemini","rovo-dev":"acli"};function u(a,b){return new Promise(c=>{let d,e;switch(a){case"claude-code":d=b,e=["auth","status"];break;case"cursor":d=b,e=["status"];break;case"codex-cli":c(!1);return;case"copilot-cli":default:c(!0);return;case"rovo-dev":{let a=q.IS_WINDOWS?{timeout:5e3,windowsHide:!0}:{timeout:5e3};(0,i.execFile)("acli",["rovodev","auth","status"],a,a=>{c(!a)});return}}try{let a=q.IS_WINDOWS?{timeout:5e3,windowsHide:!0}:{timeout:5e3};(0,i.execFile)(d,e,a,a=>{c(!a)})}catch{c(!1)}})}async function v(){let a;try{let b=(0,d.resolve)("LoadSettingsUseCase");a=(await b.execute()).agent.type}catch{return{agentType:"unknown",installed:!1,authenticated:!1,label:"Unknown",binaryName:null,installCommand:null,authCommand:null}}let b=r[a]??a,e=s[a]??null,f=t[a]??null;if(!e)return{agentType:a,installed:!0,authenticated:!0,label:b,binaryName:null,installCommand:null,authCommand:null};let i=!1,j=null;try{let a=(0,d.resolve)("ListToolsUseCase"),b=(await a.execute()).find(a=>a.id===e);i=b?.status.status==="available",j=b?.installCommand??null}catch{i=!1}if(!i)return{agentType:a,installed:!1,authenticated:!1,label:b,binaryName:f,installCommand:j,authCommand:f?`Install ${b} first`:null};let k=function(a){let b=(0,h.homedir)();switch(a){case"claude-code":{if(process.env.ANTHROPIC_API_KEY||process.env.CLAUDE_CODE_USE_BEDROCK||process.env.CLAUDE_CODE_USE_VERTEX||process.env.CLAUDE_CODE_OAUTH_TOKEN)return"env-var";let a=(0,c.join)(b,".claude",".credentials.json");return!!(0,g.existsSync)(a)&&"file"}case"codex-cli":if(process.env.OPENAI_API_KEY)return"env-var";return!1;case"cursor":{if(process.env.CURSOR_API_KEY)return"env-var";let a=(0,c.join)(b,".cursor");return!!(0,g.existsSync)(a)&&"file"}case"gemini-cli":{if(process.env.GEMINI_API_KEY||process.env.GOOGLE_API_KEY||process.env.GOOGLE_APPLICATION_CREDENTIALS)return"env-var";let a=(0,c.join)(b,".gemini","google_accounts.json");return!!(0,g.existsSync)(a)&&"file"}case"copilot-cli":{if(process.env.COPILOT_GITHUB_TOKEN||process.env.GH_TOKEN||process.env.GITHUB_TOKEN)return"env-var";let a=process.env.COPILOT_HOME?(0,c.join)(process.env.COPILOT_HOME,"config.json"):(0,c.join)(b,".copilot","config.json");return!!(0,g.existsSync)(a)&&"file"}case"rovo-dev":{if(process.env.ATLASSIAN_API_TOKEN)return"env-var";let a=(0,c.join)(b,".acli");return!!(0,g.existsSync)(a)&&"file"}default:return"env-var"}}(a);if("env-var"===k)return{agentType:a,installed:!0,authenticated:!0,label:b,binaryName:f,installCommand:j,authCommand:null};if("file"===k){let c=!0;return f&&(c=await u(a,f)),{agentType:a,installed:!0,authenticated:c,label:b,binaryName:f,installCommand:j,authCommand:c?null:f}}return f&&await u(a,f)?{agentType:a,installed:!0,authenticated:!0,label:b,binaryName:f,installCommand:j,authCommand:null}:{agentType:a,installed:!0,authenticated:!1,label:b,binaryName:f,installCommand:j,authCommand:f}}function w(a,b){return new Promise(c=>{try{let d=q.IS_WINDOWS?{timeout:5e3,windowsHide:!0}:{timeout:5e3};(0,i.execFile)(a,b,d,(a,b)=>{if(a)return void c({installed:!1,version:null});let d=b.match(/(\d+\.\d+(?:\.\d+)?)/);c({installed:!0,version:d?.[1]??null})})}catch{c({installed:!1,version:null})}})}async function x(){let[a,b,c]=await Promise.all([w("git",["--version"]),w("gh",["--version"]),(async()=>{try{let a=(0,d.resolve)("ListToolsUseCase");return await a.execute()}catch{return[]}})()]),e=c.find(a=>"git"===a.id),f=c.find(a=>"gh"===a.id);return{git:{...a,installCommand:e?.installCommand??null,installUrl:e?.website??"https://git-scm.com"},gh:{...b,installCommand:f?.installCommand??null,installUrl:f?.website??"https://cli.github.com"}}}async function y(a){let b=(0,d.resolve)("IFeatureRepository"),c=await b.findById(a);return c?{name:c.name,description:c.description}:null}async function z(a){if(!a?.trim())return{error:"id is required"};try{let b=(0,d.resolve)("ArchiveFeatureUseCase");return{feature:await b.execute(a)}}catch(a){return{error:a instanceof Error?a.message:"Failed to archive feature"}}}async function A(a,b,c,e){if(!a?.trim())return{error:"id is required"};try{let f=(0,d.resolve)("DeleteFeatureUseCase"),g={};return void 0!==b&&(g.cleanup=b),void 0!==c&&(g.cascadeDelete=c),void 0!==e&&(g.closePr=e),{feature:Object.keys(g).length>0?await f.execute(a,g):await f.execute(a)}}catch(a){return{error:a instanceof Error?a.message:"Failed to delete feature"}}}async function B(a){if(!a.trim())return{resumed:!1,error:"Feature id is required"};try{let b=(0,d.resolve)("ResumeFeatureUseCase");return await b.execute(a),{resumed:!0}}catch(a){return{resumed:!1,error:a instanceof Error?a.message:"Failed to resume feature"}}}async function C(a){if(!a.trim())return{started:!1,error:"Feature id is required"};try{let b=(0,d.resolve)("StartFeatureUseCase");return await b.execute(a),{started:!0}}catch(a){return{started:!1,error:a instanceof Error?a.message:"Failed to start feature"}}}async function D(a){if(!a.trim())return{stopped:!1,error:"Feature id is required"};try{let b=(0,d.resolve)("IAgentRunRepository"),c=(await b.list()).find(b=>b.featureId===a&&"completed"!==b.status&&"failed"!==b.status&&"interrupted"!==b.status&&"cancelled"!==b.status);if(!c)return{stopped:!1,error:"No active agent run found for this feature"};let e=(0,d.resolve)("StopAgentRunUseCase"),f=await e.execute(c.id);if(!f.stopped)return{stopped:!1,error:f.reason};return{stopped:!0}}catch(a){return{stopped:!1,error:a instanceof Error?a.message:"Failed to stop agent"}}}async function E(a){if(!a?.trim())return{error:"id is required"};try{let b=(0,d.resolve)("UnarchiveFeatureUseCase");return{feature:await b.execute(a)}}catch(a){return{error:a instanceof Error?a.message:"Failed to unarchive feature"}}}async function F(a){let{path:b,name:c}=a;if(!b?.trim())return{error:"path is required"};try{let a=(0,d.resolve)("AddRepositoryUseCase");return{repository:await a.execute({path:b,name:c})}}catch(a){return{error:a instanceof Error?a.message:"Failed to add repository"}}}async function G(a){if(!a?.trim())return{success:!1,error:"id is required"};try{let b=(0,d.resolve)("DeleteRepositoryUseCase");return await b.execute(a),{success:!0}}catch(a){return{success:!1,error:a instanceof Error?a.message:"Failed to delete repository"}}}(0,e.ensureServerEntryExports)([v]),(0,b.registerServerReference)(v,"009b861a65761e8ec9a0099705efffe209302e5078",null),a.s(["checkAgentAuth",0,v],9959),(0,e.ensureServerEntryExports)([x]),(0,b.registerServerReference)(x,"00d2ea9d9cae689585ef03a5bbfc49e95ff2db974b",null),a.s(["checkToolStatus",0,x],79124),(0,e.ensureServerEntryExports)([y]),(0,b.registerServerReference)(y,"403002a5d42a27e3c95885bf13471f284ae14ae3ad",null),a.s(["getFeatureMetadata",0,y],29207),(0,e.ensureServerEntryExports)([z]),(0,b.registerServerReference)(z,"4001d3b3b0ec9710c8a8b848267a94039833cfdaf0",null),a.s(["archiveFeature",0,z],10528),(0,e.ensureServerEntryExports)([A]),(0,b.registerServerReference)(A,"7844aa4bea0a883f1482e3dbb3025e8f9dd441eeb9",null),a.s(["deleteFeature",0,A],50845),(0,e.ensureServerEntryExports)([B]),(0,b.registerServerReference)(B,"405532d73211298ef9e3d7a5cdea5b5dc6b2060d47",null),a.s(["resumeFeature",0,B],26604),(0,e.ensureServerEntryExports)([C]),(0,b.registerServerReference)(C,"40f73c96f198d69599abba115e0886c2d25f304703",null),a.s(["startFeature",0,C],54723),(0,e.ensureServerEntryExports)([D]),(0,b.registerServerReference)(D,"40892a3ecf37c1aa089d95848e605fa687dd8ff413",null),a.s(["stopFeature",0,D],18942),(0,e.ensureServerEntryExports)([E]),(0,b.registerServerReference)(E,"4071344824aa7e6436c93eefd044901a17073177b1",null),a.s(["unarchiveFeature",0,E],42886),(0,e.ensureServerEntryExports)([F]),(0,b.registerServerReference)(F,"40561d29661f661688842173586e2787a89109395a",null),a.s(["addRepository",0,F],49560),(0,e.ensureServerEntryExports)([G]),(0,b.registerServerReference)(G,"4048c36a0b7ee96f66b8a6ee9c835725c8734cca57",null),a.s(["deleteRepository",0,G],39353)}];
2
2
 
3
3
  //# sourceMappingURL=src_presentation_web_app_actions_open-ide_ts_0w2wqvu._.js.map