@shipit-ai/cli 1.169.0 → 1.170.0-pr13.d3605b0

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 (414) hide show
  1. package/apis/json-schema/ClaudeCodeProxyConfig.yaml +20 -0
  2. package/apis/json-schema/FeatureFlags.yaml +5 -0
  3. package/apis/json-schema/LiteLLMProxyConfig.yaml +17 -0
  4. package/apis/json-schema/LiteLLMProxyRoutingMode.yaml +8 -0
  5. package/apis/json-schema/Settings.yaml +3 -0
  6. package/dist/packages/core/src/application/ports/output/services/index.d.ts +1 -0
  7. package/dist/packages/core/src/application/ports/output/services/index.d.ts.map +1 -1
  8. package/dist/packages/core/src/application/ports/output/services/plugin-marketplace.interface.d.ts +46 -0
  9. package/dist/packages/core/src/application/ports/output/services/plugin-marketplace.interface.d.ts.map +1 -0
  10. package/dist/packages/core/src/application/ports/output/services/plugin-marketplace.interface.js +12 -0
  11. package/dist/packages/core/src/application/use-cases/plugins/add-marketplace.use-case.d.ts +16 -0
  12. package/dist/packages/core/src/application/use-cases/plugins/add-marketplace.use-case.d.ts.map +1 -0
  13. package/dist/packages/core/src/application/use-cases/plugins/add-marketplace.use-case.js +34 -0
  14. package/dist/packages/core/src/application/use-cases/plugins/fetch-plugin-catalog.use-case.d.ts +24 -0
  15. package/dist/packages/core/src/application/use-cases/plugins/fetch-plugin-catalog.use-case.d.ts.map +1 -0
  16. package/dist/packages/core/src/application/use-cases/plugins/fetch-plugin-catalog.use-case.js +52 -0
  17. package/dist/packages/core/src/application/use-cases/plugins/install-plugin.use-case.d.ts +17 -0
  18. package/dist/packages/core/src/application/use-cases/plugins/install-plugin.use-case.d.ts.map +1 -0
  19. package/dist/packages/core/src/application/use-cases/plugins/install-plugin.use-case.js +33 -0
  20. package/dist/packages/core/src/application/use-cases/plugins/toggle-plugin.use-case.d.ts +17 -0
  21. package/dist/packages/core/src/application/use-cases/plugins/toggle-plugin.use-case.d.ts.map +1 -0
  22. package/dist/packages/core/src/application/use-cases/plugins/toggle-plugin.use-case.js +33 -0
  23. package/dist/packages/core/src/application/use-cases/plugins/uninstall-plugin.use-case.d.ts +16 -0
  24. package/dist/packages/core/src/application/use-cases/plugins/uninstall-plugin.use-case.d.ts.map +1 -0
  25. package/dist/packages/core/src/application/use-cases/plugins/uninstall-plugin.use-case.js +33 -0
  26. package/dist/packages/core/src/domain/factories/settings-defaults.factory.d.ts.map +1 -1
  27. package/dist/packages/core/src/domain/factories/settings-defaults.factory.js +1 -0
  28. package/dist/packages/core/src/domain/generated/output.d.ts +59 -0
  29. package/dist/packages/core/src/domain/generated/output.d.ts.map +1 -1
  30. package/dist/packages/core/src/domain/generated/output.js +6 -0
  31. package/dist/packages/core/src/infrastructure/di/modules/services.module.d.ts.map +1 -1
  32. package/dist/packages/core/src/infrastructure/di/modules/services.module.js +13 -0
  33. package/dist/packages/core/src/infrastructure/di/modules/use-cases.module.d.ts.map +1 -1
  34. package/dist/packages/core/src/infrastructure/di/modules/use-cases.module.js +12 -0
  35. package/dist/packages/core/src/infrastructure/di/modules/web-tokens.module.d.ts.map +1 -1
  36. package/dist/packages/core/src/infrastructure/di/modules/web-tokens.module.js +22 -0
  37. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts +9 -0
  38. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.d.ts.map +1 -1
  39. package/dist/packages/core/src/infrastructure/persistence/sqlite/mappers/settings.mapper.js +41 -0
  40. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/054-add-litellm-proxy.d.ts +14 -0
  41. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/054-add-litellm-proxy.d.ts.map +1 -0
  42. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/054-add-litellm-proxy.js +28 -0
  43. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/055-add-litellm-proxy-agent-config.d.ts +15 -0
  44. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/055-add-litellm-proxy-agent-config.d.ts.map +1 -0
  45. package/dist/packages/core/src/infrastructure/persistence/sqlite/migrations/055-add-litellm-proxy-agent-config.js +32 -0
  46. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.d.ts.map +1 -1
  47. package/dist/packages/core/src/infrastructure/repositories/sqlite-settings.repository.js +36 -5
  48. package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-provider.service.d.ts.map +1 -1
  49. package/dist/packages/core/src/infrastructure/services/agents/common/agent-executor-provider.service.js +7 -1
  50. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts +4 -1
  51. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.d.ts.map +1 -1
  52. package/dist/packages/core/src/infrastructure/services/agents/common/executors/claude-code-executor.service.js +44 -0
  53. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.d.ts.map +1 -1
  54. package/dist/packages/core/src/infrastructure/services/agents/feature-agent/feature-agent-worker.js +5 -0
  55. package/dist/packages/core/src/infrastructure/services/plugin-marketplace/index.d.ts +4 -0
  56. package/dist/packages/core/src/infrastructure/services/plugin-marketplace/index.d.ts.map +1 -0
  57. package/dist/packages/core/src/infrastructure/services/plugin-marketplace/index.js +3 -0
  58. package/dist/packages/core/src/infrastructure/services/plugin-marketplace/plugin-marketplace.schema.d.ts +78 -0
  59. package/dist/packages/core/src/infrastructure/services/plugin-marketplace/plugin-marketplace.schema.d.ts.map +1 -0
  60. package/dist/packages/core/src/infrastructure/services/plugin-marketplace/plugin-marketplace.schema.js +46 -0
  61. package/dist/packages/core/src/infrastructure/services/plugin-marketplace/plugin-marketplace.service.d.ts +29 -0
  62. package/dist/packages/core/src/infrastructure/services/plugin-marketplace/plugin-marketplace.service.d.ts.map +1 -0
  63. package/dist/packages/core/src/infrastructure/services/plugin-marketplace/plugin-marketplace.service.js +147 -0
  64. package/dist/packages/core/src/infrastructure/services/plugin-marketplace/plugin-marketplace.validators.d.ts +11 -0
  65. package/dist/packages/core/src/infrastructure/services/plugin-marketplace/plugin-marketplace.validators.d.ts.map +1 -0
  66. package/dist/packages/core/src/infrastructure/services/plugin-marketplace/plugin-marketplace.validators.js +47 -0
  67. package/dist/src/presentation/web/app/actions/add-marketplace.d.ts +5 -0
  68. package/dist/src/presentation/web/app/actions/add-marketplace.d.ts.map +1 -0
  69. package/dist/src/presentation/web/app/actions/add-marketplace.js +11 -0
  70. package/dist/src/presentation/web/app/actions/fetch-plugin-catalog.d.ts +5 -0
  71. package/dist/src/presentation/web/app/actions/fetch-plugin-catalog.d.ts.map +1 -0
  72. package/dist/src/presentation/web/app/actions/fetch-plugin-catalog.js +11 -0
  73. package/dist/src/presentation/web/app/actions/install-plugin.d.ts +5 -0
  74. package/dist/src/presentation/web/app/actions/install-plugin.d.ts.map +1 -0
  75. package/dist/src/presentation/web/app/actions/install-plugin.js +11 -0
  76. package/dist/src/presentation/web/app/actions/toggle-plugin.d.ts +5 -0
  77. package/dist/src/presentation/web/app/actions/toggle-plugin.d.ts.map +1 -0
  78. package/dist/src/presentation/web/app/actions/toggle-plugin.js +11 -0
  79. package/dist/src/presentation/web/app/actions/uninstall-plugin.d.ts +5 -0
  80. package/dist/src/presentation/web/app/actions/uninstall-plugin.d.ts.map +1 -0
  81. package/dist/src/presentation/web/app/actions/uninstall-plugin.js +11 -0
  82. package/dist/src/presentation/web/app/plugins/page.d.ts +2 -0
  83. package/dist/src/presentation/web/app/plugins/page.d.ts.map +1 -0
  84. package/dist/src/presentation/web/app/plugins/page.js +23 -0
  85. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.d.ts.map +1 -1
  86. package/dist/src/presentation/web/components/common/repository-node/repository-drawer.stories.js +1 -0
  87. package/dist/src/presentation/web/components/features/plugins/plugin-card.d.ts +9 -0
  88. package/dist/src/presentation/web/components/features/plugins/plugin-card.d.ts.map +1 -0
  89. package/dist/src/presentation/web/components/features/plugins/plugin-card.js +15 -0
  90. package/dist/src/presentation/web/components/features/plugins/plugin-card.stories.d.ts +17 -0
  91. package/dist/src/presentation/web/components/features/plugins/plugin-card.stories.d.ts.map +1 -0
  92. package/dist/src/presentation/web/components/features/plugins/plugin-card.stories.js +60 -0
  93. package/dist/src/presentation/web/components/features/plugins/plugin-detail-drawer.d.ts +11 -0
  94. package/dist/src/presentation/web/components/features/plugins/plugin-detail-drawer.d.ts.map +1 -0
  95. package/dist/src/presentation/web/components/features/plugins/plugin-detail-drawer.js +33 -0
  96. package/dist/src/presentation/web/components/features/plugins/plugin-detail-drawer.stories.d.ts +18 -0
  97. package/dist/src/presentation/web/components/features/plugins/plugin-detail-drawer.stories.d.ts.map +1 -0
  98. package/dist/src/presentation/web/components/features/plugins/plugin-detail-drawer.stories.js +51 -0
  99. package/dist/src/presentation/web/components/features/plugins/plugins-page-client.d.ts +6 -0
  100. package/dist/src/presentation/web/components/features/plugins/plugins-page-client.d.ts.map +1 -0
  101. package/dist/src/presentation/web/components/features/plugins/plugins-page-client.js +124 -0
  102. package/dist/src/presentation/web/components/features/plugins/plugins-page-client.stories.d.ts +12 -0
  103. package/dist/src/presentation/web/components/features/plugins/plugins-page-client.stories.d.ts.map +1 -0
  104. package/dist/src/presentation/web/components/features/plugins/plugins-page-client.stories.js +24 -0
  105. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.d.ts.map +1 -1
  106. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.js +7 -0
  107. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.d.ts.map +1 -1
  108. package/dist/src/presentation/web/components/features/settings/feature-flags-settings-section.stories.js +2 -0
  109. package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.d.ts +6 -0
  110. package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.d.ts.map +1 -0
  111. package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.js +72 -0
  112. package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.stories.d.ts +16 -0
  113. package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.stories.d.ts.map +1 -0
  114. package/dist/src/presentation/web/components/features/settings/litellm-proxy-routing-section.stories.js +64 -0
  115. package/dist/src/presentation/web/components/features/settings/litellm-proxy-settings-section.d.ts +6 -0
  116. package/dist/src/presentation/web/components/features/settings/litellm-proxy-settings-section.d.ts.map +1 -0
  117. package/dist/src/presentation/web/components/features/settings/litellm-proxy-settings-section.js +73 -0
  118. package/dist/src/presentation/web/components/features/settings/litellm-proxy-settings-section.stories.d.ts +15 -0
  119. package/dist/src/presentation/web/components/features/settings/litellm-proxy-settings-section.stories.d.ts.map +1 -0
  120. package/dist/src/presentation/web/components/features/settings/litellm-proxy-settings-section.stories.js +29 -0
  121. package/dist/src/presentation/web/components/features/settings/settings-page-client.d.ts.map +1 -1
  122. package/dist/src/presentation/web/components/features/settings/settings-page-client.js +5 -2
  123. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.d.ts.map +1 -1
  124. package/dist/src/presentation/web/components/features/settings/settings-page-client.stories.js +1 -0
  125. package/dist/src/presentation/web/components/features/skills/skills-page-client.d.ts.map +1 -1
  126. package/dist/src/presentation/web/components/features/skills/skills-page-client.js +6 -2
  127. package/dist/src/presentation/web/components/features/tools/tools-page-client.d.ts.map +1 -1
  128. package/dist/src/presentation/web/components/features/tools/tools-page-client.js +23 -4
  129. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.d.ts.map +1 -1
  130. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.js +2 -2
  131. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.d.ts.map +1 -1
  132. package/dist/src/presentation/web/components/layouts/app-sidebar/app-sidebar.stories.js +1 -0
  133. package/dist/src/presentation/web/hooks/feature-flags-context.d.ts.map +1 -1
  134. package/dist/src/presentation/web/hooks/feature-flags-context.js +1 -0
  135. package/dist/src/presentation/web/lib/feature-flags.d.ts +2 -0
  136. package/dist/src/presentation/web/lib/feature-flags.d.ts.map +1 -1
  137. package/dist/src/presentation/web/lib/feature-flags.js +6 -0
  138. package/dist/translations/ar/web.json +56 -2
  139. package/dist/translations/de/web.json +56 -2
  140. package/dist/translations/en/web.json +56 -2
  141. package/dist/translations/es/web.json +56 -2
  142. package/dist/translations/fr/web.json +56 -2
  143. package/dist/translations/he/web.json +56 -2
  144. package/dist/translations/pt/web.json +56 -2
  145. package/dist/translations/ru/web.json +56 -2
  146. package/dist/tsconfig.build.tsbuildinfo +1 -1
  147. package/package.json +1 -1
  148. package/web/.next/BUILD_ID +1 -1
  149. package/web/.next/app-path-routes-manifest.json +1 -0
  150. package/web/.next/build-manifest.json +3 -3
  151. package/web/.next/fallback-build-manifest.json +3 -3
  152. package/web/.next/prerender-manifest.json +3 -3
  153. package/web/.next/required-server-files.js +3 -3
  154. package/web/.next/required-server-files.json +3 -3
  155. package/web/.next/routes-manifest.json +6 -0
  156. package/web/.next/server/app/(dashboard)/@drawer/adopt/page/server-reference-manifest.json +29 -29
  157. package/web/.next/server/app/(dashboard)/@drawer/adopt/page.js.nft.json +1 -1
  158. package/web/.next/server/app/(dashboard)/@drawer/adopt/page_client-reference-manifest.js +1 -1
  159. package/web/.next/server/app/(dashboard)/@drawer/chat/page/server-reference-manifest.json +27 -27
  160. package/web/.next/server/app/(dashboard)/@drawer/chat/page.js.nft.json +1 -1
  161. package/web/.next/server/app/(dashboard)/@drawer/chat/page_client-reference-manifest.js +1 -1
  162. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +31 -31
  163. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  164. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  165. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
  166. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  167. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  168. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +37 -37
  169. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  170. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  171. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  172. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  173. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  174. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  175. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  176. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  177. package/web/.next/server/app/(dashboard)/chat/page/server-reference-manifest.json +27 -27
  178. package/web/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  179. package/web/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  180. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +31 -31
  181. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  182. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  183. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page/server-reference-manifest.json +37 -37
  184. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page.js.nft.json +1 -1
  185. package/web/.next/server/app/(dashboard)/feature/[featureId]/[tab]/page_client-reference-manifest.js +1 -1
  186. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +37 -37
  187. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  188. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  189. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +27 -27
  190. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  191. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  192. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page/server-reference-manifest.json +28 -28
  193. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page.js.nft.json +1 -1
  194. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/[tab]/page_client-reference-manifest.js +1 -1
  195. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +28 -28
  196. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  197. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  198. package/web/.next/server/app/_global-error.html +1 -1
  199. package/web/.next/server/app/_global-error.rsc +1 -1
  200. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  201. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  202. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  203. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  204. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  205. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +6 -6
  206. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  207. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  208. package/web/.next/server/app/api/attachments/preview/route.js.nft.json +1 -1
  209. package/web/.next/server/app/api/dialog/pick-files/route.js.nft.json +1 -1
  210. package/web/.next/server/app/api/evidence/route.js.nft.json +1 -1
  211. package/web/.next/server/app/api/graph-data/route.js +1 -1
  212. package/web/.next/server/app/api/graph-data/route.js.nft.json +1 -1
  213. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js +1 -1
  214. package/web/.next/server/app/api/interactive/chat/[featureId]/messages/route.js.nft.json +1 -1
  215. package/web/.next/server/app/api/sessions-batch/route.js +1 -1
  216. package/web/.next/server/app/api/sessions-batch/route.js.nft.json +1 -1
  217. package/web/.next/server/app/plugins/page/app-paths-manifest.json +3 -0
  218. package/web/.next/server/app/plugins/page/build-manifest.json +18 -0
  219. package/web/.next/server/app/plugins/page/next-font-manifest.json +10 -0
  220. package/web/.next/server/app/plugins/page/react-loadable-manifest.json +8 -0
  221. package/web/.next/server/app/plugins/page/server-reference-manifest.json +185 -0
  222. package/web/.next/server/app/plugins/page.js +17 -0
  223. package/web/.next/server/app/plugins/page.js.map +5 -0
  224. package/web/.next/server/app/plugins/page.js.nft.json +1 -0
  225. package/web/.next/server/app/plugins/page_client-reference-manifest.js +3 -0
  226. package/web/.next/server/app/settings/page/server-reference-manifest.json +34 -22
  227. package/web/.next/server/app/settings/page.js +1 -1
  228. package/web/.next/server/app/settings/page.js.nft.json +1 -1
  229. package/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  230. package/web/.next/server/app/skills/page/server-reference-manifest.json +11 -11
  231. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  232. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  233. package/web/.next/server/app/tools/page/server-reference-manifest.json +11 -11
  234. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  235. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  236. package/web/.next/server/app/version/page/server-reference-manifest.json +6 -6
  237. package/web/.next/server/app/version/page.js.nft.json +1 -1
  238. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  239. package/web/.next/server/app-paths-manifest.json +1 -0
  240. package/web/.next/server/chunks/11es_next_dist_esm_build_templates_app-route_067cwst.js +1 -1
  241. package/web/.next/server/chunks/11es_next_dist_esm_build_templates_app-route_067cwst.js.map +1 -1
  242. package/web/.next/server/chunks/{[root-of-the-server]__0zu_byw._.js → [root-of-the-server]__07suer1._.js} +2 -2
  243. package/web/.next/server/chunks/{[root-of-the-server]__0u1jyv9._.js → [root-of-the-server]__0sgzo7y._.js} +2 -2
  244. package/web/.next/server/chunks/[root-of-the-server]__0tb~wwk._.js +1 -1
  245. package/web/.next/server/chunks/{[root-of-the-server]__08cpfre._.js → [root-of-the-server]__0uxlr84._.js} +2 -2
  246. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js +1 -1
  247. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js.map +1 -1
  248. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js +2 -2
  249. package/web/.next/server/chunks/ssr/0j.8_web_components_common_control-center-drawer_feature-drawer-client_tsx_104cna.._.js.map +1 -1
  250. package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js +1 -1
  251. package/web/.next/server/chunks/ssr/0ukq_presentation_web_components_features_settings_settings-page-client_tsx_0j1uius._.js.map +1 -1
  252. package/web/.next/server/chunks/ssr/11es_next_dist_esm_build_templates_app-page_0y6lfp8.js +4 -0
  253. package/web/.next/server/chunks/ssr/11es_next_dist_esm_build_templates_app-page_0y6lfp8.js.map +1 -0
  254. package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js +1 -1
  255. package/web/.next/server/chunks/ssr/11y9_components_common_control-center-drawer_repository-drawer-client_tsx_09z.znp._.js.map +1 -1
  256. package/web/.next/server/chunks/ssr/{_04s_q5r._.js → 12k._sonner_dist_index_mjs_0-vmpk5._.js} +2 -2
  257. package/web/.next/server/chunks/ssr/12k._sonner_dist_index_mjs_0-vmpk5._.js.map +1 -0
  258. package/web/.next/server/chunks/ssr/{[root-of-the-server]__0rvrr1j._.js → [root-of-the-server]__0.5ojmt._.js} +2 -2
  259. package/web/.next/server/chunks/ssr/[root-of-the-server]__0.5ojmt._.js.map +1 -0
  260. package/web/.next/server/chunks/ssr/[root-of-the-server]__04h~gav._.js +3 -0
  261. package/web/.next/server/chunks/ssr/[root-of-the-server]__04h~gav._.js.map +1 -0
  262. package/web/.next/server/chunks/ssr/[root-of-the-server]__05_qc0n._.js +1 -1
  263. package/web/.next/server/chunks/ssr/[root-of-the-server]__05_qc0n._.js.map +1 -1
  264. package/web/.next/server/chunks/ssr/[root-of-the-server]__0dec29w._.js +3 -0
  265. package/web/.next/server/chunks/ssr/[root-of-the-server]__0dec29w._.js.map +1 -0
  266. package/web/.next/server/chunks/ssr/[root-of-the-server]__0ge~xny._.js +1 -1
  267. package/web/.next/server/chunks/ssr/[root-of-the-server]__0ge~xny._.js.map +1 -1
  268. package/web/.next/server/chunks/ssr/[root-of-the-server]__0qda~yi._.js +1 -1
  269. package/web/.next/server/chunks/ssr/[root-of-the-server]__0qda~yi._.js.map +1 -1
  270. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rv1gci._.js +1 -1
  271. package/web/.next/server/chunks/ssr/[root-of-the-server]__0tq2syh._.js +1 -1
  272. package/web/.next/server/chunks/ssr/[root-of-the-server]__0t~u8sd._.js +1 -1
  273. package/web/.next/server/chunks/ssr/[root-of-the-server]__0t~u8sd._.js.map +1 -1
  274. package/web/.next/server/chunks/ssr/[root-of-the-server]__10tll_l._.js +1 -1
  275. package/web/.next/server/chunks/ssr/[root-of-the-server]__10tll_l._.js.map +1 -1
  276. package/web/.next/server/chunks/ssr/[root-of-the-server]__12j29w-._.js +1 -1
  277. package/web/.next/server/chunks/ssr/[root-of-the-server]__12j29w-._.js.map +1 -1
  278. package/web/.next/server/chunks/ssr/_01sesw0._.js +1 -1
  279. package/web/.next/server/chunks/ssr/_01sesw0._.js.map +1 -1
  280. package/web/.next/server/chunks/ssr/{_0wor25i._.js → _02g0xyh._.js} +2 -2
  281. package/web/.next/server/chunks/ssr/{_0wor25i._.js.map → _02g0xyh._.js.map} +1 -1
  282. package/web/.next/server/chunks/ssr/{_00u~.41._.js → _03x4h9e._.js} +2 -2
  283. package/web/.next/server/chunks/ssr/_03x4h9e._.js.map +1 -0
  284. package/web/.next/server/chunks/ssr/{_0~0jkp_._.js → _05fk0a4._.js} +2 -2
  285. package/web/.next/server/chunks/ssr/_05fk0a4._.js.map +1 -0
  286. package/web/.next/server/chunks/ssr/_069y.js._.js +2 -2
  287. package/web/.next/server/chunks/ssr/_069y.js._.js.map +1 -1
  288. package/web/.next/server/chunks/ssr/_083k45~._.js +3 -0
  289. package/web/.next/server/chunks/ssr/_083k45~._.js.map +1 -0
  290. package/web/.next/server/chunks/ssr/_0__4si~._.js +1 -1
  291. package/web/.next/server/chunks/ssr/_0__4si~._.js.map +1 -1
  292. package/web/.next/server/chunks/ssr/_0_m17kl._.js +1 -1
  293. package/web/.next/server/chunks/ssr/_0_m17kl._.js.map +1 -1
  294. package/web/.next/server/chunks/ssr/_0d4miu.._.js +1 -1
  295. package/web/.next/server/chunks/ssr/_0d4miu.._.js.map +1 -1
  296. package/web/.next/server/chunks/ssr/_0e8ern9._.js +1 -1
  297. package/web/.next/server/chunks/ssr/_0e8ern9._.js.map +1 -1
  298. package/web/.next/server/chunks/ssr/_0i~-084._.js +3 -0
  299. package/web/.next/server/chunks/ssr/_0i~-084._.js.map +1 -0
  300. package/web/.next/server/chunks/ssr/_0kaec~c._.js +3 -0
  301. package/web/.next/server/chunks/ssr/_0kaec~c._.js.map +1 -0
  302. package/web/.next/server/chunks/ssr/{_01qdxy2._.js → _0mdgz5u._.js} +2 -2
  303. package/web/.next/server/chunks/ssr/{_01qdxy2._.js.map → _0mdgz5u._.js.map} +1 -1
  304. package/web/.next/server/chunks/ssr/_0o.xc6x._.js +3 -0
  305. package/web/.next/server/chunks/ssr/_0o.xc6x._.js.map +1 -0
  306. package/web/.next/server/chunks/ssr/{_0hw~zvl._.js → _0o_oaao._.js} +2 -2
  307. package/web/.next/server/chunks/ssr/_0o_oaao._.js.map +1 -0
  308. package/web/.next/server/chunks/ssr/_0p3~u8u._.js +2 -2
  309. package/web/.next/server/chunks/ssr/_0p3~u8u._.js.map +1 -1
  310. package/web/.next/server/chunks/ssr/_0r.3n~3._.js +1 -1
  311. package/web/.next/server/chunks/ssr/_0r.3n~3._.js.map +1 -1
  312. package/web/.next/server/chunks/ssr/_0rcx2-c._.js +9 -0
  313. package/web/.next/server/chunks/ssr/_0rcx2-c._.js.map +1 -0
  314. package/web/.next/server/chunks/ssr/_0rqycsg._.js +3 -0
  315. package/web/.next/server/chunks/ssr/_0rqycsg._.js.map +1 -0
  316. package/web/.next/server/chunks/ssr/_0t59q8r._.js +1 -1
  317. package/web/.next/server/chunks/ssr/_0t59q8r._.js.map +1 -1
  318. package/web/.next/server/chunks/ssr/_0tcccbb._.js +1 -1
  319. package/web/.next/server/chunks/ssr/_0tcccbb._.js.map +1 -1
  320. package/web/.next/server/chunks/ssr/{_0pa1dkv._.js → _0u3d8.n._.js} +2 -2
  321. package/web/.next/server/chunks/ssr/_0u3d8.n._.js.map +1 -0
  322. package/web/.next/server/chunks/ssr/_0vyfc4b._.js +1 -1
  323. package/web/.next/server/chunks/ssr/_0vyfc4b._.js.map +1 -1
  324. package/web/.next/server/chunks/ssr/_0w-_hww._.js +1 -1
  325. package/web/.next/server/chunks/ssr/_0w-_hww._.js.map +1 -1
  326. package/web/.next/server/chunks/ssr/{_09r54oy._.js → _0ygafoy._.js} +2 -2
  327. package/web/.next/server/chunks/ssr/{_09r54oy._.js.map → _0ygafoy._.js.map} +1 -1
  328. package/web/.next/server/chunks/ssr/_0zk-h5w._.js +1 -1
  329. package/web/.next/server/chunks/ssr/_0zk-h5w._.js.map +1 -1
  330. package/web/.next/server/chunks/ssr/_0~7lwu_._.js +1 -1
  331. package/web/.next/server/chunks/ssr/_0~7lwu_._.js.map +1 -1
  332. package/web/.next/server/chunks/ssr/_10joy2y._.js +3 -0
  333. package/web/.next/server/chunks/ssr/_10joy2y._.js.map +1 -0
  334. package/web/.next/server/chunks/ssr/_1161g9x._.js +1 -1
  335. package/web/.next/server/chunks/ssr/_1161g9x._.js.map +1 -1
  336. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_plugins_page_actions_0rdndum.js +3 -0
  337. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_plugins_page_actions_0rdndum.js.map +1 -0
  338. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_05m2q~u.js +1 -1
  339. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_skills_page_actions_05m2q~u.js.map +1 -1
  340. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_0.6zk.t.js +1 -1
  341. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_tools_page_actions_0.6zk.t.js.map +1 -1
  342. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_approve-feature_ts_0pjb_re._.js +1 -1
  343. package/web/.next/server/chunks/ssr/src_presentation_web_app_actions_open-ide_ts_0w2wqvu._.js +1 -1
  344. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js +1 -1
  345. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_0l3oxx9._.js.map +1 -1
  346. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_0aji.op._.js +1 -1
  347. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_0aji.op._.js.map +1 -1
  348. package/web/.next/server/middleware-build-manifest.js +3 -3
  349. package/web/.next/server/next-font-manifest.js +1 -1
  350. package/web/.next/server/next-font-manifest.json +3 -0
  351. package/web/.next/server/pages/500.html +1 -1
  352. package/web/.next/server/server-reference-manifest.js +1 -1
  353. package/web/.next/server/server-reference-manifest.json +187 -61
  354. package/web/.next/static/chunks/0.s8cxri-_s9l.js +1 -0
  355. package/web/.next/static/chunks/012cnd7koqv6d.js +7 -0
  356. package/web/.next/static/chunks/{12axopx66pocj.js → 056k4f_cj86_m.js} +2 -2
  357. package/web/.next/static/chunks/{0k0j7anrbg-of.js → 05_pa1uvg8ndq.js} +3 -3
  358. package/web/.next/static/chunks/{0fg~vc93spa9c.js → 07gal-~-zwagj.js} +1 -1
  359. package/web/.next/static/chunks/{0in4l8mne5y~_.js → 0b2pi58fg3lt3.js} +1 -1
  360. package/web/.next/static/chunks/{0o33urrd3lk~u.js → 0dbuetfm_wux5.js} +1 -1
  361. package/web/.next/static/chunks/{1874_wt9rit96.js → 0dq~u_3-zgq73.js} +1 -1
  362. package/web/.next/static/chunks/{00m_fbc2z1gyi.js → 0f1m9w6~4f-.w.js} +3 -3
  363. package/web/.next/static/chunks/{0u_27fdqa2jeg.js → 0i~5fqskcb~~p.js} +1 -1
  364. package/web/.next/static/chunks/{0v~n9z6b639zm.js → 0jwq.mr-.ltps.js} +1 -1
  365. package/web/.next/static/chunks/0k8m.qcahm63g.js +1 -0
  366. package/web/.next/static/chunks/0kjqz.9e9sou2.js +1 -0
  367. package/web/.next/static/chunks/0lc0x8kcu46ae.js +1 -0
  368. package/web/.next/static/chunks/{183ehj-b80a~o.js → 0nfd9bvcnbcgl.js} +1 -1
  369. package/web/.next/static/chunks/0nnltbyg963sg.js +1 -0
  370. package/web/.next/static/chunks/0pik.2.wvg.el.js +1 -0
  371. package/web/.next/static/chunks/0r05-2~73nsxp.js +1 -0
  372. package/web/.next/static/chunks/0ug478hm-8bog.js +5 -0
  373. package/web/.next/static/chunks/{0yibymrb2j05t.css → 0v7r7y~3e~oo6.css} +1 -1
  374. package/web/.next/static/chunks/{0dq50gtgaj63f.js → 0wcqsl6fpljkf.js} +1 -1
  375. package/web/.next/static/chunks/10rtagfoabp3b.js +1 -0
  376. package/web/.next/static/chunks/112xn3.b2hrmh.js +1 -0
  377. package/web/.next/static/chunks/{11vbir.u7_zf7.js → 13mkca.j8w.7_.js} +1 -1
  378. package/web/.next/static/chunks/{121v1_d_dfk2k.js → 14ulzux4y._m-.js} +1 -1
  379. package/web/.next/server/chunks/ssr/[root-of-the-server]__0qxd563._.js +0 -3
  380. package/web/.next/server/chunks/ssr/[root-of-the-server]__0qxd563._.js.map +0 -1
  381. package/web/.next/server/chunks/ssr/[root-of-the-server]__0rvrr1j._.js.map +0 -1
  382. package/web/.next/server/chunks/ssr/_00u~.41._.js.map +0 -1
  383. package/web/.next/server/chunks/ssr/_04s_q5r._.js.map +0 -1
  384. package/web/.next/server/chunks/ssr/_0a_8rlj._.js +0 -3
  385. package/web/.next/server/chunks/ssr/_0a_8rlj._.js.map +0 -1
  386. package/web/.next/server/chunks/ssr/_0dy8.0k._.js +0 -3
  387. package/web/.next/server/chunks/ssr/_0dy8.0k._.js.map +0 -1
  388. package/web/.next/server/chunks/ssr/_0gdghcr._.js +0 -3
  389. package/web/.next/server/chunks/ssr/_0gdghcr._.js.map +0 -1
  390. package/web/.next/server/chunks/ssr/_0hw~zvl._.js.map +0 -1
  391. package/web/.next/server/chunks/ssr/_0l2~~pi._.js +0 -3
  392. package/web/.next/server/chunks/ssr/_0l2~~pi._.js.map +0 -1
  393. package/web/.next/server/chunks/ssr/_0n.magx._.js +0 -3
  394. package/web/.next/server/chunks/ssr/_0n.magx._.js.map +0 -1
  395. package/web/.next/server/chunks/ssr/_0pa1dkv._.js.map +0 -1
  396. package/web/.next/server/chunks/ssr/_0y8u4.e._.js +0 -9
  397. package/web/.next/server/chunks/ssr/_0y8u4.e._.js.map +0 -1
  398. package/web/.next/server/chunks/ssr/_0~0jkp_._.js.map +0 -1
  399. package/web/.next/static/chunks/0-ud~1jj7chzu.js +0 -7
  400. package/web/.next/static/chunks/09f2lesd_dd3~.js +0 -1
  401. package/web/.next/static/chunks/0c0dau5pmseko.js +0 -1
  402. package/web/.next/static/chunks/0n3kuj7t_-jzp.js +0 -1
  403. package/web/.next/static/chunks/0pt-d18f7zxvv.js +0 -1
  404. package/web/.next/static/chunks/0xwh.0u-dexsl.js +0 -1
  405. package/web/.next/static/chunks/103xnw203o9k1.js +0 -1
  406. package/web/.next/static/chunks/12pd180jp8zu..js +0 -5
  407. package/web/.next/static/chunks/13fcwhkw7dle2.js +0 -1
  408. package/web/.next/static/chunks/13q1peb_t9vj8.js +0 -1
  409. /package/web/.next/server/chunks/{[root-of-the-server]__0zu_byw._.js.map → [root-of-the-server]__07suer1._.js.map} +0 -0
  410. /package/web/.next/server/chunks/{[root-of-the-server]__0u1jyv9._.js.map → [root-of-the-server]__0sgzo7y._.js.map} +0 -0
  411. /package/web/.next/server/chunks/{[root-of-the-server]__08cpfre._.js.map → [root-of-the-server]__0uxlr84._.js.map} +0 -0
  412. /package/web/.next/static/{SNdaKJ9fpre8tUMRe1jlA → W6C3cWcub-2kZuXP7c21j}/_buildManifest.js +0 -0
  413. /package/web/.next/static/{SNdaKJ9fpre8tUMRe1jlA → W6C3cWcub-2kZuXP7c21j}/_clientMiddlewareManifest.js +0 -0
  414. /package/web/.next/static/{SNdaKJ9fpre8tUMRe1jlA → W6C3cWcub-2kZuXP7c21j}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},12714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},66680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},40060,e=>{"use strict";e.s(["resolve",0,function(e){let t=globalThis.__shipitAiContainer;if(!t)throw Error("DI container not available. Ensure the CLI bootstrap or dev-server has initialized it.");return t.resolve(e)}])},24934,e=>{"use strict";var t=e.i(25716);e.s(["apiError",0,function(e,r,a){if(a){let t=a instanceof Error?a.message:String(a);console.error(`[API ${e}] ${r}: ${t}`)}return t.NextResponse.json({error:r},{status:e})}])},55042,e=>{"use strict";var t=e.i(66680),r=e.i(60526),a=e.i(50227),n=e.i(12714);function s(e){return e.replace(/[/\\.]/g,"-")}function i(e){if("string"==typeof e)return e;if(Array.isArray(e)){for(let t of e)if("object"==typeof t&&null!==t&&"text"===t.type&&"string"==typeof t.text)return t.text}return null}async function o(e){let t;try{t=await (0,n.readdir)(e)}catch{return[]}let r=t.filter(e=>e.endsWith(".jsonl"));return(await Promise.allSettled(r.map(async t=>{let r=(0,a.join)(e,t),s=await (0,n.stat)(r);return{name:t,filePath:r,mtime:s.mtime.getTime()}}))).filter(e=>"fulfilled"===e.status).map(e=>e.value)}async function l(t,r,a,n){let{createReadStream:s}=await e.A(6714),o=r.replace(".jsonl",""),l=null,u=null,c=0,d=await new Promise(e=>{let r=[],a=0,n=s(t,{end:8191});n.on("data",e=>{r.push(e),a+=e.length}),n.on("end",()=>e(Buffer.concat(r,a).toString("utf-8"))),n.on("error",()=>e(""))});if(!d)return null;for(let e of d.split("\n").filter(e=>e.trim()))try{let t=JSON.parse(e);if("user"===t.type||"assistant"===t.type){let e=t.message?.role;("user"===e||"assistant"===e)&&(c++,t.timestamp&&(u??=t.timestamp),"user"===e&&null===l&&(l=i(t.message?.content)))}}catch{break}if(0===c)return null;let p=new Date(a).toISOString();return{id:o,agentType:"claude-code",preview:l,messageCount:c,firstMessageAt:u,lastMessageAt:p,createdAt:u??p,projectPath:n,filePath:t,_mtime:a}}async function u(e,i,c=!1){let d=s(e),p=(0,a.join)((0,r.homedir)(),".claude","projects"),h=(0,a.join)(p,d),f=await o(h);if(c)try{let i=await (0,n.readdir)(p),l=i.filter(e=>e!==d&&e.startsWith(d)),u=e.replace(/\\/g,"/"),c=(0,t.createHash)("sha256").update(u).digest("hex").slice(0,16),h=(0,a.join)((0,r.homedir)(),".shipit-ai").replace(/\\/g,"/"),m=s((0,a.join)(h,"repos",c)),x=i.filter(e=>e.startsWith(m)&&!l.includes(e)&&e!==d),g=[...l,...x];for(let e of(await Promise.all(g.map(e=>o((0,a.join)(p,e))))))f=f.concat(e)}catch{}let m=f.sort((e,t)=>t.mtime-e.mtime).slice(0,i);return(await Promise.allSettled(m.map(async t=>l(t.filePath,t.name,t.mtime,e)))).filter(e=>"fulfilled"===e.status).map(e=>e.value).filter(e=>null!==e)}async function c(t,r,a,n){let{createReadStream:s}=await e.A(6714),o=r.replace(".jsonl",""),l=await new Promise(e=>{let r=[],a=0,n=s(t,{end:8191});n.on("data",e=>{r.push(e),a+=e.length}),n.on("end",()=>e(Buffer.concat(r,a).toString("utf-8"))),n.on("error",()=>e(""))});if(!l)return null;let u=null,c=0;for(let e of l.split("\n").filter(e=>e.trim()))try{let t=JSON.parse(e);("user"===t.role||"assistant"===t.role)&&(c++,"user"===t.role&&null===u&&(u=i(t.message?.content)))}catch{break}if(0===c)return null;let d=new Date(a).toISOString();return{id:o,agentType:"cursor",preview:u,messageCount:c,firstMessageAt:d,lastMessageAt:d,createdAt:d,projectPath:n,filePath:t,_mtime:a}}async function d(e,t){let s,i=e.replace(/^\//,"").replace(/\./g,"").replace(/[/\\]/g,"-"),o=(0,a.join)((0,r.homedir)(),".cursor","projects",i,"agent-transcripts");try{s=await (0,n.readdir)(o)}catch{return[]}let l=(await Promise.allSettled(s.map(async e=>{let t=(0,a.join)(o,e),r=await (0,n.stat)(t);if(r.isFile()&&e.endsWith(".jsonl"))return{name:e,filePath:t,mtime:r.mtime.getTime()};if(r.isDirectory()){let r=(0,a.join)(t,`${e}.jsonl`);try{let t=await (0,n.stat)(r);return{name:`${e}.jsonl`,filePath:r,mtime:t.mtime.getTime()}}catch{}}return null}))).filter(e=>"fulfilled"===e.status).map(e=>e.value).filter(e=>null!==e).sort((e,t)=>t.mtime-e.mtime).slice(0,t);return(await Promise.allSettled(l.map(async t=>c(t.filePath,t.name,t.mtime,e)))).filter(e=>"fulfilled"===e.status).map(e=>e.value).filter(e=>null!==e)}async function p(e,t,r=!1){let[a,n]=await Promise.all([u(e,t,r),d(e,t)]);return[...a,...n].sort((e,t)=>t._mtime-e._mtime).slice(0,Math.min(t,50))}e.s(["scanSessionsForPath",0,p])},73019,e=>{"use strict";var t=e.i(29932),r=e.i(88797),a=e.i(78439),n=e.i(21387),s=e.i(351),i=e.i(1286),o=e.i(31060),l=e.i(67760),u=e.i(13435),c=e.i(60316),d=e.i(37130),p=e.i(31516),h=e.i(63144),f=e.i(3719),m=e.i(66941),x=e.i(93695);e.i(76574);var g=e.i(45014),v=e.i(25716),w=e.i(40060),y=e.i(24934),R=e.i(55042);let E=null;async function P(){if(E&&Date.now()-E.createdAt<3e4)return v.NextResponse.json({sessionsByPath:E.data});try{let e=(0,w.resolve)("ListRepositoriesUseCase"),t=(0,w.resolve)("ListFeaturesUseCase"),[r,a]=await Promise.all([e.execute(),t.execute({includeArchived:!1})]),n=[],s=new Set;for(let e of r)e.path&&!s.has(e.path)&&(s.add(e.path),n.push({path:e.path,includeWorktrees:!0}));for(let e of a){let t=e.worktreePath??e.repositoryPath;t&&!s.has(t)&&(s.add(t),n.push({path:t,includeWorktrees:!1}))}let i=await Promise.all(n.map(async({path:e,includeWorktrees:t})=>{let r=await (0,R.scanSessionsForPath)(e,5,t);return{path:e,sessions:r.map(({_mtime:e,...t})=>t)}})),o={};for(let{path:e,sessions:t}of i)o[e]=t;return E={data:o,createdAt:Date.now()},v.NextResponse.json({sessionsByPath:o})}catch(e){return(0,y.apiError)(500,"Failed to load sessions",e)}}e.s(["GET",0,P,"dynamic",0,"force-dynamic"],27079);var A=e.i(27079);let j=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/sessions-batch/route",pathname:"/api/sessions-batch",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/presentation/web/app/api/sessions-batch/route.ts",nextConfigOutput:"",userland:A,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:b,serverHooks:S}=j;async function T(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),j.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/sessions-batch/route";v=v.replace(/\/index$/,"")||"/";let w=await j.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!w)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:y,params:R,nextConfig:E,parsedUrl:P,isDraftMode:A,prerenderManifest:C,routerServerContext:b,isOnDemandRevalidate:S,revalidateOnlyGenerated:T,resolvedPathname:_,clientReferenceManifest:N,serverActionsManifest:q}=w,k=(0,o.normalizeAppPath)(v),O=!!(C.dynamicRoutes[k]||C.routes[_]),I=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,P,!1):t.end("This page could not be found"),null);if(O&&!A){let e=!!C.routes[_],t=C.dynamicRoutes[k];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await I();throw new x.NoFallbackError}}let M=null;!O||j.isDev||A||(M="/index"===(M=_)?"/":M);let D=!0===j.isDev||!O,H=O&&!D;q&&N&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:N,serverActionsManifest:q});let U=e.method||"GET",$=(0,s.getTracer)(),F=$.getActiveScopeSpan(),B=!!(null==b?void 0:b.isWrappedByNextServer),W=!!(0,n.getRequestMeta)(e,"minimalMode"),K=(0,n.getRequestMeta)(e,"incrementalCache")||await j.getIncrementalCache(e,E,C,W);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let L={params:R,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:D,incrementalCache:K,cacheLifeProfiles:E.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>j.onRequestError(e,t,a,n,b)},sharedContext:{buildId:y}},G=new l.NodeNextRequest(e),V=new l.NodeNextResponse(t),X=u.NextRequestAdapter.fromNodeNextRequest(G,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>j.handle(X,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${U} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",a),n.updateName(t))}else e.updateName(`${U} ${v}`)}),o=async n=>{var s,o;let l=async({previousCacheEntry:r})=>{try{if(!W&&S&&T&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(n);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!O)return await (0,p.sendResponse)(G,V,s,L.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,a=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await j.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:S})},!1,b),t}},u=await j.handleResponse({req:e,nextConfig:E,cacheKey:M,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:T,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:W});if(!O)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});W||t.setHeader("x-nextjs-cache",S?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return W&&O||c.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(G,V,new Response(u.value.body,{headers:c,status:u.value.status||200})),null};B&&F?await o(F):(n=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(c.BaseServerSpan.handleRequest,{spanName:`${U} ${v}`,kind:s.SpanKind.SERVER,attributes:{"http.method":U,"http.target":e.url}},o),void 0,!B))}catch(t){if(t instanceof x.NoFallbackError||await j.onRequestError(e,t,{routerKind:"App Router",routePath:k,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:S})},!1,b),O)throw t;return await (0,p.sendResponse)(G,V,new Response(null,{status:500})),null}}e.s(["handler",0,T,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:b})},"routeModule",0,j,"serverHooks",0,S,"workAsyncStorage",0,C,"workUnitAsyncStorage",0,b],73019)},6714,e=>{e.v(t=>Promise.all(["server/chunks/[externals]_node_fs_0~5d6ws._.js"].map(t=>e.l(t))).then(()=>t(2157)))}];
1
+ module.exports=[18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},12714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},66680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},40060,e=>{"use strict";e.s(["resolve",0,function(e){let t=globalThis.__shipitAiContainer;if(!t)throw Error("DI container not available. Ensure the CLI bootstrap or dev-server has initialized it.");return t.resolve(e)}])},24934,e=>{"use strict";var t=e.i(25716);e.s(["apiError",0,function(e,r,a){if(a){let t=a instanceof Error?a.message:String(a);console.error(`[API ${e}] ${r}: ${t}`)}return t.NextResponse.json({error:r},{status:e})}])},55042,e=>{"use strict";var t=e.i(66680),r=e.i(60526),a=e.i(50227),n=e.i(12714);function s(e){return e.replace(/[/\\.]/g,"-")}function i(e){if("string"==typeof e)return e;if(Array.isArray(e)){for(let t of e)if("object"==typeof t&&null!==t&&"text"===t.type&&"string"==typeof t.text)return t.text}return null}async function o(e){let t;try{t=await (0,n.readdir)(e)}catch{return[]}let r=t.filter(e=>e.endsWith(".jsonl"));return(await Promise.allSettled(r.map(async t=>{let r=(0,a.join)(e,t),s=await (0,n.stat)(r);return{name:t,filePath:r,mtime:s.mtime.getTime()}}))).filter(e=>"fulfilled"===e.status).map(e=>e.value)}async function l(t,r,a,n){let{createReadStream:s}=await e.A(6714),o=r.replace(".jsonl",""),l=null,u=null,c=0,d=await new Promise(e=>{let r=[],a=0,n=s(t,{end:8191});n.on("data",e=>{r.push(e),a+=e.length}),n.on("end",()=>e(Buffer.concat(r,a).toString("utf-8"))),n.on("error",()=>e(""))});if(!d)return null;for(let e of d.split("\n").filter(e=>e.trim()))try{let t=JSON.parse(e);if("user"===t.type||"assistant"===t.type){let e=t.message?.role;("user"===e||"assistant"===e)&&(c++,t.timestamp&&(u??=t.timestamp),"user"===e&&null===l&&(l=i(t.message?.content)))}}catch{break}if(0===c)return null;let p=new Date(a).toISOString();return{id:o,agentType:"claude-code",preview:l,messageCount:c,firstMessageAt:u,lastMessageAt:p,createdAt:u??p,projectPath:n,filePath:t,_mtime:a}}async function u(e,i,c=!1){let d=s(e),p=(0,a.join)((0,r.homedir)(),".claude","projects"),h=(0,a.join)(p,d),f=await o(h);if(c)try{let i=await (0,n.readdir)(p),l=i.filter(e=>e!==d&&e.startsWith(d)),u=e.replace(/\\/g,"/"),c=(0,t.createHash)("sha256").update(u).digest("hex").slice(0,16),h=(0,a.join)((0,r.homedir)(),".shipit-ai").replace(/\\/g,"/"),m=s((0,a.join)(h,"repos",c)),x=i.filter(e=>e.startsWith(m)&&!l.includes(e)&&e!==d),g=[...l,...x];for(let e of(await Promise.all(g.map(e=>o((0,a.join)(p,e))))))f=f.concat(e)}catch{}let m=f.sort((e,t)=>t.mtime-e.mtime).slice(0,i);return(await Promise.allSettled(m.map(async t=>l(t.filePath,t.name,t.mtime,e)))).filter(e=>"fulfilled"===e.status).map(e=>e.value).filter(e=>null!==e)}async function c(t,r,a,n){let{createReadStream:s}=await e.A(6714),o=r.replace(".jsonl",""),l=await new Promise(e=>{let r=[],a=0,n=s(t,{end:8191});n.on("data",e=>{r.push(e),a+=e.length}),n.on("end",()=>e(Buffer.concat(r,a).toString("utf-8"))),n.on("error",()=>e(""))});if(!l)return null;let u=null,c=0;for(let e of l.split("\n").filter(e=>e.trim()))try{let t=JSON.parse(e);("user"===t.role||"assistant"===t.role)&&(c++,"user"===t.role&&null===u&&(u=i(t.message?.content)))}catch{break}if(0===c)return null;let d=new Date(a).toISOString();return{id:o,agentType:"cursor",preview:u,messageCount:c,firstMessageAt:d,lastMessageAt:d,createdAt:d,projectPath:n,filePath:t,_mtime:a}}async function d(e,t){let s,i=e.replace(/^\//,"").replace(/\./g,"").replace(/[/\\]/g,"-"),o=(0,a.join)((0,r.homedir)(),".cursor","projects",i,"agent-transcripts");try{s=await (0,n.readdir)(o)}catch{return[]}let l=(await Promise.allSettled(s.map(async e=>{let t=(0,a.join)(o,e),r=await (0,n.stat)(t);if(r.isFile()&&e.endsWith(".jsonl"))return{name:e,filePath:t,mtime:r.mtime.getTime()};if(r.isDirectory()){let r=(0,a.join)(t,`${e}.jsonl`);try{let t=await (0,n.stat)(r);return{name:`${e}.jsonl`,filePath:r,mtime:t.mtime.getTime()}}catch{}}return null}))).filter(e=>"fulfilled"===e.status).map(e=>e.value).filter(e=>null!==e).sort((e,t)=>t.mtime-e.mtime).slice(0,t);return(await Promise.allSettled(l.map(async t=>c(t.filePath,t.name,t.mtime,e)))).filter(e=>"fulfilled"===e.status).map(e=>e.value).filter(e=>null!==e)}async function p(e,t,r=!1){let[a,n]=await Promise.all([u(e,t,r),d(e,t)]);return[...a,...n].sort((e,t)=>t._mtime-e._mtime).slice(0,Math.min(t,50))}e.s(["scanSessionsForPath",0,p])},73019,e=>{"use strict";var t=e.i(29932),r=e.i(88797),a=e.i(78439),n=e.i(21387),s=e.i(351),i=e.i(1286),o=e.i(31060),l=e.i(67760),u=e.i(13435),c=e.i(60316),d=e.i(37130),p=e.i(31516),h=e.i(63144),f=e.i(3719),m=e.i(66941),x=e.i(93695);e.i(76574);var g=e.i(45014),v=e.i(25716),w=e.i(40060),y=e.i(24934),R=e.i(55042);let E=null;async function P(){if(E&&Date.now()-E.createdAt<3e4)return v.NextResponse.json({sessionsByPath:E.data});try{let e=(0,w.resolve)("ListRepositoriesUseCase"),t=(0,w.resolve)("ListFeaturesUseCase"),[r,a]=await Promise.all([e.execute(),t.execute({includeArchived:!1})]),n=[],s=new Set;for(let e of r)e.path&&!s.has(e.path)&&(s.add(e.path),n.push({path:e.path,includeWorktrees:!0}));for(let e of a){let t=e.worktreePath??e.repositoryPath;t&&!s.has(t)&&(s.add(t),n.push({path:t,includeWorktrees:!1}))}let i=await Promise.all(n.map(async({path:e,includeWorktrees:t})=>{let r=await (0,R.scanSessionsForPath)(e,5,t);return{path:e,sessions:r.map(({_mtime:e,...t})=>t)}})),o={};for(let{path:e,sessions:t}of i)o[e]=t;return E={data:o,createdAt:Date.now()},v.NextResponse.json({sessionsByPath:o})}catch(e){return(0,y.apiError)(500,"Failed to load sessions",e)}}e.s(["GET",0,P,"dynamic",0,"force-dynamic"],27079);var A=e.i(27079);let j=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/sessions-batch/route",pathname:"/api/sessions-batch",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/presentation/web/app/api/sessions-batch/route.ts",nextConfigOutput:"",userland:A,...{}}),{workAsyncStorage:C,workUnitAsyncStorage:b,serverHooks:S}=j;async function T(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),j.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let v="/api/sessions-batch/route";v=v.replace(/\/index$/,"")||"/";let w=await j.prepare(e,t,{srcPage:v,multiZoneDraftMode:!1});if(!w)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:y,params:R,nextConfig:E,parsedUrl:P,isDraftMode:A,prerenderManifest:C,routerServerContext:b,isOnDemandRevalidate:S,revalidateOnlyGenerated:T,resolvedPathname:_,clientReferenceManifest:N,serverActionsManifest:q}=w,k=(0,o.normalizeAppPath)(v),O=!!(C.dynamicRoutes[k]||C.routes[_]),I=async()=>((null==b?void 0:b.render404)?await b.render404(e,t,P,!1):t.end("This page could not be found"),null);if(O&&!A){let e=!!C.routes[_],t=C.dynamicRoutes[k];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await I();throw new x.NoFallbackError}}let M=null;!O||j.isDev||A||(M="/index"===(M=_)?"/":M);let D=!0===j.isDev||!O,H=O&&!D;q&&N&&(0,i.setManifestsSingleton)({page:v,clientReferenceManifest:N,serverActionsManifest:q});let U=e.method||"GET",$=(0,s.getTracer)(),F=$.getActiveScopeSpan(),B=!!(null==b?void 0:b.isWrappedByNextServer),W=!!(0,n.getRequestMeta)(e,"minimalMode"),K=(0,n.getRequestMeta)(e,"incrementalCache")||await j.getIncrementalCache(e,E,C,W);null==K||K.resetRequestCache(),globalThis.__incrementalCache=K;let L={params:R,previewProps:C.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:D,incrementalCache:K,cacheLifeProfiles:E.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>j.onRequestError(e,t,a,n,b)},sharedContext:{buildId:y}},G=new l.NodeNextRequest(e),V=new l.NodeNextResponse(t),X=u.NextRequestAdapter.fromNodeNextRequest(G,(0,u.signalFromNodeResponse)(t));try{let n,i=async e=>j.handle(X,L).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==c.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${U} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",a),n.updateName(t))}else e.updateName(`${U} ${v}`)}),o=async n=>{var s,o;let l=async({previousCacheEntry:r})=>{try{if(!W&&S&&T&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let s=await i(n);e.fetchMetrics=L.renderOpts.fetchMetrics;let o=L.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=L.renderOpts.collectedTags;if(!O)return await (0,p.sendResponse)(G,V,s,L.renderOpts.pendingWaitUntil),null;{let e=await s.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(s.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,a=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:g.CachedRouteKind.APP_ROUTE,status:s.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await j.onRequestError(e,t,{routerKind:"App Router",routePath:v,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:S})},!1,b),t}},u=await j.handleResponse({req:e,nextConfig:E,cacheKey:M,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:C,isRoutePPREnabled:!1,isOnDemandRevalidate:S,revalidateOnlyGenerated:T,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:W});if(!O)return null;if((null==u||null==(s=u.value)?void 0:s.kind)!==g.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(o=u.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});W||t.setHeader("x-nextjs-cache",S?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let c=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return W&&O||c.delete(m.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||c.get("Cache-Control")||c.set("Cache-Control",(0,f.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(G,V,new Response(u.value.body,{headers:c,status:u.value.status||200})),null};B&&F?await o(F):(n=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(c.BaseServerSpan.handleRequest,{spanName:`${U} ${v}`,kind:s.SpanKind.SERVER,attributes:{"http.method":U,"http.target":e.url}},o),void 0,!B))}catch(t){if(t instanceof x.NoFallbackError||await j.onRequestError(e,t,{routerKind:"App Router",routePath:k,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:H,isOnDemandRevalidate:S})},!1,b),O)throw t;return await (0,p.sendResponse)(G,V,new Response(null,{status:500})),null}}e.s(["handler",0,T,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:b})},"routeModule",0,j,"serverHooks",0,S,"workAsyncStorage",0,C,"workUnitAsyncStorage",0,b],73019)},6714,e=>{e.v(t=>Promise.all(["server/chunks/[externals]_node_fs_0~5d6ws._.js"].map(t=>e.l(t))).then(()=>t(2157)))}];
2
2
 
3
- //# sourceMappingURL=%5Broot-of-the-server%5D__0zu_byw._.js.map
3
+ //# sourceMappingURL=%5Broot-of-the-server%5D__07suer1._.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[2157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},12714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},66680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},74533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},40060,e=>{"use strict";e.s(["resolve",0,function(e){let t=globalThis.__shipitAiContainer;if(!t)throw Error("DI container not available. Ensure the CLI bootstrap or dev-server has initialized it.");return t.resolve(e)}])},85893,35755,19087,58585,e=>{"use strict";var t=e.i(66680),r=e.i(50227);e.i(12714);var s=e.i(60526),a=e.i(2157);function n(){return process.env.SHIPIT_AI_HOME??(0,r.join)((0,s.homedir)(),".shipit-ai")}e.s(["getShipitAiHomeDir",0,n],35755),e.s(["computeWorktreePath",0,function(e,s){let a=e.replace(/\\/g,"/"),i=(0,t.createHash)("sha256").update(a).digest("hex").slice(0,16),o=s.replace(/\//g,"-");return(0,r.join)(n(),"repos",i,"wt",o).replace(/\\/g,"/")}],19087);var i=e.i(74533);process.platform;let o={platform:process.platform,exec:(e,t)=>(0,i.execSync)(e,t),stat:e=>(0,a.statSync)(e)},l={darwin:`osascript -e 'set f to (choose file with prompt "Select files" with multiple selections allowed)' -e 'set paths to {}' -e 'repeat with i in f' -e 'copy POSIX path of i to end of paths' -e 'end repeat' -e 'set text item delimiters to "
1
+ module.exports=[18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},2157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},12714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},66680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},74533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},40060,e=>{"use strict";e.s(["resolve",0,function(e){let t=globalThis.__shipitAiContainer;if(!t)throw Error("DI container not available. Ensure the CLI bootstrap or dev-server has initialized it.");return t.resolve(e)}])},85893,35755,19087,58585,e=>{"use strict";var t=e.i(66680),r=e.i(50227);e.i(12714);var s=e.i(60526),a=e.i(2157);function n(){return process.env.SHIPIT_AI_HOME??(0,r.join)((0,s.homedir)(),".shipit-ai")}e.s(["getShipitAiHomeDir",0,n],35755),e.s(["computeWorktreePath",0,function(e,s){let a=e.replace(/\\/g,"/"),i=(0,t.createHash)("sha256").update(a).digest("hex").slice(0,16),o=s.replace(/\//g,"-");return(0,r.join)(n(),"repos",i,"wt",o).replace(/\\/g,"/")}],19087);var i=e.i(74533);process.platform;let o={platform:process.platform,exec:(e,t)=>(0,i.execSync)(e,t),stat:e=>(0,a.statSync)(e)},l={darwin:`osascript -e 'set f to (choose file with prompt "Select files" with multiple selections allowed)' -e 'set paths to {}' -e 'repeat with i in f' -e 'copy POSIX path of i to end of paths' -e 'end repeat' -e 'set text item delimiters to "
2
2
  "' -e 'paths as text'`,linux:'zenity --file-selection --multiple --separator="\\n" --title="Select files" 2>/dev/null',win32:"powershell -NoProfile -Command \"Add-Type -AssemblyName System.Windows.Forms; $d = New-Object System.Windows.Forms.OpenFileDialog; $d.Multiselect = $true; $d.Title = 'Select files'; if ($d.ShowDialog() -eq 'OK') { $d.FileNames -join [char]10 } else { exit 1 }\""};e.s(["FileDialogService",0,class{deps;constructor(e={}){this.deps={...o,...e}}getCommand(){return l[this.deps.platform]??null}pickFiles(){let e=this.getCommand();if(!e)throw Error(`Unsupported platform: ${this.deps.platform}`);try{let t=this.deps.exec(e,{encoding:"utf-8",timeout:6e4}).split("\n").map(e=>e.trim()).filter(e=>e.length>0);if(0===t.length)return null;return t.map(e=>{let t=this.deps.stat(e);return{path:e,name:e.split(/[/\\]/).pop(),size:t.size}})}catch(e){var t;if("object"==typeof(t=e)&&null!==t&&"status"in t&&1===e.status)return null;throw e}}}],58585),e.s([],85893)},70277,e=>{"use strict";var t=e.i(29932),r=e.i(88797),s=e.i(78439),a=e.i(21387),n=e.i(351),i=e.i(1286),o=e.i(31060),l=e.i(67760),p=e.i(13435),u=e.i(60316),d=e.i(37130),c=e.i(31516),h=e.i(63144),f=e.i(3719),m=e.i(66941),x=e.i(93695);e.i(76574);var v=e.i(45014),g=e.i(25716),R=e.i(40060);e.i(85893);var w=e.i(35755);async function y(e,{params:t}){try{let{featureId:r}=await t,{content:s,worktreePath:a,model:n,agentType:i}=await e.json();if(!s||"string"!=typeof s||0===s.trim().length)return g.NextResponse.json({error:"content must be a non-empty string"},{status:400});if(Buffer.byteLength(s,"utf8")>32768)return g.NextResponse.json({error:"content exceeds maximum size of 32 KB"},{status:400});let o=a;o&&"string"==typeof o||(o=(0,w.getShipitAiHomeDir)());let l=(0,R.resolve)("SendInteractiveMessageUseCase"),p=await l.execute({featureId:r,content:s,worktreePath:o,model:"string"==typeof n?n:void 0,agentType:"string"==typeof i?i:void 0});return g.NextResponse.json({message:p},{status:201})}catch(e){if(e instanceof Error&&e.message.includes("concurrent session limit"))return g.NextResponse.json({error:e.message},{status:429});return console.error("[POST /api/interactive/chat/:featureId/messages]",e),g.NextResponse.json({error:e instanceof Error?e.message:"Internal server error"},{status:500})}}async function E(e,{params:t}){try{let{featureId:e}=await t,r=(0,R.resolve)("IInteractiveSessionService");return await r.clearMessages(e),g.NextResponse.json({ok:!0})}catch(e){return console.error("[DELETE /api/interactive/chat/:featureId/messages]",e),g.NextResponse.json({error:e instanceof Error?e.message:"Internal server error"},{status:500})}}async function C(e,{params:t}){try{let{featureId:e}=await t,r=(0,R.resolve)("GetInteractiveChatStateUseCase"),s=await r.execute({featureId:e});return g.NextResponse.json(s)}catch(e){return console.error("[GET /api/interactive/chat/:featureId/messages]",e),g.NextResponse.json({error:e instanceof Error?e.message:"Internal server error"},{status:500})}}e.s(["DELETE",0,E,"GET",0,C,"POST",0,y,"dynamic",0,"force-dynamic"],45502);var S=e.i(45502);let b=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/interactive/chat/[featureId]/messages/route",pathname:"/api/interactive/chat/[featureId]/messages",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/presentation/web/app/api/interactive/chat/[featureId]/messages/route.ts",nextConfigOutput:"",userland:S,...{}}),{workAsyncStorage:N,workUnitAsyncStorage:A,serverHooks:I}=b;async function T(e,t,s){s.requestMeta&&(0,a.setRequestMeta)(e,s.requestMeta),b.isDev&&(0,a.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let g="/api/interactive/chat/[featureId]/messages/route";g=g.replace(/\/index$/,"")||"/";let R=await b.prepare(e,t,{srcPage:g,multiZoneDraftMode:!1});if(!R)return t.statusCode=400,t.end("Bad Request"),null==s.waitUntil||s.waitUntil.call(s,Promise.resolve()),null;let{buildId:w,params:y,nextConfig:E,parsedUrl:C,isDraftMode:S,prerenderManifest:N,routerServerContext:A,isOnDemandRevalidate:I,revalidateOnlyGenerated:T,resolvedPathname:j,clientReferenceManifest:q,serverActionsManifest:P}=R,O=(0,o.normalizeAppPath)(g),_=!!(N.dynamicRoutes[O]||N.routes[j]),k=async()=>((null==A?void 0:A.render404)?await A.render404(e,t,C,!1):t.end("This page could not be found"),null);if(_&&!S){let e=!!N.routes[j],t=N.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(E.adapterPath)return await k();throw new x.NoFallbackError}}let H=null;!_||b.isDev||S||(H="/index"===(H=j)?"/":H);let D=!0===b.isDev||!_,M=_&&!D;P&&q&&(0,i.setManifestsSingleton)({page:g,clientReferenceManifest:q,serverActionsManifest:P});let U=e.method||"GET",$=(0,n.getTracer)(),F=$.getActiveScopeSpan(),K=!!(null==A?void 0:A.isWrappedByNextServer),L=!!(0,a.getRequestMeta)(e,"minimalMode"),B=(0,a.getRequestMeta)(e,"incrementalCache")||await b.getIncrementalCache(e,E,N,L);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let z={params:y,previewProps:N.preview,renderOpts:{experimental:{authInterrupts:!!E.experimental.authInterrupts},cacheComponents:!!E.cacheComponents,supportsDynamicResponse:D,incrementalCache:B,cacheLifeProfiles:E.cacheLife,waitUntil:s.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,s,a)=>b.onRequestError(e,t,s,a,A)},sharedContext:{buildId:w}},G=new l.NodeNextRequest(e),W=new l.NodeNextResponse(t),X=p.NextRequestAdapter.fromNodeNextRequest(G,(0,p.signalFromNodeResponse)(t));try{let a,i=async e=>b.handle(X,z).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let s=r.get("next.route");if(s){let t=`${U} ${s}`;e.setAttributes({"next.route":s,"http.route":s,"next.span_name":t}),e.updateName(t),a&&a!==e&&(a.setAttribute("http.route",s),a.updateName(t))}else e.updateName(`${U} ${g}`)}),o=async a=>{var n,o;let l=async({previousCacheEntry:r})=>{try{if(!L&&I&&T&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let n=await i(a);e.fetchMetrics=z.renderOpts.fetchMetrics;let o=z.renderOpts.pendingWaitUntil;o&&s.waitUntil&&(s.waitUntil(o),o=void 0);let l=z.renderOpts.collectedTags;if(!_)return await (0,c.sendResponse)(G,W,n,z.renderOpts.pendingWaitUntil),null;{let e=await n.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(n.headers);l&&(t[m.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==z.renderOpts.collectedRevalidate&&!(z.renderOpts.collectedRevalidate>=m.INFINITE_CACHE)&&z.renderOpts.collectedRevalidate,s=void 0===z.renderOpts.collectedExpire||z.renderOpts.collectedExpire>=m.INFINITE_CACHE?void 0:z.renderOpts.collectedExpire;return{value:{kind:v.CachedRouteKind.APP_ROUTE,status:n.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:s}}}}catch(t){throw(null==r?void 0:r.isStale)&&await b.onRequestError(e,t,{routerKind:"App Router",routePath:g,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:I})},!1,A),t}},p=await b.handleResponse({req:e,nextConfig:E,cacheKey:H,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:N,isRoutePPREnabled:!1,isOnDemandRevalidate:I,revalidateOnlyGenerated:T,responseGenerator:l,waitUntil:s.waitUntil,isMinimalMode:L});if(!_)return null;if((null==p||null==(n=p.value)?void 0:n.kind)!==v.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==p||null==(o=p.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});L||t.setHeader("x-nextjs-cache",I?"REVALIDATED":p.isMiss?"MISS":p.isStale?"STALE":"HIT"),S&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,h.fromNodeOutgoingHttpHeaders)(p.value.headers);return L&&_||u.delete(m.NEXT_CACHE_TAGS_HEADER),!p.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,f.getCacheControlHeader)(p.cacheControl)),await (0,c.sendResponse)(G,W,new Response(p.value.body,{headers:u,status:p.value.status||200})),null};K&&F?await o(F):(a=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(u.BaseServerSpan.handleRequest,{spanName:`${U} ${g}`,kind:n.SpanKind.SERVER,attributes:{"http.method":U,"http.target":e.url}},o),void 0,!K))}catch(t){if(t instanceof x.NoFallbackError||await b.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,d.getRevalidateReason)({isStaticGeneration:M,isOnDemandRevalidate:I})},!1,A),_)throw t;return await (0,c.sendResponse)(G,W,new Response(null,{status:500})),null}}e.s(["handler",0,T,"patchFetch",0,function(){return(0,s.patchFetch)({workAsyncStorage:N,workUnitAsyncStorage:A})},"routeModule",0,b,"serverHooks",0,I,"workAsyncStorage",0,N,"workUnitAsyncStorage",0,A],70277)}];
