@shepai/cli 1.72.7 → 1.72.8

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 (432) hide show
  1. package/dist/packages/core/src/application/use-cases/tools/list-tools.use-case.d.ts +3 -0
  2. package/dist/packages/core/src/application/use-cases/tools/list-tools.use-case.d.ts.map +1 -1
  3. package/dist/packages/core/src/application/use-cases/tools/list-tools.use-case.js +3 -0
  4. package/dist/packages/core/src/infrastructure/services/tool-installer/tool-installer.service.d.ts.map +1 -1
  5. package/dist/packages/core/src/infrastructure/services/tool-installer/tool-installer.service.js +9 -1
  6. package/dist/packages/core/src/infrastructure/services/tool-installer/tool-metadata.d.ts +6 -0
  7. package/dist/packages/core/src/infrastructure/services/tool-installer/tool-metadata.d.ts.map +1 -1
  8. package/dist/packages/core/src/infrastructure/services/tool-installer/tool-metadata.js +5 -0
  9. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/alacritty.json +5 -2
  10. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/antigravity.json +3 -0
  11. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/claude-code.json +4 -1
  12. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/cursor-cli.json +3 -0
  13. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/cursor.json +3 -0
  14. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/gemini-cli.json +3 -0
  15. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/gh.json +3 -0
  16. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/git.json +3 -0
  17. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/iterm2.json +3 -0
  18. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/kitty.json +5 -2
  19. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/tmux.json +4 -1
  20. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/vscode.json +4 -1
  21. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/warp.json +3 -0
  22. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/windsurf.json +4 -1
  23. package/dist/packages/core/src/infrastructure/services/tool-installer/tools/zed.json +3 -0
  24. package/dist/src/presentation/web/app/api/tools/[id]/install/route.d.ts.map +1 -1
  25. package/dist/src/presentation/web/app/api/tools/[id]/install/route.js +9 -4
  26. package/dist/src/presentation/web/app/api/tools/[id]/install/stream/route.d.ts +7 -0
  27. package/dist/src/presentation/web/app/api/tools/[id]/install/stream/route.d.ts.map +1 -0
  28. package/dist/src/presentation/web/app/api/tools/[id]/install/stream/route.js +32 -0
  29. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.d.ts +2 -1
  30. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.d.ts.map +1 -1
  31. package/dist/src/presentation/web/components/common/base-drawer/base-drawer.js +3 -3
  32. package/dist/src/presentation/web/components/features/index.d.ts +1 -1
  33. package/dist/src/presentation/web/components/features/index.d.ts.map +1 -1
  34. package/dist/src/presentation/web/components/features/index.js +1 -1
  35. package/dist/src/presentation/web/components/features/tools/index.d.ts +1 -1
  36. package/dist/src/presentation/web/components/features/tools/index.d.ts.map +1 -1
  37. package/dist/src/presentation/web/components/features/tools/index.js +1 -1
  38. package/dist/src/presentation/web/components/features/tools/tool-card.d.ts.map +1 -1
  39. package/dist/src/presentation/web/components/features/tools/tool-card.js +18 -14
  40. package/dist/src/presentation/web/components/features/tools/tool-card.stories.d.ts.map +1 -1
  41. package/dist/src/presentation/web/components/features/tools/tool-card.stories.js +18 -0
  42. package/dist/src/presentation/web/components/features/tools/tool-detail-drawer.d.ts +10 -0
  43. package/dist/src/presentation/web/components/features/tools/tool-detail-drawer.d.ts.map +1 -0
  44. package/dist/src/presentation/web/components/features/tools/tool-detail-drawer.js +95 -0
  45. package/dist/src/presentation/web/components/features/tools/tool-detail-drawer.stories.d.ts +12 -0
  46. package/dist/src/presentation/web/components/features/tools/tool-detail-drawer.stories.d.ts.map +1 -0
  47. package/dist/src/presentation/web/components/features/tools/tool-detail-drawer.stories.js +119 -0
  48. package/dist/src/presentation/web/components/features/tools/tools-page-client.js +3 -3
  49. package/dist/src/presentation/web/components/features/tools/tools-page-client.stories.d.ts.map +1 -1
  50. package/dist/src/presentation/web/components/features/tools/tools-page-client.stories.js +15 -0
  51. package/dist/src/presentation/web/hooks/use-tool-install-stream.d.ts +10 -0
  52. package/dist/src/presentation/web/hooks/use-tool-install-stream.d.ts.map +1 -0
  53. package/dist/src/presentation/web/hooks/use-tool-install-stream.js +38 -0
  54. package/dist/tsconfig.build.tsbuildinfo +1 -1
  55. package/package.json +1 -1
  56. package/web/.next/BUILD_ID +1 -1
  57. package/web/.next/app-path-routes-manifest.json +1 -0
  58. package/web/.next/build-manifest.json +7 -7
  59. package/web/.next/cache/.previewinfo +1 -1
  60. package/web/.next/cache/.rscinfo +1 -1
  61. package/web/.next/cache/.tsbuildinfo +1 -1
  62. package/web/.next/cache/config.json +3 -3
  63. package/web/.next/fallback-build-manifest.json +2 -2
  64. package/web/.next/prerender-manifest.json +3 -3
  65. package/web/.next/required-server-files.js +1 -1
  66. package/web/.next/required-server-files.json +1 -1
  67. package/web/.next/routes-manifest.json +8 -0
  68. package/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +5 -5
  69. package/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +14 -14
  70. package/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  71. package/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  72. package/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  73. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +5 -5
  74. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +17 -17
  75. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
  76. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  77. package/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  78. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +5 -5
  79. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +12 -12
  80. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  81. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  82. package/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  83. package/web/.next/server/app/(dashboard)/create/page/build-manifest.json +5 -5
  84. package/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +14 -14
  85. package/web/.next/server/app/(dashboard)/create/page.js +1 -1
  86. package/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  87. package/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  88. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +5 -5
  89. package/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +17 -17
  90. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
  91. package/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  92. package/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  93. package/web/.next/server/app/(dashboard)/page/build-manifest.json +5 -5
  94. package/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +12 -12
  95. package/web/.next/server/app/(dashboard)/page.js +1 -1
  96. package/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  97. package/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  98. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +5 -5
  99. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +12 -12
  100. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  101. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  102. package/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  103. package/web/.next/server/app/_global-error/page/build-manifest.json +5 -5
  104. package/web/.next/server/app/_global-error.html +2 -2
  105. package/web/.next/server/app/_global-error.rsc +1 -1
  106. package/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  107. package/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  108. package/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  109. package/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  110. package/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  111. package/web/.next/server/app/_not-found/page/build-manifest.json +5 -5
  112. package/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  113. package/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  114. package/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  115. package/web/.next/server/app/api/tools/[id]/install/route.js +1 -1
  116. package/web/.next/server/app/api/tools/[id]/install/route.js.nft.json +1 -1
  117. package/web/.next/server/app/api/tools/[id]/install/stream/route/app-paths-manifest.json +3 -0
  118. package/web/.next/server/app/api/tools/[id]/install/stream/route/build-manifest.json +11 -0
  119. package/web/.next/server/app/api/tools/[id]/install/stream/route/server-reference-manifest.json +4 -0
  120. package/web/.next/server/app/api/tools/[id]/install/stream/route.js +6 -0
  121. package/web/.next/server/app/api/tools/[id]/install/stream/route.js.map +5 -0
  122. package/web/.next/server/app/api/tools/[id]/install/stream/route.js.nft.json +1 -0
  123. package/web/.next/server/app/api/tools/[id]/install/stream/route_client-reference-manifest.js +2 -0
  124. package/web/.next/server/app/skills/page/build-manifest.json +5 -5
  125. package/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  126. package/web/.next/server/app/skills/page.js +1 -1
  127. package/web/.next/server/app/skills/page.js.nft.json +1 -1
  128. package/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  129. package/web/.next/server/app/tools/page/build-manifest.json +5 -5
  130. package/web/.next/server/app/tools/page/server-reference-manifest.json +77 -2
  131. package/web/.next/server/app/tools/page.js +2 -2
  132. package/web/.next/server/app/tools/page.js.nft.json +1 -1
  133. package/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  134. package/web/.next/server/app/version/page/build-manifest.json +5 -5
  135. package/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  136. package/web/.next/server/app/version/page.js.nft.json +1 -1
  137. package/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  138. package/web/.next/server/app-paths-manifest.json +1 -0
  139. package/web/.next/server/chunks/[root-of-the-server]__0866d2b5._.js +3 -0
  140. package/web/.next/server/chunks/[root-of-the-server]__0866d2b5._.js.map +1 -0
  141. package/web/.next/server/chunks/[root-of-the-server]__e247a485._.js +11 -0
  142. package/web/.next/server/chunks/[root-of-the-server]__e247a485._.js.map +1 -0
  143. package/web/.next/server/chunks/f3a1f__next-internal_server_app_api_tools_[id]_install_stream_route_actions_1fe5bd5d.js +3 -0
  144. package/web/.next/server/chunks/f3a1f__next-internal_server_app_api_tools_[id]_install_stream_route_actions_1fe5bd5d.js.map +1 -0
  145. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  146. package/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map +1 -1
  147. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_2b7834f6.js +1 -1
  148. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_2b7834f6.js.map +1 -1
  149. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6923c575.js +1 -1
  150. package/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6923c575.js.map +1 -1
  151. package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +4 -0
  152. package/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js.map +1 -0
  153. package/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
  154. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__07385073._.js → server/chunks/ssr/[root-of-the-server]__45dbf93d._.js} +3 -3
  155. package/web/.next/server/chunks/ssr/{[root-of-the-server]__07385073._.js.map → [root-of-the-server]__45dbf93d._.js.map} +1 -1
  156. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  157. package/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js.map +1 -1
  158. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__8fcb9132._.js → server/chunks/ssr/[root-of-the-server]__6cbc1149._.js} +3 -3
  159. package/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js.map +1 -0
  160. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  161. package/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js.map +1 -1
  162. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +3 -0
  163. package/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js.map +1 -0
  164. package/web/.next/server/chunks/ssr/[root-of-the-server]__c18f84a4._.js +3 -0
  165. package/web/.next/server/chunks/ssr/[root-of-the-server]__c18f84a4._.js.map +1 -0
  166. package/web/.next/server/chunks/ssr/[root-of-the-server]__cbae9863._.js +3 -0
  167. package/web/.next/server/chunks/ssr/[root-of-the-server]__cbae9863._.js.map +1 -0
  168. package/web/.next/server/chunks/ssr/[root-of-the-server]__e062a6de._.js +3 -0
  169. package/web/.next/server/chunks/ssr/[root-of-the-server]__e062a6de._.js.map +1 -0
  170. package/web/.next/server/chunks/ssr/[root-of-the-server]__e5e09f72._.js +3 -0
  171. package/web/.next/server/chunks/ssr/[root-of-the-server]__e5e09f72._.js.map +1 -0
  172. package/web/.next/server/chunks/ssr/_0e9d6bf7._.js +3 -0
  173. package/web/.next/server/chunks/ssr/_0e9d6bf7._.js.map +1 -0
  174. package/web/.next/server/chunks/ssr/_1978f325._.js +7 -0
  175. package/web/.next/server/chunks/ssr/_1978f325._.js.map +1 -0
  176. package/web/.next/server/chunks/ssr/_3197d5cb._.js +3 -0
  177. package/web/.next/server/chunks/ssr/_3197d5cb._.js.map +1 -0
  178. package/web/.next/{standalone/src/presentation/web/.next/server/chunks/ssr/_7215bb0f._.js → server/chunks/ssr/_47ef589d._.js} +2 -2
  179. package/web/.next/server/chunks/ssr/{_7215bb0f._.js.map → _47ef589d._.js.map} +1 -1
  180. package/web/.next/server/chunks/ssr/_61351ed3._.js +3 -0
  181. package/web/.next/server/chunks/ssr/_61351ed3._.js.map +1 -0
  182. package/web/.next/server/chunks/ssr/_8400c8bb._.js +3 -0
  183. package/web/.next/server/chunks/ssr/_8400c8bb._.js.map +1 -0
  184. package/web/.next/server/chunks/ssr/_9f940437._.js +3 -0
  185. package/web/.next/server/chunks/ssr/_9f940437._.js.map +1 -0
  186. package/web/.next/server/chunks/ssr/_a29296f0._.js +3 -0
  187. package/web/.next/server/chunks/ssr/_a29296f0._.js.map +1 -0
  188. package/web/.next/server/chunks/ssr/_e806976d._.js +3 -0
  189. package/web/.next/server/chunks/ssr/_e806976d._.js.map +1 -0
  190. package/web/.next/server/chunks/ssr/src_presentation_web_1a32dbcb._.js +2 -2
  191. package/web/.next/server/chunks/ssr/src_presentation_web_1a32dbcb._.js.map +1 -1
  192. package/web/.next/server/chunks/ssr/src_presentation_web_398553b0._.js +1 -1
  193. package/web/.next/server/chunks/ssr/src_presentation_web_398553b0._.js.map +1 -1
  194. package/web/.next/server/chunks/ssr/src_presentation_web_5c87e8e4._.js +1 -1
  195. package/web/.next/server/chunks/ssr/src_presentation_web_5c87e8e4._.js.map +1 -1
  196. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_f4952172.js +1 -1
  197. package/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_f4952172.js.map +1 -1
  198. package/web/.next/server/chunks/ssr/src_presentation_web_c1bc6240._.js +2 -2
  199. package/web/.next/server/chunks/ssr/src_presentation_web_c1bc6240._.js.map +1 -1
  200. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  201. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js.map +1 -1
  202. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_3d0aa70c._.js +3 -0
  203. package/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_3d0aa70c._.js.map +1 -0
  204. package/web/.next/server/middleware-build-manifest.js +5 -5
  205. package/web/.next/server/pages/500.html +2 -2
  206. package/web/.next/server/server-reference-manifest.js +1 -1
  207. package/web/.next/server/server-reference-manifest.json +61 -26
  208. package/web/.next/standalone/src/presentation/web/.next/BUILD_ID +1 -1
  209. package/web/.next/standalone/src/presentation/web/.next/app-path-routes-manifest.json +1 -0
  210. package/web/.next/standalone/src/presentation/web/.next/build-manifest.json +7 -7
  211. package/web/.next/standalone/src/presentation/web/.next/prerender-manifest.json +3 -3
  212. package/web/.next/standalone/src/presentation/web/.next/required-server-files.json +1 -1
  213. package/web/.next/standalone/src/presentation/web/.next/routes-manifest.json +8 -0
  214. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page/build-manifest.json +5 -5
  215. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page/server-reference-manifest.json +14 -14
  216. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js +1 -1
  217. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page.js.nft.json +1 -1
  218. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/create/page_client-reference-manifest.js +1 -1
  219. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/build-manifest.json +5 -5
  220. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page/server-reference-manifest.json +17 -17
  221. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js +1 -1
  222. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page.js.nft.json +1 -1
  223. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/feature/[featureId]/page_client-reference-manifest.js +1 -1
  224. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/build-manifest.json +5 -5
  225. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page/server-reference-manifest.json +12 -12
  226. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js +1 -1
  227. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page.js.nft.json +1 -1
  228. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/@drawer/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  229. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page/build-manifest.json +5 -5
  230. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page/server-reference-manifest.json +14 -14
  231. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js +1 -1
  232. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page.js.nft.json +1 -1
  233. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/create/page_client-reference-manifest.js +1 -1
  234. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page/build-manifest.json +5 -5
  235. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page/server-reference-manifest.json +17 -17
  236. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js +1 -1
  237. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page.js.nft.json +1 -1
  238. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/feature/[featureId]/page_client-reference-manifest.js +1 -1
  239. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page/build-manifest.json +5 -5
  240. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page/server-reference-manifest.json +12 -12
  241. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js +1 -1
  242. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page.js.nft.json +1 -1
  243. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
  244. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/build-manifest.json +5 -5
  245. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page/server-reference-manifest.json +12 -12
  246. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js +1 -1
  247. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page.js.nft.json +1 -1
  248. package/web/.next/standalone/src/presentation/web/.next/server/app/(dashboard)/repository/[repositoryId]/page_client-reference-manifest.js +1 -1
  249. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error/page/build-manifest.json +5 -5
  250. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.html +2 -2
  251. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.rsc +1 -1
  252. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  253. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  254. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  255. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  256. package/web/.next/standalone/src/presentation/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  257. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/build-manifest.json +5 -5
  258. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page/server-reference-manifest.json +1 -1
  259. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  260. package/web/.next/standalone/src/presentation/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  261. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/route.js +1 -1
  262. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/route.js.nft.json +1 -1
  263. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/stream/route/app-paths-manifest.json +3 -0
  264. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/stream/route/build-manifest.json +11 -0
  265. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/stream/route/server-reference-manifest.json +4 -0
  266. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/stream/route.js +6 -0
  267. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/stream/route.js.map +5 -0
  268. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/stream/route.js.nft.json +1 -0
  269. package/web/.next/standalone/src/presentation/web/.next/server/app/api/tools/[id]/install/stream/route_client-reference-manifest.js +2 -0
  270. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/build-manifest.json +5 -5
  271. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page/server-reference-manifest.json +6 -6
  272. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js +1 -1
  273. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page.js.nft.json +1 -1
  274. package/web/.next/standalone/src/presentation/web/.next/server/app/skills/page_client-reference-manifest.js +1 -1
  275. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/build-manifest.json +5 -5
  276. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page/server-reference-manifest.json +77 -2
  277. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js +2 -2
  278. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page.js.nft.json +1 -1
  279. package/web/.next/standalone/src/presentation/web/.next/server/app/tools/page_client-reference-manifest.js +1 -1
  280. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/build-manifest.json +5 -5
  281. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page/server-reference-manifest.json +1 -1
  282. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page.js.nft.json +1 -1
  283. package/web/.next/standalone/src/presentation/web/.next/server/app/version/page_client-reference-manifest.js +1 -1
  284. package/web/.next/standalone/src/presentation/web/.next/server/app-paths-manifest.json +1 -0
  285. package/web/.next/standalone/src/presentation/web/.next/server/chunks/[root-of-the-server]__0866d2b5._.js +3 -0
  286. package/web/.next/standalone/src/presentation/web/.next/server/chunks/[root-of-the-server]__e247a485._.js +11 -0
  287. package/web/.next/standalone/src/presentation/web/.next/server/chunks/f3a1f__next-internal_server_app_api_tools_[id]_install_stream_route_actions_1fe5bd5d.js +3 -0
  288. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js +1 -1
  289. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_@drawer_repository_[repositoryId]_page_actions_2b7834f6.js +1 -1
  290. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/8ba4b_server_app_(dashboard)_repository_[repositoryId]_page_actions_6923c575.js +1 -1
  291. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__17a611f0._.js +4 -0
  292. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__249c74f6._.js +1 -1
  293. package/web/.next/{server/chunks/ssr/[root-of-the-server]__07385073._.js → standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__45dbf93d._.js} +3 -3
  294. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6b17a22d._.js +1 -1
  295. package/web/.next/{server/chunks/ssr/[root-of-the-server]__8fcb9132._.js → standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6cbc1149._.js} +3 -3
  296. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__804c006d._.js +1 -1
  297. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__aad040c0._.js +3 -0
  298. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__c18f84a4._.js +3 -0
  299. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__cbae9863._.js +3 -0
  300. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__e062a6de._.js +3 -0
  301. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__e5e09f72._.js +3 -0
  302. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_0e9d6bf7._.js +3 -0
  303. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_1978f325._.js +7 -0
  304. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_3197d5cb._.js +3 -0
  305. package/web/.next/{server/chunks/ssr/_7215bb0f._.js → standalone/src/presentation/web/.next/server/chunks/ssr/_47ef589d._.js} +2 -2
  306. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_61351ed3._.js +3 -0
  307. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_8400c8bb._.js +3 -0
  308. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_9f940437._.js +3 -0
  309. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_a29296f0._.js +3 -0
  310. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_e806976d._.js +3 -0
  311. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_1a32dbcb._.js +2 -2
  312. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_398553b0._.js +1 -1
  313. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_5c87e8e4._.js +1 -1
  314. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web__next-internal_server_app_(dashboard)_page_actions_f4952172.js +1 -1
  315. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_c1bc6240._.js +2 -2
  316. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_features_control-center_7ac3562e._.js +1 -1
  317. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/src_presentation_web_components_features_tools_tools-page-client_tsx_3d0aa70c._.js +3 -0
  318. package/web/.next/standalone/src/presentation/web/.next/server/middleware-build-manifest.js +5 -5
  319. package/web/.next/standalone/src/presentation/web/.next/server/pages/500.html +2 -2
  320. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.js +1 -1
  321. package/web/.next/standalone/src/presentation/web/.next/server/server-reference-manifest.json +61 -26
  322. package/web/.next/standalone/src/presentation/web/app/api/tools/[id]/install/route.ts +14 -6
  323. package/web/.next/standalone/src/presentation/web/app/api/tools/[id]/install/stream/route.ts +42 -0
  324. package/web/.next/standalone/src/presentation/web/components/common/base-drawer/base-drawer.tsx +13 -1
  325. package/web/.next/standalone/src/presentation/web/components/features/index.ts +1 -1
  326. package/web/.next/standalone/src/presentation/web/components/features/tools/index.ts +1 -1
  327. package/web/.next/standalone/src/presentation/web/components/features/tools/tool-card.stories.tsx +18 -0
  328. package/web/.next/standalone/src/presentation/web/components/features/tools/tool-card.tsx +75 -67
  329. package/web/.next/standalone/src/presentation/web/components/features/tools/tool-detail-drawer.stories.tsx +132 -0
  330. package/web/.next/standalone/src/presentation/web/components/features/tools/tool-detail-drawer.tsx +313 -0
  331. package/web/.next/standalone/src/presentation/web/components/features/tools/tools-page-client.stories.tsx +15 -0
  332. package/web/.next/standalone/src/presentation/web/components/features/tools/tools-page-client.tsx +3 -3
  333. package/web/.next/standalone/src/presentation/web/hooks/use-tool-install-stream.ts +58 -0
  334. package/web/.next/standalone/src/presentation/web/server.js +1 -1
  335. package/web/.next/static/chunks/{585ae19c520e8b72.js → 1c07b21eb8b32f25.js} +1 -1
  336. package/web/.next/static/chunks/4a3b3cfcc85e7254.js +1 -0
  337. package/web/.next/static/chunks/{fe83a799663fd3cc.js → 5cd24ca47061a21d.js} +1 -1
  338. package/web/.next/static/chunks/5d0a6417c4e4e545.js +1 -0
  339. package/web/.next/static/chunks/67f2a7a5e8dc358a.css +2 -0
  340. package/web/.next/static/chunks/71cf72022f08a8c9.js +1 -0
  341. package/web/.next/static/chunks/84a181ff3270fd9f.js +1 -0
  342. package/web/.next/static/chunks/8682dcb376de62de.js +1 -0
  343. package/web/.next/static/chunks/9215b6fb973482c5.js +1 -0
  344. package/web/.next/static/chunks/{b45344579a43cbb8.js → 991d4490d7a338d8.js} +1 -1
  345. package/web/.next/static/chunks/c71589df79020ecb.js +1 -0
  346. package/web/.next/static/chunks/c92e1360ada8ca94.js +5 -0
  347. package/web/.next/static/chunks/ebf172a84c9596ed.js +1 -0
  348. package/web/.next/static/chunks/edbd674102e897b4.js +1 -0
  349. package/web/.next/static/chunks/fabfa54940973cc7.js +1 -0
  350. package/web/.next/static/chunks/fcafb841e3860687.js +1 -0
  351. package/web/.next/static/chunks/{turbopack-3a8fe0e18e69b0ab.js → turbopack-05820f781f3ffc22.js} +1 -1
  352. package/web/.next/trace +1 -1
  353. package/web/.next/trace-build +1 -1
  354. package/web/.next/types/link.d.ts +1 -0
  355. package/web/.next/types/routes.d.ts +2 -1
  356. package/web/.next/types/validator.ts +9 -0
  357. package/dist/src/presentation/web/components/features/tools/install-instructions.d.ts +0 -9
  358. package/dist/src/presentation/web/components/features/tools/install-instructions.d.ts.map +0 -1
  359. package/dist/src/presentation/web/components/features/tools/install-instructions.js +0 -19
  360. package/dist/src/presentation/web/components/features/tools/install-instructions.stories.d.ts +0 -12
  361. package/dist/src/presentation/web/components/features/tools/install-instructions.stories.d.ts.map +0 -1
  362. package/dist/src/presentation/web/components/features/tools/install-instructions.stories.js +0 -77
  363. package/web/.next/server/chunks/[root-of-the-server]__b1f03347._.js +0 -3
  364. package/web/.next/server/chunks/[root-of-the-server]__b1f03347._.js.map +0 -1
  365. package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +0 -4
  366. package/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js.map +0 -1
  367. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js +0 -3
  368. package/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js.map +0 -1
  369. package/web/.next/server/chunks/ssr/[root-of-the-server]__6db85a66._.js +0 -4
  370. package/web/.next/server/chunks/ssr/[root-of-the-server]__6db85a66._.js.map +0 -1
  371. package/web/.next/server/chunks/ssr/[root-of-the-server]__8c1a3d66._.js +0 -3
  372. package/web/.next/server/chunks/ssr/[root-of-the-server]__8c1a3d66._.js.map +0 -1
  373. package/web/.next/server/chunks/ssr/[root-of-the-server]__8fcb9132._.js.map +0 -1
  374. package/web/.next/server/chunks/ssr/[root-of-the-server]__9d14479b._.js +0 -3
  375. package/web/.next/server/chunks/ssr/[root-of-the-server]__9d14479b._.js.map +0 -1
  376. package/web/.next/server/chunks/ssr/[root-of-the-server]__d4e51258._.js +0 -3
  377. package/web/.next/server/chunks/ssr/[root-of-the-server]__d4e51258._.js.map +0 -1
  378. package/web/.next/server/chunks/ssr/[root-of-the-server]__fe2a7deb._.js +0 -3
  379. package/web/.next/server/chunks/ssr/[root-of-the-server]__fe2a7deb._.js.map +0 -1
  380. package/web/.next/server/chunks/ssr/_00e6c698._.js +0 -3
  381. package/web/.next/server/chunks/ssr/_00e6c698._.js.map +0 -1
  382. package/web/.next/server/chunks/ssr/_13566ff3._.js +0 -3
  383. package/web/.next/server/chunks/ssr/_13566ff3._.js.map +0 -1
  384. package/web/.next/server/chunks/ssr/_26129e04._.js +0 -3
  385. package/web/.next/server/chunks/ssr/_26129e04._.js.map +0 -1
  386. package/web/.next/server/chunks/ssr/_34a58db8._.js +0 -3
  387. package/web/.next/server/chunks/ssr/_34a58db8._.js.map +0 -1
  388. package/web/.next/server/chunks/ssr/_37259405._.js +0 -3
  389. package/web/.next/server/chunks/ssr/_37259405._.js.map +0 -1
  390. package/web/.next/server/chunks/ssr/_63bfa7dd._.js +0 -3
  391. package/web/.next/server/chunks/ssr/_63bfa7dd._.js.map +0 -1
  392. package/web/.next/server/chunks/ssr/_cb5b3951._.js +0 -3
  393. package/web/.next/server/chunks/ssr/_cb5b3951._.js.map +0 -1
  394. package/web/.next/server/chunks/ssr/_fc3a6895._.js +0 -3
  395. package/web/.next/server/chunks/ssr/_fc3a6895._.js.map +0 -1
  396. package/web/.next/server/chunks/ssr/node_modules__pnpm_3288606c._.js +0 -7
  397. package/web/.next/server/chunks/ssr/node_modules__pnpm_3288606c._.js.map +0 -1
  398. package/web/.next/standalone/src/presentation/web/.next/server/chunks/[root-of-the-server]__b1f03347._.js +0 -3
  399. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__08ba9bd3._.js +0 -4
  400. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6bb00d90._.js +0 -3
  401. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__6db85a66._.js +0 -4
  402. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__8c1a3d66._.js +0 -3
  403. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__9d14479b._.js +0 -3
  404. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__d4e51258._.js +0 -3
  405. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/[root-of-the-server]__fe2a7deb._.js +0 -3
  406. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_00e6c698._.js +0 -3
  407. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_13566ff3._.js +0 -3
  408. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_26129e04._.js +0 -3
  409. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_34a58db8._.js +0 -3
  410. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_37259405._.js +0 -3
  411. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_63bfa7dd._.js +0 -3
  412. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_cb5b3951._.js +0 -3
  413. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/_fc3a6895._.js +0 -3
  414. package/web/.next/standalone/src/presentation/web/.next/server/chunks/ssr/node_modules__pnpm_3288606c._.js +0 -7
  415. package/web/.next/standalone/src/presentation/web/components/features/tools/install-instructions.stories.tsx +0 -89
  416. package/web/.next/standalone/src/presentation/web/components/features/tools/install-instructions.tsx +0 -109
  417. package/web/.next/static/chunks/07fcc6d17357e905.js +0 -1
  418. package/web/.next/static/chunks/304c8593d0a6525d.js +0 -1
  419. package/web/.next/static/chunks/3e1227e02ef8bcc6.js +0 -5
  420. package/web/.next/static/chunks/4558d1663c6f4d2c.js +0 -1
  421. package/web/.next/static/chunks/4df07e765b233622.js +0 -1
  422. package/web/.next/static/chunks/64d73952a0291431.js +0 -1
  423. package/web/.next/static/chunks/6e14d8bd5c005e6e.js +0 -1
  424. package/web/.next/static/chunks/8a1eb93510e54db0.js +0 -1
  425. package/web/.next/static/chunks/938c21b0cefb2b1d.js +0 -1
  426. package/web/.next/static/chunks/b143c7d78a6888e9.js +0 -1
  427. package/web/.next/static/chunks/c7e793951b20a67f.js +0 -1
  428. package/web/.next/static/chunks/dec13bccb136ef7c.css +0 -2
  429. package/web/.next/static/chunks/e4522f7d3134eefe.js +0 -1
  430. /package/web/.next/static/{9bO_bJBssG0NRxEG03iM5 → IKuYPxAuMvc4BtwKHlj30}/_buildManifest.js +0 -0
  431. /package/web/.next/static/{9bO_bJBssG0NRxEG03iM5 → IKuYPxAuMvc4BtwKHlj30}/_clientMiddlewareManifest.json +0 -0
  432. /package/web/.next/static/{9bO_bJBssG0NRxEG03iM5 → IKuYPxAuMvc4BtwKHlj30}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/presentation/web/lib/server-container.ts","../../../../../../src/presentation/web/app/api/tools/%5Bid%5D/install/route.ts","../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/dist/esm/build/templates/app-route.js"],"sourcesContent":["/**\n * Server Container Accessor\n *\n * Provides a `resolve()` helper for server components and API routes to\n * obtain DI-managed instances. The tsyringe container is placed on globalThis\n * by the CLI bootstrap (`shep ui`) or the dev-server (`pnpm dev:web`).\n */\n\nimport type { DependencyContainer, InjectionToken } from 'tsyringe';\n\nconst CONTAINER_KEY = '__shepContainer';\n\n/**\n * Resolve a dependency from the DI container.\n *\n * Usage in server components / API routes:\n * ```ts\n * import { resolve } from '@/lib/server-container';\n * import { ListFeaturesUseCase } from '@shepai/core/application/use-cases/features/list-features.use-case';\n *\n * const features = await resolve(ListFeaturesUseCase).execute();\n * ```\n */\nexport function resolve<T>(token: InjectionToken<T>): T {\n const container = (globalThis as Record<string, unknown>)[CONTAINER_KEY] as\n | DependencyContainer\n | undefined;\n\n if (!container) {\n throw new Error(\n 'DI container not available. Ensure the CLI bootstrap or dev-server has initialized it.'\n );\n }\n\n return container.resolve(token);\n}\n","import { NextResponse } from 'next/server';\nimport { resolve } from '@/lib/server-container';\nimport type { InstallToolUseCase } from '@shepai/core/application/use-cases/tools/install-tool.use-case';\nimport type { ToolInstallationStatus } from '@shepai/core/domain/generated/output';\n\n// NOTE: Do NOT import TOOL_METADATA directly in API routes.\n// The module uses import.meta.url + fs.readdirSync to load JSON files,\n// which breaks when Turbopack bundles it (import.meta.url resolves to\n// the bundled chunk location where the tools/ directory doesn't exist).\n// Tool validation is delegated to the use case via the DI container,\n// where the module loads correctly in the Node.js CLI bootstrap context.\n\nexport async function POST(\n _request: Request,\n { params }: { params: Promise<{ id: string }> }\n): Promise<NextResponse> {\n const { id } = await params;\n\n try {\n const useCase = resolve<InstallToolUseCase>('InstallToolUseCase');\n const status: ToolInstallationStatus = await useCase.execute(id);\n\n if (status.status === 'error') {\n return NextResponse.json({ error: status.errorMessage }, { status: 500 });\n }\n\n return NextResponse.json({ status });\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : 'Failed to install tool';\n return NextResponse.json({ error: message }, { status: 500 });\n }\n}\n","import { AppRouteRouteModule } from \"next/dist/esm/server/route-modules/app-route/module.compiled\";\nimport { RouteKind } from \"next/dist/esm/server/route-kind\";\nimport { patchFetch as _patchFetch } from \"next/dist/esm/server/lib/patch-fetch\";\nimport { addRequestMeta, getRequestMeta } from \"next/dist/esm/server/request-meta\";\nimport { getTracer, SpanKind } from \"next/dist/esm/server/lib/trace/tracer\";\nimport { setManifestsSingleton } from \"next/dist/esm/server/app-render/manifests-singleton\";\nimport { normalizeAppPath } from \"next/dist/esm/shared/lib/router/utils/app-paths\";\nimport { NodeNextRequest, NodeNextResponse } from \"next/dist/esm/server/base-http/node\";\nimport { NextRequestAdapter, signalFromNodeResponse } from \"next/dist/esm/server/web/spec-extension/adapters/next-request\";\nimport { BaseServerSpan } from \"next/dist/esm/server/lib/trace/constants\";\nimport { getRevalidateReason } from \"next/dist/esm/server/instrumentation/utils\";\nimport { sendResponse } from \"next/dist/esm/server/send-response\";\nimport { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from \"next/dist/esm/server/web/utils\";\nimport { getCacheControlHeader } from \"next/dist/esm/server/lib/cache-control\";\nimport { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from \"next/dist/esm/lib/constants\";\nimport { NoFallbackError } from \"next/dist/esm/shared/lib/no-fallback-error.external\";\nimport { CachedRouteKind } from \"next/dist/esm/server/response-cache\";\nimport * as userland from \"INNER_APP_ROUTE\";\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\nconst nextConfigOutput = \"standalone\"\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: \"/api/tools/[id]/install/route\",\n pathname: \"/api/tools/[id]/install\",\n filename: \"route\",\n bundlePath: \"\"\n },\n distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '',\n relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '',\n resolvedPagePath: \"[project]/src/presentation/web/app/api/tools/[id]/install/route.ts\",\n nextConfigOutput,\n userland\n});\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule;\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage\n });\n}\nexport { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, };\nexport async function handler(req, res, ctx) {\n if (routeModule.isDev) {\n addRequestMeta(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint());\n }\n let srcPage = \"/api/tools/[id]/install/route\";\n // turbopack doesn't normalize `/index` in the page name\n // so we need to to process dynamic routes properly\n // TODO: fix turbopack providing differing value from webpack\n if (process.env.TURBOPACK) {\n srcPage = srcPage.replace(/\\/index$/, '') || '/';\n } else if (srcPage === '/index') {\n // we always normalize /index specifically\n srcPage = '/';\n }\n const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE;\n const prepareResult = await routeModule.prepare(req, res, {\n srcPage,\n multiZoneDraftMode\n });\n if (!prepareResult) {\n res.statusCode = 400;\n res.end('Bad Request');\n ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve());\n return null;\n }\n const { buildId, params, nextConfig, parsedUrl, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname, clientReferenceManifest, serverActionsManifest } = prepareResult;\n const normalizedSrcPage = normalizeAppPath(srcPage);\n let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]);\n const render404 = async ()=>{\n // TODO: should route-module itself handle rendering the 404\n if (routerServerContext == null ? void 0 : routerServerContext.render404) {\n await routerServerContext.render404(req, res, parsedUrl, false);\n } else {\n res.end('This page could not be found');\n }\n return null;\n };\n if (isIsr && !isDraftMode) {\n const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]);\n const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage];\n if (prerenderInfo) {\n if (prerenderInfo.fallback === false && !isPrerendered) {\n if (nextConfig.experimental.adapterPath) {\n return await render404();\n }\n throw new NoFallbackError();\n }\n }\n }\n let cacheKey = null;\n if (isIsr && !routeModule.isDev && !isDraftMode) {\n cacheKey = resolvedPathname;\n // ensure /index and / is normalized to one key\n cacheKey = cacheKey === '/index' ? '/' : cacheKey;\n }\n const supportsDynamicResponse = // If we're in development, we always support dynamic HTML\n routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports\n // dynamic HTML.\n !isIsr;\n // This is a revalidation request if the request is for a static\n // page and it is not being resumed from a postponed render and\n // it is not a dynamic RSC request then it is a revalidation\n // request.\n const isStaticGeneration = isIsr && !supportsDynamicResponse;\n // Before rendering (which initializes component tree modules), we have to\n // set the reference manifests to our global store so Server Action's\n // encryption util can access to them at the top level of the page module.\n if (serverActionsManifest && clientReferenceManifest) {\n setManifestsSingleton({\n page: srcPage,\n clientReferenceManifest,\n serverActionsManifest\n });\n }\n const method = req.method || 'GET';\n const tracer = getTracer();\n const activeSpan = tracer.getActiveScopeSpan();\n const context = {\n params,\n prerenderManifest,\n renderOpts: {\n experimental: {\n authInterrupts: Boolean(nextConfig.experimental.authInterrupts)\n },\n cacheComponents: Boolean(nextConfig.cacheComponents),\n supportsDynamicResponse,\n incrementalCache: getRequestMeta(req, 'incrementalCache'),\n cacheLifeProfiles: nextConfig.cacheLife,\n waitUntil: ctx.waitUntil,\n onClose: (cb)=>{\n res.on('close', cb);\n },\n onAfterTaskError: undefined,\n onInstrumentationRequestError: (error, _request, errorContext, silenceLog)=>routeModule.onRequestError(req, error, errorContext, silenceLog, routerServerContext)\n },\n sharedContext: {\n buildId\n }\n };\n const nodeNextReq = new NodeNextRequest(req);\n const nodeNextRes = new NodeNextResponse(res);\n const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res));\n try {\n const invokeRouteModule = async (span)=>{\n return routeModule.handle(nextReq, context).finally(()=>{\n if (!span) return;\n span.setAttributes({\n 'http.status_code': res.statusCode,\n 'next.rsc': false\n });\n const rootSpanAttributes = tracer.getRootSpanAttributes();\n // We were unable to get attributes, probably OTEL is not enabled\n if (!rootSpanAttributes) {\n return;\n }\n if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) {\n console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`);\n return;\n }\n const route = rootSpanAttributes.get('next.route');\n if (route) {\n const name = `${method} ${route}`;\n span.setAttributes({\n 'next.route': route,\n 'http.route': route,\n 'next.span_name': name\n });\n span.updateName(name);\n } else {\n span.updateName(`${method} ${srcPage}`);\n }\n });\n };\n const isMinimalMode = Boolean(process.env.MINIMAL_MODE || getRequestMeta(req, 'minimalMode'));\n const handleResponse = async (currentSpan)=>{\n var _cacheEntry_value;\n const responseGenerator = async ({ previousCacheEntry })=>{\n try {\n if (!isMinimalMode && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) {\n res.statusCode = 404;\n // on-demand revalidate always sets this header\n res.setHeader('x-nextjs-cache', 'REVALIDATED');\n res.end('This page could not be found');\n return null;\n }\n const response = await invokeRouteModule(currentSpan);\n req.fetchMetrics = context.renderOpts.fetchMetrics;\n let pendingWaitUntil = context.renderOpts.pendingWaitUntil;\n // Attempt using provided waitUntil if available\n // if it's not we fallback to sendResponse's handling\n if (pendingWaitUntil) {\n if (ctx.waitUntil) {\n ctx.waitUntil(pendingWaitUntil);\n pendingWaitUntil = undefined;\n }\n }\n const cacheTags = context.renderOpts.collectedTags;\n // If the request is for a static response, we can cache it so long\n // as it's not edge.\n if (isIsr) {\n const blob = await response.blob();\n // Copy the headers from the response.\n const headers = toNodeOutgoingHttpHeaders(response.headers);\n if (cacheTags) {\n headers[NEXT_CACHE_TAGS_HEADER] = cacheTags;\n }\n if (!headers['content-type'] && blob.type) {\n headers['content-type'] = blob.type;\n }\n const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate;\n const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire;\n // Create the cache entry for the response.\n const cacheEntry = {\n value: {\n kind: CachedRouteKind.APP_ROUTE,\n status: response.status,\n body: Buffer.from(await blob.arrayBuffer()),\n headers\n },\n cacheControl: {\n revalidate,\n expire\n }\n };\n return cacheEntry;\n } else {\n // send response without caching if not ISR\n await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil);\n return null;\n }\n } catch (err) {\n // if this is a background revalidate we need to report\n // the request error here as it won't be bubbled\n if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) {\n const silenceLog = false;\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: srcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate\n })\n }, silenceLog, routerServerContext);\n }\n throw err;\n }\n };\n const cacheEntry = await routeModule.handleResponse({\n req,\n nextConfig,\n cacheKey,\n routeKind: RouteKind.APP_ROUTE,\n isFallback: false,\n prerenderManifest,\n isRoutePPREnabled: false,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n responseGenerator,\n waitUntil: ctx.waitUntil,\n isMinimalMode\n });\n // we don't create a cacheEntry for ISR\n if (!isIsr) {\n return null;\n }\n if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) {\n var _cacheEntry_value1;\n throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), \"__NEXT_ERROR_CODE\", {\n value: \"E701\",\n enumerable: false,\n configurable: true\n });\n }\n if (!isMinimalMode) {\n res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT');\n }\n // Draft mode should never be cached\n if (isDraftMode) {\n res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate');\n }\n const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers);\n if (!(isMinimalMode && isIsr)) {\n headers.delete(NEXT_CACHE_TAGS_HEADER);\n }\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) {\n headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl));\n }\n await sendResponse(nodeNextReq, nodeNextRes, // @ts-expect-error - Argument of type 'Buffer<ArrayBufferLike>' is not assignable to parameter of type 'BodyInit | null | undefined'.\n new Response(cacheEntry.value.body, {\n headers,\n status: cacheEntry.value.status || 200\n }));\n return null;\n };\n // TODO: activeSpan code path is for when wrapped by\n // next-server can be removed when this is no longer used\n if (activeSpan) {\n await handleResponse(activeSpan);\n } else {\n await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, {\n spanName: `${method} ${srcPage}`,\n kind: SpanKind.SERVER,\n attributes: {\n 'http.method': method,\n 'http.target': req.url\n }\n }, handleResponse));\n }\n } catch (err) {\n if (!(err instanceof NoFallbackError)) {\n const silenceLog = false;\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: normalizedSrcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate\n })\n }, silenceLog, routerServerContext);\n }\n // rethrow so that we can handle serving error page\n // If this is during static generation, throw the error again.\n if (isIsr) throw err;\n // Otherwise, send a 500 response.\n await sendResponse(nodeNextReq, nodeNextRes, new Response(null, {\n status: 500\n }));\n return null;\n }\n}\n\n//# sourceMappingURL=app-route.js.map\n"],"names":[],"mappings":"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","ignoreList":[2]}
