@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
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,68304,87342,51080,e=>{"use strict";var t=e.i(20314),s=e.i(79054),r=e.i(91967),a=e.i(22528),i=e.i(5978),l=e.i(86874);function n(e){let r=e+"CollectionProvider",[n,o]=(0,a.createContextScope)(r),[c,d]=n(r,{collectionRef:{current:null},itemMap:new Map}),u=e=>{let{scope:r,children:a}=e,i=s.default.useRef(null),l=s.default.useRef(new Map).current;return(0,t.jsx)(c,{scope:r,itemMap:l,collectionRef:i,children:a})};u.displayName=r;let m=e+"CollectionSlot",f=(0,l.createSlot)(m),h=s.default.forwardRef((e,s)=>{let{scope:r,children:a}=e,l=d(m,r),n=(0,i.useComposedRefs)(s,l.collectionRef);return(0,t.jsx)(f,{ref:n,children:a})});h.displayName=m;let x=e+"CollectionItemSlot",p="data-radix-collection-item",g=(0,l.createSlot)(x),v=s.default.forwardRef((e,r)=>{let{scope:a,children:l,...n}=e,o=s.default.useRef(null),c=(0,i.useComposedRefs)(r,o),u=d(x,a);return s.default.useEffect(()=>(u.itemMap.set(o,{ref:o,...n}),()=>void u.itemMap.delete(o))),(0,t.jsx)(g,{...{[p]:""},ref:c,children:l})});return v.displayName=x,[{Provider:u,Slot:h,ItemSlot:v},function(t){let r=d(e+"CollectionConsumer",t);return s.default.useCallback(()=>{let e=r.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll(`[${p}]`));return Array.from(r.itemMap.values()).sort((e,s)=>t.indexOf(e.ref.current)-t.indexOf(s.ref.current))},[r.collectionRef,r.itemMap])},o]}var o=new WeakMap;function c(e,t){var s,r;let a,i,l;if("at"in Array.prototype)return Array.prototype.at.call(e,t);let n=(s=e,r=t,a=s.length,(l=(i=d(r))>=0?i:a+i)<0||l>=a?-1:l);return -1===n?void 0:e[n]}function d(e){return e!=e||0===e?0:Math.trunc(e)}(class e extends Map{#e;constructor(e){super(e),this.#e=[...super.keys()],o.set(this,!0)}set(e,t){return o.get(this)&&(this.has(e)?this.#e[this.#e.indexOf(e)]=e:this.#e.push(e)),super.set(e,t),this}insert(e,t,s){let r,a=this.has(t),i=this.#e.length,l=d(e),n=l>=0?l:i+l,o=n<0||n>=i?-1:n;if(o===this.size||a&&o===this.size-1||-1===o)return this.set(t,s),this;let c=this.size+ +!a;l<0&&n++;let u=[...this.#e],m=!1;for(let e=n;e<c;e++)if(n===e){let i=u[e];u[e]===t&&(i=u[e+1]),a&&this.delete(t),r=this.get(i),this.set(t,s)}else{m||u[e-1]!==t||(m=!0);let s=u[m?e:e-1],a=r;r=this.get(s),this.delete(s),this.set(s,a)}return this}with(t,s,r){let a=new e(this);return a.insert(t,s,r),a}before(e){let t=this.#e.indexOf(e)-1;if(!(t<0))return this.entryAt(t)}setBefore(e,t,s){let r=this.#e.indexOf(e);return -1===r?this:this.insert(r,t,s)}after(e){let t=this.#e.indexOf(e);if(-1!==(t=-1===t||t===this.size-1?-1:t+1))return this.entryAt(t)}setAfter(e,t,s){let r=this.#e.indexOf(e);return -1===r?this:this.insert(r+1,t,s)}first(){return this.entryAt(0)}last(){return this.entryAt(-1)}clear(){return this.#e=[],super.clear()}delete(e){let t=super.delete(e);return t&&this.#e.splice(this.#e.indexOf(e),1),t}deleteAt(e){let t=this.keyAt(e);return void 0!==t&&this.delete(t)}at(e){let t=c(this.#e,e);if(void 0!==t)return this.get(t)}entryAt(e){let t=c(this.#e,e);if(void 0!==t)return[t,this.get(t)]}indexOf(e){return this.#e.indexOf(e)}keyAt(e){return c(this.#e,e)}from(e,t){let s=this.indexOf(e);if(-1===s)return;let r=s+t;return r<0&&(r=0),r>=this.size&&(r=this.size-1),this.at(r)}keyFrom(e,t){let s=this.indexOf(e);if(-1===s)return;let r=s+t;return r<0&&(r=0),r>=this.size&&(r=this.size-1),this.keyAt(r)}find(e,t){let s=0;for(let r of this){if(Reflect.apply(e,t,[r,s,this]))return r;s++}}findIndex(e,t){let s=0;for(let r of this){if(Reflect.apply(e,t,[r,s,this]))return s;s++}return -1}filter(t,s){let r=[],a=0;for(let e of this)Reflect.apply(t,s,[e,a,this])&&r.push(e),a++;return new e(r)}map(t,s){let r=[],a=0;for(let e of this)r.push([e[0],Reflect.apply(t,s,[e,a,this])]),a++;return new e(r)}reduce(...e){let[t,s]=e,r=0,a=s??this.at(0);for(let s of this)a=0===r&&1===e.length?s:Reflect.apply(t,this,[a,s,r,this]),r++;return a}reduceRight(...e){let[t,s]=e,r=s??this.at(-1);for(let s=this.size-1;s>=0;s--){let a=this.at(s);r=s===this.size-1&&1===e.length?a:Reflect.apply(t,this,[r,a,s,this])}return r}toSorted(t){return new e([...this.entries()].sort(t))}toReversed(){let t=new e;for(let e=this.size-1;e>=0;e--){let s=this.keyAt(e),r=this.get(s);t.set(s,r)}return t}toSpliced(...t){let s=[...this.entries()];return s.splice(...t),new e(s)}slice(t,s){let r=new e,a=this.size-1;if(void 0===t)return r;t<0&&(t+=this.size),void 0!==s&&s>0&&(a=s-1);for(let e=t;e<=a;e++){let t=this.keyAt(e),s=this.get(t);r.set(t,s)}return r}every(e,t){let s=0;for(let r of this){if(!Reflect.apply(e,t,[r,s,this]))return!1;s++}return!0}some(e,t){let s=0;for(let r of this){if(Reflect.apply(e,t,[r,s,this]))return!0;s++}return!1}}),e.s(["createCollection",()=>n],87342);var u=e.i(13123),m=e.i(87620),f=e.i(29297),h=e.i(36589),x=e.i(66033),p="rovingFocusGroup.onEntryFocus",g={bubbles:!1,cancelable:!0},v="RovingFocusGroup",[b,y,j]=n(v),[w,k]=(0,a.createContextScope)(v,[j]),[N,C]=w(v),T=s.forwardRef((e,s)=>(0,t.jsx)(b.Provider,{scope:e.__scopeRovingFocusGroup,children:(0,t.jsx)(b.Slot,{scope:e.__scopeRovingFocusGroup,children:(0,t.jsx)(R,{...e,ref:s})})}));T.displayName=v;var R=s.forwardRef((e,a)=>{let{__scopeRovingFocusGroup:l,orientation:n,loop:o=!1,dir:c,currentTabStopId:d,defaultCurrentTabStopId:u,onCurrentTabStopIdChange:b,onEntryFocus:j,preventScrollOnEntryFocus:w=!1,...k}=e,C=s.useRef(null),T=(0,i.useComposedRefs)(a,C),R=(0,x.useDirection)(c),[I,S]=(0,h.useControllableState)({prop:d,defaultProp:u??null,onChange:b,caller:v}),[A,E]=s.useState(!1),M=(0,f.useCallbackRef)(j),D=y(l),L=s.useRef(!1),[P,F]=s.useState(0);return s.useEffect(()=>{let e=C.current;if(e)return e.addEventListener(p,M),()=>e.removeEventListener(p,M)},[M]),(0,t.jsx)(N,{scope:l,orientation:n,dir:R,loop:o,currentTabStopId:I,onItemFocus:s.useCallback(e=>S(e),[S]),onItemShiftTab:s.useCallback(()=>E(!0),[]),onFocusableItemAdd:s.useCallback(()=>F(e=>e+1),[]),onFocusableItemRemove:s.useCallback(()=>F(e=>e-1),[]),children:(0,t.jsx)(m.Primitive.div,{tabIndex:A||0===P?-1:0,"data-orientation":n,...k,ref:T,style:{outline:"none",...e.style},onMouseDown:(0,r.composeEventHandlers)(e.onMouseDown,()=>{L.current=!0}),onFocus:(0,r.composeEventHandlers)(e.onFocus,e=>{let t=!L.current;if(e.target===e.currentTarget&&t&&!A){let t=new CustomEvent(p,g);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){let e=D().filter(e=>e.focusable);z([e.find(e=>e.active),e.find(e=>e.id===I),...e].filter(Boolean).map(e=>e.ref.current),w)}}L.current=!1}),onBlur:(0,r.composeEventHandlers)(e.onBlur,()=>E(!1))})})}),I="RovingFocusGroupItem",S=s.forwardRef((e,a)=>{let{__scopeRovingFocusGroup:i,focusable:l=!0,active:n=!1,tabStopId:o,children:c,...d}=e,f=(0,u.useId)(),h=o||f,x=C(I,i),p=x.currentTabStopId===h,g=y(i),{onFocusableItemAdd:v,onFocusableItemRemove:j,currentTabStopId:w}=x;return s.useEffect(()=>{if(l)return v(),()=>j()},[l,v,j]),(0,t.jsx)(b.ItemSlot,{scope:i,id:h,focusable:l,active:n,children:(0,t.jsx)(m.Primitive.span,{tabIndex:p?0:-1,"data-orientation":x.orientation,...d,ref:a,onMouseDown:(0,r.composeEventHandlers)(e.onMouseDown,e=>{l?x.onItemFocus(h):e.preventDefault()}),onFocus:(0,r.composeEventHandlers)(e.onFocus,()=>x.onItemFocus(h)),onKeyDown:(0,r.composeEventHandlers)(e.onKeyDown,e=>{if("Tab"===e.key&&e.shiftKey)return void x.onItemShiftTab();if(e.target!==e.currentTarget)return;let t=function(e,t,s){var r;let a=(r=e.key,"rtl"!==s?r:"ArrowLeft"===r?"ArrowRight":"ArrowRight"===r?"ArrowLeft":r);if(!("vertical"===t&&["ArrowLeft","ArrowRight"].includes(a))&&!("horizontal"===t&&["ArrowUp","ArrowDown"].includes(a)))return A[a]}(e,x.orientation,x.dir);if(void 0!==t){if(e.metaKey||e.ctrlKey||e.altKey||e.shiftKey)return;e.preventDefault();let a=g().filter(e=>e.focusable).map(e=>e.ref.current);if("last"===t)a.reverse();else if("prev"===t||"next"===t){var s,r;"prev"===t&&a.reverse();let i=a.indexOf(e.currentTarget);a=x.loop?(s=a,r=i+1,s.map((e,t)=>s[(r+t)%s.length])):a.slice(i+1)}setTimeout(()=>z(a))}}),children:"function"==typeof c?c({isCurrentTabStop:p,hasTabStop:null!=w}):c})})});S.displayName=I;var A={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function z(e,t=!1){let s=document.activeElement;for(let r of e)if(r===s||(r.focus({preventScroll:t}),document.activeElement!==s))return}e.s(["Item",()=>S,"Root",()=>T,"createRovingFocusGroupScope",()=>k],51080);var E=e.i(85995),M="Tabs",[D,L]=(0,a.createContextScope)(M,[k]),P=k(),[F,O]=D(M),B=s.forwardRef((e,s)=>{let{__scopeTabs:r,value:a,onValueChange:i,defaultValue:l,orientation:n="horizontal",dir:o,activationMode:c="automatic",...d}=e,f=(0,x.useDirection)(o),[p,g]=(0,h.useControllableState)({prop:a,onChange:i,defaultProp:l??"",caller:M});return(0,t.jsx)(F,{scope:r,baseId:(0,u.useId)(),value:p,onValueChange:g,orientation:n,dir:f,activationMode:c,children:(0,t.jsx)(m.Primitive.div,{dir:f,"data-orientation":n,...d,ref:s})})});B.displayName=M;var H="TabsList",V=s.forwardRef((e,s)=>{let{__scopeTabs:r,loop:a=!0,...i}=e,l=O(H,r),n=P(r);return(0,t.jsx)(T,{asChild:!0,...n,orientation:l.orientation,dir:l.dir,loop:a,children:(0,t.jsx)(m.Primitive.div,{role:"tablist","aria-orientation":l.orientation,...i,ref:s})})});V.displayName=H;var q="TabsTrigger",K=s.forwardRef((e,s)=>{let{__scopeTabs:a,value:i,disabled:l=!1,...n}=e,o=O(q,a),c=P(a),d=G(o.baseId,i),u=_(o.baseId,i),f=i===o.value;return(0,t.jsx)(S,{asChild:!0,...c,focusable:!l,active:f,children:(0,t.jsx)(m.Primitive.button,{type:"button",role:"tab","aria-selected":f,"aria-controls":u,"data-state":f?"active":"inactive","data-disabled":l?"":void 0,disabled:l,id:d,...n,ref:s,onMouseDown:(0,r.composeEventHandlers)(e.onMouseDown,e=>{l||0!==e.button||!1!==e.ctrlKey?e.preventDefault():o.onValueChange(i)}),onKeyDown:(0,r.composeEventHandlers)(e.onKeyDown,e=>{[" ","Enter"].includes(e.key)&&o.onValueChange(i)}),onFocus:(0,r.composeEventHandlers)(e.onFocus,()=>{let e="manual"!==o.activationMode;f||l||!e||o.onValueChange(i)})})})});K.displayName=q;var $="TabsContent",U=s.forwardRef((e,r)=>{let{__scopeTabs:a,value:i,forceMount:l,children:n,...o}=e,c=O($,a),d=G(c.baseId,i),u=_(c.baseId,i),f=i===c.value,h=s.useRef(f);return s.useEffect(()=>{let e=requestAnimationFrame(()=>h.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,t.jsx)(E.Presence,{present:l||f,children:({present:s})=>(0,t.jsx)(m.Primitive.div,{"data-state":f?"active":"inactive","data-orientation":c.orientation,role:"tabpanel","aria-labelledby":d,hidden:!s,id:u,tabIndex:0,...o,ref:r,style:{...e.style,animationDuration:h.current?"0s":void 0},children:s&&n})})});function G(e,t){return`${e}-trigger-${t}`}function _(e,t){return`${e}-content-${t}`}U.displayName=$,e.s(["Content",()=>U,"List",()=>V,"Root",()=>B,"Tabs",()=>B,"TabsContent",()=>U,"TabsList",()=>V,"TabsTrigger",()=>K,"Trigger",()=>K,"createTabsScope",()=>L],43133);var W=e.i(43133),W=W,X=e.i(31777);let J=W.Root,Q=s.forwardRef(({className:e,...s},r)=>(0,t.jsx)(W.List,{ref:r,className:(0,X.cn)("bg-muted text-muted-foreground inline-flex h-9 items-center justify-center rounded-lg p-1",e),...s}));Q.displayName=W.List.displayName;let Y=s.forwardRef(({className:e,...s},r)=>(0,t.jsx)(W.Trigger,{ref:r,className:(0,X.cn)("ring-offset-background focus-visible:ring-ring data-[state=active]:bg-background data-[state=active]:text-foreground inline-flex items-center justify-center rounded-md px-3 py-1 text-sm font-medium whitespace-nowrap transition-all focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow",e),...s}));Y.displayName=W.Trigger.displayName;let Z=s.forwardRef(({className:e,...s},r)=>(0,t.jsx)(W.Content,{ref:r,className:(0,X.cn)("ring-offset-background focus-visible:ring-ring mt-2 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none",e),...s}));Z.displayName=W.Content.displayName,e.s(["Tabs",()=>J,"TabsContent",()=>Z,"TabsList",()=>Q,"TabsTrigger",()=>Y],68304)},81846,e=>{"use strict";var t=e.i(20314),s=e.i(94237),r=e.i(31777);let a=(0,s.cva)("inline-flex items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:outline-none",{variants:{variant:{default:"border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80",secondary:"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80",destructive:"border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80",outline:"text-foreground"}},defaultVariants:{variant:"default"}});function i({className:e,variant:s,...i}){return(0,t.jsx)("div",{className:(0,r.cn)(a({variant:s}),e),...i})}e.s(["Badge",()=>i])},1012,e=>{"use strict";let t=(0,e.i(3645).default)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]);e.s(["default",()=>t])},30090,e=>{"use strict";let t=(0,e.i(3645).default)("circle-x",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"m9 9 6 6",key:"z0biqf"}]]);e.s(["default",()=>t])},54277,e=>{"use strict";var t=e.i(30090);e.s(["CircleX",()=>t.default])},33548,23925,e=>{"use strict";let t=(0,e.i(3645).default)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);e.s(["Copy",()=>t],33548);var s=e.i(1012);e.s(["Check",()=>s.default],23925)},49228,e=>{"use strict";let t=(0,e.i(3645).default)("git-branch",[["line",{x1:"6",x2:"6",y1:"3",y2:"15",key:"17qcm7"}],["circle",{cx:"18",cy:"6",r:"3",key:"1h7g24"}],["circle",{cx:"6",cy:"18",r:"3",key:"fqmcym"}],["path",{d:"M18 9a9 9 0 0 1-9 9",key:"n2h4wq"}]]);e.s(["GitBranch",()=>t],49228)},95812,e=>{"use strict";let t=(0,e.i(3645).default)("circle",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}]]);e.s(["Circle",()=>t],95812)},35e3,e=>{"use strict";var t=e.i(80986);e.s(["CheckCircle2",()=>t.default])},44412,e=>{"use strict";var t=e.i(20314),s=e.i(79054),r=e.i(81975),a=e.i(68304),i=e.i(31777),l=e.i(83428),n=e.i(3645);let o=(0,n.default)("rocket",[["path",{d:"M4.5 16.5c-1.5 1.26-2 5-2 5s3.74-.5 5-2c.71-.84.7-2.13-.09-2.91a2.18 2.18 0 0 0-2.91-.09z",key:"m3kijz"}],["path",{d:"m12 15-3-3a22 22 0 0 1 2-3.95A12.88 12.88 0 0 1 22 2c0 2.72-.78 7.5-6 11a22.35 22.35 0 0 1-4 2z",key:"1fmvmk"}],["path",{d:"M9 12H4s.55-3.03 2-4c1.62-1.08 5 0 5 0",key:"1f8sc4"}],["path",{d:"M12 15v5s3.03-.55 4-2c1.08-1.62 0-5 0-5",key:"qeys4"}]]),c=(0,n.default)("download",[["path",{d:"M12 15V3",key:"m9g1x1"}],["path",{d:"M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4",key:"ih7n3h"}],["path",{d:"m7 10 5 5 5-5",key:"brsn70"}]]),d=(0,n.default)("monitor",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]);var u=e.i(38573),m=e.i(49228),f=e.i(54277),h=e.i(95812),x=e.i(35e3);let p=(0,n.default)("package",[["path",{d:"M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z",key:"1a0edw"}],["path",{d:"M12 22V12",key:"d0xqtd"}],["polyline",{points:"3.29 7 12 12 20.71 7",key:"ousv84"}],["path",{d:"m7.5 4.27 9 5.15",key:"1c824w"}]]);var g=e.i(35364),v=e.i(2828),b=e.i(33548),y=e.i(23925),j=e.i(30702),w=e.i(11495);let k={linux:"Linux",darwin:"macOS",win32:"Windows"},N={ide:{label:"IDE",icon:d},"cli-agent":{label:"CLI Agent",icon:u.Terminal},vcs:{label:"VCS",icon:m.GitBranch},terminal:{label:"Terminal",icon:u.Terminal}};function C({status:e}){return"available"===e?(0,t.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full bg-emerald-100 px-2 py-0.5 text-xs font-medium text-emerald-700 dark:bg-emerald-900/30 dark:text-emerald-400",children:[(0,t.jsx)(y.Check,{className:"h-3 w-3"}),"Installed"]}):"error"===e?(0,t.jsx)("span",{className:"inline-flex items-center gap-1 rounded-full bg-red-100 px-2 py-0.5 text-xs font-medium text-red-700 dark:bg-red-900/30 dark:text-red-400",children:"Error"}):(0,t.jsx)("span",{className:"inline-flex items-center gap-1 rounded-full bg-amber-100 px-2 py-0.5 text-xs font-medium text-amber-700 dark:bg-amber-900/30 dark:text-amber-400",children:"Missing"})}function T({tool:e,open:r,onClose:a,onRefresh:i,autoStart:n}){let[u,m]=(0,s.useState)(!1),[f,h]=(0,s.useState)(!1),{logs:x,status:v,startInstall:T}=function(e){let[t,r]=(0,s.useState)([]),[a,i]=(0,s.useState)("idle"),[l,n]=(0,s.useState)(null),o=(0,s.useRef)(null),c=(0,s.useCallback)(()=>{o.current&&(o.current.close(),o.current=null)},[]);return(0,s.useEffect)(()=>c,[c]),{logs:t,status:a,result:l,startInstall:(0,s.useCallback)(()=>{c(),r([]),n(null),i("streaming");let t=new EventSource(`/api/tools/${e}/install/stream`);o.current=t,t.onmessage=e=>{r(t=>[...t,e.data])},t.addEventListener("done",e=>{let t=JSON.parse(e.data);n(t),i("error"===t.status?"error":"done"),c()}),t.onerror=()=>{i("error"),c()}},[e,c])}}(e.id),R=(0,s.useRef)(null),I=(0,s.useRef)(!0),S=(0,s.useRef)(!1),A="available"===e.status.status,z="error"===e.status.status,E=A&&!!e.openDirectory,M=!A&&!z&&e.autoInstall;async function D(){h(!0);try{await fetch(`/api/tools/${e.id}/launch`,{method:"POST"})}finally{h(!1)}}(0,s.useEffect)(()=>{r&&n&&M&&"idle"===v&&!S.current&&(S.current=!0,T()),r||(S.current=!1)},[r,n,M,v,T]);let L=(0,s.useCallback)(()=>{let e=R.current;e&&(I.current=e.scrollTop+e.clientHeight>=e.scrollHeight-50)},[]);(0,s.useEffect)(()=>{I.current&&R.current&&(R.current.scrollTop=R.current.scrollHeight)},[x,v]),(0,s.useEffect)(()=>{"done"===v&&i&&i()},[v,i]);let P=(0,t.jsxs)("div",{className:"flex flex-col gap-1.5 pr-6",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[e.iconUrl?(0,t.jsx)("img",{src:e.iconUrl,alt:"",width:24,height:24,className:"shrink-0 dark:invert"}):(0,t.jsx)(p,{className:"text-muted-foreground h-6 w-6 shrink-0"}),(0,t.jsx)("h2",{className:"text-base font-bold",children:e.name}),(0,t.jsx)(C,{status:e.status.status})]}),(0,t.jsx)("div",{className:"flex items-center gap-2",children:e.tags.map(e=>{let s=N[e]??{label:e,icon:d},r=s.icon;return(0,t.jsxs)("span",{className:"text-muted-foreground/70 inline-flex items-center gap-0.5 text-[10px]",children:[(0,t.jsx)(r,{className:"h-3 w-3"}),s.label]},e)})})]});return(0,t.jsx)(w.BaseDrawer,{open:r,onClose:a,size:"md",modal:!0,title:e.name,header:P,"data-testid":"tool-detail-drawer",children:(0,t.jsxs)("div",{className:"flex flex-1 flex-col gap-4 overflow-y-auto p-4",children:[(0,t.jsx)("p",{className:"text-muted-foreground text-sm",children:e.description}),e.author||e.platforms?(0,t.jsxs)("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-1 text-xs",children:[e.author?(0,t.jsxs)("span",{className:"text-muted-foreground",children:["by"," ",e.website?(0,t.jsx)("a",{href:e.website,target:"_blank",rel:"noopener noreferrer",className:"text-foreground hover:underline",children:e.author}):(0,t.jsx)("span",{className:"text-foreground",children:e.author})]}):null,e.platforms&&e.platforms.length>0?(0,t.jsx)("span",{className:"text-muted-foreground",children:e.platforms.map(e=>k[e]??e).join(" · ")}):null]}):null,e.installCommand?(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)("span",{className:"text-muted-foreground text-xs font-semibold tracking-wide uppercase",children:"Install command"}),(0,t.jsxs)("div",{className:"relative rounded-md bg-zinc-900 text-zinc-100",children:[(0,t.jsx)("pre",{className:"overflow-x-auto px-3 py-2.5 pr-16 font-mono text-xs leading-relaxed break-all whitespace-pre-wrap",children:(0,t.jsx)("code",{children:e.installCommand})}),(0,t.jsxs)(g.Button,{variant:"ghost",size:"sm",className:"absolute top-1.5 right-1.5 h-7 cursor-pointer px-2 text-zinc-400 hover:text-zinc-100",onClick:function(){e.installCommand&&navigator.clipboard.writeText(e.installCommand).then(()=>{m(!0),setTimeout(()=>m(!1),2e3)})},"aria-label":u?"Copied!":"Copy install command",children:[u?(0,t.jsx)(y.Check,{className:"h-3.5 w-3.5 text-emerald-500"}):(0,t.jsx)(b.Copy,{className:"h-3.5 w-3.5"}),(0,t.jsx)("span",{className:"ml-1 text-[10px]",children:u?"Copied!":"Copy"})]})]})]}):null,(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[M?(0,t.jsxs)(g.Button,{size:"sm",onClick:T,disabled:"streaming"===v,"aria-label":`Install ${e.name}`,className:"cursor-pointer",children:["streaming"===v?(0,t.jsx)(l.Loader2,{className:"mr-1.5 h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(c,{className:"mr-1.5 h-3.5 w-3.5"}),"streaming"===v?"Installing...":"Install"]}):null,E?(0,t.jsxs)(g.Button,{size:"sm",variant:"outline",onClick:()=>void D(),disabled:f,"aria-label":`Launch ${e.name}`,className:"cursor-pointer",children:[f?(0,t.jsx)(l.Loader2,{className:"mr-1.5 h-3.5 w-3.5 animate-spin"}):(0,t.jsx)(o,{className:"mr-1.5 h-3.5 w-3.5"}),"Launch"]}):null,e.documentationUrl?(0,t.jsx)(g.Button,{variant:"outline",size:"sm",className:"cursor-pointer",asChild:!0,children:(0,t.jsxs)("a",{href:e.documentationUrl,target:"_blank",rel:"noopener noreferrer",children:["Docs",(0,t.jsx)(j.ExternalLink,{className:"ml-1 h-3 w-3"})]})}):null]}),("streaming"===v||"done"===v||"error"===v)&&x.length>0?(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)("span",{className:"text-muted-foreground text-xs font-semibold tracking-wide uppercase",children:"Install log"}),(0,t.jsxs)("div",{ref:R,onScroll:L,className:"max-h-60 overflow-auto rounded-md bg-zinc-900 p-3 font-mono text-xs leading-relaxed text-zinc-100","data-testid":"tool-install-log",children:[x.map((e,s)=>(0,t.jsx)("div",{className:"break-all whitespace-pre-wrap",children:e},s)),"done"===v?(0,t.jsx)("div",{className:"mt-2 border-t border-zinc-700 pt-2 text-emerald-400",children:"Installation complete"}):null,"error"===v?(0,t.jsx)("div",{className:"mt-2 border-t border-zinc-700 pt-2 text-red-400",children:"Installation failed"}):null]})]}):null]})})}let R={ide:{label:"IDE",icon:d},"cli-agent":{label:"CLI Agent",icon:u.Terminal},vcs:{label:"VCS",icon:m.GitBranch},terminal:{label:"Terminal",icon:u.Terminal}};function I({tool:e,onRefresh:r,className:a}){let[n,u]=(0,s.useState)(!1),[m,b]=(0,s.useState)(!1),[y,j]=(0,s.useTransition)(),w="available"===e.status.status,k="error"===e.status.status,N=w&&!!e.openDirectory;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("div",{"data-testid":"tool-card",onClick:function(){b(!1),u(!0)},className:(0,i.cn)("bg-card group flex h-30 w-full cursor-pointer flex-col rounded-lg border p-3 transition-shadow hover:shadow-md",a),children:[(0,t.jsxs)("div",{className:"mb-2 flex items-start justify-between gap-2",children:[(0,t.jsxs)("div",{className:"flex min-w-0 items-center gap-2",children:[e.iconUrl?(0,t.jsx)("img",{src:e.iconUrl,alt:"",width:20,height:20,className:"shrink-0 dark:invert"}):(0,t.jsx)(p,{className:"text-muted-foreground h-5 w-5 shrink-0"}),(0,t.jsx)("h3",{"data-testid":"tool-card-name",className:"truncate text-sm font-bold",children:e.name})]}),(0,t.jsx)("div",{"data-testid":"tool-card-tags",className:"flex shrink-0 items-center gap-1",children:e.tags.map(e=>{let s=R[e]??{label:e,icon:d},r=s.icon;return(0,t.jsxs)("span",{className:"text-muted-foreground/70 inline-flex items-center gap-0.5 text-[9px]",children:[(0,t.jsx)(r,{className:"h-2.5 w-2.5"}),s.label]},e)})})]}),(0,t.jsx)("p",{"data-testid":"tool-card-summary",className:"text-muted-foreground mt-1 truncate text-xs",children:e.summary}),(0,t.jsxs)("div",{className:"mt-auto flex items-center justify-between pt-3",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[k&&"error"===e.status.status?(0,t.jsxs)("span",{className:"flex items-center gap-1 truncate text-[10px] text-red-600 dark:text-red-400",title:e.status.errorMessage,children:[(0,t.jsx)(f.CircleX,{className:"h-3 w-3 shrink-0"}),e.status.errorMessage??"Error"]}):w?(0,t.jsxs)("span",{className:"flex items-center gap-1 text-[10px] text-emerald-600 dark:text-emerald-400",children:[(0,t.jsx)(x.CheckCircle2,{className:"h-3 w-3"}),"Installed"]}):(0,t.jsxs)("span",{className:"text-muted-foreground flex items-center gap-1 text-[10px]",children:[(0,t.jsx)(h.Circle,{className:"h-3 w-3"}),"Not installed"]}),e.required?(0,t.jsx)(v.TooltipProvider,{children:(0,t.jsxs)(v.Tooltip,{children:[(0,t.jsx)(v.TooltipTrigger,{asChild:!0,children:(0,t.jsx)("span",{className:"rounded bg-amber-100 px-1.5 py-0.5 text-[9px] font-medium text-amber-700 dark:bg-amber-900/50 dark:text-amber-400",children:"Required"})}),(0,t.jsx)(v.TooltipContent,{side:"top",children:"This tool is required for Shep to function properly"})]})}):null]}),(0,t.jsx)("div",{className:"flex items-center gap-1",children:w&&N?(0,t.jsxs)(g.Button,{size:"sm",variant:"outline",onClick:function(t){t.stopPropagation(),j(async()=>{await fetch(`/api/tools/${e.id}/launch`,{method:"POST"})})},disabled:y,"aria-label":`Launch ${e.name}`,"data-testid":"tool-card-launch-button",className:"h-7 cursor-pointer rounded-md px-3 text-xs",children:[y?(0,t.jsx)(l.Loader2,{className:"mr-1 h-3 w-3 animate-spin"}):(0,t.jsx)(o,{className:"mr-1 h-3 w-3"}),"Launch"]}):w||k?null:(0,t.jsxs)(g.Button,{size:"sm",variant:"default",onClick:function(t){t.stopPropagation(),b(e.autoInstall),u(!0)},"aria-label":`Install ${e.name}`,"data-testid":"tool-card-install-button",className:"h-7 cursor-pointer rounded-md px-3 text-xs",children:[(0,t.jsx)(c,{className:"mr-1 h-3 w-3"}),"Install"]})})]})]}),(0,t.jsx)(T,{tool:e,open:n,onClose:()=>u(!1),onRefresh:r,autoStart:m})]})}let S={all:()=>!0,ide:e=>e.tags.includes("ide"),"cli-agent":e=>e.tags.includes("cli-agent"),vcs:e=>e.tags.includes("vcs"),terminal:e=>e.tags.includes("terminal")};function A({tools:e,className:l}){let[n,o]=(0,s.useState)(e),[c,d]=(0,s.useState)("all"),u=(0,s.useCallback)(async()=>{try{let e=await fetch("/api/tools");if(e.ok){let t=await e.json();o(t)}}catch{}},[]),m=n.filter(S[c]);return(0,t.jsxs)("div",{"data-testid":"tools-page-client",className:(0,i.cn)("space-y-4",l),children:[(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[(0,t.jsx)(r.Wrench,{className:"text-muted-foreground h-4 w-4"}),(0,t.jsx)("h1",{className:"text-sm font-bold tracking-tight",children:"Tools"}),(0,t.jsxs)("span",{className:"text-muted-foreground text-[10px]",children:[n.filter(e=>"available"===e.status.status).length,"/",n.length," installed"]})]}),(0,t.jsxs)(a.Tabs,{value:c,onValueChange:e=>d(e),"data-testid":"tools-page-tabs",children:[(0,t.jsxs)(a.TabsList,{className:"h-7",children:[(0,t.jsx)(a.TabsTrigger,{value:"all","data-testid":"tools-tab-all",className:"px-2.5 text-xs",children:"All"}),(0,t.jsx)(a.TabsTrigger,{value:"ide","data-testid":"tools-tab-ide",className:"px-2.5 text-xs",children:"IDEs"}),(0,t.jsx)(a.TabsTrigger,{value:"cli-agent","data-testid":"tools-tab-cli-agent",className:"px-2.5 text-xs",children:"CLI Agents"}),(0,t.jsx)(a.TabsTrigger,{value:"vcs","data-testid":"tools-tab-vcs",className:"px-2.5 text-xs",children:"Version Control"}),(0,t.jsx)(a.TabsTrigger,{value:"terminal","data-testid":"tools-tab-terminal",className:"px-2.5 text-xs",children:"Terminals"})]}),(0,t.jsx)(a.TabsContent,{value:c,className:"mt-3",children:0===m.length?(0,t.jsxs)("div",{"data-testid":"tools-page-empty",className:"text-muted-foreground flex flex-col items-center justify-center py-12 text-center",children:[(0,t.jsx)(r.Wrench,{className:"mb-2 h-6 w-6 opacity-20"}),(0,t.jsx)("p",{className:"text-xs",children:"No tools in this category."})]}):(0,t.jsx)("div",{"data-testid":"tools-page-grid",className:"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4",children:m.map(e=>(0,t.jsx)(I,{tool:e,onRefresh:u},e.id))})})]})]})}e.s(["ToolsPageClient",()=>A],44412)}]);