3
3
 
4
- //# sourceMappingURL=%5Broot-of-the-server%5D__0u1jyv9._.js.map
4
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0sgzo7y._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},40060,e=>{"use strict";e.s(["resolve",0,function(e){let t=globalThis.__shipitAiContainer;if(!t)throw Error("DI container not available. Ensure the CLI bootstrap or dev-server has initialized it.");return t.resolve(e)}])},68367,e=>{"use strict";var t=e.i(29932),r=e.i(88797),a=e.i(78439),n=e.i(21387),i=e.i(351),s=e.i(1286),o=e.i(31060),l=e.i(67760),d=e.i(13435),u=e.i(60316),p=e.i(37130),c=e.i(31516),h=e.i(63144),v=e.i(3719),x=e.i(66941),R=e.i(93695);e.i(76574);var m=e.i(45014),f=e.i(25716),g=e.i(40060);e.s(["GET",0,function(){try{let{version:e,name:t,description:r}=(0,g.resolve)("IVersionService").getVersion();return f.NextResponse.json({version:e,packageName:t,description:r,branch:"main",commitHash:"dfbf2f0bac6eb81224e97208ec6a937ef16879a7",instancePath:"/home/runner/work/shipit/shipit/src/presentation/web",isDev:!1})}catch{return f.NextResponse.json({version:"1.168.0",packageName:"@shipit-ai/cli",description:"Autonomous AI Native SDLC Platform - Automate the development cycle from idea to deploy",branch:"main",commitHash:"dfbf2f0bac6eb81224e97208ec6a937ef16879a7",instancePath:"/home/runner/work/shipit/shipit/src/presentation/web",isDev:!1})}},"dynamic",0,"force-dynamic"],35003);var w=e.i(35003);let E=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/version/route",pathname:"/api/version",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/presentation/web/app/api/version/route.ts",nextConfigOutput:"",userland:w,...{}}),{workAsyncStorage:b,workUnitAsyncStorage:y,serverHooks:C}=E;async function A(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),E.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let f="/api/version/route";f=f.replace(/\/index$/,"")||"/";let g=await E.prepare(e,t,{srcPage:f,multiZoneDraftMode:!1});if(!g)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:w,params:b,nextConfig:y,parsedUrl:C,isDraftMode:A,prerenderManifest:N,routerServerContext:P,isOnDemandRevalidate:T,revalidateOnlyGenerated:k,resolvedPathname:q,clientReferenceManifest:S,serverActionsManifest:_}=g,O=(0,o.normalizeAppPath)(f),I=!!(N.dynamicRoutes[O]||N.routes[q]),j=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,C,!1):t.end("This page could not be found"),null);if(I&&!A){let e=!!N.routes[q],t=N.dynamicRoutes[O];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await j();throw new R.NoFallbackError}}let H=null;!I||E.isDev||A||(H="/index"===(H=q)?"/":H);let D=!0===E.isDev||!I,U=I&&!D;_&&S&&(0,s.setManifestsSingleton)({page:f,clientReferenceManifest:S,serverActionsManifest:_});let M=e.method||"GET",$=(0,i.getTracer)(),F=$.getActiveScopeSpan(),K=!!(null==P?void 0:P.isWrappedByNextServer),L=!!(0,n.getRequestMeta)(e,"minimalMode"),B=(0,n.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,y,N,L);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let V={params:b,previewProps:N.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:D,incrementalCache:B,cacheLifeProfiles:y.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>E.onRequestError(e,t,a,n,P)},sharedContext:{buildId:w}},G=new l.NodeNextRequest(e),W=new l.NodeNextResponse(t),X=d.NextRequestAdapter.fromNodeNextRequest(G,(0,d.signalFromNodeResponse)(t));try{let n,s=async e=>E.handle(X,V).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${M} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",a),n.updateName(t))}else e.updateName(`${M} ${f}`)}),o=async n=>{var i,o;let l=async({previousCacheEntry:r})=>{try{if(!L&&T&&k&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await s(n);e.fetchMetrics=V.renderOpts.fetchMetrics;let o=V.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=V.renderOpts.collectedTags;if(!I)return await (0,c.sendResponse)(G,W,i,V.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[x.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==V.renderOpts.collectedRevalidate&&!(V.renderOpts.collectedRevalidate>=x.INFINITE_CACHE)&&V.renderOpts.collectedRevalidate,a=void 0===V.renderOpts.collectedExpire||V.renderOpts.collectedExpire>=x.INFINITE_CACHE?void 0:V.renderOpts.collectedExpire;return{value:{kind:m.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:f,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:T})},!1,P),t}},d=await E.handleResponse({req:e,nextConfig:y,cacheKey:H,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:N,isRoutePPREnabled:!1,isOnDemandRevalidate:T,revalidateOnlyGenerated:k,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:L});if(!I)return null;if((null==d||null==(i=d.value)?void 0:i.kind)!==m.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(o=d.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});L||t.setHeader("x-nextjs-cache",T?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,h.fromNodeOutgoingHttpHeaders)(d.value.headers);return L&&I||u.delete(x.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,v.getCacheControlHeader)(d.cacheControl)),await (0,c.sendResponse)(G,W,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};K&&F?await o(F):(n=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(u.BaseServerSpan.handleRequest,{spanName:`${M} ${f}`,kind:i.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},o),void 0,!K))}catch(t){if(t instanceof R.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:O,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:T})},!1,P),I)throw t;return await (0,c.sendResponse)(G,W,new Response(null,{status:500})),null}}e.s(["handler",0,A,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:b,workUnitAsyncStorage:y})},"routeModule",0,E,"serverHooks",0,C,"workAsyncStorage",0,b,"workUnitAsyncStorage",0,y],68367)}];
1
+ module.exports=[18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},40060,e=>{"use strict";e.s(["resolve",0,function(e){let t=globalThis.__shipitAiContainer;if(!t)throw Error("DI container not available. Ensure the CLI bootstrap or dev-server has initialized it.");return t.resolve(e)}])},68367,e=>{"use strict";var t=e.i(29932),r=e.i(88797),a=e.i(78439),n=e.i(21387),i=e.i(351),s=e.i(1286),o=e.i(31060),l=e.i(67760),d=e.i(13435),u=e.i(60316),p=e.i(37130),c=e.i(31516),h=e.i(63144),v=e.i(3719),x=e.i(66941),R=e.i(93695);e.i(76574);var m=e.i(45014),f=e.i(25716),g=e.i(40060);e.s(["GET",0,function(){try{let{version:e,name:t,description:r}=(0,g.resolve)("IVersionService").getVersion();return f.NextResponse.json({version:e,packageName:t,description:r,branch:"HEAD",commitHash:"d3605b0c65b9f1b4ec0842dc49e89291f26ab0ee",instancePath:"/home/runner/work/shipit/shipit/src/presentation/web",isDev:!1})}catch{return f.NextResponse.json({version:"1.170.0",packageName:"@shipit-ai/cli",description:"Autonomous AI Native SDLC Platform - Automate the development cycle from idea to deploy",branch:"HEAD",commitHash:"d3605b0c65b9f1b4ec0842dc49e89291f26ab0ee",instancePath:"/home/runner/work/shipit/shipit/src/presentation/web",isDev:!1})}},"dynamic",0,"force-dynamic"],35003);var w=e.i(35003);let E=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/version/route",pathname:"/api/version",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/presentation/web/app/api/version/route.ts",nextConfigOutput:"",userland:w,...{}}),{workAsyncStorage:b,workUnitAsyncStorage:y,serverHooks:C}=E;async function A(e,t,a){a.requestMeta&&(0,n.setRequestMeta)(e,a.requestMeta),E.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let f="/api/version/route";f=f.replace(/\/index$/,"")||"/";let g=await E.prepare(e,t,{srcPage:f,multiZoneDraftMode:!1});if(!g)return t.statusCode=400,t.end("Bad Request"),null==a.waitUntil||a.waitUntil.call(a,Promise.resolve()),null;let{buildId:w,params:b,nextConfig:y,parsedUrl:C,isDraftMode:A,prerenderManifest:N,routerServerContext:P,isOnDemandRevalidate:T,revalidateOnlyGenerated:k,resolvedPathname:q,clientReferenceManifest:S,serverActionsManifest:_}=g,H=(0,o.normalizeAppPath)(f),O=!!(N.dynamicRoutes[H]||N.routes[q]),I=async()=>((null==P?void 0:P.render404)?await P.render404(e,t,C,!1):t.end("This page could not be found"),null);if(O&&!A){let e=!!N.routes[q],t=N.dynamicRoutes[H];if(t&&!1===t.fallback&&!e){if(y.adapterPath)return await I();throw new R.NoFallbackError}}let j=null;!O||E.isDev||A||(j="/index"===(j=q)?"/":j);let D=!0===E.isDev||!O,U=O&&!D;_&&S&&(0,s.setManifestsSingleton)({page:f,clientReferenceManifest:S,serverActionsManifest:_});let M=e.method||"GET",$=(0,i.getTracer)(),F=$.getActiveScopeSpan(),K=!!(null==P?void 0:P.isWrappedByNextServer),L=!!(0,n.getRequestMeta)(e,"minimalMode"),B=(0,n.getRequestMeta)(e,"incrementalCache")||await E.getIncrementalCache(e,y,N,L);null==B||B.resetRequestCache(),globalThis.__incrementalCache=B;let V={params:b,previewProps:N.preview,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:D,incrementalCache:B,cacheLifeProfiles:y.cacheLife,waitUntil:a.waitUntil,onClose:e=>{t.on("close",e)},onAfterTaskError:void 0,onInstrumentationRequestError:(t,r,a,n)=>E.onRequestError(e,t,a,n,P)},sharedContext:{buildId:w}},G=new l.NodeNextRequest(e),W=new l.NodeNextResponse(t),X=d.NextRequestAdapter.fromNodeNextRequest(G,(0,d.signalFromNodeResponse)(t));try{let n,s=async e=>E.handle(X,V).finally(()=>{if(!e)return;e.setAttributes({"http.status_code":t.statusCode,"next.rsc":!1});let r=$.getRootSpanAttributes();if(!r)return;if(r.get("next.span_type")!==u.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${r.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let a=r.get("next.route");if(a){let t=`${M} ${a}`;e.setAttributes({"next.route":a,"http.route":a,"next.span_name":t}),e.updateName(t),n&&n!==e&&(n.setAttribute("http.route",a),n.updateName(t))}else e.updateName(`${M} ${f}`)}),o=async n=>{var i,o;let l=async({previousCacheEntry:r})=>{try{if(!L&&T&&k&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let i=await s(n);e.fetchMetrics=V.renderOpts.fetchMetrics;let o=V.renderOpts.pendingWaitUntil;o&&a.waitUntil&&(a.waitUntil(o),o=void 0);let l=V.renderOpts.collectedTags;if(!O)return await (0,c.sendResponse)(G,W,i,V.renderOpts.pendingWaitUntil),null;{let e=await i.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(i.headers);l&&(t[x.NEXT_CACHE_TAGS_HEADER]=l),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==V.renderOpts.collectedRevalidate&&!(V.renderOpts.collectedRevalidate>=x.INFINITE_CACHE)&&V.renderOpts.collectedRevalidate,a=void 0===V.renderOpts.collectedExpire||V.renderOpts.collectedExpire>=x.INFINITE_CACHE?void 0:V.renderOpts.collectedExpire;return{value:{kind:m.CachedRouteKind.APP_ROUTE,status:i.status,body:Buffer.from(await e.arrayBuffer()),headers:t},cacheControl:{revalidate:r,expire:a}}}}catch(t){throw(null==r?void 0:r.isStale)&&await E.onRequestError(e,t,{routerKind:"App Router",routePath:f,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:T})},!1,P),t}},d=await E.handleResponse({req:e,nextConfig:y,cacheKey:j,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:N,isRoutePPREnabled:!1,isOnDemandRevalidate:T,revalidateOnlyGenerated:k,responseGenerator:l,waitUntil:a.waitUntil,isMinimalMode:L});if(!O)return null;if((null==d||null==(i=d.value)?void 0:i.kind)!==m.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==d||null==(o=d.value)?void 0:o.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});L||t.setHeader("x-nextjs-cache",T?"REVALIDATED":d.isMiss?"MISS":d.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let u=(0,h.fromNodeOutgoingHttpHeaders)(d.value.headers);return L&&O||u.delete(x.NEXT_CACHE_TAGS_HEADER),!d.cacheControl||t.getHeader("Cache-Control")||u.get("Cache-Control")||u.set("Cache-Control",(0,v.getCacheControlHeader)(d.cacheControl)),await (0,c.sendResponse)(G,W,new Response(d.value.body,{headers:u,status:d.value.status||200})),null};K&&F?await o(F):(n=$.getActiveScopeSpan(),await $.withPropagatedContext(e.headers,()=>$.trace(u.BaseServerSpan.handleRequest,{spanName:`${M} ${f}`,kind:i.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},o),void 0,!K))}catch(t){if(t instanceof R.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:H,routeType:"route",revalidateReason:(0,p.getRevalidateReason)({isStaticGeneration:U,isOnDemandRevalidate:T})},!1,P),O)throw t;return await (0,c.sendResponse)(G,W,new Response(null,{status:500})),null}}e.s(["handler",0,A,"patchFetch",0,function(){return(0,a.patchFetch)({workAsyncStorage:b,workUnitAsyncStorage:y})},"routeModule",0,E,"serverHooks",0,C,"workAsyncStorage",0,b,"workUnitAsyncStorage",0,y],68367)}];
2
2
 