@@ -0,0 +1,11 @@
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"))},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"))},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"))},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";function t(e){let t=globalThis.__shepContainer;if(!t)throw Error("DI container not available. Ensure the CLI bootstrap or dev-server has initialized it.");return t.resolve(e)}e.s(["resolve",()=>t])},78886,e=>{"use strict";var t=e.i(22925),r=e.i(62995),a=e.i(14112),n=e.i(31716),o=e.i(16340),s=e.i(40522),i=e.i(21994),l=e.i(5802),d=e.i(17171),u=e.i(177),c=e.i(43685),p=e.i(84832),h=e.i(92435),x=e.i(41260),v=e.i(80556),R=e.i(93695);e.i(97230);var m=e.i(35162),f=e.i(40060);async function g(e,{params:t}){let{id:r}=await t,a=(0,f.resolve)("InstallToolUseCase"),n=new TextEncoder;return new Response(new ReadableStream({async start(e){try{let t=await a.execute(r,t=>{e.enqueue(n.encode(`data: ${t.replace(/\n/g,"\ndata: ")}
2
+
3
+ `))});e.enqueue(n.encode(`event: done
4
+ data: ${JSON.stringify(t)}
5
+
6
+ `))}catch(a){let t=a instanceof Error?a.message:"Installation failed";e.enqueue(n.encode(`event: done
7
+ data: ${JSON.stringify({status:"error",toolName:r,errorMessage:t})}
8
+
9
+ `))}finally{e.close()}}}),{headers:{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}})}e.s(["GET",()=>g,"dynamic",0,"force-dynamic"],70916);var w=e.i(70916);let E=new t.AppRouteRouteModule({definition:{kind:r.RouteKind.APP_ROUTE,page:"/api/tools/[id]/install/stream/route",pathname:"/api/tools/[id]/install/stream",filename:"route",bundlePath:""},distDir:".next",relativeProjectDir:"",resolvedPagePath:"[project]/src/presentation/web/app/api/tools/[id]/install/stream/route.ts",nextConfigOutput:"standalone",userland:w}),{workAsyncStorage:C,workUnitAsyncStorage:y,serverHooks:b}=E;function A(){return(0,a.patchFetch)({workAsyncStorage:C,workUnitAsyncStorage:y})}async function T(e,t,a){E.isDev&&(0,n.addRequestMeta)(e,"devRequestTimingInternalsEnd",process.hrtime.bigint());let f="/api/tools/[id]/install/stream/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:C,nextConfig:y,parsedUrl:b,isDraftMode:A,prerenderManifest:T,routerServerContext:N,isOnDemandRevalidate:O,revalidateOnlyGenerated:P,resolvedPathname:q,clientReferenceManifest:S,serverActionsManifest:_}=g,k=(0,i.normalizeAppPath)(f),I=!!(T.dynamicRoutes[k]||T.routes[q]),H=async()=>((null==N?void 0:N.render404)?await N.render404(e,t,b,!1):t.end("This page could not be found"),null);if(I&&!A){let e=!!T.routes[q],t=T.dynamicRoutes[k];if(t&&!1===t.fallback&&!e){if(y.experimental.adapterPath)return await H();throw new R.NoFallbackError}}let U=null;!I||E.isDev||A||(U="/index"===(U=q)?"/":U);let j=!0===E.isDev||!I,D=I&&!j;_&&S&&(0,s.setManifestsSingleton)({page:f,clientReferenceManifest:S,serverActionsManifest:_});let M=e.method||"GET",$=(0,o.getTracer)(),F=$.getActiveScopeSpan(),K={params:C,prerenderManifest:T,renderOpts:{experimental:{authInterrupts:!!y.experimental.authInterrupts},cacheComponents:!!y.cacheComponents,supportsDynamicResponse:j,incrementalCache:(0,n.getRequestMeta)(e,"incrementalCache"),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,N)},sharedContext:{buildId:w}},L=new l.NodeNextRequest(e),B=new l.NodeNextResponse(t),G=d.NextRequestAdapter.fromNodeNextRequest(L,(0,d.signalFromNodeResponse)(t));try{let s=async e=>E.handle(G,K).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)}else e.updateName(`${M} ${f}`)}),i=!!(0,n.getRequestMeta)(e,"minimalMode"),l=async n=>{var o,l;let d=async({previousCacheEntry:r})=>{try{if(!i&&O&&P&&!r)return t.statusCode=404,t.setHeader("x-nextjs-cache","REVALIDATED"),t.end("This page could not be found"),null;let o=await s(n);e.fetchMetrics=K.renderOpts.fetchMetrics;let l=K.renderOpts.pendingWaitUntil;l&&a.waitUntil&&(a.waitUntil(l),l=void 0);let d=K.renderOpts.collectedTags;if(!I)return await (0,p.sendResponse)(L,B,o,K.renderOpts.pendingWaitUntil),null;{let e=await o.blob(),t=(0,h.toNodeOutgoingHttpHeaders)(o.headers);d&&(t[v.NEXT_CACHE_TAGS_HEADER]=d),!t["content-type"]&&e.type&&(t["content-type"]=e.type);let r=void 0!==K.renderOpts.collectedRevalidate&&!(K.renderOpts.collectedRevalidate>=v.INFINITE_CACHE)&&K.renderOpts.collectedRevalidate,a=void 0===K.renderOpts.collectedExpire||K.renderOpts.collectedExpire>=v.INFINITE_CACHE?void 0:K.renderOpts.collectedExpire;return{value:{kind:m.CachedRouteKind.APP_ROUTE,status:o.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,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:O})},!1,N),t}},u=await E.handleResponse({req:e,nextConfig:y,cacheKey:U,routeKind:r.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:T,isRoutePPREnabled:!1,isOnDemandRevalidate:O,revalidateOnlyGenerated:P,responseGenerator:d,waitUntil:a.waitUntil,isMinimalMode:i});if(!I)return null;if((null==u||null==(o=u.value)?void 0:o.kind)!==m.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==u||null==(l=u.value)?void 0:l.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});i||t.setHeader("x-nextjs-cache",O?"REVALIDATED":u.isMiss?"MISS":u.isStale?"STALE":"HIT"),A&&t.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let R=(0,h.fromNodeOutgoingHttpHeaders)(u.value.headers);return i&&I||R.delete(v.NEXT_CACHE_TAGS_HEADER),!u.cacheControl||t.getHeader("Cache-Control")||R.get("Cache-Control")||R.set("Cache-Control",(0,x.getCacheControlHeader)(u.cacheControl)),await (0,p.sendResponse)(L,B,new Response(u.value.body,{headers:R,status:u.value.status||200})),null};F?await l(F):await $.withPropagatedContext(e.headers,()=>$.trace(u.BaseServerSpan.handleRequest,{spanName:`${M} ${f}`,kind:o.SpanKind.SERVER,attributes:{"http.method":M,"http.target":e.url}},l))}catch(t){if(t instanceof R.NoFallbackError||await E.onRequestError(e,t,{routerKind:"App Router",routePath:k,routeType:"route",revalidateReason:(0,c.getRevalidateReason)({isStaticGeneration:D,isOnDemandRevalidate:O})},!1,N),I)throw t;return await (0,p.sendResponse)(L,B,new Response(null,{status:500})),null}}e.s(["handler",()=>T,"patchFetch",()=>A,"routeModule",()=>E,"serverHooks",()=>b,"workAsyncStorage",()=>C,"workUnitAsyncStorage",()=>y],78886)}];
10
+
11
+ //# sourceMappingURL=%5Broot-of-the-server%5D__e247a485._.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../src/presentation/web/lib/server-container.ts","../../../../../../src/presentation/web/app/api/tools/%5Bid%5D/install/stream/route.ts","../../../../../../node_modules/.pnpm/next%4016.1.6_%40babel%2Bcore%407.29.0_%40playwright%2Btest%401.58.1_react-dom%4019.2.4_react%4019.2.4__react%4019.2.4/node_modules/next/dist/esm/build/templates/app-route.js"],"sourcesContent":["/**\n * Server Container Accessor\n *\n * Provides a `resolve()` helper for server components and API routes to\n * obtain DI-managed instances. The tsyringe container is placed on globalThis\n * by the CLI bootstrap (`shep ui`) or the dev-server (`pnpm dev:web`).\n */\n\nimport type { DependencyContainer, InjectionToken } from 'tsyringe';\n\nconst CONTAINER_KEY = '__shepContainer';\n\n/**\n * Resolve a dependency from the DI container.\n *\n * Usage in server components / API routes:\n * ```ts\n * import { resolve } from '@/lib/server-container';\n * import { ListFeaturesUseCase } from '@shepai/core/application/use-cases/features/list-features.use-case';\n *\n * const features = await resolve(ListFeaturesUseCase).execute();\n * ```\n */\nexport function resolve<T>(token: InjectionToken<T>): T {\n const container = (globalThis as Record<string, unknown>)[CONTAINER_KEY] as\n | DependencyContainer\n | undefined;\n\n if (!container) {\n throw new Error(\n 'DI container not available. Ensure the CLI bootstrap or dev-server has initialized it.'\n );\n }\n\n return container.resolve(token);\n}\n","import { resolve } from '@/lib/server-container';\nimport type { InstallToolUseCase } from '@shepai/core/application/use-cases/tools/install-tool.use-case';\n\n// Force dynamic — SSE streams must never be statically optimized or cached\nexport const dynamic = 'force-dynamic';\n\nexport async function GET(\n _request: Request,\n { params }: { params: Promise<{ id: string }> }\n): Promise<Response> {\n const { id } = await params;\n const useCase = resolve<InstallToolUseCase>('InstallToolUseCase');\n\n const encoder = new TextEncoder();\n const stream = new ReadableStream({\n async start(controller) {\n try {\n const status = await useCase.execute(id, (chunk: string) => {\n controller.enqueue(encoder.encode(`data: ${chunk.replace(/\\n/g, '\\ndata: ')}\\n\\n`));\n });\n controller.enqueue(encoder.encode(`event: done\\ndata: ${JSON.stringify(status)}\\n\\n`));\n } catch (error) {\n const message = error instanceof Error ? error.message : 'Installation failed';\n controller.enqueue(\n encoder.encode(\n `event: done\\ndata: ${JSON.stringify({ status: 'error', toolName: id, errorMessage: message })}\\n\\n`\n )\n );\n } finally {\n controller.close();\n }\n },\n });\n\n return new Response(stream, {\n headers: {\n 'Content-Type': 'text/event-stream',\n 'Cache-Control': 'no-cache',\n Connection: 'keep-alive',\n },\n });\n}\n","import { AppRouteRouteModule } from \"next/dist/esm/server/route-modules/app-route/module.compiled\";\nimport { RouteKind } from \"next/dist/esm/server/route-kind\";\nimport { patchFetch as _patchFetch } from \"next/dist/esm/server/lib/patch-fetch\";\nimport { addRequestMeta, getRequestMeta } from \"next/dist/esm/server/request-meta\";\nimport { getTracer, SpanKind } from \"next/dist/esm/server/lib/trace/tracer\";\nimport { setManifestsSingleton } from \"next/dist/esm/server/app-render/manifests-singleton\";\nimport { normalizeAppPath } from \"next/dist/esm/shared/lib/router/utils/app-paths\";\nimport { NodeNextRequest, NodeNextResponse } from \"next/dist/esm/server/base-http/node\";\nimport { NextRequestAdapter, signalFromNodeResponse } from \"next/dist/esm/server/web/spec-extension/adapters/next-request\";\nimport { BaseServerSpan } from \"next/dist/esm/server/lib/trace/constants\";\nimport { getRevalidateReason } from \"next/dist/esm/server/instrumentation/utils\";\nimport { sendResponse } from \"next/dist/esm/server/send-response\";\nimport { fromNodeOutgoingHttpHeaders, toNodeOutgoingHttpHeaders } from \"next/dist/esm/server/web/utils\";\nimport { getCacheControlHeader } from \"next/dist/esm/server/lib/cache-control\";\nimport { INFINITE_CACHE, NEXT_CACHE_TAGS_HEADER } from \"next/dist/esm/lib/constants\";\nimport { NoFallbackError } from \"next/dist/esm/shared/lib/no-fallback-error.external\";\nimport { CachedRouteKind } from \"next/dist/esm/server/response-cache\";\nimport * as userland from \"INNER_APP_ROUTE\";\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\nconst nextConfigOutput = \"standalone\"\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: \"/api/tools/[id]/install/stream/route\",\n pathname: \"/api/tools/[id]/install/stream\",\n filename: \"route\",\n bundlePath: \"\"\n },\n distDir: process.env.__NEXT_RELATIVE_DIST_DIR || '',\n relativeProjectDir: process.env.__NEXT_RELATIVE_PROJECT_DIR || '',\n resolvedPagePath: \"[project]/src/presentation/web/app/api/tools/[id]/install/stream/route.ts\",\n nextConfigOutput,\n userland\n});\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule;\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage\n });\n}\nexport { routeModule, workAsyncStorage, workUnitAsyncStorage, serverHooks, patchFetch, };\nexport async function handler(req, res, ctx) {\n if (routeModule.isDev) {\n addRequestMeta(req, 'devRequestTimingInternalsEnd', process.hrtime.bigint());\n }\n let srcPage = \"/api/tools/[id]/install/stream/route\";\n // turbopack doesn't normalize `/index` in the page name\n // so we need to to process dynamic routes properly\n // TODO: fix turbopack providing differing value from webpack\n if (process.env.TURBOPACK) {\n srcPage = srcPage.replace(/\\/index$/, '') || '/';\n } else if (srcPage === '/index') {\n // we always normalize /index specifically\n srcPage = '/';\n }\n const multiZoneDraftMode = process.env.__NEXT_MULTI_ZONE_DRAFT_MODE;\n const prepareResult = await routeModule.prepare(req, res, {\n srcPage,\n multiZoneDraftMode\n });\n if (!prepareResult) {\n res.statusCode = 400;\n res.end('Bad Request');\n ctx.waitUntil == null ? void 0 : ctx.waitUntil.call(ctx, Promise.resolve());\n return null;\n }\n const { buildId, params, nextConfig, parsedUrl, isDraftMode, prerenderManifest, routerServerContext, isOnDemandRevalidate, revalidateOnlyGenerated, resolvedPathname, clientReferenceManifest, serverActionsManifest } = prepareResult;\n const normalizedSrcPage = normalizeAppPath(srcPage);\n let isIsr = Boolean(prerenderManifest.dynamicRoutes[normalizedSrcPage] || prerenderManifest.routes[resolvedPathname]);\n const render404 = async ()=>{\n // TODO: should route-module itself handle rendering the 404\n if (routerServerContext == null ? void 0 : routerServerContext.render404) {\n await routerServerContext.render404(req, res, parsedUrl, false);\n } else {\n res.end('This page could not be found');\n }\n return null;\n };\n if (isIsr && !isDraftMode) {\n const isPrerendered = Boolean(prerenderManifest.routes[resolvedPathname]);\n const prerenderInfo = prerenderManifest.dynamicRoutes[normalizedSrcPage];\n if (prerenderInfo) {\n if (prerenderInfo.fallback === false && !isPrerendered) {\n if (nextConfig.experimental.adapterPath) {\n return await render404();\n }\n throw new NoFallbackError();\n }\n }\n }\n let cacheKey = null;\n if (isIsr && !routeModule.isDev && !isDraftMode) {\n cacheKey = resolvedPathname;\n // ensure /index and / is normalized to one key\n cacheKey = cacheKey === '/index' ? '/' : cacheKey;\n }\n const supportsDynamicResponse = // If we're in development, we always support dynamic HTML\n routeModule.isDev === true || // If this is not SSG or does not have static paths, then it supports\n // dynamic HTML.\n !isIsr;\n // This is a revalidation request if the request is for a static\n // page and it is not being resumed from a postponed render and\n // it is not a dynamic RSC request then it is a revalidation\n // request.\n const isStaticGeneration = isIsr && !supportsDynamicResponse;\n // Before rendering (which initializes component tree modules), we have to\n // set the reference manifests to our global store so Server Action's\n // encryption util can access to them at the top level of the page module.\n if (serverActionsManifest && clientReferenceManifest) {\n setManifestsSingleton({\n page: srcPage,\n clientReferenceManifest,\n serverActionsManifest\n });\n }\n const method = req.method || 'GET';\n const tracer = getTracer();\n const activeSpan = tracer.getActiveScopeSpan();\n const context = {\n params,\n prerenderManifest,\n renderOpts: {\n experimental: {\n authInterrupts: Boolean(nextConfig.experimental.authInterrupts)\n },\n cacheComponents: Boolean(nextConfig.cacheComponents),\n supportsDynamicResponse,\n incrementalCache: getRequestMeta(req, 'incrementalCache'),\n cacheLifeProfiles: nextConfig.cacheLife,\n waitUntil: ctx.waitUntil,\n onClose: (cb)=>{\n res.on('close', cb);\n },\n onAfterTaskError: undefined,\n onInstrumentationRequestError: (error, _request, errorContext, silenceLog)=>routeModule.onRequestError(req, error, errorContext, silenceLog, routerServerContext)\n },\n sharedContext: {\n buildId\n }\n };\n const nodeNextReq = new NodeNextRequest(req);\n const nodeNextRes = new NodeNextResponse(res);\n const nextReq = NextRequestAdapter.fromNodeNextRequest(nodeNextReq, signalFromNodeResponse(res));\n try {\n const invokeRouteModule = async (span)=>{\n return routeModule.handle(nextReq, context).finally(()=>{\n if (!span) return;\n span.setAttributes({\n 'http.status_code': res.statusCode,\n 'next.rsc': false\n });\n const rootSpanAttributes = tracer.getRootSpanAttributes();\n // We were unable to get attributes, probably OTEL is not enabled\n if (!rootSpanAttributes) {\n return;\n }\n if (rootSpanAttributes.get('next.span_type') !== BaseServerSpan.handleRequest) {\n console.warn(`Unexpected root span type '${rootSpanAttributes.get('next.span_type')}'. Please report this Next.js issue https://github.com/vercel/next.js`);\n return;\n }\n const route = rootSpanAttributes.get('next.route');\n if (route) {\n const name = `${method} ${route}`;\n span.setAttributes({\n 'next.route': route,\n 'http.route': route,\n 'next.span_name': name\n });\n span.updateName(name);\n } else {\n span.updateName(`${method} ${srcPage}`);\n }\n });\n };\n const isMinimalMode = Boolean(process.env.MINIMAL_MODE || getRequestMeta(req, 'minimalMode'));\n const handleResponse = async (currentSpan)=>{\n var _cacheEntry_value;\n const responseGenerator = async ({ previousCacheEntry })=>{\n try {\n if (!isMinimalMode && isOnDemandRevalidate && revalidateOnlyGenerated && !previousCacheEntry) {\n res.statusCode = 404;\n // on-demand revalidate always sets this header\n res.setHeader('x-nextjs-cache', 'REVALIDATED');\n res.end('This page could not be found');\n return null;\n }\n const response = await invokeRouteModule(currentSpan);\n req.fetchMetrics = context.renderOpts.fetchMetrics;\n let pendingWaitUntil = context.renderOpts.pendingWaitUntil;\n // Attempt using provided waitUntil if available\n // if it's not we fallback to sendResponse's handling\n if (pendingWaitUntil) {\n if (ctx.waitUntil) {\n ctx.waitUntil(pendingWaitUntil);\n pendingWaitUntil = undefined;\n }\n }\n const cacheTags = context.renderOpts.collectedTags;\n // If the request is for a static response, we can cache it so long\n // as it's not edge.\n if (isIsr) {\n const blob = await response.blob();\n // Copy the headers from the response.\n const headers = toNodeOutgoingHttpHeaders(response.headers);\n if (cacheTags) {\n headers[NEXT_CACHE_TAGS_HEADER] = cacheTags;\n }\n if (!headers['content-type'] && blob.type) {\n headers['content-type'] = blob.type;\n }\n const revalidate = typeof context.renderOpts.collectedRevalidate === 'undefined' || context.renderOpts.collectedRevalidate >= INFINITE_CACHE ? false : context.renderOpts.collectedRevalidate;\n const expire = typeof context.renderOpts.collectedExpire === 'undefined' || context.renderOpts.collectedExpire >= INFINITE_CACHE ? undefined : context.renderOpts.collectedExpire;\n // Create the cache entry for the response.\n const cacheEntry = {\n value: {\n kind: CachedRouteKind.APP_ROUTE,\n status: response.status,\n body: Buffer.from(await blob.arrayBuffer()),\n headers\n },\n cacheControl: {\n revalidate,\n expire\n }\n };\n return cacheEntry;\n } else {\n // send response without caching if not ISR\n await sendResponse(nodeNextReq, nodeNextRes, response, context.renderOpts.pendingWaitUntil);\n return null;\n }\n } catch (err) {\n // if this is a background revalidate we need to report\n // the request error here as it won't be bubbled\n if (previousCacheEntry == null ? void 0 : previousCacheEntry.isStale) {\n const silenceLog = false;\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: srcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate\n })\n }, silenceLog, routerServerContext);\n }\n throw err;\n }\n };\n const cacheEntry = await routeModule.handleResponse({\n req,\n nextConfig,\n cacheKey,\n routeKind: RouteKind.APP_ROUTE,\n isFallback: false,\n prerenderManifest,\n isRoutePPREnabled: false,\n isOnDemandRevalidate,\n revalidateOnlyGenerated,\n responseGenerator,\n waitUntil: ctx.waitUntil,\n isMinimalMode\n });\n // we don't create a cacheEntry for ISR\n if (!isIsr) {\n return null;\n }\n if ((cacheEntry == null ? void 0 : (_cacheEntry_value = cacheEntry.value) == null ? void 0 : _cacheEntry_value.kind) !== CachedRouteKind.APP_ROUTE) {\n var _cacheEntry_value1;\n throw Object.defineProperty(new Error(`Invariant: app-route received invalid cache entry ${cacheEntry == null ? void 0 : (_cacheEntry_value1 = cacheEntry.value) == null ? void 0 : _cacheEntry_value1.kind}`), \"__NEXT_ERROR_CODE\", {\n value: \"E701\",\n enumerable: false,\n configurable: true\n });\n }\n if (!isMinimalMode) {\n res.setHeader('x-nextjs-cache', isOnDemandRevalidate ? 'REVALIDATED' : cacheEntry.isMiss ? 'MISS' : cacheEntry.isStale ? 'STALE' : 'HIT');\n }\n // Draft mode should never be cached\n if (isDraftMode) {\n res.setHeader('Cache-Control', 'private, no-cache, no-store, max-age=0, must-revalidate');\n }\n const headers = fromNodeOutgoingHttpHeaders(cacheEntry.value.headers);\n if (!(isMinimalMode && isIsr)) {\n headers.delete(NEXT_CACHE_TAGS_HEADER);\n }\n // If cache control is already set on the response we don't\n // override it to allow users to customize it via next.config\n if (cacheEntry.cacheControl && !res.getHeader('Cache-Control') && !headers.get('Cache-Control')) {\n headers.set('Cache-Control', getCacheControlHeader(cacheEntry.cacheControl));\n }\n await sendResponse(nodeNextReq, nodeNextRes, // @ts-expect-error - Argument of type 'Buffer<ArrayBufferLike>' is not assignable to parameter of type 'BodyInit | null | undefined'.\n new Response(cacheEntry.value.body, {\n headers,\n status: cacheEntry.value.status || 200\n }));\n return null;\n };\n // TODO: activeSpan code path is for when wrapped by\n // next-server can be removed when this is no longer used\n if (activeSpan) {\n await handleResponse(activeSpan);\n } else {\n await tracer.withPropagatedContext(req.headers, ()=>tracer.trace(BaseServerSpan.handleRequest, {\n spanName: `${method} ${srcPage}`,\n kind: SpanKind.SERVER,\n attributes: {\n 'http.method': method,\n 'http.target': req.url\n }\n }, handleResponse));\n }\n } catch (err) {\n if (!(err instanceof NoFallbackError)) {\n const silenceLog = false;\n await routeModule.onRequestError(req, err, {\n routerKind: 'App Router',\n routePath: normalizedSrcPage,\n routeType: 'route',\n revalidateReason: getRevalidateReason({\n isStaticGeneration,\n isOnDemandRevalidate\n })\n }, silenceLog, routerServerContext);\n }\n // rethrow so that we can handle serving error page\n // If this is during static generation, throw the error again.\n if (isIsr) throw err;\n // Otherwise, send a 500 response.\n await sendResponse(nodeNextReq, nodeNextRes, new Response(null, {\n status: 500\n }));\n return null;\n }\n}\n\n//# sourceMappingURL=app-route.js.map\n"],"names":[],"mappings":"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","ignoreList":[2]}
@@ -0,0 +1,3 @@
1
+ module.exports=[49641,s=>{"use strict";s.s([])}];
2
+
3
+ //# sourceMappingURL=f3a1f__next-internal_server_app_api_tools_%5Bid%5D_install_stream_route_actions_1fe5bd5d.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[93995,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(69845),e=a.i(52313),f=a.i(25674);let g=(0,f.createServerReference)("40dc2819f0410c1864b5e8240beda7a7e0bbded84a",f.callServer,void 0,f.findSourceMapURL,"createFeature");var h=a.i(87148),h=h,i=a.i(25700);let j=(0,i.default)("file",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}]]);var k=a.i(42642),k=k;let l=(0,i.default)("image",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]),m=(0,i.default)("code",[["path",{d:"m16 18 6-6-6-6",key:"eg8j8"}],["path",{d:"m8 6-6 6 6 6",key:"ppft3o"}]]);var n=a.i(26915),n=n;let o=(0,i.default)("chevrons-up-down",[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]]);var p=a.i(51969),p=p,q=a.i(85536),r=a.i(19884);a.i(78454);var s=a.i(24255),t=a.i(2824),u=a.i(18948),v=a.i(90920);function w({className:a,...c}){return(0,b.jsx)("textarea",{"data-slot":"textarea",className:(0,q.cn)("placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input field-sizing-content min-h-[80px] w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",a),...c})}var x=a.i(66873),y=c.forwardRef((a,c)=>(0,b.jsx)(x.Primitive.label,{...a,ref:c,onMouseDown:b=>{b.target.closest("button, input, select, textarea")||(a.onMouseDown?.(b),!b.defaultPrevented&&b.detail>1&&b.preventDefault())}}));y.displayName="Label",a.s(["Label",()=>y,"Root",()=>y],59967);var z=a.i(59967),z=z;let A=(0,a.i(42261).cva)("text-sm leading-none font-medium peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),B=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(z.Root,{ref:d,className:(0,q.cn)(A(),a),...c}));B.displayName=z.Root.displayName;var p=p;let C=(0,i.default)("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);var D=a.i(6175),E=a.i(7420),F=a.i(59653),G=a.i(17329),H=a.i(74432),I=a.i(14272),J="Checkbox",[K,L]=(0,E.createContextScope)(J),[M,N]=K(J);function O(a){let{__scopeCheckbox:d,checked:e,children:f,defaultChecked:g,disabled:h,form:i,name:j,onCheckedChange:k,required:l,value:m="on",internal_do_not_use_render:n}=a,[o,p]=(0,G.useControllableState)({prop:e,defaultProp:g??!1,onChange:k,caller:J}),[q,r]=c.useState(null),[s,t]=c.useState(null),u=c.useRef(!1),v=!q||!!i||!!q.closest("form"),w={checked:o,disabled:h,setChecked:p,control:q,setControl:r,name:j,form:i,value:m,hasConsumerStoppedPropagationRef:u,required:l,defaultChecked:!W(g)&&g,isFormControl:v,bubbleInput:s,setBubbleInput:t};return(0,b.jsx)(M,{scope:d,...w,children:"function"==typeof n?n(w):f})}var P="CheckboxTrigger",Q=c.forwardRef(({__scopeCheckbox:a,onKeyDown:d,onClick:e,...f},g)=>{let{control:h,value:i,disabled:j,checked:k,required:l,setControl:m,setChecked:n,hasConsumerStoppedPropagationRef:o,isFormControl:p,bubbleInput:q}=N(P,a),r=(0,D.useComposedRefs)(g,m),s=c.useRef(k);return c.useEffect(()=>{let a=h?.form;if(a){let b=()=>n(s.current);return a.addEventListener("reset",b),()=>a.removeEventListener("reset",b)}},[h,n]),(0,b.jsx)(x.Primitive.button,{type:"button",role:"checkbox","aria-checked":W(k)?"mixed":k,"aria-required":l,"data-state":X(k),"data-disabled":j?"":void 0,disabled:j,value:i,...f,ref:r,onKeyDown:(0,F.composeEventHandlers)(d,a=>{"Enter"===a.key&&a.preventDefault()}),onClick:(0,F.composeEventHandlers)(e,a=>{n(a=>!!W(a)||!a),q&&p&&(o.current=a.isPropagationStopped(),o.current||a.stopPropagation())})})});Q.displayName=P;var R=c.forwardRef((a,c)=>{let{__scopeCheckbox:d,name:e,checked:f,defaultChecked:g,required:h,disabled:i,value:j,onCheckedChange:k,form:l,...m}=a;return(0,b.jsx)(O,{__scopeCheckbox:d,checked:f,defaultChecked:g,disabled:i,required:h,onCheckedChange:k,name:e,form:l,value:j,internal_do_not_use_render:({isFormControl:a})=>(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(Q,{...m,ref:c,__scopeCheckbox:d}),a&&(0,b.jsx)(V,{__scopeCheckbox:d})]})})});R.displayName=J;var S="CheckboxIndicator",T=c.forwardRef((a,c)=>{let{__scopeCheckbox:d,forceMount:e,...f}=a,g=N(S,d);return(0,b.jsx)(I.Presence,{present:e||W(g.checked)||!0===g.checked,children:(0,b.jsx)(x.Primitive.span,{"data-state":X(g.checked),"data-disabled":g.disabled?"":void 0,...f,ref:c,style:{pointerEvents:"none",...a.style}})})});T.displayName=S;var U="CheckboxBubbleInput",V=c.forwardRef(({__scopeCheckbox:a,...d},e)=>{let f,{control:g,hasConsumerStoppedPropagationRef:h,checked:i,defaultChecked:j,required:k,disabled:l,name:m,value:n,form:o,bubbleInput:p,setBubbleInput:q}=N(U,a),r=(0,D.useComposedRefs)(e,q),s=(f=c.useRef({value:i,previous:i}),c.useMemo(()=>(f.current.value!==i&&(f.current.previous=f.current.value,f.current.value=i),f.current.previous),[i])),t=(0,H.useSize)(g);c.useEffect(()=>{if(!p)return;let a=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,b=!h.current;if(s!==i&&a){let c=new Event("click",{bubbles:b});p.indeterminate=W(i),a.call(p,!W(i)&&i),p.dispatchEvent(c)}},[p,s,i,h]);let u=c.useRef(!W(i)&&i);return(0,b.jsx)(x.Primitive.input,{type:"checkbox","aria-hidden":!0,defaultChecked:j??u.current,required:k,disabled:l,name:m,value:n,form:o,...d,tabIndex:-1,ref:r,style:{...d.style,...t,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function W(a){return"indeterminate"===a}function X(a){return W(a)?"indeterminate":a?"checked":"unchecked"}V.displayName=U,a.s(["Checkbox",()=>R,"CheckboxIndicator",()=>T,"Indicator",()=>T,"Root",()=>R,"createCheckboxScope",()=>L,"unstable_BubbleInput",()=>V,"unstable_CheckboxBubbleInput",()=>V,"unstable_CheckboxProvider",()=>O,"unstable_CheckboxTrigger",()=>Q,"unstable_Provider",()=>O,"unstable_Trigger",()=>Q],27835);var Y=a.i(27835),Y=Y;function Z({className:a,...c}){return(0,b.jsx)(Y.Root,{"data-slot":"checkbox",className:(0,q.cn)("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground data-[state=indeterminate]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 cursor-pointer rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",a),...c,children:(0,b.jsx)(Y.Indicator,{"data-slot":"checkbox-indicator",className:"grid place-content-center text-current transition-none",children:"indeterminate"===c.checked?(0,b.jsx)(C,{className:"size-3.5"}):(0,b.jsx)(p.default,{className:"size-3.5"})})})}function $({id:a,label:c,description:d,checked:e,onCheckedChange:f,disabled:g}){return(0,b.jsxs)("div",{className:"flex items-start gap-2",children:[(0,b.jsx)(Z,{id:a,className:"mt-0.75",checked:e,onCheckedChange:a=>f(!0===a),disabled:g}),(0,b.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,b.jsx)(B,{htmlFor:a,className:"cursor-pointer text-sm font-medium",children:c}),d?(0,b.jsx)(B,{htmlFor:a,className:"text-muted-foreground cursor-pointer text-xs font-normal",children:d}):null]})]})}function _({label:a,description:c,parentAriaLabel:d,options:e,value:f,onValueChange:g,disabled:h}){let i=e.filter(a=>f[a.id]).length,j=i===e.length,k=i>0&&!j,l=`${a.toLowerCase().replace(/\s+/g,"-")}-group`;return(0,b.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,b.jsxs)("div",{className:"flex items-start gap-2",children:[(0,b.jsx)(Z,{id:l,className:"mt-0.75",checked:k?"indeterminate":j,onCheckedChange:()=>{let a=i<e.length,b={};for(let c of e)b[c.id]=a;g(b)},disabled:h,"aria-label":d??`${a} select all`}),(0,b.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,b.jsx)(B,{htmlFor:l,className:"cursor-pointer text-sm font-medium",children:a}),c?(0,b.jsx)(B,{htmlFor:l,className:"text-muted-foreground cursor-pointer text-xs font-normal",children:c}):null]})]}),(0,b.jsx)("div",{className:"flex flex-col gap-3 pl-6",children:e.map(a=>(0,b.jsx)($,{id:a.id,label:a.label,description:a.description,checked:f[a.id]??!1,onCheckedChange:b=>{var c;return c=a.id,void g({...f,[c]:b})},disabled:h},a.id))})]})}var aa=a.i(58339),ab=a.i(58761),ac=a.i(51473),ad=a.i(59675),ae=a.i(5472),af=a.i(75988),ag=a.i(80930),ah=a.i(90986),ai=a.i(16164),aj=a.i(45291),ak="Popover",[al,am]=(0,E.createContextScope)(ak,[af.createPopperScope]),an=(0,af.createPopperScope)(),[ao,ap]=al(ak),aq=a=>{let{__scopePopover:d,children:e,open:f,defaultOpen:g,onOpenChange:h,modal:i=!1}=a,j=an(d),k=c.useRef(null),[l,m]=c.useState(!1),[n,o]=(0,G.useControllableState)({prop:f,defaultProp:g??!1,onChange:h,caller:ak});return(0,b.jsx)(af.Root,{...j,children:(0,b.jsx)(ao,{scope:d,contentId:(0,ae.useId)(),triggerRef:k,open:n,onOpenChange:o,onOpenToggle:c.useCallback(()=>o(a=>!a),[o]),hasCustomAnchor:l,onCustomAnchorAdd:c.useCallback(()=>m(!0),[]),onCustomAnchorRemove:c.useCallback(()=>m(!1),[]),modal:i,children:e})})};aq.displayName=ak;var ar="PopoverAnchor",as=c.forwardRef((a,d)=>{let{__scopePopover:e,...f}=a,g=ap(ar,e),h=an(e),{onCustomAnchorAdd:i,onCustomAnchorRemove:j}=g;return c.useEffect(()=>(i(),()=>j()),[i,j]),(0,b.jsx)(af.Anchor,{...h,...f,ref:d})});as.displayName=ar;var at="PopoverTrigger",au=c.forwardRef((a,c)=>{let{__scopePopover:d,...e}=a,f=ap(at,d),g=an(d),h=(0,D.useComposedRefs)(c,f.triggerRef),i=(0,b.jsx)(x.Primitive.button,{type:"button","aria-haspopup":"dialog","aria-expanded":f.open,"aria-controls":f.contentId,"data-state":aI(f.open),...e,ref:h,onClick:(0,F.composeEventHandlers)(a.onClick,f.onOpenToggle)});return f.hasCustomAnchor?i:(0,b.jsx)(af.Anchor,{asChild:!0,...g,children:i})});au.displayName=at;var av="PopoverPortal",[aw,ax]=al(av,{forceMount:void 0}),ay=a=>{let{__scopePopover:c,forceMount:d,children:e,container:f}=a,g=ap(av,c);return(0,b.jsx)(aw,{scope:c,forceMount:d,children:(0,b.jsx)(I.Presence,{present:d||g.open,children:(0,b.jsx)(ag.Portal,{asChild:!0,container:f,children:e})})})};ay.displayName=av;var az="PopoverContent",aA=c.forwardRef((a,c)=>{let d=ax(az,a.__scopePopover),{forceMount:e=d.forceMount,...f}=a,g=ap(az,a.__scopePopover);return(0,b.jsx)(I.Presence,{present:e||g.open,children:g.modal?(0,b.jsx)(aC,{...f,ref:c}):(0,b.jsx)(aD,{...f,ref:c})})});aA.displayName=az;var aB=(0,ah.createSlot)("PopoverContent.RemoveScroll"),aC=c.forwardRef((a,d)=>{let e=ap(az,a.__scopePopover),f=c.useRef(null),g=(0,D.useComposedRefs)(d,f),h=c.useRef(!1);return c.useEffect(()=>{let a=f.current;if(a)return(0,ai.hideOthers)(a)},[]),(0,b.jsx)(aj.RemoveScroll,{as:aB,allowPinchZoom:!0,children:(0,b.jsx)(aE,{...a,ref:g,trapFocus:e.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,F.composeEventHandlers)(a.onCloseAutoFocus,a=>{a.preventDefault(),h.current||e.triggerRef.current?.focus()}),onPointerDownOutside:(0,F.composeEventHandlers)(a.onPointerDownOutside,a=>{let b=a.detail.originalEvent,c=0===b.button&&!0===b.ctrlKey;h.current=2===b.button||c},{checkForDefaultPrevented:!1}),onFocusOutside:(0,F.composeEventHandlers)(a.onFocusOutside,a=>a.preventDefault(),{checkForDefaultPrevented:!1})})})}),aD=c.forwardRef((a,d)=>{let e=ap(az,a.__scopePopover),f=c.useRef(!1),g=c.useRef(!1);return(0,b.jsx)(aE,{...a,ref:d,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:b=>{a.onCloseAutoFocus?.(b),b.defaultPrevented||(f.current||e.triggerRef.current?.focus(),b.preventDefault()),f.current=!1,g.current=!1},onInteractOutside:b=>{a.onInteractOutside?.(b),b.defaultPrevented||(f.current=!0,"pointerdown"===b.detail.originalEvent.type&&(g.current=!0));let c=b.target;e.triggerRef.current?.contains(c)&&b.preventDefault(),"focusin"===b.detail.originalEvent.type&&g.current&&b.preventDefault()}})}),aE=c.forwardRef((a,c)=>{let{__scopePopover:d,trapFocus:e,onOpenAutoFocus:f,onCloseAutoFocus:g,disableOutsidePointerEvents:h,onEscapeKeyDown:i,onPointerDownOutside:j,onFocusOutside:k,onInteractOutside:l,...m}=a,n=ap(az,d),o=an(d);return(0,ac.useFocusGuards)(),(0,b.jsx)(ad.FocusScope,{asChild:!0,loop:!0,trapped:e,onMountAutoFocus:f,onUnmountAutoFocus:g,children:(0,b.jsx)(ab.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:h,onInteractOutside:l,onEscapeKeyDown:i,onPointerDownOutside:j,onFocusOutside:k,onDismiss:()=>n.onOpenChange(!1),children:(0,b.jsx)(af.Content,{"data-state":aI(n.open),role:"dialog",id:n.contentId,...o,...m,ref:c,style:{...m.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),aF="PopoverClose",aG=c.forwardRef((a,c)=>{let{__scopePopover:d,...e}=a,f=ap(aF,d);return(0,b.jsx)(x.Primitive.button,{type:"button",...e,ref:c,onClick:(0,F.composeEventHandlers)(a.onClick,()=>f.onOpenChange(!1))})});aG.displayName=aF;var aH=c.forwardRef((a,c)=>{let{__scopePopover:d,...e}=a,f=an(d);return(0,b.jsx)(af.Arrow,{...f,...e,ref:c})});function aI(a){return a?"open":"closed"}aH.displayName="PopoverArrow",a.s(["Anchor",()=>as,"Arrow",()=>aH,"Close",()=>aG,"Content",()=>aA,"Popover",()=>aq,"PopoverAnchor",()=>as,"PopoverArrow",()=>aH,"PopoverClose",()=>aG,"PopoverContent",()=>aA,"PopoverPortal",()=>ay,"PopoverTrigger",()=>au,"Portal",()=>ay,"Root",()=>aq,"Trigger",()=>au,"createPopoverScope",()=>am],61452);var aJ=a.i(61452),aJ=aJ;let aK=aJ.Root,aL=aJ.Trigger;aJ.Anchor;let aM=c.forwardRef(({className:a,align:c="center",sideOffset:d=4,...e},f)=>(0,b.jsx)(aJ.Portal,{children:(0,b.jsx)(aJ.Content,{ref:f,align:c,sideOffset:d,className:(0,q.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 shadow-md outline-none",a),...e})}));aM.displayName=aJ.Content.displayName;var aN=a.i(96213);async function aO(){let a=await fetch("/api/dialog/pick-files",{method:"POST"});if(!a.ok)throw Error("Failed to open file dialog");let b=await a.json();return b.cancelled?null:b.files}let aP=[{id:"allowPrd",label:"PRD",description:"Auto-approve requirements move to planning."},{id:"allowPlan",label:"Plan",description:"Auto-approve planning move to implementation."},{id:"allowMerge",label:"Merge",description:"Auto-approve merge move to Done."}],aQ={allowPrd:!1,allowPlan:!1,allowMerge:!1};function aR({open:a,onClose:d,onSubmit:e,repositoryPath:f,isSubmitting:g=!1,workflowDefaults:i,features:j,initialParentId:k}){let l=(0,r.useSoundAction)("create"),m=i?.approvalGates??aQ,n=i?.push??!1,o=i?.openPr??!1,[p,q]=(0,c.useState)(""),[x,y]=(0,c.useState)(""),[z,A]=(0,c.useState)([]),[C,D]=(0,c.useState)({...m}),[E,F]=(0,c.useState)(n),[G,H]=(0,c.useState)(o),[I,J]=(0,c.useState)(void 0);(0,c.useEffect)(()=>{i&&(D({...i.approvalGates}),F(i.push),H(i.openPr))},[i]),(0,c.useEffect)(()=>{a&&k&&J(k)},[a,k]);let K=(0,c.useCallback)(()=>{q(""),y(""),A([]),D({...m}),F(n),H(o),J(void 0)},[m,n,o]),L=""!==p.trim()||""!==x.trim()||z.length>0,{attemptClose:M}=(0,aN.useGuardedDrawerClose)({open:a,isDirty:L,onClose:d,onReset:K}),N=(0,c.useCallback)(a=>{if(a.preventDefault(),!p.trim())return;l.play();let b=x.trim()||void 0;e({name:p.trim(),description:b,attachments:z,repositoryPath:f,approvalGates:{allowPrd:C.allowPrd??!1,allowPlan:C.allowPlan??!1,allowMerge:C.allowMerge??!1},push:E||G,openPr:G,...I?{parentId:I}:{}}),K()},[p,x,z,C,f,e,E,G,I,l,K]),O=(0,c.useCallback)(async()=>{try{let a=await aO();a&&A(b=>[...b,...a])}catch{}},[]),P=(0,c.useCallback)(a=>{A(b=>b.filter(b=>b.path!==a))},[]),Q=j&&j.length>0;return(0,b.jsx)(s.BaseDrawer,{open:a,onClose:M,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)(t.DrawerTitle,{children:"NEW FEATURE"})]}),g?(0,b.jsx)(t.DrawerDescription,{asChild:!0,children:(0,b.jsx)("div",{children:(0,b.jsx)(aa.Badge,{variant:"secondary",children:"Creating..."})})}):null]}),footer:(0,b.jsxs)("div",{className:"flex flex-row justify-end gap-2",children:[(0,b.jsx)(u.Button,{variant:"outline",onClick:M,disabled:g,children:"Cancel"}),(0,b.jsx)(u.Button,{type:"submit",form:"create-feature-form",disabled:!p.trim()||g,children:g?"Creating...":"+ Create Feature"})]}),children:(0,b.jsx)("div",{className:"overflow-y-auto p-4",children:(0,b.jsxs)("form",{id:"create-feature-form",onSubmit:N,className:"flex flex-col gap-4",children:[(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(B,{htmlFor:"feature-name",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"FEATURE NAME"}),(0,b.jsx)(v.Input,{id:"feature-name",placeholder:"e.g. GitHub OAuth Login",value:p,onChange:a=>q(a.target.value),required:!0,disabled:g})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(B,{htmlFor:"feature-description",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"DESCRIPTION"}),(0,b.jsx)(w,{id:"feature-description",placeholder:"Describe what this feature does...",value:x,onChange:a=>y(a.target.value),rows:4,disabled:g})]}),Q?(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(B,{htmlFor:"parent-feature",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"PARENT FEATURE"}),(0,b.jsx)(aS,{features:j,value:I,onChange:J,disabled:g})]}):null,(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(B,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"APPROVE"}),(0,b.jsx)(_,{label:"Autonomous Mode",description:"YOLO!",parentAriaLabel:"Auto approve all",options:aP,value:C,onValueChange:D,disabled:g})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(B,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"GIT"}),(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsx)($,{id:"push",label:"Push",description:"Push branch to remote after implementation.",checked:E||G,onCheckedChange:F,disabled:G||g}),(0,b.jsx)($,{id:"open-pr",label:"Create PR",description:"Open a pull request after pushing.",checked:G,onCheckedChange:H,disabled:g})]})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)(B,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:["ATTACHMENTS",z.length>0&&(0,b.jsxs)("span",{className:"text-muted-foreground/60 ml-1.5",children:["(",z.length,")"]})]}),(0,b.jsxs)(u.Button,{type:"button",variant:"outline",size:"xs",onClick:O,disabled:g,children:[(0,b.jsx)(h.default,{className:"size-3"}),"Add Files"]})]}),z.length>0&&(0,b.jsx)("div",{className:"flex flex-col gap-2",children:z.map(a=>(0,b.jsx)(aT,{file:a,onRemove:()=>P(a.path),disabled:g},a.path))})]})]})})})}function aS({features:a,value:d,onChange:e,disabled:f}){let[g,h]=(0,c.useState)(!1),[i,j]=(0,c.useState)(""),k=(0,c.useRef)(null),l=a.find(a=>a.id===d),m=i.trim()?a.filter(a=>a.name.toLowerCase().includes(i.toLowerCase())||a.id.toLowerCase().includes(i.toLowerCase())):a,n=(0,c.useCallback)(a=>{e(a),h(!1),j("")},[e]);return(0,c.useEffect)(()=>{g?setTimeout(()=>k.current?.focus(),0):j("")},[g]),(0,b.jsxs)(aK,{open:g,onOpenChange:h,children:[(0,b.jsx)(aL,{asChild:!0,children:(0,b.jsxs)("button",{id:"parent-feature",type:"button",role:"combobox","aria-expanded":g,"aria-label":"Parent Feature",disabled:f,"data-testid":"parent-feature-combobox",className:(0,q.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",!l&&"text-muted-foreground"),children:[(0,b.jsx)("span",{className:"truncate",children:l?`${l.name} (${l.id.slice(0,8)})`:"Select parent feature..."}),(0,b.jsx)(o,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,b.jsx)(aM,{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)(v.Input,{ref:k,placeholder:"Search features...",value:i,onChange:a=>j(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:()=>n(void 0),className:(0,q.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)(p.default,{className:(0,q.cn)("h-4 w-4 shrink-0",void 0!==d&&"invisible")}),(0,b.jsx)("span",{className:"text-muted-foreground italic",children:"No parent"})]}),0===m.length&&i?(0,b.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm",children:"No features found."}):m.map(a=>(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":d===a.id,onClick:()=>n(a.id),className:(0,q.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)(p.default,{className:(0,q.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))]})]})})]})}function aT({file:a,onRemove:c,disabled:d}){var e,f,g;let h,i=(h=(e=a.name).lastIndexOf("."))>=0?e.slice(h).toLowerCase():"",o=(f=i,aU.has(f)?l:".pdf"===f?k.default:aV.has(f)?m:j),p=".pdf"===(g=i)?"bg-red-50 text-red-600":aU.has(g)?"bg-blue-50 text-blue-600":aV.has(g)?"bg-emerald-50 text-emerald-600":"bg-gray-50 text-gray-600";return(0,b.jsxs)("div",{className:"flex items-center gap-3 rounded-md border p-2",children:[(0,b.jsx)("div",{className:(0,q.cn)("flex h-8 w-8 shrink-0 items-center justify-center rounded",p),children:(0,b.jsx)(o,{className:"h-4 w-4"})}),(0,b.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,b.jsx)("span",{className:"truncate text-sm font-medium",children:a.name}),(0,b.jsx)("span",{className:"text-muted-foreground truncate text-xs",children:a.path}),(0,b.jsx)("span",{className:"text-muted-foreground text-xs",children:function(a){if(0===a)return"0 B";let b=Math.floor(Math.log(a)/Math.log(1024));return`${(a/Math.pow(1024,b)).toFixed(+(0!==b))} ${["B","KB","MB","GB"][b]}`}(a.size)})]}),(0,b.jsx)(u.Button,{type:"button",variant:"ghost",size:"icon-xs",onClick:c,disabled:d,"aria-label":`Remove ${a.name}`,children:(0,b.jsx)(n.default,{className:"h-3 w-3"})})]})}let aU=new Set([".png",".jpg",".jpeg",".gif",".svg",".webp",".ico",".bmp"]),aV=new Set([".ts",".tsx",".js",".jsx",".json",".yaml",".yml",".xml",".html",".css",".md"]);function aW({repositoryPath:a,initialParentId:f,features:h,workflowDefaults:i}){let j=(0,d.useRouter)(),k=(0,r.useSoundAction)("create"),[l,m]=(0,c.useState)(!1),n=(0,d.usePathname)(),o=!l&&n.startsWith("/create");(0,c.useEffect)(()=>{!o&&n.startsWith("/create")&&j.replace("/")},[o,n,j]);let p=(0,c.useCallback)(()=>{j.push("/")},[j]),q=(0,c.useCallback)(a=>{m(!0),window.dispatchEvent(new CustomEvent("shep:feature-created",{detail:{name:a.name,description:a.description,repositoryPath:a.repositoryPath,parentId:a.parentId}})),j.push("/"),g(a).then(a=>{if(a.error){e.toast.error(a.error),window.dispatchEvent(new CustomEvent("shep:feature-create-failed"));return}k.play()}).catch(()=>{e.toast.error("Failed to create feature"),window.dispatchEvent(new CustomEvent("shep:feature-create-failed"))}).finally(()=>{m(!1)})},[j,k]);return(0,b.jsx)(aR,{open:o,onClose:p,onSubmit:q,repositoryPath:a,features:h,workflowDefaults:i,initialParentId:f,isSubmitting:l})}a.s(["CreateDrawerClient",()=>aW],93995)}];
1
+ module.exports=[93995,a=>{"use strict";var b=a.i(10973),c=a.i(96960),d=a.i(69845),e=a.i(52313),f=a.i(25674);let g=(0,f.createServerReference)("40438c4a9b92f90f4630366f041139f0f5229ab900",f.callServer,void 0,f.findSourceMapURL,"createFeature");var h=a.i(87148),h=h,i=a.i(25700);let j=(0,i.default)("file",[["path",{d:"M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z",key:"1oefj6"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}]]);var k=a.i(42642),k=k;let l=(0,i.default)("image",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",ry:"2",key:"1m3agn"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}]]),m=(0,i.default)("code",[["path",{d:"m16 18 6-6-6-6",key:"eg8j8"}],["path",{d:"m8 6-6 6 6 6",key:"ppft3o"}]]);var n=a.i(26915),n=n;let o=(0,i.default)("chevrons-up-down",[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]]);var p=a.i(51969),p=p,q=a.i(85536),r=a.i(19884);a.i(78454);var s=a.i(24255),t=a.i(2824),u=a.i(18948),v=a.i(90920);function w({className:a,...c}){return(0,b.jsx)("textarea",{"data-slot":"textarea",className:(0,q.cn)("placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input field-sizing-content min-h-[80px] w-full rounded-md border bg-transparent px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",a),...c})}var x=a.i(66873),y=c.forwardRef((a,c)=>(0,b.jsx)(x.Primitive.label,{...a,ref:c,onMouseDown:b=>{b.target.closest("button, input, select, textarea")||(a.onMouseDown?.(b),!b.defaultPrevented&&b.detail>1&&b.preventDefault())}}));y.displayName="Label",a.s(["Label",()=>y,"Root",()=>y],59967);var z=a.i(59967),z=z;let A=(0,a.i(42261).cva)("text-sm leading-none font-medium peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),B=c.forwardRef(({className:a,...c},d)=>(0,b.jsx)(z.Root,{ref:d,className:(0,q.cn)(A(),a),...c}));B.displayName=z.Root.displayName;var p=p;let C=(0,i.default)("minus",[["path",{d:"M5 12h14",key:"1ays0h"}]]);var D=a.i(6175),E=a.i(7420),F=a.i(59653),G=a.i(17329),H=a.i(74432),I=a.i(14272),J="Checkbox",[K,L]=(0,E.createContextScope)(J),[M,N]=K(J);function O(a){let{__scopeCheckbox:d,checked:e,children:f,defaultChecked:g,disabled:h,form:i,name:j,onCheckedChange:k,required:l,value:m="on",internal_do_not_use_render:n}=a,[o,p]=(0,G.useControllableState)({prop:e,defaultProp:g??!1,onChange:k,caller:J}),[q,r]=c.useState(null),[s,t]=c.useState(null),u=c.useRef(!1),v=!q||!!i||!!q.closest("form"),w={checked:o,disabled:h,setChecked:p,control:q,setControl:r,name:j,form:i,value:m,hasConsumerStoppedPropagationRef:u,required:l,defaultChecked:!W(g)&&g,isFormControl:v,bubbleInput:s,setBubbleInput:t};return(0,b.jsx)(M,{scope:d,...w,children:"function"==typeof n?n(w):f})}var P="CheckboxTrigger",Q=c.forwardRef(({__scopeCheckbox:a,onKeyDown:d,onClick:e,...f},g)=>{let{control:h,value:i,disabled:j,checked:k,required:l,setControl:m,setChecked:n,hasConsumerStoppedPropagationRef:o,isFormControl:p,bubbleInput:q}=N(P,a),r=(0,D.useComposedRefs)(g,m),s=c.useRef(k);return c.useEffect(()=>{let a=h?.form;if(a){let b=()=>n(s.current);return a.addEventListener("reset",b),()=>a.removeEventListener("reset",b)}},[h,n]),(0,b.jsx)(x.Primitive.button,{type:"button",role:"checkbox","aria-checked":W(k)?"mixed":k,"aria-required":l,"data-state":X(k),"data-disabled":j?"":void 0,disabled:j,value:i,...f,ref:r,onKeyDown:(0,F.composeEventHandlers)(d,a=>{"Enter"===a.key&&a.preventDefault()}),onClick:(0,F.composeEventHandlers)(e,a=>{n(a=>!!W(a)||!a),q&&p&&(o.current=a.isPropagationStopped(),o.current||a.stopPropagation())})})});Q.displayName=P;var R=c.forwardRef((a,c)=>{let{__scopeCheckbox:d,name:e,checked:f,defaultChecked:g,required:h,disabled:i,value:j,onCheckedChange:k,form:l,...m}=a;return(0,b.jsx)(O,{__scopeCheckbox:d,checked:f,defaultChecked:g,disabled:i,required:h,onCheckedChange:k,name:e,form:l,value:j,internal_do_not_use_render:({isFormControl:a})=>(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(Q,{...m,ref:c,__scopeCheckbox:d}),a&&(0,b.jsx)(V,{__scopeCheckbox:d})]})})});R.displayName=J;var S="CheckboxIndicator",T=c.forwardRef((a,c)=>{let{__scopeCheckbox:d,forceMount:e,...f}=a,g=N(S,d);return(0,b.jsx)(I.Presence,{present:e||W(g.checked)||!0===g.checked,children:(0,b.jsx)(x.Primitive.span,{"data-state":X(g.checked),"data-disabled":g.disabled?"":void 0,...f,ref:c,style:{pointerEvents:"none",...a.style}})})});T.displayName=S;var U="CheckboxBubbleInput",V=c.forwardRef(({__scopeCheckbox:a,...d},e)=>{let f,{control:g,hasConsumerStoppedPropagationRef:h,checked:i,defaultChecked:j,required:k,disabled:l,name:m,value:n,form:o,bubbleInput:p,setBubbleInput:q}=N(U,a),r=(0,D.useComposedRefs)(e,q),s=(f=c.useRef({value:i,previous:i}),c.useMemo(()=>(f.current.value!==i&&(f.current.previous=f.current.value,f.current.value=i),f.current.previous),[i])),t=(0,H.useSize)(g);c.useEffect(()=>{if(!p)return;let a=Object.getOwnPropertyDescriptor(window.HTMLInputElement.prototype,"checked").set,b=!h.current;if(s!==i&&a){let c=new Event("click",{bubbles:b});p.indeterminate=W(i),a.call(p,!W(i)&&i),p.dispatchEvent(c)}},[p,s,i,h]);let u=c.useRef(!W(i)&&i);return(0,b.jsx)(x.Primitive.input,{type:"checkbox","aria-hidden":!0,defaultChecked:j??u.current,required:k,disabled:l,name:m,value:n,form:o,...d,tabIndex:-1,ref:r,style:{...d.style,...t,position:"absolute",pointerEvents:"none",opacity:0,margin:0,transform:"translateX(-100%)"}})});function W(a){return"indeterminate"===a}function X(a){return W(a)?"indeterminate":a?"checked":"unchecked"}V.displayName=U,a.s(["Checkbox",()=>R,"CheckboxIndicator",()=>T,"Indicator",()=>T,"Root",()=>R,"createCheckboxScope",()=>L,"unstable_BubbleInput",()=>V,"unstable_CheckboxBubbleInput",()=>V,"unstable_CheckboxProvider",()=>O,"unstable_CheckboxTrigger",()=>Q,"unstable_Provider",()=>O,"unstable_Trigger",()=>Q],27835);var Y=a.i(27835),Y=Y;function Z({className:a,...c}){return(0,b.jsx)(Y.Root,{"data-slot":"checkbox",className:(0,q.cn)("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary data-[state=indeterminate]:bg-primary data-[state=indeterminate]:text-primary-foreground data-[state=indeterminate]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 cursor-pointer rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",a),...c,children:(0,b.jsx)(Y.Indicator,{"data-slot":"checkbox-indicator",className:"grid place-content-center text-current transition-none",children:"indeterminate"===c.checked?(0,b.jsx)(C,{className:"size-3.5"}):(0,b.jsx)(p.default,{className:"size-3.5"})})})}function $({id:a,label:c,description:d,checked:e,onCheckedChange:f,disabled:g}){return(0,b.jsxs)("div",{className:"flex items-start gap-2",children:[(0,b.jsx)(Z,{id:a,className:"mt-0.75",checked:e,onCheckedChange:a=>f(!0===a),disabled:g}),(0,b.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,b.jsx)(B,{htmlFor:a,className:"cursor-pointer text-sm font-medium",children:c}),d?(0,b.jsx)(B,{htmlFor:a,className:"text-muted-foreground cursor-pointer text-xs font-normal",children:d}):null]})]})}function _({label:a,description:c,parentAriaLabel:d,options:e,value:f,onValueChange:g,disabled:h}){let i=e.filter(a=>f[a.id]).length,j=i===e.length,k=i>0&&!j,l=`${a.toLowerCase().replace(/\s+/g,"-")}-group`;return(0,b.jsxs)("div",{className:"flex flex-col gap-3",children:[(0,b.jsxs)("div",{className:"flex items-start gap-2",children:[(0,b.jsx)(Z,{id:l,className:"mt-0.75",checked:k?"indeterminate":j,onCheckedChange:()=>{let a=i<e.length,b={};for(let c of e)b[c.id]=a;g(b)},disabled:h,"aria-label":d??`${a} select all`}),(0,b.jsxs)("div",{className:"flex flex-col gap-0.5",children:[(0,b.jsx)(B,{htmlFor:l,className:"cursor-pointer text-sm font-medium",children:a}),c?(0,b.jsx)(B,{htmlFor:l,className:"text-muted-foreground cursor-pointer text-xs font-normal",children:c}):null]})]}),(0,b.jsx)("div",{className:"flex flex-col gap-3 pl-6",children:e.map(a=>(0,b.jsx)($,{id:a.id,label:a.label,description:a.description,checked:f[a.id]??!1,onCheckedChange:b=>{var c;return c=a.id,void g({...f,[c]:b})},disabled:h},a.id))})]})}var aa=a.i(58339),ab=a.i(58761),ac=a.i(51473),ad=a.i(59675),ae=a.i(5472),af=a.i(75988),ag=a.i(80930),ah=a.i(90986),ai=a.i(16164),aj=a.i(45291),ak="Popover",[al,am]=(0,E.createContextScope)(ak,[af.createPopperScope]),an=(0,af.createPopperScope)(),[ao,ap]=al(ak),aq=a=>{let{__scopePopover:d,children:e,open:f,defaultOpen:g,onOpenChange:h,modal:i=!1}=a,j=an(d),k=c.useRef(null),[l,m]=c.useState(!1),[n,o]=(0,G.useControllableState)({prop:f,defaultProp:g??!1,onChange:h,caller:ak});return(0,b.jsx)(af.Root,{...j,children:(0,b.jsx)(ao,{scope:d,contentId:(0,ae.useId)(),triggerRef:k,open:n,onOpenChange:o,onOpenToggle:c.useCallback(()=>o(a=>!a),[o]),hasCustomAnchor:l,onCustomAnchorAdd:c.useCallback(()=>m(!0),[]),onCustomAnchorRemove:c.useCallback(()=>m(!1),[]),modal:i,children:e})})};aq.displayName=ak;var ar="PopoverAnchor",as=c.forwardRef((a,d)=>{let{__scopePopover:e,...f}=a,g=ap(ar,e),h=an(e),{onCustomAnchorAdd:i,onCustomAnchorRemove:j}=g;return c.useEffect(()=>(i(),()=>j()),[i,j]),(0,b.jsx)(af.Anchor,{...h,...f,ref:d})});as.displayName=ar;var at="PopoverTrigger",au=c.forwardRef((a,c)=>{let{__scopePopover:d,...e}=a,f=ap(at,d),g=an(d),h=(0,D.useComposedRefs)(c,f.triggerRef),i=(0,b.jsx)(x.Primitive.button,{type:"button","aria-haspopup":"dialog","aria-expanded":f.open,"aria-controls":f.contentId,"data-state":aI(f.open),...e,ref:h,onClick:(0,F.composeEventHandlers)(a.onClick,f.onOpenToggle)});return f.hasCustomAnchor?i:(0,b.jsx)(af.Anchor,{asChild:!0,...g,children:i})});au.displayName=at;var av="PopoverPortal",[aw,ax]=al(av,{forceMount:void 0}),ay=a=>{let{__scopePopover:c,forceMount:d,children:e,container:f}=a,g=ap(av,c);return(0,b.jsx)(aw,{scope:c,forceMount:d,children:(0,b.jsx)(I.Presence,{present:d||g.open,children:(0,b.jsx)(ag.Portal,{asChild:!0,container:f,children:e})})})};ay.displayName=av;var az="PopoverContent",aA=c.forwardRef((a,c)=>{let d=ax(az,a.__scopePopover),{forceMount:e=d.forceMount,...f}=a,g=ap(az,a.__scopePopover);return(0,b.jsx)(I.Presence,{present:e||g.open,children:g.modal?(0,b.jsx)(aC,{...f,ref:c}):(0,b.jsx)(aD,{...f,ref:c})})});aA.displayName=az;var aB=(0,ah.createSlot)("PopoverContent.RemoveScroll"),aC=c.forwardRef((a,d)=>{let e=ap(az,a.__scopePopover),f=c.useRef(null),g=(0,D.useComposedRefs)(d,f),h=c.useRef(!1);return c.useEffect(()=>{let a=f.current;if(a)return(0,ai.hideOthers)(a)},[]),(0,b.jsx)(aj.RemoveScroll,{as:aB,allowPinchZoom:!0,children:(0,b.jsx)(aE,{...a,ref:g,trapFocus:e.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,F.composeEventHandlers)(a.onCloseAutoFocus,a=>{a.preventDefault(),h.current||e.triggerRef.current?.focus()}),onPointerDownOutside:(0,F.composeEventHandlers)(a.onPointerDownOutside,a=>{let b=a.detail.originalEvent,c=0===b.button&&!0===b.ctrlKey;h.current=2===b.button||c},{checkForDefaultPrevented:!1}),onFocusOutside:(0,F.composeEventHandlers)(a.onFocusOutside,a=>a.preventDefault(),{checkForDefaultPrevented:!1})})})}),aD=c.forwardRef((a,d)=>{let e=ap(az,a.__scopePopover),f=c.useRef(!1),g=c.useRef(!1);return(0,b.jsx)(aE,{...a,ref:d,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:b=>{a.onCloseAutoFocus?.(b),b.defaultPrevented||(f.current||e.triggerRef.current?.focus(),b.preventDefault()),f.current=!1,g.current=!1},onInteractOutside:b=>{a.onInteractOutside?.(b),b.defaultPrevented||(f.current=!0,"pointerdown"===b.detail.originalEvent.type&&(g.current=!0));let c=b.target;e.triggerRef.current?.contains(c)&&b.preventDefault(),"focusin"===b.detail.originalEvent.type&&g.current&&b.preventDefault()}})}),aE=c.forwardRef((a,c)=>{let{__scopePopover:d,trapFocus:e,onOpenAutoFocus:f,onCloseAutoFocus:g,disableOutsidePointerEvents:h,onEscapeKeyDown:i,onPointerDownOutside:j,onFocusOutside:k,onInteractOutside:l,...m}=a,n=ap(az,d),o=an(d);return(0,ac.useFocusGuards)(),(0,b.jsx)(ad.FocusScope,{asChild:!0,loop:!0,trapped:e,onMountAutoFocus:f,onUnmountAutoFocus:g,children:(0,b.jsx)(ab.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:h,onInteractOutside:l,onEscapeKeyDown:i,onPointerDownOutside:j,onFocusOutside:k,onDismiss:()=>n.onOpenChange(!1),children:(0,b.jsx)(af.Content,{"data-state":aI(n.open),role:"dialog",id:n.contentId,...o,...m,ref:c,style:{...m.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),aF="PopoverClose",aG=c.forwardRef((a,c)=>{let{__scopePopover:d,...e}=a,f=ap(aF,d);return(0,b.jsx)(x.Primitive.button,{type:"button",...e,ref:c,onClick:(0,F.composeEventHandlers)(a.onClick,()=>f.onOpenChange(!1))})});aG.displayName=aF;var aH=c.forwardRef((a,c)=>{let{__scopePopover:d,...e}=a,f=an(d);return(0,b.jsx)(af.Arrow,{...f,...e,ref:c})});function aI(a){return a?"open":"closed"}aH.displayName="PopoverArrow",a.s(["Anchor",()=>as,"Arrow",()=>aH,"Close",()=>aG,"Content",()=>aA,"Popover",()=>aq,"PopoverAnchor",()=>as,"PopoverArrow",()=>aH,"PopoverClose",()=>aG,"PopoverContent",()=>aA,"PopoverPortal",()=>ay,"PopoverTrigger",()=>au,"Portal",()=>ay,"Root",()=>aq,"Trigger",()=>au,"createPopoverScope",()=>am],61452);var aJ=a.i(61452),aJ=aJ;let aK=aJ.Root,aL=aJ.Trigger;aJ.Anchor;let aM=c.forwardRef(({className:a,align:c="center",sideOffset:d=4,...e},f)=>(0,b.jsx)(aJ.Portal,{children:(0,b.jsx)(aJ.Content,{ref:f,align:c,sideOffset:d,className:(0,q.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 shadow-md outline-none",a),...e})}));aM.displayName=aJ.Content.displayName;var aN=a.i(96213);async function aO(){let a=await fetch("/api/dialog/pick-files",{method:"POST"});if(!a.ok)throw Error("Failed to open file dialog");let b=await a.json();return b.cancelled?null:b.files}let aP=[{id:"allowPrd",label:"PRD",description:"Auto-approve requirements move to planning."},{id:"allowPlan",label:"Plan",description:"Auto-approve planning move to implementation."},{id:"allowMerge",label:"Merge",description:"Auto-approve merge move to Done."}],aQ={allowPrd:!1,allowPlan:!1,allowMerge:!1};function aR({open:a,onClose:d,onSubmit:e,repositoryPath:f,isSubmitting:g=!1,workflowDefaults:i,features:j,initialParentId:k}){let l=(0,r.useSoundAction)("create"),m=i?.approvalGates??aQ,n=i?.push??!1,o=i?.openPr??!1,[p,q]=(0,c.useState)(""),[x,y]=(0,c.useState)(""),[z,A]=(0,c.useState)([]),[C,D]=(0,c.useState)({...m}),[E,F]=(0,c.useState)(n),[G,H]=(0,c.useState)(o),[I,J]=(0,c.useState)(void 0);(0,c.useEffect)(()=>{i&&(D({...i.approvalGates}),F(i.push),H(i.openPr))},[i]),(0,c.useEffect)(()=>{a&&k&&J(k)},[a,k]);let K=(0,c.useCallback)(()=>{q(""),y(""),A([]),D({...m}),F(n),H(o),J(void 0)},[m,n,o]),L=""!==p.trim()||""!==x.trim()||z.length>0,{attemptClose:M}=(0,aN.useGuardedDrawerClose)({open:a,isDirty:L,onClose:d,onReset:K}),N=(0,c.useCallback)(a=>{if(a.preventDefault(),!p.trim())return;l.play();let b=x.trim()||void 0;e({name:p.trim(),description:b,attachments:z,repositoryPath:f,approvalGates:{allowPrd:C.allowPrd??!1,allowPlan:C.allowPlan??!1,allowMerge:C.allowMerge??!1},push:E||G,openPr:G,...I?{parentId:I}:{}}),K()},[p,x,z,C,f,e,E,G,I,l,K]),O=(0,c.useCallback)(async()=>{try{let a=await aO();a&&A(b=>[...b,...a])}catch{}},[]),P=(0,c.useCallback)(a=>{A(b=>b.filter(b=>b.path!==a))},[]),Q=j&&j.length>0;return(0,b.jsx)(s.BaseDrawer,{open:a,onClose:M,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)(t.DrawerTitle,{children:"NEW FEATURE"})]}),g?(0,b.jsx)(t.DrawerDescription,{asChild:!0,children:(0,b.jsx)("div",{children:(0,b.jsx)(aa.Badge,{variant:"secondary",children:"Creating..."})})}):null]}),footer:(0,b.jsxs)("div",{className:"flex flex-row justify-end gap-2",children:[(0,b.jsx)(u.Button,{variant:"outline",onClick:M,disabled:g,children:"Cancel"}),(0,b.jsx)(u.Button,{type:"submit",form:"create-feature-form",disabled:!p.trim()||g,children:g?"Creating...":"+ Create Feature"})]}),children:(0,b.jsx)("div",{className:"overflow-y-auto p-4",children:(0,b.jsxs)("form",{id:"create-feature-form",onSubmit:N,className:"flex flex-col gap-4",children:[(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(B,{htmlFor:"feature-name",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"FEATURE NAME"}),(0,b.jsx)(v.Input,{id:"feature-name",placeholder:"e.g. GitHub OAuth Login",value:p,onChange:a=>q(a.target.value),required:!0,disabled:g})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(B,{htmlFor:"feature-description",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"DESCRIPTION"}),(0,b.jsx)(w,{id:"feature-description",placeholder:"Describe what this feature does...",value:x,onChange:a=>y(a.target.value),rows:4,disabled:g})]}),Q?(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(B,{htmlFor:"parent-feature",className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"PARENT FEATURE"}),(0,b.jsx)(aS,{features:j,value:I,onChange:J,disabled:g})]}):null,(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(B,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"APPROVE"}),(0,b.jsx)(_,{label:"Autonomous Mode",description:"YOLO!",parentAriaLabel:"Auto approve all",options:aP,value:C,onValueChange:D,disabled:g})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsx)(B,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:"GIT"}),(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsx)($,{id:"push",label:"Push",description:"Push branch to remote after implementation.",checked:E||G,onCheckedChange:F,disabled:G||g}),(0,b.jsx)($,{id:"open-pr",label:"Create PR",description:"Open a pull request after pushing.",checked:G,onCheckedChange:H,disabled:g})]})]}),(0,b.jsxs)("div",{className:"flex flex-col gap-2",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)(B,{className:"text-muted-foreground text-xs font-semibold tracking-wider",children:["ATTACHMENTS",z.length>0&&(0,b.jsxs)("span",{className:"text-muted-foreground/60 ml-1.5",children:["(",z.length,")"]})]}),(0,b.jsxs)(u.Button,{type:"button",variant:"outline",size:"xs",onClick:O,disabled:g,children:[(0,b.jsx)(h.default,{className:"size-3"}),"Add Files"]})]}),z.length>0&&(0,b.jsx)("div",{className:"flex flex-col gap-2",children:z.map(a=>(0,b.jsx)(aT,{file:a,onRemove:()=>P(a.path),disabled:g},a.path))})]})]})})})}function aS({features:a,value:d,onChange:e,disabled:f}){let[g,h]=(0,c.useState)(!1),[i,j]=(0,c.useState)(""),k=(0,c.useRef)(null),l=a.find(a=>a.id===d),m=i.trim()?a.filter(a=>a.name.toLowerCase().includes(i.toLowerCase())||a.id.toLowerCase().includes(i.toLowerCase())):a,n=(0,c.useCallback)(a=>{e(a),h(!1),j("")},[e]);return(0,c.useEffect)(()=>{g?setTimeout(()=>k.current?.focus(),0):j("")},[g]),(0,b.jsxs)(aK,{open:g,onOpenChange:h,children:[(0,b.jsx)(aL,{asChild:!0,children:(0,b.jsxs)("button",{id:"parent-feature",type:"button",role:"combobox","aria-expanded":g,"aria-label":"Parent Feature",disabled:f,"data-testid":"parent-feature-combobox",className:(0,q.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",!l&&"text-muted-foreground"),children:[(0,b.jsx)("span",{className:"truncate",children:l?`${l.name} (${l.id.slice(0,8)})`:"Select parent feature..."}),(0,b.jsx)(o,{className:"ml-2 h-4 w-4 shrink-0 opacity-50"})]})}),(0,b.jsx)(aM,{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)(v.Input,{ref:k,placeholder:"Search features...",value:i,onChange:a=>j(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:()=>n(void 0),className:(0,q.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)(p.default,{className:(0,q.cn)("h-4 w-4 shrink-0",void 0!==d&&"invisible")}),(0,b.jsx)("span",{className:"text-muted-foreground italic",children:"No parent"})]}),0===m.length&&i?(0,b.jsx)("p",{className:"text-muted-foreground px-3 py-2 text-sm",children:"No features found."}):m.map(a=>(0,b.jsxs)("button",{type:"button",role:"option","aria-selected":d===a.id,onClick:()=>n(a.id),className:(0,q.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)(p.default,{className:(0,q.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))]})]})})]})}function aT({file:a,onRemove:c,disabled:d}){var e,f,g;let h,i=(h=(e=a.name).lastIndexOf("."))>=0?e.slice(h).toLowerCase():"",o=(f=i,aU.has(f)?l:".pdf"===f?k.default:aV.has(f)?m:j),p=".pdf"===(g=i)?"bg-red-50 text-red-600":aU.has(g)?"bg-blue-50 text-blue-600":aV.has(g)?"bg-emerald-50 text-emerald-600":"bg-gray-50 text-gray-600";return(0,b.jsxs)("div",{className:"flex items-center gap-3 rounded-md border p-2",children:[(0,b.jsx)("div",{className:(0,q.cn)("flex h-8 w-8 shrink-0 items-center justify-center rounded",p),children:(0,b.jsx)(o,{className:"h-4 w-4"})}),(0,b.jsxs)("div",{className:"flex min-w-0 flex-1 flex-col",children:[(0,b.jsx)("span",{className:"truncate text-sm font-medium",children:a.name}),(0,b.jsx)("span",{className:"text-muted-foreground truncate text-xs",children:a.path}),(0,b.jsx)("span",{className:"text-muted-foreground text-xs",children:function(a){if(0===a)return"0 B";let b=Math.floor(Math.log(a)/Math.log(1024));return`${(a/Math.pow(1024,b)).toFixed(+(0!==b))} ${["B","KB","MB","GB"][b]}`}(a.size)})]}),(0,b.jsx)(u.Button,{type:"button",variant:"ghost",size:"icon-xs",onClick:c,disabled:d,"aria-label":`Remove ${a.name}`,children:(0,b.jsx)(n.default,{className:"h-3 w-3"})})]})}let aU=new Set([".png",".jpg",".jpeg",".gif",".svg",".webp",".ico",".bmp"]),aV=new Set([".ts",".tsx",".js",".jsx",".json",".yaml",".yml",".xml",".html",".css",".md"]);function aW({repositoryPath:a,initialParentId:f,features:h,workflowDefaults:i}){let j=(0,d.useRouter)(),k=(0,r.useSoundAction)("create"),[l,m]=(0,c.useState)(!1),n=(0,d.usePathname)(),o=!l&&n.startsWith("/create");(0,c.useEffect)(()=>{!o&&n.startsWith("/create")&&j.replace("/")},[o,n,j]);let p=(0,c.useCallback)(()=>{j.push("/")},[j]),q=(0,c.useCallback)(a=>{m(!0),window.dispatchEvent(new CustomEvent("shep:feature-created",{detail:{name:a.name,description:a.description,repositoryPath:a.repositoryPath,parentId:a.parentId}})),j.push("/"),g(a).then(a=>{if(a.error){e.toast.error(a.error),window.dispatchEvent(new CustomEvent("shep:feature-create-failed"));return}k.play()}).catch(()=>{e.toast.error("Failed to create feature"),window.dispatchEvent(new CustomEvent("shep:feature-create-failed"))}).finally(()=>{m(!1)})},[j,k]);return(0,b.jsx)(aR,{open:o,onClose:p,onSubmit:q,repositoryPath:a,features:h,workflowDefaults:i,initialParentId:f,isSubmitting:l})}a.s(["CreateDrawerClient",()=>aW],93995)}];
2
2
 
3
3
  //# sourceMappingURL=744ca_web_components_common_control-center-drawer_create-drawer-client_tsx_5e26fc0a._.js.map