3
3
  //# sourceMappingURL=%5Broot-of-the-server%5D__0tb~wwk._.js.map
@@ -1,4 +1,4 @@
1
- module.exports=[2157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},12714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},66680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},74533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},40060,e=>{"use strict";e.s(["resolve",0,function(e){let t=globalThis.__shipitAiContainer;if(!t)throw Error("DI container not available. Ensure the CLI bootstrap or dev-server has initialized it.");return t.resolve(e)}])},12057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},85893,35755,19087,58585,e=>{"use strict";var t=e.i(66680),r=e.i(50227);e.i(12714);var s=e.i(60526),i=e.i(2157);function o(){return process.env.SHIPIT_AI_HOME??(0,r.join)((0,s.homedir)(),".shipit-ai")}e.s(["getShipitAiHomeDir",0,o],35755),e.s(["computeWorktreePath",0,function(e,s){let i=e.replace(/\\/g,"/"),n=(0,t.createHash)("sha256").update(i).digest("hex").slice(0,16),a=s.replace(/\//g,"-");return(0,r.join)(o(),"repos",n,"wt",a).replace(/\\/g,"/")}],19087);var n=e.i(74533);process.platform;let a={platform:process.platform,exec:(e,t)=>(0,n.execSync)(e,t),stat:e=>(0,i.statSync)(e)},p={darwin:`osascript -e 'set f to (choose file with prompt "Select files" with multiple selections allowed)' -e 'set paths to {}' -e 'repeat with i in f' -e 'copy POSIX path of i to end of paths' -e 'end repeat' -e 'set text item delimiters to "
1
+ module.exports=[18622,(e,t,r)=>{t.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},32319,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},56704,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},24725,(e,t,r)=>{t.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},70406,(e,t,r)=>{t.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},2157,(e,t,r)=>{t.exports=e.x("node:fs",()=>require("node:fs"))},50227,(e,t,r)=>{t.exports=e.x("node:path",()=>require("node:path"))},60526,(e,t,r)=>{t.exports=e.x("node:os",()=>require("node:os"))},12714,(e,t,r)=>{t.exports=e.x("node:fs/promises",()=>require("node:fs/promises"))},66680,(e,t,r)=>{t.exports=e.x("node:crypto",()=>require("node:crypto"))},74533,(e,t,r)=>{t.exports=e.x("node:child_process",()=>require("node:child_process"))},93695,(e,t,r)=>{t.exports=e.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},40060,e=>{"use strict";e.s(["resolve",0,function(e){let t=globalThis.__shipitAiContainer;if(!t)throw Error("DI container not available. Ensure the CLI bootstrap or dev-server has initialized it.");return t.resolve(e)}])},12057,(e,t,r)=>{t.exports=e.x("node:util",()=>require("node:util"))},85893,35755,19087,58585,e=>{"use strict";var t=e.i(66680),r=e.i(50227);e.i(12714);var s=e.i(60526),i=e.i(2157);function o(){return process.env.SHIPIT_AI_HOME??(0,r.join)((0,s.homedir)(),".shipit-ai")}e.s(["getShipitAiHomeDir",0,o],35755),e.s(["computeWorktreePath",0,function(e,s){let i=e.replace(/\\/g,"/"),n=(0,t.createHash)("sha256").update(i).digest("hex").slice(0,16),a=s.replace(/\//g,"-");return(0,r.join)(o(),"repos",n,"wt",a).replace(/\\/g,"/")}],19087);var n=e.i(74533);process.platform;let a={platform:process.platform,exec:(e,t)=>(0,n.execSync)(e,t),stat:e=>(0,i.statSync)(e)},p={darwin:`osascript -e 'set f to (choose file with prompt "Select files" with multiple selections allowed)' -e 'set paths to {}' -e 'repeat with i in f' -e 'copy POSIX path of i to end of paths' -e 'end repeat' -e 'set text item delimiters to "
2
2
  "' -e 'paths as text'`,linux:'zenity --file-selection --multiple --separator="\\n" --title="Select files" 2>/dev/null',win32:"powershell -NoProfile -Command \"Add-Type -AssemblyName System.Windows.Forms; $d = New-Object System.Windows.Forms.OpenFileDialog; $d.Multiselect = $true; $d.Title = 'Select files'; if ($d.ShowDialog() -eq 'OK') { $d.FileNames -join [char]10 } else { exit 1 }\""};e.s(["FileDialogService",0,class{deps;constructor(e={}){this.deps={...a,...e}}getCommand(){return p[this.deps.platform]??null}pickFiles(){let e=this.getCommand();if(!e)throw Error(`Unsupported platform: ${this.deps.platform}`);try{let t=this.deps.exec(e,{encoding:"utf-8",timeout:6e4}).split("\n").map(e=>e.trim()).filter(e=>e.length>0);if(0===t.length)return null;return t.map(e=>{let t=this.deps.stat(e);return{path:e,name:e.split(/[/\\]/).pop(),size:t.size}})}catch(e){var t;if("object"==typeof(t=e)&&null!==t&&"status"in t&&1===e.status)return null;throw e}}}],58585),e.s([],85893)}];
3
3
 
4
- //# sourceMappingURL=%5Broot-of-the-server%5D__08cpfre._.js.map
4
+ //# sourceMappingURL=%5Broot-of-the-server%5D__0uxlr84._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[93995,a=>{"use strict";var b=a.i(53083),c=a.i(11321),d=a.i(40674),e=a.i(52313),f=a.i(6120);let g=(0,f.createServerReference)("400a42af6e2cec3728e3145e88ffcf104a015ee09d",f.callServer,void 0,f.findSourceMapURL,"createFeature");a.i(98617);var h=a.i(50040);a.i(78454);var i=a.i(24255),j=a.i(2824),k=a.i(18948),l=a.i(58860),m=a.i(58339),n=a.i(82934),o=a.i(19884),p=a.i(96213);let q=(0,f.createServerReference)("40c199af21f0c83c99e3185c1393d5ad435bbad637",f.callServer,void 0,f.findSourceMapURL,"getViewerPermission");var r=a.i(39116);let s=new Set([".png",".jpg",".jpeg",".gif",".webp",".svg",".bmp",".ico",".pdf",".doc",".docx",".xls",".xlsx",".ppt",".pptx",".txt",".md",".csv",".json",".yaml",".yml",".xml",".ts",".tsx",".js",".jsx",".py",".rb",".go",".rs",".java",".c",".cpp",".h",".hpp",".cs",".swift",".kt",".html",".css",".scss",".less",".sh",".bash",".zsh",".fish",".toml",".ini",".cfg",".conf",".env",".zip",".tar",".gz",".log"]),t={allowPrd:!1,allowPlan:!1,allowMerge:!1};var u=a.i(95014),v=a.i(42728),w=a.i(41042),x=a.i(85536),y=a.i(79620),z=a.i(96867);a.i(307);var A=a.i(30931),B=a.i(61781);function C({description:a,onDescriptionChange:d,attachments:e,onRemoveFile:f,onNotesChange:g,onPaste:i,onDragEnter:j,onDragLeave:k,onDragOver:m,onDrop:o,onAddFiles:p,isDragOver:q,uploadError:r,isPromptFocused:s,onPromptFocus:t,onPromptBlur:D,fast:E,onFastChange:F,pending:G,onPendingChange:H,overrideAgent:I,overrideModel:J,currentAgentType:K,currentModel:L,onAgentModelChange:M,isSubmitting:N}){let{t:O}=(0,h.useTranslation)("web"),P=(0,c.useRef)(null);return(0,b.jsxs)("div",{role:"region","aria-label":O("createDrawer.fileDropZone"),"data-drag-over":q?"true":"false",onDragEnter:j,onDragLeave:k,onDragOver:m,onDrop:o,className:(0,x.cn)("flex flex-col gap-1.5 rounded-md border-2 border-transparent p-1 transition-colors",q&&"border-primary/50 bg-primary/5"),children:[(0,b.jsx)(l.Label,{htmlFor:"feature-description",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:O("createDrawer.describeFeature")}),(0,b.jsxs)("div",{ref:P,onFocus:t,onBlur:()=>{setTimeout(()=>{let a=P.current?.contains(document.activeElement),b=P.current?.querySelector('[aria-expanded="true"]')!==null;a||b||D()},0)},className:(0,x.cn)("border-input flex h-56 flex-col overflow-hidden rounded-md border shadow-xs transition-[color,box-shadow]",s&&"ring-ring/50 border-ring ring-[3px]"),children:[(0,b.jsx)(y.Textarea,{id:"feature-description",placeholder:O("createDrawer.featurePlaceholder"),value:a,onChange:a=>d(a.target.value),onPaste:i,required:!0,disabled:N,"aria-invalid":!!r,"aria-describedby":r?"feature-upload-error":void 0,className:"min-h-0 flex-1 resize-none rounded-none border-0 shadow-none focus-visible:ring-0"}),e.length>0&&(0,b.jsx)("div",{className:"flex flex-wrap items-center gap-1.5 px-3 py-2",children:e.map(a=>(0,b.jsx)(A.AttachmentChip,{name:a.name,size:a.size,mimeType:a.mimeType,path:a.path,onRemove:()=>f(a.id),disabled:N,loading:a.loading,notes:a.notes,onNotesChange:b=>g(a.id,b)},a.id))}),r?(0,b.jsx)("p",{id:"feature-upload-error",className:"text-destructive px-3 pb-2 text-xs",role:"alert",children:r}):null,(0,b.jsxs)("div",{className:"border-input flex items-center gap-3 border-t px-3 py-1.5",children:[(0,b.jsx)(B.AgentModelPicker,{initialAgentType:I??K??"claude-code",initialModel:J??L??"claude-sonnet-4-6",mode:"override",onAgentModelChange:M,disabled:N,className:"w-55"}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"ml-auto flex cursor-pointer items-center gap-2",children:[(0,b.jsx)(z.Switch,{id:"pending-mode",checked:G,onCheckedChange:H,disabled:N}),(0,b.jsxs)(l.Label,{htmlFor:"pending-mode",className:"flex cursor-pointer items-center gap-1 text-sm font-medium",children:[(0,b.jsx)(w.Clock,{className:"h-3.5 w-3.5"}),O("createDrawer.pendingMode")]})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:O("createDrawer.pendingModeDescription")})]}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-2",children:[(0,b.jsx)(z.Switch,{id:"fast-mode",checked:E,onCheckedChange:F,disabled:N}),(0,b.jsxs)(l.Label,{htmlFor:"fast-mode",className:"flex cursor-pointer items-center gap-1 text-sm font-medium",children:[(0,b.jsx)(v.Zap,{className:"h-3.5 w-3.5"}),O("createDrawer.fastModeLabel")]})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:O("createDrawer.fastModeDescription")})]}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",onClick:p,disabled:N,"aria-label":O("chat.attachFiles"),className:"text-muted-foreground hover:text-foreground cursor-pointer rounded p-1 transition-colors",children:(0,b.jsx)(u.PaperclipIcon,{className:"h-4 w-4"})})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:O("chat.attachFiles")})]})]})]})]})}var D=a.i(53759),E=a.i(63204),F=a.i(67664),G=a.i(53556),H=a.i(59175);let I=(0,f.createServerReference)("402644f329b8e414e2f2e4c562b866756eecd73e81",f.callServer,void 0,f.findSourceMapURL,"getAgentPermissionOptions"),J=["allowPrd","allowPlan","allowMerge"];function K({approvalGates:a,onApprovalGatesChange:c,enableEvidence:d,onEnableEvidenceChange:e,commitEvidence:f,onCommitEvidenceChange:g,push:i,onPushChange:j,openPr:k,onOpenPrChange:m,ciWatchEnabled:o,onCiWatchChange:p,rebaseBeforeBranch:q,onRebaseBeforeBranchChange:r,commitSpecs:s,onCommitSpecsChange:t,forkAndPr:u,onForkAndPrChange:v,canPush:w,fast:y,computedPush:A,computedOpenPr:B,isSubmitting:C,agentType:G,permissionMode:H,onPermissionModeChange:I}){let{t:M}=(0,h.useTranslation)("web"),N=[{id:"allowPrd",label:M("createDrawer.prd"),description:M("createDrawer.prdDescription")},{id:"allowPlan",label:M("createDrawer.plan"),description:M("createDrawer.planDescription")},{id:"allowMerge",label:M("createDrawer.merge"),description:M("createDrawer.mergeDescription")}];return(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsxs)("div",{className:"border-input flex items-center gap-4 rounded-md border px-3 py-2.5",children:[(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 cursor-default text-xs font-semibold tracking-wider",children:M("createDrawer.approve")})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:M("createDrawer.approveDescription")})]}),(0,b.jsx)("div",{className:"flex flex-1 items-center gap-4",children:N.map(d=>(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:`approve-${d.id}`,size:"sm",checked:a[d.id]??!1,onCheckedChange:b=>c({...a,[d.id]:b}),disabled:C||y&&("allowPrd"===d.id||"allowPlan"===d.id)}),(0,b.jsx)(l.Label,{htmlFor:`approve-${d.id}`,className:"cursor-pointer text-xs font-medium",children:d.label})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:y&&("allowPrd"===d.id||"allowPlan"===d.id)?M("createDrawer.skippedInFastMode"):d.description})]},d.id))}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",onClick:()=>{let b=J.every(b=>a[b]),d={};for(let a of J)d[a]=!b;c(d)},disabled:C,className:(0,x.cn)("text-muted-foreground hover:text-foreground cursor-pointer rounded px-1.5 py-0.5 text-[10px] font-semibold tracking-wider uppercase transition-colors",J.every(b=>a[b])&&"text-primary"),children:M("createDrawer.all")})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:M("createDrawer.toggleAllApprovalGates")})]})]}),(0,b.jsxs)("div",{className:"border-input flex items-center gap-4 rounded-md border px-3 py-2.5",children:[(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 cursor-default text-xs font-semibold tracking-wider",children:M("createDrawer.evidence")})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:M("createDrawer.evidenceDescription")})]}),(0,b.jsxs)("div",{className:"flex flex-1 items-center gap-4",children:[(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"enable-evidence",size:"sm",checked:d,onCheckedChange:a=>{e(a),a||g(!1)},disabled:C}),(0,b.jsx)(l.Label,{htmlFor:"enable-evidence",className:"cursor-pointer text-xs font-medium",children:M("createDrawer.collect")})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:M("createDrawer.collectDescription")})]}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"commit-evidence",size:"sm",checked:f,onCheckedChange:g,disabled:C||!d||!k&&!u}),(0,b.jsx)(l.Label,{htmlFor:"commit-evidence",className:(0,x.cn)("cursor-pointer text-xs font-medium",(!d||!k&&!u)&&"opacity-50"),children:M("createDrawer.addToPr")})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:k||u?d?M("createDrawer.addToPrDescription"):M("createDrawer.requiresEvidence"):M("createDrawer.requiresPr")})]})]})]}),(0,b.jsxs)("div",{className:"border-input flex items-start gap-4 rounded-md border px-3 py-2.5",children:[(0,b.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 pt-0.5 text-xs font-semibold tracking-wider",children:M("createDrawer.git")}),(0,b.jsxs)("div",{className:"flex flex-1 flex-wrap items-center gap-4",children:[(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"push",size:"sm",checked:A,onCheckedChange:a=>{j(a),!a&&k&&m(!1)},disabled:C||u}),(0,b.jsx)(l.Label,{htmlFor:"push",className:(0,x.cn)("cursor-pointer text-xs font-medium",u&&"opacity-50"),children:M("createDrawer.push")})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:u?"Enabled — contributing to upstream":M("createDrawer.pushDescription")})]}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"open-pr",size:"sm",checked:B,onCheckedChange:a=>{m(a),a||g(!1)},disabled:C||u}),(0,b.jsx)(l.Label,{htmlFor:"open-pr",className:(0,x.cn)("cursor-pointer text-xs font-medium",u&&"opacity-50"),children:M("createDrawer.pr")})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:u?"Enabled — contributing to upstream":M("createDrawer.prDescription")})]}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"ci-watch",size:"sm",checked:o,onCheckedChange:p,disabled:C}),(0,b.jsx)(l.Label,{htmlFor:"ci-watch",className:"cursor-pointer text-xs font-medium",children:M("createDrawer.watch")})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:M("createDrawer.watchDescription")})]}),(0,b.jsx)("div",{className:"bg-border h-4 w-px shrink-0"}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"rebase-before-branch",size:"sm",checked:q,onCheckedChange:r,disabled:C}),(0,b.jsxs)(l.Label,{htmlFor:"rebase-before-branch",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,b.jsx)(F.RefreshCw,{className:"h-3 w-3"}),M("createDrawer.sync")]})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:M("createDrawer.syncDescription")})]}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"commit-specs",size:"sm",checked:s,onCheckedChange:t,disabled:C}),(0,b.jsxs)(l.Label,{htmlFor:"commit-specs",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,b.jsx)(E.FileText,{className:"h-3 w-3"}),M("createDrawer.commitSpecs")]})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:M("createDrawer.commitSpecsDescription")})]}),!w&&(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"fork-and-pr",size:"sm",checked:u,onCheckedChange:a=>{v(a),a&&t(!1)},disabled:C}),(0,b.jsxs)(l.Label,{htmlFor:"fork-and-pr",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,b.jsx)(D.GitFork,{className:"h-3 w-3"}),M("createDrawer.forkAndPr")]})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:M("createDrawer.forkAndPrDescription")})]})]})]}),G&&I?(0,b.jsx)(L,{agentType:G,permissionMode:H,onPermissionModeChange:I,isSubmitting:C}):null]})}function L({agentType:a,permissionMode:d,onPermissionModeChange:e,isSubmitting:f}){let{t:g}=(0,h.useTranslation)("web"),[i,j]=(0,c.useState)([]);return((0,c.useEffect)(()=>{let b=!1;return I(a).then(a=>{b||j(a)}),()=>{b=!0}},[a]),0===i.length)?null:(0,b.jsxs)("div",{className:"border-input flex items-center gap-4 rounded-md border px-3 py-2.5",children:[(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("span",{className:"text-muted-foreground flex w-16 shrink-0 cursor-default items-center gap-1 text-xs font-semibold tracking-wider",children:[(0,b.jsx)(G.Shield,{className:"h-3 w-3"}),g("feature.create.permissionMode")]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:g("settings.agent.permissions.description",{agent:a})})]}),(0,b.jsx)("div",{className:"flex-1",children:(0,b.jsxs)(H.Select,{value:d??"__default__",onValueChange:a=>e("__default__"===a?void 0:a),disabled:f,children:[(0,b.jsx)(H.SelectTrigger,{id:"permission-mode","data-testid":"permission-mode-select",className:"h-7 text-xs",children:(0,b.jsx)(H.SelectValue,{})}),(0,b.jsxs)(H.SelectContent,{children:[(0,b.jsx)(H.SelectItem,{value:"__default__",children:g("feature.create.permissionModeDefault")}),i.map(a=>(0,b.jsx)(H.SelectItem,{value:a.value,children:a.label},a.value))]})]})})]})}var M=a.i(99829),N=a.i(95881),O=a.i(90920),P=a.i(53823);function Q({features:a,value:d,onChange:e,disabled:f}){let{t:g}=(0,h.useTranslation)("web"),[i,j]=(0,c.useState)(!1),[k,l]=(0,c.useState)(""),m=(0,c.useRef)(null),n=a.find(a=>a.id===d),o=k.trim()?a.filter(a=>a.name.toLowerCase().includes(k.toLowerCase())||a.id.toLowerCase().includes(k.toLowerCase())):a,p=(0,c.useCallback)(a=>{e(a),j(!1),l("")},[e]);return(0,c.useEffect)(()=>{i?setTimeout(()=>m.current?.focus(),0):l("")},[i]),(0,b.jsxs)(P.Popover,{open:i,onOpenChange:j,children:[(0,b.jsx)(P.PopoverTrigger,{asChild:!0,children:(0,b.jsxs)("button",{id:"parent-feature",type:"button",role:"combobox","aria-expanded":i,"aria-label":"Parent Feature",disabled:f,"data-testid":"parent-feature-combobox",className:(0,x.cn)("border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50",!n&&"text-muted-foreground"),children:[(0,b.jsx)("span",{className:"truncate",children:n?`${n.name} (${n.id.slice(0,8)})`:g("createDrawer.selectParent")}),(0,b.jsx)(M.ChevronsUpDown,{className:"ms-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,b.jsx)(P.PopoverContent,{className:"w-80 p-0",align:"start","data-testid":"parent-feature-combobox-content",children:(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsx)("div",{className:"border-b p-2",children:(0,b.jsx)(O.Input,{ref:m,placeholder:g("createDrawer.searchFeatures"),value:k,onChange:a=>l(a.target.value),className:"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0","data-testid":"parent-feature-search"})}),(0,b.jsxs)("div",{className:"max-h-48 overflow-y-auto py-1",role:"listbox","aria-label":"Features",children:[(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":void 0===d,onClick:()=>p(void 0),className:(0,x.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",void 0===d&&"bg-accent/50"),"data-testid":"parent-feature-option-none",children:[(0,b.jsx)(N.CheckIcon,{className:(0,x.cn)("h-4 w-4 shrink-0",void 0!==d&&"invisible")}),(0,b.jsx)("span",{className:"text-muted-foreground italic",children:g("createDrawer.noParent")})]}),0===o.length&&k?(0,b.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm",children:g("createDrawer.noFeaturesFound")}):o.map(a=>(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":d===a.id,onClick:()=>p(a.id),className:(0,x.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",d===a.id&&"bg-accent/50"),"data-testid":`parent-feature-option-${a.id}`,children:[(0,b.jsx)(N.CheckIcon,{className:(0,x.cn)("h-4 w-4 shrink-0",d!==a.id&&"invisible")}),(0,b.jsxs)("span",{className:"truncate",children:[a.name," ",(0,b.jsxs)("span",{className:"text-muted-foreground font-mono text-xs",children:["(",a.id.slice(0,8),")"]})]})]},a.id))]})]})})]})}var R=a.i(31271),S=a.i(20901),T=a.i(13126),U=a.i(21333),V=a.i(3089),W=a.i(1377);a.i(21434);var X=a.i(34379);function Y({repositories:a,value:d,onChange:e,onAddRepository:f,disabled:g}){let[i,j]=(0,c.useState)(!1),[k,l]=(0,c.useState)(""),[m,n]=(0,c.useState)(!1),[o,p]=(0,c.useState)(null),[q,r]=(0,c.useState)(!1),s=(0,c.useRef)(null),{reactFileManager:t}=(0,U.useFeatureFlags)(),{t:u}=(0,h.useTranslation)("web"),v=a.find(a=>a.path===d),w=k.trim()?a.filter(a=>a.name.toLowerCase().includes(k.toLowerCase())||a.path.toLowerCase().includes(k.toLowerCase())):a,y=(0,c.useCallback)(a=>{e(a),j(!1),l("")},[e]),z=(0,c.useCallback)(async a=>{let b=await (0,V.addRepository)({path:a});if(b.error){p(b.error),n(!1);return}if(b.repository){let a={id:b.repository.id,name:b.repository.name,path:b.repository.path};f?.(a),e(a.path),j(!1),l("")}},[f,e]),A=(0,c.useCallback)(async()=>{if(!m){if(t)return void r(!0);n(!0),p(null);try{let a=await (0,W.pickFolder)();if(!a)return void n(!1);await z(a)}catch{r(!0)}finally{n(!1)}}},[m,t,z]),B=(0,c.useCallback)(async a=>{if(r(!1),a){n(!0),p(null);try{await z(a)}catch(a){p(a instanceof Error?a.message:"Failed to add repository")}finally{n(!1)}}},[z]);return(0,c.useEffect)(()=>{i?setTimeout(()=>s.current?.focus(),0):l("")},[i]),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(P.Popover,{open:i,onOpenChange:j,children:[(0,b.jsx)(P.PopoverTrigger,{asChild:!0,children:(0,b.jsxs)("button",{type:"button",role:"combobox","aria-expanded":i,"aria-label":"Repository","aria-invalid":!!o,"aria-describedby":o?"add-repository-error-msg":void 0,disabled:g,"data-testid":"repository-combobox",className:(0,x.cn)("border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50",!v&&"text-muted-foreground"),children:[(0,b.jsx)("span",{className:"truncate",children:v?v.name:"Select repository..."}),(0,b.jsx)(M.ChevronsUpDown,{className:"ms-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,b.jsx)(P.PopoverContent,{className:"w-80 p-0",align:"start","data-testid":"repository-combobox-content",children:(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsx)("div",{className:"border-b p-2",children:(0,b.jsx)(O.Input,{ref:s,placeholder:u("createDrawer.searchRepositories"),value:k,onChange:a=>l(a.target.value),className:"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0","data-testid":"repository-search"})}),(0,b.jsx)("div",{className:"max-h-48 overflow-y-auto py-1",role:"listbox","aria-label":"Repositories",children:0===w.length?(0,b.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm","data-testid":"repository-empty",children:"No repositories found."}):w.map(a=>(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":d===a.path,onClick:()=>y(a.path),className:(0,x.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",d===a.path&&"bg-accent/50"),"data-testid":`repository-option-${a.id}`,children:[(0,b.jsx)(N.CheckIcon,{className:(0,x.cn)("h-4 w-4 shrink-0",d!==a.path&&"invisible")}),(0,b.jsxs)("span",{className:"flex flex-col items-start truncate",children:[(0,b.jsx)("span",{className:"truncate",children:a.name}),(0,b.jsx)("span",{className:"text-muted-foreground truncate text-xs",children:a.path})]})]},a.id))}),(0,b.jsx)(T.Separator,{}),(0,b.jsxs)("button",{type:"button",onClick:A,disabled:m,className:"hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm","data-testid":"add-repository-item",children:[m?(0,b.jsx)(S.LoaderCircle,{className:"h-4 w-4 shrink-0 animate-spin"}):(0,b.jsx)(R.FolderPlus,{className:"h-4 w-4 shrink-0"}),(0,b.jsx)("span",{children:"Add new repository..."})]}),o?(0,b.jsx)("p",{id:"add-repository-error-msg",className:"px-3 pb-2 text-xs text-red-500",role:"alert","data-testid":"add-repository-error",children:o}):null]})})]}),(0,b.jsx)(X.ReactFileManagerDialog,{open:q,onOpenChange:a=>{a||r(!1)},onSelect:B})]})}function Z({open:a,onClose:d,onSubmit:e,repositoryPath:f,isSubmitting:g=!1,workflowDefaults:u,features:v,repositories:w,initialParentId:x,currentAgentType:y,currentModel:z,initialDescription:A,canPushDirectly:B}){let{t:D}=(0,h.useTranslation)("web"),E=function({open:a,onClose:b,onSubmit:d,repositoryPath:e,workflowDefaults:f,repositories:g,initialParentId:h,currentAgentType:i,currentModel:j,initialDescription:k,canPushDirectly:l}){let m=(0,o.useSoundAction)("create"),n=e&&(!g||0===g.length||g.some(a=>a.path===e))?e:"",u=f?.approvalGates??t,v=f?.push??!1,w=f?.openPr??!1,x=f?.ciWatchEnabled!==!1,y=f?.enableEvidence??!1,z=f?.commitEvidence??!1,A=f?.fast!==!1,[B,C]=(0,c.useState)(k??"");(0,c.useEffect)(()=>{k&&C(k)},[k]);let[D,E]=(0,c.useState)([]),[F,G]=(0,c.useState)({...u}),[H,I]=(0,c.useState)(v),[J,K]=(0,c.useState)(w),[L,M]=(0,c.useState)(f?.ciWatchEnabled!==!1),[N,O]=(0,c.useState)(y),[P,Q]=(0,c.useState)(z),[R,S]=(0,c.useState)(void 0),[T,U]=(0,c.useState)(A),[V,W]=(0,c.useState)(!1),[X,Y]=(0,c.useState)(!1),[Z,$]=(0,c.useState)(!0),[_,aa]=(0,c.useState)(!0),[ab,ac]=(0,c.useState)(void 0),[ad,ae]=(0,c.useState)(void 0),[af,ag]=(0,c.useState)(void 0),[ah,ai]=(0,c.useState)(n||void 0),[aj,ak]=(0,c.useState)(g??[]),[al,am]=(0,c.useState)(!1),[an,ao]=(0,c.useState)(null),[ap,aq]=(0,c.useState)(!1),ar=(0,c.useRef)(crypto.randomUUID()),as=(0,c.useRef)(0);(0,c.useEffect)(()=>{f&&(G({...f.approvalGates}),I(f.push),K(f.openPr),M(!1!==f.ciWatchEnabled),O(f.enableEvidence),Q(f.commitEvidence),U(!1!==f.fast))},[f]),(0,c.useEffect)(()=>{ak(g??[])},[g]),(0,c.useEffect)(()=>{a&&h&&S(h)},[a,h]);let[at,au]=(0,c.useState)(l??!1);(0,c.useEffect)(()=>{au(l??!1)},[l]);let av=(0,c.useRef)(ah);(0,c.useEffect)(()=>{ah&&ah!==av.current&&(av.current=ah,q(ah).then(a=>au(a.canPushDirectly)).catch(()=>au(!1)))},[ah]),(0,c.useEffect)(()=>{at&&(Y(!1),I(v),K(w),$(!0))},[at,v,w]);let aw=(0,c.useCallback)(()=>{C(""),E([]),G({...u}),I(v),K(w),M(x),O(y),Q(z),S(void 0),ai(n||void 0),ak(g??[]),U(A),W(!1),Y(!1),$(!0),aa(!0),ac(void 0),ae(void 0),ag(void 0),ao(null),as.current=0,am(!1)},[u,v,w,y,x,z,A,n,g]),ax=""!==B.trim()||D.length>0,{attemptClose:ay}=(0,p.useGuardedDrawerClose)({open:a,isDirty:ax,onClose:b,onReset:aw}),az=(0,c.useCallback)(async a=>{for(let b of(ao(null),a)){if(b.size>0xa00000)return void ao(`"${b.name}" exceeds 10 MB limit`);let a=function(a){let b=a.lastIndexOf(".");return b>=0?a.slice(b).toLowerCase():""}(b.name);if(a&&!s.has(a))return void ao(`File type "${a}" is not allowed`)}for(let b of a){let a=crypto.randomUUID();E(c=>[...c,{id:a,name:b.name,size:b.size,mimeType:b.type||"application/octet-stream",path:"",loading:!0}]);try{let c=new FormData;c.append("file",b),c.append("sessionId",ar.current);let d=await fetch("/api/attachments/upload",{method:"POST",body:c});if(!d.ok){let b=await d.json().catch(()=>({error:"Upload failed"}));E(b=>b.filter(b=>b.id!==a)),ao(b.error??"Upload failed");return}let e=await d.json();E(b=>b.some(b=>b.id!==a&&b.path===e.path)?b.filter(b=>b.id!==a):b.map(b=>b.id===a?{...e,id:a,loading:!1}:b))}catch{E(b=>b.filter(b=>b.id!==a)),ao("Upload failed")}}},[]),aA=(0,c.useCallback)(a=>{a.preventDefault(),a.stopPropagation(),as.current+=1,1===as.current&&am(!0)},[]),aB=(0,c.useCallback)(a=>{a.preventDefault(),a.stopPropagation(),as.current-=1,0===as.current&&am(!1)},[]),aC=(0,c.useCallback)(a=>{a.preventDefault(),a.stopPropagation()},[]),aD=(0,c.useCallback)(a=>{a.preventDefault(),a.stopPropagation(),as.current=0,am(!1);let b=Array.from(a.dataTransfer.files);b.length>0&&az(b)},[az]),aE=(0,c.useCallback)(a=>{let b=a.clipboardData?.items;if(!b)return;let c=[];for(let a of Array.from(b))if("file"===a.kind){let b=a.getAsFile();b&&c.push(b)}c.length>0&&(a.preventDefault(),az(c))},[az]),aF=(0,c.useCallback)(a=>{if(a.preventDefault(),!B.trim())return;let b=ah??n;b&&(m.play(),d({description:B.trim(),attachments:D.filter(a=>!a.loading),repositoryPath:b,approvalGates:{allowPrd:F.allowPrd??!1,allowPlan:F.allowPlan??!1,allowMerge:F.allowMerge??!1},push:!!X||H||J,openPr:!!X||J,ciWatchEnabled:L,enableEvidence:N,commitEvidence:P,fast:T,forkAndPr:X,commitSpecs:Z,rebaseBeforeBranch:_,...V?{pending:V}:{},...ab?{agentType:ab}:{},...ad?{model:ad}:{},...af?{permissionMode:af}:{},...R?{parentId:R}:{},sessionId:ar.current}),aw())},[B,D,F,ah,n,d,H,J,N,L,P,T,X,Z,_,V,ab,ad,af,R,m,aw]),aG=(0,c.useCallback)(async()=>{try{let a=await (0,r.pickFiles)();if(!a)return;for(let b of a){let a=crypto.randomUUID();E(c=>[...c,{id:a,name:b.name,size:b.size,mimeType:"application/octet-stream",path:"",loading:!0}]);try{let c=await fetch("/api/attachments/upload-from-path",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:b.path,sessionId:ar.current})});if(!c.ok){let b=await c.json().catch(()=>({error:"Upload failed"}));E(b=>b.filter(b=>b.id!==a)),ao(b.error??"Upload failed");return}let d=await c.json();E(b=>b.some(b=>b.id!==a&&b.path===d.path)?b.filter(b=>b.id!==a):b.map(b=>b.id===a?{...d,id:a,loading:!1}:b))}catch{E(b=>b.filter(b=>b.id!==a)),ao("Upload failed")}}}catch{}},[]),aH=(0,c.useCallback)(a=>{E(b=>b.filter(b=>b.id!==a))},[]),aI=(0,c.useCallback)((a,b)=>{E(c=>c.map(c=>c.id===a?{...c,notes:b}:c))},[]);return{validRepoPath:n,canPush:at,isDirty:ax,computedPush:!!X||H||J,computedOpenPr:!!X||J,description:B,setDescription:C,attachments:D,approvalGates:F,setApprovalGates:G,push:H,setPush:I,openPr:J,setOpenPr:K,ciWatchEnabled:L,setCiWatchEnabled:M,enableEvidence:N,setEnableEvidence:O,commitEvidence:P,setCommitEvidence:Q,parentId:R,setParentId:S,fast:T,setFast:U,pending:V,setPending:W,forkAndPr:X,setForkAndPr:Y,commitSpecs:Z,setCommitSpecs:$,rebaseBeforeBranch:_,setRebaseBeforeBranch:aa,overrideAgent:ab,setOverrideAgent:ac,overrideModel:ad,setOverrideModel:ae,permissionMode:af,setPermissionMode:ag,selectedRepoPath:ah,setSelectedRepoPath:ai,localRepos:aj,setLocalRepos:ak,isDragOver:al,uploadError:an,isPromptFocused:ap,setIsPromptFocused:aq,sessionIdRef:ar,currentAgentType:i,currentModel:j,attemptClose:ay,handleFiles:az,handleDragEnter:aA,handleDragLeave:aB,handleDragOver:aC,handleDrop:aD,handlePaste:aE,handleSubmit:aF,handleAddFiles:aG,handleRemoveFile:aH,handleNotesChange:aI,resetForm:aw}}({open:a,onClose:d,onSubmit:e,repositoryPath:f,workflowDefaults:u,repositories:w,initialParentId:x,currentAgentType:y,currentModel:z,initialDescription:A,canPushDirectly:B}),F=(0,c.useRef)(null),G=(0,c.useCallback)(a=>{(a.ctrlKey||a.metaKey)&&"Enter"===a.key&&(a.preventDefault(),F.current?.requestSubmit())},[]),H=v&&v.length>0,I=!E.validRepoPath&&void 0!==w,J=!E.validRepoPath&&!E.selectedRepoPath;return(0,b.jsx)(i.BaseDrawer,{open:a,onClose:E.attemptClose,size:"md",modal:!1,dismissOnOutsideClick:!0,"data-testid":"feature-create-drawer",header:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("div",{className:"h-2.5 w-2.5 shrink-0 rounded-full bg-blue-500"}),(0,b.jsx)(j.DrawerTitle,{children:D("createDrawer.title")})]}),g?(0,b.jsx)(j.DrawerDescription,{asChild:!0,children:(0,b.jsx)("div",{children:(0,b.jsx)(m.Badge,{variant:"secondary",children:D("createDrawer.creating")})})}):null]}),footer:(0,b.jsxs)("div",{className:"flex flex-row justify-end gap-2",children:[(0,b.jsx)(k.Button,{variant:"outline",onClick:E.attemptClose,disabled:g,children:D("createDrawer.cancel")}),(0,b.jsx)(k.Button,{type:"submit",form:"create-feature-form",disabled:!E.description.trim()||g||J,children:D(g?"createDrawer.creating":"createDrawer.createFeature")})]}),children:(0,b.jsx)("div",{className:"overflow-y-auto p-4",children:(0,b.jsx)(n.TooltipProvider,{delayDuration:400,children:(0,b.jsxs)("form",{ref:F,id:"create-feature-form",onSubmit:E.handleSubmit,onKeyDown:G,className:"flex flex-col gap-4",children:[I?(0,b.jsxs)("div",{className:"flex flex-col gap-1.5","data-testid":"repo-selector-section",children:[(0,b.jsx)(l.Label,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:D("createDrawer.repository")}),(0,b.jsx)(Y,{repositories:E.localRepos,value:E.selectedRepoPath,onChange:E.setSelectedRepoPath,onAddRepository:a=>{E.setLocalRepos(b=>[...b,a]),E.setSelectedRepoPath(a.path)},disabled:g})]}):E.validRepoPath?(0,b.jsxs)("div",{className:"flex flex-col gap-1.5","data-testid":"repo-readonly-section",children:[(0,b.jsx)(l.Label,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:D("createDrawer.repository")}),(0,b.jsx)("p",{className:"text-sm","data-testid":"repo-readonly-label",children:w?.find(a=>a.path===E.validRepoPath)?.name??E.validRepoPath.split("/").pop()})]}):null,(0,b.jsx)(C,{description:E.description,onDescriptionChange:E.setDescription,attachments:E.attachments,onRemoveFile:E.handleRemoveFile,onNotesChange:E.handleNotesChange,onPaste:E.handlePaste,onDragEnter:E.handleDragEnter,onDragLeave:E.handleDragLeave,onDragOver:E.handleDragOver,onDrop:E.handleDrop,onAddFiles:E.handleAddFiles,isDragOver:E.isDragOver,uploadError:E.uploadError,isPromptFocused:E.isPromptFocused,onPromptFocus:()=>E.setIsPromptFocused(!0),onPromptBlur:()=>E.setIsPromptFocused(!1),fast:E.fast,onFastChange:E.setFast,pending:E.pending,onPendingChange:E.setPending,overrideAgent:E.overrideAgent,overrideModel:E.overrideModel,currentAgentType:y,currentModel:z,onAgentModelChange:(a,b)=>{E.setOverrideAgent(a),E.setOverrideModel(b)},isSubmitting:g}),H&&void 0!==x?(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(l.Label,{htmlFor:"parent-feature",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:D("createDrawer.parentFeature")}),(0,b.jsx)(Q,{features:v,value:E.parentId,onChange:E.setParentId,disabled:g})]}):null,(0,b.jsx)(K,{approvalGates:E.approvalGates,onApprovalGatesChange:E.setApprovalGates,enableEvidence:E.enableEvidence,onEnableEvidenceChange:E.setEnableEvidence,commitEvidence:E.commitEvidence,onCommitEvidenceChange:E.setCommitEvidence,push:E.push,onPushChange:E.setPush,openPr:E.openPr,onOpenPrChange:E.setOpenPr,ciWatchEnabled:E.ciWatchEnabled,onCiWatchChange:E.setCiWatchEnabled,rebaseBeforeBranch:E.rebaseBeforeBranch,onRebaseBeforeBranchChange:E.setRebaseBeforeBranch,commitSpecs:E.commitSpecs,onCommitSpecsChange:E.setCommitSpecs,forkAndPr:E.forkAndPr,onForkAndPrChange:E.setForkAndPr,canPush:E.canPush,fast:E.fast,computedPush:E.computedPush,computedOpenPr:E.computedOpenPr,isSubmitting:g,agentType:E.overrideAgent??y,permissionMode:E.permissionMode,onPermissionModeChange:E.setPermissionMode})]})})})})}a.s(["CreateDrawerClient",0,function({repositoryPath:a,initialParentId:f,initialDescription:h,features:i,repositories:j,workflowDefaults:k,currentAgentType:l,currentModel:m,canPushDirectly:n}){let o=(0,d.useRouter)(),[p,q]=(0,c.useState)(!1),r=(0,d.usePathname)().startsWith("/create"),s=!p&&r;(0,c.useEffect)(()=>{!r&&p&&q(!1)},[r,p]);let t=(0,c.useCallback)(()=>{o.push("/")},[o]),u=(0,c.useCallback)(a=>{q(!0),o.push("/"),g(a).then(b=>{b.error?e.toast.error(b.error):window.dispatchEvent(new CustomEvent("shipit-ai:feature-created",{detail:{featureId:b.feature.id,name:b.feature.name,description:b.feature.description,repositoryPath:b.feature.repositoryPath,parentId:a.parentId}}))}).catch(()=>{e.toast.error("Failed to create feature"),q(!1)})},[o]);return(0,b.jsx)(Z,{open:s,onClose:t,onSubmit:u,repositoryPath:a,features:i,repositories:j,workflowDefaults:k,initialParentId:f,initialDescription:h,isSubmitting:p,currentAgentType:l,currentModel:m,canPushDirectly:n})}],93995)}];
1
+ module.exports=[93995,a=>{"use strict";var b=a.i(53083),c=a.i(11321),d=a.i(40674),e=a.i(52313),f=a.i(6120);let g=(0,f.createServerReference)("40dd1e500a33c7002b1820fc08aebc110af000069a",f.callServer,void 0,f.findSourceMapURL,"createFeature");a.i(98617);var h=a.i(50040);a.i(78454);var i=a.i(24255),j=a.i(2824),k=a.i(18948),l=a.i(58860),m=a.i(58339),n=a.i(82934),o=a.i(19884),p=a.i(96213);let q=(0,f.createServerReference)("409b9ee97fb02d5a344035d88bd37b3a9c0534736a",f.callServer,void 0,f.findSourceMapURL,"getViewerPermission");var r=a.i(39116);let s=new Set([".png",".jpg",".jpeg",".gif",".webp",".svg",".bmp",".ico",".pdf",".doc",".docx",".xls",".xlsx",".ppt",".pptx",".txt",".md",".csv",".json",".yaml",".yml",".xml",".ts",".tsx",".js",".jsx",".py",".rb",".go",".rs",".java",".c",".cpp",".h",".hpp",".cs",".swift",".kt",".html",".css",".scss",".less",".sh",".bash",".zsh",".fish",".toml",".ini",".cfg",".conf",".env",".zip",".tar",".gz",".log"]),t={allowPrd:!1,allowPlan:!1,allowMerge:!1};var u=a.i(95014),v=a.i(42728),w=a.i(41042),x=a.i(85536),y=a.i(79620),z=a.i(96867);a.i(307);var A=a.i(30931),B=a.i(61781);function C({description:a,onDescriptionChange:d,attachments:e,onRemoveFile:f,onNotesChange:g,onPaste:i,onDragEnter:j,onDragLeave:k,onDragOver:m,onDrop:o,onAddFiles:p,isDragOver:q,uploadError:r,isPromptFocused:s,onPromptFocus:t,onPromptBlur:D,fast:E,onFastChange:F,pending:G,onPendingChange:H,overrideAgent:I,overrideModel:J,currentAgentType:K,currentModel:L,onAgentModelChange:M,isSubmitting:N}){let{t:O}=(0,h.useTranslation)("web"),P=(0,c.useRef)(null);return(0,b.jsxs)("div",{role:"region","aria-label":O("createDrawer.fileDropZone"),"data-drag-over":q?"true":"false",onDragEnter:j,onDragLeave:k,onDragOver:m,onDrop:o,className:(0,x.cn)("flex flex-col gap-1.5 rounded-md border-2 border-transparent p-1 transition-colors",q&&"border-primary/50 bg-primary/5"),children:[(0,b.jsx)(l.Label,{htmlFor:"feature-description",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:O("createDrawer.describeFeature")}),(0,b.jsxs)("div",{ref:P,onFocus:t,onBlur:()=>{setTimeout(()=>{let a=P.current?.contains(document.activeElement),b=P.current?.querySelector('[aria-expanded="true"]')!==null;a||b||D()},0)},className:(0,x.cn)("border-input flex h-56 flex-col overflow-hidden rounded-md border shadow-xs transition-[color,box-shadow]",s&&"ring-ring/50 border-ring ring-[3px]"),children:[(0,b.jsx)(y.Textarea,{id:"feature-description",placeholder:O("createDrawer.featurePlaceholder"),value:a,onChange:a=>d(a.target.value),onPaste:i,required:!0,disabled:N,"aria-invalid":!!r,"aria-describedby":r?"feature-upload-error":void 0,className:"min-h-0 flex-1 resize-none rounded-none border-0 shadow-none focus-visible:ring-0"}),e.length>0&&(0,b.jsx)("div",{className:"flex flex-wrap items-center gap-1.5 px-3 py-2",children:e.map(a=>(0,b.jsx)(A.AttachmentChip,{name:a.name,size:a.size,mimeType:a.mimeType,path:a.path,onRemove:()=>f(a.id),disabled:N,loading:a.loading,notes:a.notes,onNotesChange:b=>g(a.id,b)},a.id))}),r?(0,b.jsx)("p",{id:"feature-upload-error",className:"text-destructive px-3 pb-2 text-xs",role:"alert",children:r}):null,(0,b.jsxs)("div",{className:"border-input flex items-center gap-3 border-t px-3 py-1.5",children:[(0,b.jsx)(B.AgentModelPicker,{initialAgentType:I??K??"claude-code",initialModel:J??L??"claude-sonnet-4-6",mode:"override",onAgentModelChange:M,disabled:N,className:"w-55"}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"ml-auto flex cursor-pointer items-center gap-2",children:[(0,b.jsx)(z.Switch,{id:"pending-mode",checked:G,onCheckedChange:H,disabled:N}),(0,b.jsxs)(l.Label,{htmlFor:"pending-mode",className:"flex cursor-pointer items-center gap-1 text-sm font-medium",children:[(0,b.jsx)(w.Clock,{className:"h-3.5 w-3.5"}),O("createDrawer.pendingMode")]})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:O("createDrawer.pendingModeDescription")})]}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-2",children:[(0,b.jsx)(z.Switch,{id:"fast-mode",checked:E,onCheckedChange:F,disabled:N}),(0,b.jsxs)(l.Label,{htmlFor:"fast-mode",className:"flex cursor-pointer items-center gap-1 text-sm font-medium",children:[(0,b.jsx)(v.Zap,{className:"h-3.5 w-3.5"}),O("createDrawer.fastModeLabel")]})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:O("createDrawer.fastModeDescription")})]}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",onClick:p,disabled:N,"aria-label":O("chat.attachFiles"),className:"text-muted-foreground hover:text-foreground cursor-pointer rounded p-1 transition-colors",children:(0,b.jsx)(u.PaperclipIcon,{className:"h-4 w-4"})})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:O("chat.attachFiles")})]})]})]})]})}var D=a.i(53759),E=a.i(63204),F=a.i(67664),G=a.i(53556),H=a.i(59175);let I=(0,f.createServerReference)("401e1c3498152c791474ba9627e72559d0d329b281",f.callServer,void 0,f.findSourceMapURL,"getAgentPermissionOptions"),J=["allowPrd","allowPlan","allowMerge"];function K({approvalGates:a,onApprovalGatesChange:c,enableEvidence:d,onEnableEvidenceChange:e,commitEvidence:f,onCommitEvidenceChange:g,push:i,onPushChange:j,openPr:k,onOpenPrChange:m,ciWatchEnabled:o,onCiWatchChange:p,rebaseBeforeBranch:q,onRebaseBeforeBranchChange:r,commitSpecs:s,onCommitSpecsChange:t,forkAndPr:u,onForkAndPrChange:v,canPush:w,fast:y,computedPush:A,computedOpenPr:B,isSubmitting:C,agentType:G,permissionMode:H,onPermissionModeChange:I}){let{t:M}=(0,h.useTranslation)("web"),N=[{id:"allowPrd",label:M("createDrawer.prd"),description:M("createDrawer.prdDescription")},{id:"allowPlan",label:M("createDrawer.plan"),description:M("createDrawer.planDescription")},{id:"allowMerge",label:M("createDrawer.merge"),description:M("createDrawer.mergeDescription")}];return(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsxs)("div",{className:"border-input flex items-center gap-4 rounded-md border px-3 py-2.5",children:[(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 cursor-default text-xs font-semibold tracking-wider",children:M("createDrawer.approve")})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:M("createDrawer.approveDescription")})]}),(0,b.jsx)("div",{className:"flex flex-1 items-center gap-4",children:N.map(d=>(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:`approve-${d.id}`,size:"sm",checked:a[d.id]??!1,onCheckedChange:b=>c({...a,[d.id]:b}),disabled:C||y&&("allowPrd"===d.id||"allowPlan"===d.id)}),(0,b.jsx)(l.Label,{htmlFor:`approve-${d.id}`,className:"cursor-pointer text-xs font-medium",children:d.label})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:y&&("allowPrd"===d.id||"allowPlan"===d.id)?M("createDrawer.skippedInFastMode"):d.description})]},d.id))}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",onClick:()=>{let b=J.every(b=>a[b]),d={};for(let a of J)d[a]=!b;c(d)},disabled:C,className:(0,x.cn)("text-muted-foreground hover:text-foreground cursor-pointer rounded px-1.5 py-0.5 text-[10px] font-semibold tracking-wider uppercase transition-colors",J.every(b=>a[b])&&"text-primary"),children:M("createDrawer.all")})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:M("createDrawer.toggleAllApprovalGates")})]})]}),(0,b.jsxs)("div",{className:"border-input flex items-center gap-4 rounded-md border px-3 py-2.5",children:[(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 cursor-default text-xs font-semibold tracking-wider",children:M("createDrawer.evidence")})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:M("createDrawer.evidenceDescription")})]}),(0,b.jsxs)("div",{className:"flex flex-1 items-center gap-4",children:[(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"enable-evidence",size:"sm",checked:d,onCheckedChange:a=>{e(a),a||g(!1)},disabled:C}),(0,b.jsx)(l.Label,{htmlFor:"enable-evidence",className:"cursor-pointer text-xs font-medium",children:M("createDrawer.collect")})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:M("createDrawer.collectDescription")})]}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"commit-evidence",size:"sm",checked:f,onCheckedChange:g,disabled:C||!d||!k&&!u}),(0,b.jsx)(l.Label,{htmlFor:"commit-evidence",className:(0,x.cn)("cursor-pointer text-xs font-medium",(!d||!k&&!u)&&"opacity-50"),children:M("createDrawer.addToPr")})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:k||u?d?M("createDrawer.addToPrDescription"):M("createDrawer.requiresEvidence"):M("createDrawer.requiresPr")})]})]})]}),(0,b.jsxs)("div",{className:"border-input flex items-start gap-4 rounded-md border px-3 py-2.5",children:[(0,b.jsx)("span",{className:"text-muted-foreground w-16 shrink-0 pt-0.5 text-xs font-semibold tracking-wider",children:M("createDrawer.git")}),(0,b.jsxs)("div",{className:"flex flex-1 flex-wrap items-center gap-4",children:[(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"push",size:"sm",checked:A,onCheckedChange:a=>{j(a),!a&&k&&m(!1)},disabled:C||u}),(0,b.jsx)(l.Label,{htmlFor:"push",className:(0,x.cn)("cursor-pointer text-xs font-medium",u&&"opacity-50"),children:M("createDrawer.push")})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:u?"Enabled — contributing to upstream":M("createDrawer.pushDescription")})]}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"open-pr",size:"sm",checked:B,onCheckedChange:a=>{m(a),a||g(!1)},disabled:C||u}),(0,b.jsx)(l.Label,{htmlFor:"open-pr",className:(0,x.cn)("cursor-pointer text-xs font-medium",u&&"opacity-50"),children:M("createDrawer.pr")})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:u?"Enabled — contributing to upstream":M("createDrawer.prDescription")})]}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"ci-watch",size:"sm",checked:o,onCheckedChange:p,disabled:C}),(0,b.jsx)(l.Label,{htmlFor:"ci-watch",className:"cursor-pointer text-xs font-medium",children:M("createDrawer.watch")})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:M("createDrawer.watchDescription")})]}),(0,b.jsx)("div",{className:"bg-border h-4 w-px shrink-0"}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"rebase-before-branch",size:"sm",checked:q,onCheckedChange:r,disabled:C}),(0,b.jsxs)(l.Label,{htmlFor:"rebase-before-branch",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,b.jsx)(F.RefreshCw,{className:"h-3 w-3"}),M("createDrawer.sync")]})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:M("createDrawer.syncDescription")})]}),(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"commit-specs",size:"sm",checked:s,onCheckedChange:t,disabled:C}),(0,b.jsxs)(l.Label,{htmlFor:"commit-specs",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,b.jsx)(E.FileText,{className:"h-3 w-3"}),M("createDrawer.commitSpecs")]})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:M("createDrawer.commitSpecsDescription")})]}),!w&&(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("div",{className:"flex cursor-pointer items-center gap-1.5",children:[(0,b.jsx)(z.Switch,{id:"fork-and-pr",size:"sm",checked:u,onCheckedChange:a=>{v(a),a&&t(!1)},disabled:C}),(0,b.jsxs)(l.Label,{htmlFor:"fork-and-pr",className:"flex cursor-pointer items-center gap-1 text-xs font-medium",children:[(0,b.jsx)(D.GitFork,{className:"h-3 w-3"}),M("createDrawer.forkAndPr")]})]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:M("createDrawer.forkAndPrDescription")})]})]})]}),G&&I?(0,b.jsx)(L,{agentType:G,permissionMode:H,onPermissionModeChange:I,isSubmitting:C}):null]})}function L({agentType:a,permissionMode:d,onPermissionModeChange:e,isSubmitting:f}){let{t:g}=(0,h.useTranslation)("web"),[i,j]=(0,c.useState)([]);return((0,c.useEffect)(()=>{let b=!1;return I(a).then(a=>{b||j(a)}),()=>{b=!0}},[a]),0===i.length)?null:(0,b.jsxs)("div",{className:"border-input flex items-center gap-4 rounded-md border px-3 py-2.5",children:[(0,b.jsxs)(n.Tooltip,{children:[(0,b.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,b.jsxs)("span",{className:"text-muted-foreground flex w-16 shrink-0 cursor-default items-center gap-1 text-xs font-semibold tracking-wider",children:[(0,b.jsx)(G.Shield,{className:"h-3 w-3"}),g("feature.create.permissionMode")]})}),(0,b.jsx)(n.TooltipContent,{side:"bottom",children:g("settings.agent.permissions.description",{agent:a})})]}),(0,b.jsx)("div",{className:"flex-1",children:(0,b.jsxs)(H.Select,{value:d??"__default__",onValueChange:a=>e("__default__"===a?void 0:a),disabled:f,children:[(0,b.jsx)(H.SelectTrigger,{id:"permission-mode","data-testid":"permission-mode-select",className:"h-7 text-xs",children:(0,b.jsx)(H.SelectValue,{})}),(0,b.jsxs)(H.SelectContent,{children:[(0,b.jsx)(H.SelectItem,{value:"__default__",children:g("feature.create.permissionModeDefault")}),i.map(a=>(0,b.jsx)(H.SelectItem,{value:a.value,children:a.label},a.value))]})]})})]})}var M=a.i(99829),N=a.i(95881),O=a.i(90920),P=a.i(53823);function Q({features:a,value:d,onChange:e,disabled:f}){let{t:g}=(0,h.useTranslation)("web"),[i,j]=(0,c.useState)(!1),[k,l]=(0,c.useState)(""),m=(0,c.useRef)(null),n=a.find(a=>a.id===d),o=k.trim()?a.filter(a=>a.name.toLowerCase().includes(k.toLowerCase())||a.id.toLowerCase().includes(k.toLowerCase())):a,p=(0,c.useCallback)(a=>{e(a),j(!1),l("")},[e]);return(0,c.useEffect)(()=>{i?setTimeout(()=>m.current?.focus(),0):l("")},[i]),(0,b.jsxs)(P.Popover,{open:i,onOpenChange:j,children:[(0,b.jsx)(P.PopoverTrigger,{asChild:!0,children:(0,b.jsxs)("button",{id:"parent-feature",type:"button",role:"combobox","aria-expanded":i,"aria-label":"Parent Feature",disabled:f,"data-testid":"parent-feature-combobox",className:(0,x.cn)("border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50",!n&&"text-muted-foreground"),children:[(0,b.jsx)("span",{className:"truncate",children:n?`${n.name} (${n.id.slice(0,8)})`:g("createDrawer.selectParent")}),(0,b.jsx)(M.ChevronsUpDown,{className:"ms-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,b.jsx)(P.PopoverContent,{className:"w-80 p-0",align:"start","data-testid":"parent-feature-combobox-content",children:(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsx)("div",{className:"border-b p-2",children:(0,b.jsx)(O.Input,{ref:m,placeholder:g("createDrawer.searchFeatures"),value:k,onChange:a=>l(a.target.value),className:"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0","data-testid":"parent-feature-search"})}),(0,b.jsxs)("div",{className:"max-h-48 overflow-y-auto py-1",role:"listbox","aria-label":"Features",children:[(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":void 0===d,onClick:()=>p(void 0),className:(0,x.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",void 0===d&&"bg-accent/50"),"data-testid":"parent-feature-option-none",children:[(0,b.jsx)(N.CheckIcon,{className:(0,x.cn)("h-4 w-4 shrink-0",void 0!==d&&"invisible")}),(0,b.jsx)("span",{className:"text-muted-foreground italic",children:g("createDrawer.noParent")})]}),0===o.length&&k?(0,b.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm",children:g("createDrawer.noFeaturesFound")}):o.map(a=>(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":d===a.id,onClick:()=>p(a.id),className:(0,x.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",d===a.id&&"bg-accent/50"),"data-testid":`parent-feature-option-${a.id}`,children:[(0,b.jsx)(N.CheckIcon,{className:(0,x.cn)("h-4 w-4 shrink-0",d!==a.id&&"invisible")}),(0,b.jsxs)("span",{className:"truncate",children:[a.name," ",(0,b.jsxs)("span",{className:"text-muted-foreground font-mono text-xs",children:["(",a.id.slice(0,8),")"]})]})]},a.id))]})]})})]})}var R=a.i(31271),S=a.i(20901),T=a.i(13126),U=a.i(21333),V=a.i(4500),W=a.i(1377);a.i(21434);var X=a.i(34379);function Y({repositories:a,value:d,onChange:e,onAddRepository:f,disabled:g}){let[i,j]=(0,c.useState)(!1),[k,l]=(0,c.useState)(""),[m,n]=(0,c.useState)(!1),[o,p]=(0,c.useState)(null),[q,r]=(0,c.useState)(!1),s=(0,c.useRef)(null),{reactFileManager:t}=(0,U.useFeatureFlags)(),{t:u}=(0,h.useTranslation)("web"),v=a.find(a=>a.path===d),w=k.trim()?a.filter(a=>a.name.toLowerCase().includes(k.toLowerCase())||a.path.toLowerCase().includes(k.toLowerCase())):a,y=(0,c.useCallback)(a=>{e(a),j(!1),l("")},[e]),z=(0,c.useCallback)(async a=>{let b=await (0,V.addRepository)({path:a});if(b.error){p(b.error),n(!1);return}if(b.repository){let a={id:b.repository.id,name:b.repository.name,path:b.repository.path};f?.(a),e(a.path),j(!1),l("")}},[f,e]),A=(0,c.useCallback)(async()=>{if(!m){if(t)return void r(!0);n(!0),p(null);try{let a=await (0,W.pickFolder)();if(!a)return void n(!1);await z(a)}catch{r(!0)}finally{n(!1)}}},[m,t,z]),B=(0,c.useCallback)(async a=>{if(r(!1),a){n(!0),p(null);try{await z(a)}catch(a){p(a instanceof Error?a.message:"Failed to add repository")}finally{n(!1)}}},[z]);return(0,c.useEffect)(()=>{i?setTimeout(()=>s.current?.focus(),0):l("")},[i]),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(P.Popover,{open:i,onOpenChange:j,children:[(0,b.jsx)(P.PopoverTrigger,{asChild:!0,children:(0,b.jsxs)("button",{type:"button",role:"combobox","aria-expanded":i,"aria-label":"Repository","aria-invalid":!!o,"aria-describedby":o?"add-repository-error-msg":void 0,disabled:g,"data-testid":"repository-combobox",className:(0,x.cn)("border-input bg-background ring-offset-background focus:ring-ring flex h-9 w-full items-center justify-between rounded-md border px-3 py-2 text-sm focus:ring-2 focus:ring-offset-2 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50",!v&&"text-muted-foreground"),children:[(0,b.jsx)("span",{className:"truncate",children:v?v.name:"Select repository..."}),(0,b.jsx)(M.ChevronsUpDown,{className:"ms-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,b.jsx)(P.PopoverContent,{className:"w-80 p-0",align:"start","data-testid":"repository-combobox-content",children:(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsx)("div",{className:"border-b p-2",children:(0,b.jsx)(O.Input,{ref:s,placeholder:u("createDrawer.searchRepositories"),value:k,onChange:a=>l(a.target.value),className:"h-8 border-0 p-0 text-sm shadow-none focus-visible:ring-0","data-testid":"repository-search"})}),(0,b.jsx)("div",{className:"max-h-48 overflow-y-auto py-1",role:"listbox","aria-label":"Repositories",children:0===w.length?(0,b.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm","data-testid":"repository-empty",children:"No repositories found."}):w.map(a=>(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":d===a.path,onClick:()=>y(a.path),className:(0,x.cn)("hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm",d===a.path&&"bg-accent/50"),"data-testid":`repository-option-${a.id}`,children:[(0,b.jsx)(N.CheckIcon,{className:(0,x.cn)("h-4 w-4 shrink-0",d!==a.path&&"invisible")}),(0,b.jsxs)("span",{className:"flex flex-col items-start truncate",children:[(0,b.jsx)("span",{className:"truncate",children:a.name}),(0,b.jsx)("span",{className:"text-muted-foreground truncate text-xs",children:a.path})]})]},a.id))}),(0,b.jsx)(T.Separator,{}),(0,b.jsxs)("button",{type:"button",onClick:A,disabled:m,className:"hover:bg-accent hover:text-accent-foreground flex w-full items-center gap-2 px-3 py-2 text-sm","data-testid":"add-repository-item",children:[m?(0,b.jsx)(S.LoaderCircle,{className:"h-4 w-4 shrink-0 animate-spin"}):(0,b.jsx)(R.FolderPlus,{className:"h-4 w-4 shrink-0"}),(0,b.jsx)("span",{children:"Add new repository..."})]}),o?(0,b.jsx)("p",{id:"add-repository-error-msg",className:"px-3 pb-2 text-xs text-red-500",role:"alert","data-testid":"add-repository-error",children:o}):null]})})]}),(0,b.jsx)(X.ReactFileManagerDialog,{open:q,onOpenChange:a=>{a||r(!1)},onSelect:B})]})}function Z({open:a,onClose:d,onSubmit:e,repositoryPath:f,isSubmitting:g=!1,workflowDefaults:u,features:v,repositories:w,initialParentId:x,currentAgentType:y,currentModel:z,initialDescription:A,canPushDirectly:B}){let{t:D}=(0,h.useTranslation)("web"),E=function({open:a,onClose:b,onSubmit:d,repositoryPath:e,workflowDefaults:f,repositories:g,initialParentId:h,currentAgentType:i,currentModel:j,initialDescription:k,canPushDirectly:l}){let m=(0,o.useSoundAction)("create"),n=e&&(!g||0===g.length||g.some(a=>a.path===e))?e:"",u=f?.approvalGates??t,v=f?.push??!1,w=f?.openPr??!1,x=f?.ciWatchEnabled!==!1,y=f?.enableEvidence??!1,z=f?.commitEvidence??!1,A=f?.fast!==!1,[B,C]=(0,c.useState)(k??"");(0,c.useEffect)(()=>{k&&C(k)},[k]);let[D,E]=(0,c.useState)([]),[F,G]=(0,c.useState)({...u}),[H,I]=(0,c.useState)(v),[J,K]=(0,c.useState)(w),[L,M]=(0,c.useState)(f?.ciWatchEnabled!==!1),[N,O]=(0,c.useState)(y),[P,Q]=(0,c.useState)(z),[R,S]=(0,c.useState)(void 0),[T,U]=(0,c.useState)(A),[V,W]=(0,c.useState)(!1),[X,Y]=(0,c.useState)(!1),[Z,$]=(0,c.useState)(!0),[_,aa]=(0,c.useState)(!0),[ab,ac]=(0,c.useState)(void 0),[ad,ae]=(0,c.useState)(void 0),[af,ag]=(0,c.useState)(void 0),[ah,ai]=(0,c.useState)(n||void 0),[aj,ak]=(0,c.useState)(g??[]),[al,am]=(0,c.useState)(!1),[an,ao]=(0,c.useState)(null),[ap,aq]=(0,c.useState)(!1),ar=(0,c.useRef)(crypto.randomUUID()),as=(0,c.useRef)(0);(0,c.useEffect)(()=>{f&&(G({...f.approvalGates}),I(f.push),K(f.openPr),M(!1!==f.ciWatchEnabled),O(f.enableEvidence),Q(f.commitEvidence),U(!1!==f.fast))},[f]),(0,c.useEffect)(()=>{ak(g??[])},[g]),(0,c.useEffect)(()=>{a&&h&&S(h)},[a,h]);let[at,au]=(0,c.useState)(l??!1);(0,c.useEffect)(()=>{au(l??!1)},[l]);let av=(0,c.useRef)(ah);(0,c.useEffect)(()=>{ah&&ah!==av.current&&(av.current=ah,q(ah).then(a=>au(a.canPushDirectly)).catch(()=>au(!1)))},[ah]),(0,c.useEffect)(()=>{at&&(Y(!1),I(v),K(w),$(!0))},[at,v,w]);let aw=(0,c.useCallback)(()=>{C(""),E([]),G({...u}),I(v),K(w),M(x),O(y),Q(z),S(void 0),ai(n||void 0),ak(g??[]),U(A),W(!1),Y(!1),$(!0),aa(!0),ac(void 0),ae(void 0),ag(void 0),ao(null),as.current=0,am(!1)},[u,v,w,y,x,z,A,n,g]),ax=""!==B.trim()||D.length>0,{attemptClose:ay}=(0,p.useGuardedDrawerClose)({open:a,isDirty:ax,onClose:b,onReset:aw}),az=(0,c.useCallback)(async a=>{for(let b of(ao(null),a)){if(b.size>0xa00000)return void ao(`"${b.name}" exceeds 10 MB limit`);let a=function(a){let b=a.lastIndexOf(".");return b>=0?a.slice(b).toLowerCase():""}(b.name);if(a&&!s.has(a))return void ao(`File type "${a}" is not allowed`)}for(let b of a){let a=crypto.randomUUID();E(c=>[...c,{id:a,name:b.name,size:b.size,mimeType:b.type||"application/octet-stream",path:"",loading:!0}]);try{let c=new FormData;c.append("file",b),c.append("sessionId",ar.current);let d=await fetch("/api/attachments/upload",{method:"POST",body:c});if(!d.ok){let b=await d.json().catch(()=>({error:"Upload failed"}));E(b=>b.filter(b=>b.id!==a)),ao(b.error??"Upload failed");return}let e=await d.json();E(b=>b.some(b=>b.id!==a&&b.path===e.path)?b.filter(b=>b.id!==a):b.map(b=>b.id===a?{...e,id:a,loading:!1}:b))}catch{E(b=>b.filter(b=>b.id!==a)),ao("Upload failed")}}},[]),aA=(0,c.useCallback)(a=>{a.preventDefault(),a.stopPropagation(),as.current+=1,1===as.current&&am(!0)},[]),aB=(0,c.useCallback)(a=>{a.preventDefault(),a.stopPropagation(),as.current-=1,0===as.current&&am(!1)},[]),aC=(0,c.useCallback)(a=>{a.preventDefault(),a.stopPropagation()},[]),aD=(0,c.useCallback)(a=>{a.preventDefault(),a.stopPropagation(),as.current=0,am(!1);let b=Array.from(a.dataTransfer.files);b.length>0&&az(b)},[az]),aE=(0,c.useCallback)(a=>{let b=a.clipboardData?.items;if(!b)return;let c=[];for(let a of Array.from(b))if("file"===a.kind){let b=a.getAsFile();b&&c.push(b)}c.length>0&&(a.preventDefault(),az(c))},[az]),aF=(0,c.useCallback)(a=>{if(a.preventDefault(),!B.trim())return;let b=ah??n;b&&(m.play(),d({description:B.trim(),attachments:D.filter(a=>!a.loading),repositoryPath:b,approvalGates:{allowPrd:F.allowPrd??!1,allowPlan:F.allowPlan??!1,allowMerge:F.allowMerge??!1},push:!!X||H||J,openPr:!!X||J,ciWatchEnabled:L,enableEvidence:N,commitEvidence:P,fast:T,forkAndPr:X,commitSpecs:Z,rebaseBeforeBranch:_,...V?{pending:V}:{},...ab?{agentType:ab}:{},...ad?{model:ad}:{},...af?{permissionMode:af}:{},...R?{parentId:R}:{},sessionId:ar.current}),aw())},[B,D,F,ah,n,d,H,J,N,L,P,T,X,Z,_,V,ab,ad,af,R,m,aw]),aG=(0,c.useCallback)(async()=>{try{let a=await (0,r.pickFiles)();if(!a)return;for(let b of a){let a=crypto.randomUUID();E(c=>[...c,{id:a,name:b.name,size:b.size,mimeType:"application/octet-stream",path:"",loading:!0}]);try{let c=await fetch("/api/attachments/upload-from-path",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({path:b.path,sessionId:ar.current})});if(!c.ok){let b=await c.json().catch(()=>({error:"Upload failed"}));E(b=>b.filter(b=>b.id!==a)),ao(b.error??"Upload failed");return}let d=await c.json();E(b=>b.some(b=>b.id!==a&&b.path===d.path)?b.filter(b=>b.id!==a):b.map(b=>b.id===a?{...d,id:a,loading:!1}:b))}catch{E(b=>b.filter(b=>b.id!==a)),ao("Upload failed")}}}catch{}},[]),aH=(0,c.useCallback)(a=>{E(b=>b.filter(b=>b.id!==a))},[]),aI=(0,c.useCallback)((a,b)=>{E(c=>c.map(c=>c.id===a?{...c,notes:b}:c))},[]);return{validRepoPath:n,canPush:at,isDirty:ax,computedPush:!!X||H||J,computedOpenPr:!!X||J,description:B,setDescription:C,attachments:D,approvalGates:F,setApprovalGates:G,push:H,setPush:I,openPr:J,setOpenPr:K,ciWatchEnabled:L,setCiWatchEnabled:M,enableEvidence:N,setEnableEvidence:O,commitEvidence:P,setCommitEvidence:Q,parentId:R,setParentId:S,fast:T,setFast:U,pending:V,setPending:W,forkAndPr:X,setForkAndPr:Y,commitSpecs:Z,setCommitSpecs:$,rebaseBeforeBranch:_,setRebaseBeforeBranch:aa,overrideAgent:ab,setOverrideAgent:ac,overrideModel:ad,setOverrideModel:ae,permissionMode:af,setPermissionMode:ag,selectedRepoPath:ah,setSelectedRepoPath:ai,localRepos:aj,setLocalRepos:ak,isDragOver:al,uploadError:an,isPromptFocused:ap,setIsPromptFocused:aq,sessionIdRef:ar,currentAgentType:i,currentModel:j,attemptClose:ay,handleFiles:az,handleDragEnter:aA,handleDragLeave:aB,handleDragOver:aC,handleDrop:aD,handlePaste:aE,handleSubmit:aF,handleAddFiles:aG,handleRemoveFile:aH,handleNotesChange:aI,resetForm:aw}}({open:a,onClose:d,onSubmit:e,repositoryPath:f,workflowDefaults:u,repositories:w,initialParentId:x,currentAgentType:y,currentModel:z,initialDescription:A,canPushDirectly:B}),F=(0,c.useRef)(null),G=(0,c.useCallback)(a=>{(a.ctrlKey||a.metaKey)&&"Enter"===a.key&&(a.preventDefault(),F.current?.requestSubmit())},[]),H=v&&v.length>0,I=!E.validRepoPath&&void 0!==w,J=!E.validRepoPath&&!E.selectedRepoPath;return(0,b.jsx)(i.BaseDrawer,{open:a,onClose:E.attemptClose,size:"md",modal:!1,dismissOnOutsideClick:!0,"data-testid":"feature-create-drawer",header:(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("div",{className:"h-2.5 w-2.5 shrink-0 rounded-full bg-blue-500"}),(0,b.jsx)(j.DrawerTitle,{children:D("createDrawer.title")})]}),g?(0,b.jsx)(j.DrawerDescription,{asChild:!0,children:(0,b.jsx)("div",{children:(0,b.jsx)(m.Badge,{variant:"secondary",children:D("createDrawer.creating")})})}):null]}),footer:(0,b.jsxs)("div",{className:"flex flex-row justify-end gap-2",children:[(0,b.jsx)(k.Button,{variant:"outline",onClick:E.attemptClose,disabled:g,children:D("createDrawer.cancel")}),(0,b.jsx)(k.Button,{type:"submit",form:"create-feature-form",disabled:!E.description.trim()||g||J,children:D(g?"createDrawer.creating":"createDrawer.createFeature")})]}),children:(0,b.jsx)("div",{className:"overflow-y-auto p-4",children:(0,b.jsx)(n.TooltipProvider,{delayDuration:400,children:(0,b.jsxs)("form",{ref:F,id:"create-feature-form",onSubmit:E.handleSubmit,onKeyDown:G,className:"flex flex-col gap-4",children:[I?(0,b.jsxs)("div",{className:"flex flex-col gap-1.5","data-testid":"repo-selector-section",children:[(0,b.jsx)(l.Label,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:D("createDrawer.repository")}),(0,b.jsx)(Y,{repositories:E.localRepos,value:E.selectedRepoPath,onChange:E.setSelectedRepoPath,onAddRepository:a=>{E.setLocalRepos(b=>[...b,a]),E.setSelectedRepoPath(a.path)},disabled:g})]}):E.validRepoPath?(0,b.jsxs)("div",{className:"flex flex-col gap-1.5","data-testid":"repo-readonly-section",children:[(0,b.jsx)(l.Label,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:D("createDrawer.repository")}),(0,b.jsx)("p",{className:"text-sm","data-testid":"repo-readonly-label",children:w?.find(a=>a.path===E.validRepoPath)?.name??E.validRepoPath.split("/").pop()})]}):null,(0,b.jsx)(C,{description:E.description,onDescriptionChange:E.setDescription,attachments:E.attachments,onRemoveFile:E.handleRemoveFile,onNotesChange:E.handleNotesChange,onPaste:E.handlePaste,onDragEnter:E.handleDragEnter,onDragLeave:E.handleDragLeave,onDragOver:E.handleDragOver,onDrop:E.handleDrop,onAddFiles:E.handleAddFiles,isDragOver:E.isDragOver,uploadError:E.uploadError,isPromptFocused:E.isPromptFocused,onPromptFocus:()=>E.setIsPromptFocused(!0),onPromptBlur:()=>E.setIsPromptFocused(!1),fast:E.fast,onFastChange:E.setFast,pending:E.pending,onPendingChange:E.setPending,overrideAgent:E.overrideAgent,overrideModel:E.overrideModel,currentAgentType:y,currentModel:z,onAgentModelChange:(a,b)=>{E.setOverrideAgent(a),E.setOverrideModel(b)},isSubmitting:g}),H&&void 0!==x?(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(l.Label,{htmlFor:"parent-feature",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:D("createDrawer.parentFeature")}),(0,b.jsx)(Q,{features:v,value:E.parentId,onChange:E.setParentId,disabled:g})]}):null,(0,b.jsx)(K,{approvalGates:E.approvalGates,onApprovalGatesChange:E.setApprovalGates,enableEvidence:E.enableEvidence,onEnableEvidenceChange:E.setEnableEvidence,commitEvidence:E.commitEvidence,onCommitEvidenceChange:E.setCommitEvidence,push:E.push,onPushChange:E.setPush,openPr:E.openPr,onOpenPrChange:E.setOpenPr,ciWatchEnabled:E.ciWatchEnabled,onCiWatchChange:E.setCiWatchEnabled,rebaseBeforeBranch:E.rebaseBeforeBranch,onRebaseBeforeBranchChange:E.setRebaseBeforeBranch,commitSpecs:E.commitSpecs,onCommitSpecsChange:E.setCommitSpecs,forkAndPr:E.forkAndPr,onForkAndPrChange:E.setForkAndPr,canPush:E.canPush,fast:E.fast,computedPush:E.computedPush,computedOpenPr:E.computedOpenPr,isSubmitting:g,agentType:E.overrideAgent??y,permissionMode:E.permissionMode,onPermissionModeChange:E.setPermissionMode})]})})})})}a.s(["CreateDrawerClient",0,function({repositoryPath:a,initialParentId:f,initialDescription:h,features:i,repositories:j,workflowDefaults:k,currentAgentType:l,currentModel:m,canPushDirectly:n}){let o=(0,d.useRouter)(),[p,q]=(0,c.useState)(!1),r=(0,d.usePathname)().startsWith("/create"),s=!p&&r;(0,c.useEffect)(()=>{!r&&p&&q(!1)},[r,p]);let t=(0,c.useCallback)(()=>{o.push("/")},[o]),u=(0,c.useCallback)(a=>{q(!0),o.push("/"),g(a).then(b=>{b.error?e.toast.error(b.error):window.dispatchEvent(new CustomEvent("shipit-ai:feature-created",{detail:{featureId:b.feature.id,name:b.feature.name,description:b.feature.description,repositoryPath:b.feature.repositoryPath,parentId:a.parentId}}))}).catch(()=>{e.toast.error("Failed to create feature"),q(!1)})},[o]);return(0,b.jsx)(Z,{open:s,onClose:t,onSubmit:u,repositoryPath:a,features:i,repositories:j,workflowDefaults:k,initialParentId:f,initialDescription:h,isSubmitting:p,currentAgentType:l,currentModel:m,canPushDirectly:n})}],93995)}];
2
2
 
3
3
  //# sourceMappingURL=0j.8_web_components_common_control-center-drawer_create-drawer-client_tsx_0g70fc5._.js.map