flujo-ai 3.40.0 → 3.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (278) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +400 -384
  3. package/.next/app-path-routes-manifest.json +53 -53
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +33 -33
  6. package/.next/react-loadable-manifest.json +9 -9
  7. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/_not-found.html +1 -1
  9. package/.next/server/app/_not-found.rsc +3 -3
  10. package/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/flow/[id]/convert-process-to-subflow/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/flow/[id]/versions/[versionId]/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/flow/[id]/versions/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/flow/assist/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/flow/generator/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/mcp/app-sandbox/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/mcp/flujo/authoring/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/mcp/flujo/automation/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/mcp/flujo/flows/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/mcp/flujo/resources/read/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/mcp/flujo/resources/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/mcp/flujo/servers/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/mcp/flujo/state/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/mcp/flujo/tools/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/mcp/oauth-capability/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
  66. package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/packages/build/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/packages/derive-secrets/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/packages/install/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/packages/install/status/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/packages/installed/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/packages/resolve/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/packages/scan-targets/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/packages/search/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/packages/uninstall/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/registry/auth/resend/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/registry/auth/reset/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/registry/auth/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/registry/feedback/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/registry/oauth/callback/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/registry/oauth/initiate/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/registry/packages/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/registry/publish/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/registry/settings/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/runs/active/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/setup/ai-cli/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/statistics/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/telemetry/daily-active/route.js +1 -1
  97. package/.next/server/app/api/telemetry/daily-active/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/automation/triggers/page.js +1 -1
  102. package/.next/server/app/automation/triggers/page.js.nft.json +1 -1
  103. package/.next/server/app/automation/triggers/page_client-reference-manifest.js +1 -1
  104. package/.next/server/app/automation/triggers.html +1 -1
  105. package/.next/server/app/automation/triggers.rsc +4 -4
  106. package/.next/server/app/automation/waves/page_client-reference-manifest.js +1 -1
  107. package/.next/server/app/automation/waves.html +1 -1
  108. package/.next/server/app/automation/waves.rsc +4 -4
  109. package/.next/server/app/chat/page.js +2 -2
  110. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  111. package/.next/server/app/chat.html +1 -1
  112. package/.next/server/app/chat.rsc +4 -4
  113. package/.next/server/app/docs/page.js +3 -3
  114. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  115. package/.next/server/app/docs.html +1 -1
  116. package/.next/server/app/docs.rsc +4 -4
  117. package/.next/server/app/executions/page.js +1 -1
  118. package/.next/server/app/executions/page.js.nft.json +1 -1
  119. package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
  120. package/.next/server/app/executions.html +1 -1
  121. package/.next/server/app/executions.rsc +4 -4
  122. package/.next/server/app/flows/page.js +5 -3
  123. package/.next/server/app/flows/page.js.nft.json +1 -1
  124. package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  125. package/.next/server/app/flows.html +1 -1
  126. package/.next/server/app/flows.rsc +4 -4
  127. package/.next/server/app/index.html +1 -1
  128. package/.next/server/app/index.rsc +4 -4
  129. package/.next/server/app/mcp/page.js +73 -44
  130. package/.next/server/app/mcp/page.js.nft.json +1 -1
  131. package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
  132. package/.next/server/app/mcp-flows/route.js +1 -1
  133. package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
  135. package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/mcp.html +1 -1
  137. package/.next/server/app/mcp.rsc +4 -4
  138. package/.next/server/app/models/page.js +7 -7
  139. package/.next/server/app/models/page_client-reference-manifest.js +1 -1
  140. package/.next/server/app/packages/page.js +1 -1
  141. package/.next/server/app/packages/page_client-reference-manifest.js +1 -1
  142. package/.next/server/app/packages.html +1 -1
  143. package/.next/server/app/packages.rsc +4 -4
  144. package/.next/server/app/page.js +2 -2
  145. package/.next/server/app/page_client-reference-manifest.js +1 -1
  146. package/.next/server/app/settings/page.js +2 -2
  147. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  148. package/.next/server/app/settings.html +1 -1
  149. package/.next/server/app/settings.rsc +4 -4
  150. package/.next/server/app/statistics/page.js +2 -2
  151. package/.next/server/app/statistics/page_client-reference-manifest.js +1 -1
  152. package/.next/server/app/statistics.html +1 -1
  153. package/.next/server/app/statistics.rsc +4 -4
  154. package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/v1/chat/conversations/[conversationId]/revert/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  167. package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/v1/chat/events/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
  170. package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
  171. package/.next/server/app/waves.html +1 -1
  172. package/.next/server/app/waves.rsc +4 -4
  173. package/.next/server/app-paths-manifest.json +53 -53
  174. package/.next/server/chunks/1227.js +1 -1
  175. package/.next/server/chunks/1403.js +2 -2
  176. package/.next/server/chunks/1539.js +1 -1
  177. package/.next/server/chunks/2069.js +1 -1
  178. package/.next/server/chunks/2372.js +1 -1
  179. package/.next/server/chunks/2828.js +2 -2
  180. package/.next/server/chunks/3422.js +1 -0
  181. package/.next/server/chunks/3945.js +3 -3
  182. package/.next/server/chunks/519.js +2 -2
  183. package/.next/server/chunks/5444.js +2 -2
  184. package/.next/server/chunks/5750.js +1 -1
  185. package/.next/server/chunks/5918.js +10 -10
  186. package/.next/server/chunks/6226.js +2 -2
  187. package/.next/server/chunks/9088.js +2 -2
  188. package/.next/server/chunks/9490.js +5 -0
  189. package/.next/server/chunks/9543.js +3 -3
  190. package/.next/server/chunks/9624.js +8 -8
  191. package/.next/server/middleware-build-manifest.js +1 -1
  192. package/.next/server/middleware-manifest.json +1 -1
  193. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  194. package/.next/server/pages/404.html +1 -1
  195. package/.next/server/pages/500.html +1 -1
  196. package/.next/server/server-reference-manifest.js +1 -1
  197. package/.next/server/server-reference-manifest.json +1 -1
  198. package/.next/static/chunks/{1161-19176c3e7c655121.js → 1161-563a8028f59f00de.js} +1 -1
  199. package/.next/static/chunks/1521-9ad145dcb8e3abfc.js +1 -0
  200. package/.next/static/chunks/1576.06797b29a19fa26c.js +1 -0
  201. package/.next/static/chunks/{4386-e9621d3c94969a68.js → 2005-f9d38c39f10c321f.js} +1 -1
  202. package/.next/static/chunks/2493-da85c47ef972c066.js +1 -0
  203. package/.next/static/chunks/361.c88d43436e974006.js +1 -0
  204. package/.next/static/chunks/3731-c18f48522b159d7f.js +1 -0
  205. package/.next/static/chunks/3781.5086bce03aa281f7.js +1 -0
  206. package/.next/static/chunks/3969-15a32253b112652c.js +1 -0
  207. package/.next/static/chunks/4167.2ce97ca450815df1.js +1 -0
  208. package/.next/static/chunks/4814-52b7254ab573a455.js +1 -0
  209. package/.next/static/chunks/4965.d401547984d71b7a.js +1 -0
  210. package/.next/static/chunks/5148-9174ba300221fd1b.js +1 -0
  211. package/.next/static/chunks/5417-fb7d3760cc288ab1.js +1 -0
  212. package/.next/static/chunks/5967-34735763d1b03ccc.js +1 -0
  213. package/.next/static/chunks/7260-743e4b0cc4211dcb.js +1 -0
  214. package/.next/static/chunks/7711-7323dabe7dc02311.js +1 -0
  215. package/.next/static/chunks/8124-f99060fe1dfc119e.js +1 -0
  216. package/.next/static/chunks/8135-7fe07a34a8c49967.js +1 -0
  217. package/.next/static/chunks/8529.6187e01de8e9a692.js +1 -0
  218. package/.next/static/chunks/9136-e9ee57cc581ddd50.js +1 -0
  219. package/.next/static/chunks/9140.9180b569c4b26168.js +1 -0
  220. package/.next/static/chunks/9195-6a18a5867bb76c64.js +1 -0
  221. package/.next/static/chunks/app/automation/triggers/{page-594a6294c58344bf.js → page-34b9a8a2e6f28c2f.js} +1 -1
  222. package/.next/static/chunks/app/automation/waves/{page-ce2fef4996cad8e6.js → page-fd4929ea308183b2.js} +1 -1
  223. package/.next/static/chunks/app/chat/page-fb8a33db7628ecd0.js +1 -0
  224. package/.next/static/chunks/app/docs/page-3e21583b1cd5d7ca.js +1 -0
  225. package/.next/static/chunks/app/executions/{page-fcc848de86714386.js → page-56ecca56c17c05d7.js} +1 -1
  226. package/.next/static/chunks/app/flows/page-8c1a656197b15894.js +1 -0
  227. package/.next/static/chunks/app/layout-6e2756704ddc9f39.js +1 -0
  228. package/.next/static/chunks/app/mcp/page-4c4390354fdd94c8.js +1 -0
  229. package/.next/static/chunks/app/models/error-ea477f0ad52f4dcb.js +1 -0
  230. package/.next/static/chunks/app/models/page-e237ac64a0f62c3d.js +1 -0
  231. package/.next/static/chunks/app/packages/page-8680e4bea6b7ea45.js +1 -0
  232. package/.next/static/chunks/app/page-6dca06b6b7667181.js +1 -0
  233. package/.next/static/chunks/app/settings/page-a5f7fedcbf9e3a7f.js +1 -0
  234. package/.next/static/chunks/app/statistics/page-f9f9627d1c1ff963.js +1 -0
  235. package/.next/static/chunks/app/waves/{page-5b53af3eb9409414.js → page-7529febc48eb473d.js} +1 -1
  236. package/.next/static/chunks/{webpack-9fbd3587b9ef4dca.js → webpack-f3df493faa0bd612.js} +1 -1
  237. package/.next/static/css/{400b1b927c3ffaf6.css → 9f9b7f1374ac2d01.css} +1 -1
  238. package/.next/trace +11 -11
  239. package/README.md +1 -1
  240. package/mcp-servers/bash/package.json +1 -1
  241. package/mcp-servers/browser/package.json +1 -1
  242. package/mcp-servers/filesystem/package.json +1 -1
  243. package/mcp-servers/flujo/package.json +1 -1
  244. package/package.json +5 -5
  245. package/.next/server/chunks/7508.js +0 -5
  246. package/.next/server/chunks/8598.js +0 -1
  247. package/.next/static/chunks/1521-1c98c9a56726e053.js +0 -1
  248. package/.next/static/chunks/1576.bc6ae6c9e6d939d8.js +0 -1
  249. package/.next/static/chunks/2005.300528b5119c2d38.js +0 -1
  250. package/.next/static/chunks/2499-92cd97ce4993999f.js +0 -1
  251. package/.next/static/chunks/361.51d642c530c84295.js +0 -1
  252. package/.next/static/chunks/3731-64070760ae44448f.js +0 -1
  253. package/.next/static/chunks/4814-31eb5f3b10c651c1.js +0 -1
  254. package/.next/static/chunks/4965.39e24b54c3c6ca58.js +0 -1
  255. package/.next/static/chunks/5967-59fde8c214c9ca9f.js +0 -1
  256. package/.next/static/chunks/6417.70056fe81ca21682.js +0 -1
  257. package/.next/static/chunks/7711-4b017720ec49c96d.js +0 -1
  258. package/.next/static/chunks/8124-94140ee1dd8ed87c.js +0 -1
  259. package/.next/static/chunks/8135-5b975b9014f8920b.js +0 -1
  260. package/.next/static/chunks/8529.b5a43e728bb5bb8a.js +0 -1
  261. package/.next/static/chunks/9001-4c27a608feddb878.js +0 -1
  262. package/.next/static/chunks/9136-9c415453ec02519c.js +0 -1
  263. package/.next/static/chunks/9140.6502327a2c098d33.js +0 -1
  264. package/.next/static/chunks/9195-3c9c4300e7505d9e.js +0 -1
  265. package/.next/static/chunks/9524-b9d2c7e4426edd07.js +0 -1
  266. package/.next/static/chunks/app/chat/page-203cb7bf21638ada.js +0 -1
  267. package/.next/static/chunks/app/docs/page-c466a58caf5e3336.js +0 -1
  268. package/.next/static/chunks/app/flows/page-172c759ca81ba02f.js +0 -1
  269. package/.next/static/chunks/app/layout-a6ca531683a518a7.js +0 -1
  270. package/.next/static/chunks/app/mcp/page-0a96e6b30e45b1e6.js +0 -1
  271. package/.next/static/chunks/app/models/error-1964203c5c6e7d0e.js +0 -1
  272. package/.next/static/chunks/app/models/page-ad1cbea6d3324966.js +0 -1
  273. package/.next/static/chunks/app/packages/page-dda48425be9fc137.js +0 -1
  274. package/.next/static/chunks/app/page-04189aa1b1318c2d.js +0 -1
  275. package/.next/static/chunks/app/settings/page-906c229c87011ead.js +0 -1
  276. package/.next/static/chunks/app/statistics/page-9b13a95549f438c0.js +0 -1
  277. /package/.next/static/{b1aMk0634gkkiunttd1SQ → utOrEUSzguWncIosxgCeR}/_buildManifest.js +0 -0
  278. /package/.next/static/{b1aMk0634gkkiunttd1SQ → utOrEUSzguWncIosxgCeR}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7177],{1877:(e,t,r)=>{"use strict";r.d(t,{Hm:()=>o,xc:()=>a,yo:()=>i});let n=["key","secret","token","password"],a=e=>n.some(t=>e.toLowerCase().includes(t)),o=e=>a(e)||"authorization"===e.trim().toLowerCase(),i=e=>{if(!e)return e;if(e.includes("_-_-_")){let t=e.split("_-_-_");return 3===t.length?t[2]:e}let t=/^mcp_(.+)_[0-9a-z]+$/.exec(e);if(t&&t[1])return t[1];let r=e.indexOf("__");return r>0&&r+2<e.length?e.slice(r+2):e}},9164:(e,t,r)=>{"use strict";r.r(t),r.d(t,{StorageProvider:()=>p,default:()=>h,useStorage:()=>u});var n=r(95155),a=r(12115),o=r(29692),i=r(1877),s=r(73288),l=r(31373);let c=(0,s.h)("frontend/contexts/StorageContext"),d=(0,a.createContext)({setKey:async()=>{},changeKey:async()=>!1,verifyKey:async()=>!1,isEncryptionInitialized:async()=>!1,globalEnvVars:{},setGlobalEnvVars:async()=>{},deleteGlobalEnvVar:async()=>{},encryptValue:async()=>null,decryptValue:async()=>null,isUserEncryptionEnabled:async()=>!1,isLoading:!0,settings:{speech:{enabled:!0},update:{checkOnStartup:!1}},settingsHydrated:!1,updateSettings:async()=>{}}),u=()=>(0,a.useContext)(d),p=e=>{let{children:t}=e,[r,s]=(0,a.useState)(!1),[u,p]=(0,a.useState)(!1),[h,y]=(0,a.useState)({}),[g,m]=(0,a.useState)({speech:{enabled:!0},update:{checkOnStartup:!1}}),f=(0,a.useCallback)(async()=>{c.debug("isEncryptionInitialized: Entering method");try{let e=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"check_initialized"})});if(!e.ok)throw Error("Failed to check encryption status");let t=await e.json();return!0===t.initialized}catch(e){return c.warn("isEncryptionInitialized: Failed to check encryption status:",e),!1}},[]),b=(0,a.useCallback)(async e=>{c.debug("setKey: Entering method");try{if(!(await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"initialize",password:e})})).ok)throw Error("Failed to set encryption key")}catch(e){c.warn("setKey: Failed to set encryption key:",e)}},[]),v=(0,a.useCallback)(async(e,t)=>{c.debug("changeKey: Entering method");try{let r=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"change_password",oldPassword:e,newPassword:t})});if(!r.ok)throw Error("Failed to change encryption key");let n=await r.json();if(n.success&&sessionStorage.getItem("encryption_token")){let e=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"authenticate",password:t})});if(e.ok){let t=await e.json();t.success&&t.token&&(sessionStorage.setItem("encryption_token",t.token),sessionStorage.setItem("encryption_authenticated","true"),sessionStorage.removeItem("encryption_key"))}}return!0===n.success}catch(e){return c.warn("changeKey: Failed to change encryption key:",e),!1}},[]),E=(0,a.useCallback)(async e=>{c.debug("verifyKey: Entering method");try{let t=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"verify_password",password:e})});if(!t.ok)throw Error("Failed to verify encryption key");let r=await t.json();return r.valid&&r.token&&(sessionStorage.setItem("encryption_token",r.token),sessionStorage.setItem("encryption_authenticated","true"),sessionStorage.removeItem("encryption_key")),!0===r.valid}catch(e){return c.warn("verifyKey: Failed to verify encryption key:",e),!1}},[]),w=(0,a.useCallback)(async()=>{let e={speech:{enabled:!0},update:{checkOnStartup:!1}};try{var t;let r=await fetch("/api/storage?key=".concat(encodeURIComponent(o.Zg.SPEECH_SETTINGS),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(e))));if(!r.ok)return void c.debug("loadSettings: settings read not ok, keeping defaults",{status:r.status});let n=await r.json();c.debug("Loaded settings from storage",{settings:n.value}),m(null!=(t=n.value)?t:e),p(!0)}catch(e){c.warn("loadSettings: failed to load settings:",e)}},[]);(0,a.useEffect)(()=>{let e=()=>{c.info("Encryption unlocked signal received; reloading settings"),w()};return window.addEventListener(l.ZB,e),()=>window.removeEventListener(l.ZB,e)},[w]),(0,a.useEffect)(()=>{(async()=>{c.debug("loadData: Entering method");try{c.info("Calling initialization API to verify storage");let e=await fetch("/api/init");if(e.ok)c.info("Storage initialization completed successfully");else{let t=await e.json();c.warn("Storage initialization warning:",t.error)}await f()||await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"initialize_default"})});let t=await fetch("/api/env?includeSecrets=false");if(t.ok){let e=await t.json();c.debug("Loaded environment variables",{count:Object.keys(e.variables||{}).length}),y(e.variables||{})}else c.error("loadData: Failed to load environment variables"),y({});await w(),s(!0)}catch(e){c.error("loadData: Error loading data:",e),s(!0)}})()},[f,w]);let _=(0,a.useCallback)(async(e,t)=>{c.debug("encryptValue: Entering method");try{let r=sessionStorage.getItem("encryption_token"),n=sessionStorage.getItem("encryption_key"),a={action:"encrypt",data:e};r?a.token=r:t?a.password=t:n&&(a.password=n);let o=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!o.ok)throw Error("Failed to encrypt value");return(await o.json()).result}catch(e){return c.warn("encryptValue: Failed to encrypt value:",e),null}},[]),k=(0,a.useCallback)(async(e,t)=>(c.debug("decryptValue: Entering method - THIS METHOD IS DEPRECATED"),c.warn("decryptValue: Frontend decryption is deprecated for security reasons"),null),[]),S=(0,a.useCallback)(async()=>{c.debug("isUserEncryptionEnabled: Entering method");try{let e=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"check_user_encryption"})});if(!e.ok)throw Error("Failed to check user encryption status");let t=await e.json();return!0===t.userEncryption}catch(e){return c.warn("isUserEncryptionEnabled: Failed to check user encryption status:",e),!1}},[]),x=(0,a.useCallback)(async e=>{c.debug("setGlobalEnvVars: Entering method");try{await f()||await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"initialize_default"})});let t=await fetch("/api/env",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"setAll",variables:e})});if(!t.ok){let e=await t.json();c.error("setGlobalEnvVars: Failed to set environment variables:",e.error);return}let r={};for(let[t,n]of Object.entries(e)){let e="object"==typeof n&&null!==n&&"value"in n?n.value:n,a="object"==typeof n&&null!==n&&"metadata"in n?n.metadata:{isSecret:(0,i.xc)(t)};a.isSecret?r[t]={value:"********",metadata:a}:r[t]={value:e,metadata:a}}y(r)}catch(e){c.error("setGlobalEnvVars: Error setting environment variables:",e)}},[f]),T=(0,a.useCallback)(async e=>{c.debug("deleteGlobalEnvVar: Deleting environment variable: ".concat(e));try{let t=await fetch("/api/env",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"delete",key:e})});if(!t.ok){let e=await t.json();c.error("deleteGlobalEnvVar: Failed to delete environment variable:",e.error);return}y(t=>{let r={...t};return delete r[e],r})}catch(e){c.error("deleteGlobalEnvVar: Error deleting environment variable:",e)}},[]),C=(0,a.useCallback)(async e=>{c.debug("updateSettings: Updating settings",{newSettings:e});try{await (0,o.VH)(o.Zg.SPEECH_SETTINGS,e),m(e)}catch(e){c.error("updateSettings: Error updating settings:",e)}},[]);return(0,n.jsx)(d.Provider,{value:{setKey:b,changeKey:v,verifyKey:E,isEncryptionInitialized:f,globalEnvVars:h,setGlobalEnvVars:x,deleteGlobalEnvVar:T,encryptValue:_,decryptValue:k,isUserEncryptionEnabled:S,isLoading:!r,settings:g,settingsHydrated:u,updateSettings:C},children:t})},h=d},11604:(e,t,r)=>{"use strict";r.d(t,{default:()=>T});var n=r(95155),a=r(12115),o=r(67909),i=r(26796);let s=(0,o.default)(()=>r.e(4965).then(r.bind(r,64965)),{loadableGenerated:{webpack:()=>[64965]},ssr:!1,loading:()=>null});function l(){let{livingWorldEnabled:e,themeHydrated:t,visualStyle:r}=(0,i.useTheme)();return t&&e&&"modern"===r?(0,n.jsx)(s,{}):null}var c=r(20063),d=r(9164),u=r(38581);function p(e){var t;let{children:r}=e,n=(0,c.usePathname)(),{settings:o,settingsHydrated:s}=(0,d.useStorage)(),{visualStyle:l}=(0,i.useTheme)(),p=(0,a.useRef)(null),h=s&&(null==(t=o.experimental)?void 0:t.enabled)===!0&&"modern"===l;return(0,a.useEffect)(()=>{let e=p.current;if(p.current=n,!h)return;let t=document.getElementById("main-content");if(!t||"function"!=typeof t.animate)return;let r="function"==typeof window.matchMedia?window.matchMedia("(prefers-reduced-motion: reduce)"):null,a=null,o=()=>{null==a||a.cancel(),a=null};if(!(null==r?void 0:r.matches)){let r=function(e,t){if(!e||e===t)return{x:0,y:12};let r=(0,u.X)(e),n=(0,u.X)(t),a=r.x-n.x,o=r.y-n.y,i=Math.hypot(a,o);return i?{x:Math.round(a/i*18),y:Math.round(o/i*12)}:{x:0,y:8}}(e,n);(a=t.animate([{opacity:.36,transform:"translate3d(".concat(r.x,"px, ").concat(r.y,"px, 0) scale(0.992)"),filter:"blur(4px)"},{opacity:1,transform:"translate3d(0, 0, 0) scale(1)",filter:"blur(0)"}],{duration:e?460:520,easing:"cubic-bezier(0.22, 1, 0.36, 1)",fill:"both"})).addEventListener("finish",o,{once:!0})}let i=e=>{e.matches&&o()};return null==r||r.addEventListener("change",i),()=>{null==r||r.removeEventListener("change",i),o()}},[h,n]),r}var h=r(73288),y=r(36773);let g=(0,h.h)("frontend/components/AppWrapper");function m(e){let{message:t="shell.loading.preparing",compact:r=!1}=e,{t:a}=(0,y.s9)(),o=a(t);return r?(0,n.jsx)("div",{"aria-label":o,style:{height:"var(--app-bar-height)",borderBottom:"1px solid var(--border)",background:"var(--surface-glass)",backdropFilter:"blur(20px)"}}):(0,n.jsx)("div",{className:"app-loading",role:"status","aria-live":"polite",children:(0,n.jsxs)("div",{className:"app-loading__content",children:[(0,n.jsx)("div",{className:"app-loading__mark","aria-hidden":"true",children:(0,n.jsx)("span",{children:"F"})}),(0,n.jsx)("span",{children:o})]})})}let f=(0,o.default)(()=>Promise.resolve().then(r.bind(r,26796)).then(e=>e.ThemeProvider),{loadableGenerated:{webpack:()=>[26796]},ssr:!1,loading:()=>(0,n.jsx)(m,{message:"shell.loading.theme"})}),b=(0,o.default)(()=>Promise.resolve().then(r.bind(r,9164)).then(e=>e.StorageProvider),{loadableGenerated:{webpack:()=>[9164]},ssr:!1,loading:()=>(0,n.jsx)(m,{message:"shell.loading.workspace"})}),v=(0,o.default)(()=>Promise.all([r.e(4754),r.e(7758),r.e(3392),r.e(981),r.e(1983),r.e(1871),r.e(5954),r.e(9562),r.e(3816),r.e(3272),r.e(155),r.e(4122),r.e(5962),r.e(3781),r.e(760),r.e(4167)]).then(r.bind(r,4167)),{loadableGenerated:{webpack:()=>[4167]},ssr:!1,loading:()=>(0,n.jsx)(m,{message:"shell.loading.navigation",compact:!0})}),E=(0,o.default)(()=>Promise.all([r.e(4754),r.e(7758),r.e(3392),r.e(981),r.e(1983),r.e(1871),r.e(9562),r.e(3272),r.e(8529)]).then(r.bind(r,23217)),{loadableGenerated:{webpack:()=>[23217]},ssr:!1,loading:()=>null}),w=(0,o.default)(()=>r.e(1576).then(r.bind(r,69195)).then(e=>e.TourProvider),{loadableGenerated:{webpack:()=>[69195]},ssr:!1,loading:()=>null}),_=(0,o.default)(()=>Promise.all([r.e(4754),r.e(7758),r.e(3392),r.e(1983),r.e(1871),r.e(2005),r.e(9140)]).then(r.bind(r,19140)),{loadableGenerated:{webpack:()=>[19140]},ssr:!1,loading:()=>null}),k=(0,o.default)(()=>Promise.all([r.e(4754),r.e(7758),r.e(3392),r.e(981),r.e(1983),r.e(1871),r.e(3776),r.e(361)]).then(r.bind(r,361)),{loadableGenerated:{webpack:()=>[361]},ssr:!1,loading:()=>null});class S extends a.Component{static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(e){g.error("AppWrapper error boundary caught an error:",e)}render(){return this.state.hasError?(0,n.jsx)(x,{}):this.props.children}constructor(e){super(e),this.state={hasError:!1}}}function x(){let{t:e}=(0,y.s9)();return(0,n.jsx)("div",{className:"app-loading",children:(0,n.jsxs)("div",{className:"premium-surface",style:{width:"min(92vw, 520px)",padding:"42px",borderRadius:"28px",textAlign:"center"},children:[(0,n.jsx)("div",{className:"app-loading__mark",style:{margin:"0 auto 24px"},"aria-hidden":"true",children:(0,n.jsx)("span",{children:"!"})}),(0,n.jsx)("h2",{style:{margin:"0 0 10px",letterSpacing:"-0.035em"},children:e("shell.error.title")}),(0,n.jsx)("p",{style:{margin:"0 auto 24px",maxWidth:380,color:"var(--text-secondary)"},children:e("shell.error.body")}),(0,n.jsx)("button",{onClick:()=>window.location.reload(),style:{minHeight:46,padding:"0 22px",border:0,borderRadius:14,cursor:"pointer",color:"#fff",background:"linear-gradient(135deg, #9b8cff, #6253e8 55%, #18b8d7)",boxShadow:"0 14px 34px rgba(102, 87, 245, 0.32)",fontWeight:700},children:e("shell.error.reload")})]})})}function T(e){let{children:t}=e;return g.debug("Rendering AppWrapper"),(0,n.jsx)(y.CY,{children:(0,n.jsx)(S,{children:(0,n.jsx)(a.Suspense,{fallback:(0,n.jsx)(m,{}),children:(0,n.jsx)(f,{children:(0,n.jsx)(b,{children:(0,n.jsx)(w,{children:(0,n.jsx)(C,{children:t})})})})})})})}function C(e){let{children:t}=e,{t:r}=(0,y.s9)();return(0,n.jsxs)("div",{className:"app-shell",children:[(0,n.jsx)("a",{className:"skip-link",href:"#main-content",children:r("shell.skipToContent")}),(0,n.jsx)(l,{}),(0,n.jsxs)(a.Suspense,{fallback:(0,n.jsx)(m,{message:"shell.loading.navigation",compact:!0}),children:[(0,n.jsx)(v,{}),(0,n.jsx)(E,{}),(0,n.jsx)(k,{})]}),(0,n.jsx)("main",{id:"main-content",className:"app-main",tabIndex:-1,children:(0,n.jsx)(p,{children:t})}),(0,n.jsx)(_,{})]})}},13673:()=>{},27156:(e,t,r)=>{"use strict";r.d(t,{Z:()=>n});var n=function(e){return e.MODELS="models",e.FLOWS="flows",e.CHAT_HISTORY="history",e.THEME="theme",e.THEME_STYLE="theme_style",e.LIVING_WORLD_ENABLED="living_world_enabled",e.ENCRYPTION_KEY="encryption_key",e.MCP_SERVERS="mcp_servers",e.GLOBAL_ENV_VARS="global_env_vars",e.CURRENT_CONVERSATION_ID="current_conversation_id",e.SELECTED_FLOW_ID="selected_flow_id",e.LAST_PICKED_FLOW_ID="last_picked_flow_id",e.SPEECH_SETTINGS="speech_settings",e.SPOTLIGHT_SERVERS="spotlight_servers",e.PLANNED_EXECUTIONS="planned_executions",e.MCP_AUTO_INSTALL_SETTINGS="mcp_auto_install_settings",e.MCP_QUALITY_SETTINGS="mcp_quality_settings",e.RUN_RESOURCE_SETTINGS="run_resource_settings",e.KV_STORE_SETTINGS="kv_store_settings",e.PENDING_APPROVALS="pending_approvals",e.MCP_INTERNAL_OVERRIDES="mcp_internal_overrides",e.MCP_INTERNAL_SERVERS_MIGRATION_V1="mcp_internal_servers_migration_v1",e.MCP_INTERNAL_CAPABILITIES_MIGRATION_V2="mcp_internal_capabilities_migration_v2",e.MCP_INTERNAL_BROWSER_MIGRATION_V3="mcp_internal_browser_migration_v3",e.MCP_SHIPPED_SERVERS_MIGRATION_V4="mcp_shipped_servers_migration_v4",e.PACKAGE_INSTALLS="package_installs",e.EXPERIMENTAL_SETTINGS="experimental_settings",e.REGISTRY_ACCOUNT="registry_account",e.REGISTRY_SETTINGS="registry_settings",e.TELEMETRY_STATE="telemetry_state",e}({})},29692:(e,t,r)=>{"use strict";r.d(t,{Zg:()=>n.Z,YM:()=>l,VH:()=>s,Mj:()=>i});var n=r(27156),a=r(12115);let o=(0,r(73288).h)("utils/storage/frontend.ts");function i(e,t){o.verbose("useLocalStorage: Entering method");let[r,n]=(0,a.useState)(t),[i,s]=(0,a.useState)(!0),l=(0,a.useRef)(r);return(0,a.useEffect)(()=>{l.current=r},[r]),(0,a.useEffect)(()=>{(async()=>{o.verbose("loadValue: Entering method");try{let r=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t)))),a=await r.json();r.ok&&n(a.value)}catch(t){o.warn('Error reading storage key "'.concat(e,'":'),t)}finally{s(!1)}})()},[e]),[r,(0,a.useCallback)(async t=>{o.verbose("setValue: Entering method");try{let r=t instanceof Function?t(l.current):t;if(n(r),!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:r})})).ok)throw Error("Failed to save value")}catch(t){o.warn('Error setting storage key "'.concat(e,'":'),t)}},[e]),i]}let s=async(e,t)=>{o.verbose("saveItem: Entering method");try{if(!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:t})})).ok)throw Error("Failed to save item")}catch(e){throw o.error("Error saving to storage:",e),e}},l=async(e,t)=>{o.verbose("loadItem: Entering method");try{let r=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t))));if(!r.ok)throw Error("Failed to load item");return(await r.json()).value}catch(e){return o.error("Error loading from storage:",e),t}}},31373:(e,t,r)=>{"use strict";r.d(t,{UJ:()=>n,ZB:()=>a,bx:()=>i});let n="flujo:encryption-locked",a="flujo:encryption-unlocked",o=!1;function i(){if(o||"function"!=typeof window.fetch)return;o=!0;let e=window.fetch.bind(window);window.fetch=async function(){for(var t=arguments.length,r=Array(t),a=0;a<t;a++)r[a]=arguments[a];let o=await e(...r);return 423===o.status&&function(){try{sessionStorage.removeItem("encryption_authenticated"),sessionStorage.removeItem("encryption_token")}catch(e){}window.dispatchEvent(new CustomEvent(n))}(),o}}},36991:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,59742,23)),Promise.resolve().then(r.t.bind(r,3946,23)),Promise.resolve().then(r.t.bind(r,13673,23)),Promise.resolve().then(r.t.bind(r,72376,23)),Promise.resolve().then(r.bind(r,11604))},38581:(e,t,r)=>{"use strict";r.d(t,{D:()=>a,X:()=>i});var n=r(53868);let a={home:{id:"home",label:"River Overlook",eyebrow:"Welcome to FLUJO",x:50,y:46,zoom:1,accent:n.L.dark.resource,landmark:"overlook"},models:{id:"models",label:"Headwater Springs",eyebrow:"AI setup",x:14,y:23,zoom:1.14,accent:n.L.dark.mcp,landmark:"spring"},mcp:{id:"mcp",label:"Connector Harbor",eyebrow:"Connected apps",x:29,y:47,zoom:1.1,accent:n.L.light.resource,landmark:"harbor"},flows:{id:"flows",label:"Flowwright Workshop",eyebrow:"Flow builder",x:43,y:29,zoom:1.16,accent:n.L.dark.subflow,landmark:"workshop"},chat:{id:"chat",label:"Conversation Cove",eyebrow:"Talk",x:57,y:53,zoom:1.12,accent:n.L.dark.process,landmark:"cove"},automations:{id:"automations",label:"The Lockworks",eyebrow:"Automations",x:70,y:31,zoom:1.13,accent:n.L.light.trigger,landmark:"lockworks"},waves:{id:"waves",label:"Wave Observatory",eyebrow:"Automation timeline",x:85,y:52,zoom:1.17,accent:n.L.light.process,landmark:"observatory"},packages:{id:"packages",label:"Riverside Market",eyebrow:"Extensions",x:88,y:21,zoom:1.11,accent:n.L.light.subflow,landmark:"market"},statistics:{id:"statistics",label:"Current Gauge",eyebrow:"Activity",x:72,y:74,zoom:1.15,accent:n.L.dark.finish,landmark:"gauge"},docs:{id:"docs",label:"River Archive",eyebrow:"Help & docs",x:48,y:78,zoom:1.13,accent:n.L.dark.signal,landmark:"archive"},settings:{id:"settings",label:"Control House",eyebrow:"Preferences",x:24,y:70,zoom:1.15,accent:n.L.dark.start,landmark:"control-house"}},o=[{prefix:"/automation/waves",scene:"waves"},{prefix:"/waves",scene:"waves"},{prefix:"/automation/triggers",scene:"automations"},{prefix:"/executions",scene:"automations"},{prefix:"/automation",scene:"automations"},{prefix:"/models",scene:"models"},{prefix:"/mcp",scene:"mcp"},{prefix:"/flows",scene:"flows"},{prefix:"/chat",scene:"chat"},{prefix:"/packages",scene:"packages"},{prefix:"/statistics",scene:"statistics"},{prefix:"/docs",scene:"docs"},{prefix:"/settings",scene:"settings"}];function i(e){let t=function(e){let t=(null==e?void 0:e.trim().split(/[?#]/,1)[0])||"/",r=(t.startsWith("/")?t:"/".concat(t)).replace(/\/{2,}/g,"/");return r.length>1?r.replace(/\/+$/,""):r}(e),r=o.find(e=>{let{prefix:r}=e;return t===r||t.startsWith("".concat(r,"/"))});return r?a[r.scene]:a.home}},53868:(e,t,r)=>{"use strict";r.d(t,{L:()=>n,Z:()=>a});let n={light:{start:"#7E889E",process:"#6355E8",finish:"#15885A",mcp:"#129DB8",subflow:"#C67A13",resource:"#18AFA3",signal:"#9A78FF",trigger:"#EF5D8E"},dark:{start:"#B7C0D2",process:"#8B7CFF",finish:"#57D59B",mcp:"#31D2ED",subflow:"#F6BC66",resource:"#63D8CE",signal:"#C4B2FF",trigger:"#FF9ABD"}},a={resource:"#63D8CE",signal:"#C4B2FF",trigger:"#FF9ABD"}},72376:()=>{}},e=>{e.O(0,[6317,6714,5545,2678,8598,6420,5148,8135,8441,1255,7358],()=>e(e.s=36991)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[313],{1717:(e,t,r)=>{Promise.resolve().then(r.bind(r,79007))},12140:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var n=r(15485),a=r(95155);let l=(0,n.A)((0,a.jsx)("path",{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Clear")},15686:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var n=r(15485),a=r(95155);let l=(0,n.A)((0,a.jsx)("path",{d:"m19.81 14.99 1.19-.92-1.43-1.43-1.19.92zm-.45-4.72L21 9l-9-7-2.91 2.27 7.87 7.88zM3.27 1 2 2.27l4.22 4.22L3 9l1.63 1.27L12 16l2.1-1.63 1.43 1.43L12 18.54l-7.37-5.73L3 14.07l9 7 4.95-3.85L20.73 21 22 19.73z"}),"LayersClear")},21422:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var n=r(15485),a=r(95155);let l=(0,n.A)((0,a.jsx)("path",{d:"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2M9 6c0-1.66 1.34-3 3-3s3 1.34 3 3v2H9zm9 14H6V10h12zm-6-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2"}),"LockOutlined")},28466:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var n=r(15485),a=r(95155);let l=(0,n.A)((0,a.jsx)("path",{d:"M14.94 4.66h-4.72l2.36-2.36zm-4.69 14.71h4.66l-2.33 2.33zM6.1 6.27 1.6 17.73h1.84l.92-2.45h5.11l.92 2.45h1.84L7.74 6.27zm-1.13 7.37 1.94-5.18 1.94 5.18zm10.76 2.5h6.12v1.59h-8.53v-1.29l5.92-8.56h-5.88v-1.6h8.3v1.26z"}),"SortByAlpha")},30989:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var n=r(15485),a=r(95155);let l=(0,n.A)((0,a.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown")},47712:e=>{!function(){"use strict";var t={114:function(e){function t(e){if("string"!=typeof e)throw TypeError("Path must be a string. Received "+JSON.stringify(e))}function r(e,t){for(var r,n="",a=0,l=-1,s=0,o=0;o<=e.length;++o){if(o<e.length)r=e.charCodeAt(o);else if(47===r)break;else r=47;if(47===r){if(l===o-1||1===s);else if(l!==o-1&&2===s){if(n.length<2||2!==a||46!==n.charCodeAt(n.length-1)||46!==n.charCodeAt(n.length-2)){if(n.length>2){var i=n.lastIndexOf("/");if(i!==n.length-1){-1===i?(n="",a=0):a=(n=n.slice(0,i)).length-1-n.lastIndexOf("/"),l=o,s=0;continue}}else if(2===n.length||1===n.length){n="",a=0,l=o,s=0;continue}}t&&(n.length>0?n+="/..":n="..",a=2)}else n.length>0?n+="/"+e.slice(l+1,o):n=e.slice(l+1,o),a=o-l-1;l=o,s=0}else 46===r&&-1!==s?++s:s=-1}return n}var n={resolve:function(){for(var e,n,a="",l=!1,s=arguments.length-1;s>=-1&&!l;s--)s>=0?n=arguments[s]:(void 0===e&&(e=""),n=e),t(n),0!==n.length&&(a=n+"/"+a,l=47===n.charCodeAt(0));if(a=r(a,!l),l)if(a.length>0)return"/"+a;else return"/";return a.length>0?a:"."},normalize:function(e){if(t(e),0===e.length)return".";var n=47===e.charCodeAt(0),a=47===e.charCodeAt(e.length-1);return(0!==(e=r(e,!n)).length||n||(e="."),e.length>0&&a&&(e+="/"),n)?"/"+e:e},isAbsolute:function(e){return t(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0==arguments.length)return".";for(var e,r=0;r<arguments.length;++r){var a=arguments[r];t(a),a.length>0&&(void 0===e?e=a:e+="/"+a)}return void 0===e?".":n.normalize(e)},relative:function(e,r){if(t(e),t(r),e===r||(e=n.resolve(e))===(r=n.resolve(r)))return"";for(var a=1;a<e.length&&47===e.charCodeAt(a);++a);for(var l=e.length,s=l-a,o=1;o<r.length&&47===r.charCodeAt(o);++o);for(var i=r.length-o,c=s<i?s:i,d=-1,p=0;p<=c;++p){if(p===c){if(i>c){if(47===r.charCodeAt(o+p))return r.slice(o+p+1);else if(0===p)return r.slice(o+p)}else s>c&&(47===e.charCodeAt(a+p)?d=p:0===p&&(d=0));break}var m=e.charCodeAt(a+p);if(m!==r.charCodeAt(o+p))break;47===m&&(d=p)}var u="";for(p=a+d+1;p<=l;++p)(p===l||47===e.charCodeAt(p))&&(0===u.length?u+="..":u+="/..");return u.length>0?u+r.slice(o+d):(o+=d,47===r.charCodeAt(o)&&++o,r.slice(o))},_makeLong:function(e){return e},dirname:function(e){if(t(e),0===e.length)return".";for(var r=e.charCodeAt(0),n=47===r,a=-1,l=!0,s=e.length-1;s>=1;--s)if(47===(r=e.charCodeAt(s))){if(!l){a=s;break}}else l=!1;return -1===a?n?"/":".":n&&1===a?"//":e.slice(0,a)},basename:function(e,r){if(void 0!==r&&"string"!=typeof r)throw TypeError('"ext" argument must be a string');t(e);var n,a=0,l=-1,s=!0;if(void 0!==r&&r.length>0&&r.length<=e.length){if(r.length===e.length&&r===e)return"";var o=r.length-1,i=-1;for(n=e.length-1;n>=0;--n){var c=e.charCodeAt(n);if(47===c){if(!s){a=n+1;break}}else -1===i&&(s=!1,i=n+1),o>=0&&(c===r.charCodeAt(o)?-1==--o&&(l=n):(o=-1,l=i))}return a===l?l=i:-1===l&&(l=e.length),e.slice(a,l)}for(n=e.length-1;n>=0;--n)if(47===e.charCodeAt(n)){if(!s){a=n+1;break}}else -1===l&&(s=!1,l=n+1);return -1===l?"":e.slice(a,l)},extname:function(e){t(e);for(var r=-1,n=0,a=-1,l=!0,s=0,o=e.length-1;o>=0;--o){var i=e.charCodeAt(o);if(47===i){if(!l){n=o+1;break}continue}-1===a&&(l=!1,a=o+1),46===i?-1===r?r=o:1!==s&&(s=1):-1!==r&&(s=-1)}return -1===r||-1===a||0===s||1===s&&r===a-1&&r===n+1?"":e.slice(r,a)},format:function(e){var t,r;if(null===e||"object"!=typeof e)throw TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return t=e.dir||e.root,r=e.base||(e.name||"")+(e.ext||""),t?t===e.root?t+r:t+"/"+r:r},parse:function(e){t(e);var r,n={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return n;var a=e.charCodeAt(0),l=47===a;l?(n.root="/",r=1):r=0;for(var s=-1,o=0,i=-1,c=!0,d=e.length-1,p=0;d>=r;--d){if(47===(a=e.charCodeAt(d))){if(!c){o=d+1;break}continue}-1===i&&(c=!1,i=d+1),46===a?-1===s?s=d:1!==p&&(p=1):-1!==s&&(p=-1)}return -1===s||-1===i||0===p||1===p&&s===i-1&&s===o+1?-1!==i&&(0===o&&l?n.base=n.name=e.slice(1,i):n.base=n.name=e.slice(o,i)):(0===o&&l?(n.name=e.slice(1,s),n.base=e.slice(1,i)):(n.name=e.slice(o,s),n.base=e.slice(o,i)),n.ext=e.slice(s,i)),o>0?n.dir=e.slice(0,o-1):l&&(n.dir="/"),n},sep:"/",delimiter:":",win32:null,posix:null};n.posix=n,e.exports=n}},r={};function n(e){var a=r[e];if(void 0!==a)return a.exports;var l=r[e]={exports:{}},s=!0;try{t[e](l,l.exports,n),s=!1}finally{s&&delete r[e]}return l.exports}n.ab="//",e.exports=n(114)}()},48363:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var n=r(15485),a=r(95155);let l=(0,n.A)((0,a.jsx)("path",{d:"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1M8 13h8v-2H8zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5"}),"Link")},48563:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var n=r(15485),a=r(95155);let l=(0,n.A)((0,a.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-2h2zm0-4h-2V7h2z"}),"Error")},52397:(e,t,r)=>{"use strict";r.d(t,{RJ:()=>a,gF:()=>n});let n="masked:********",a="********"},61563:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var n=r(15485),a=r(95155);let l=(0,n.A)((0,a.jsx)("path",{d:"M5 20h14v-2H5zM19 9h-4V3H9v6H5l7 7z"}),"Download")},64419:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var n=r(15485),a=r(95155);let l=(0,n.A)((0,a.jsx)("path",{d:"M3 18h6v-2H3zM3 6v2h18V6zm0 7h12v-2H3z"}),"Sort")},68212:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var n=r(15485),a=r(95155);let l=(0,n.A)((0,a.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7M2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2m4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3z"}),"VisibilityOff")},71892:(e,t,r)=>{"use strict";r.d(t,{A:()=>T});var n=r(95155),a=r(12115),l=r(2300),s=r(94049),o=r(25635),i=r(91871),c=r(80777),d=r(33077),p=r(9562),m=r(56422),u=r(28548),h=r(99944),g=r(22822),x=r(41983),f=r(56682),v=r(73288),b=r(9164),y=r(86946),j=r(21422),A=r(12857),w=r(48363),C=r(4484),S=r(1877),k=r(52397),E=r(36773);let z=(0,v.h)("frontend/components/mcp/MCPEnvManager/EnvEditor"),P=/^\$\{global:([A-Za-z0-9_.-]+)\}$/,T=e=>{let{serverName:t,initialEnv:r,onSave:v,onDelete:T,onServerRestart:M}=e,{t:I}=(0,E.s9)(),{globalEnvVars:R}=(0,b.useStorage)(),[N,F]=(0,a.useState)([]),[O,W]=(0,a.useState)(!1),[_,D]=(0,a.useState)(!1),[U,H]=(0,a.useState)(!1),[B,L]=(0,a.useState)(null);(0,a.useEffect)(()=>{z.debug("Initializing environment variables for server: ".concat(t),{variableCount:Object.keys(r).length}),F(Object.entries(r).map(e=>{let[t,r]=e,n="object"==typeof r&&null!==r&&"value"in r?r.value:r,a="object"==typeof r&&null!==r&&"metadata"in r?r.metadata:{isSecret:(0,S.xc)(t)},l=n.match(P);if(l){let e=l[1];return{key:t,value:n,isSecret:a.isSecret,isBound:!0,boundTo:e}}let s="string"==typeof n&&(n.startsWith("encrypted:")||n.startsWith("encrypted_failed:"));return{key:t,value:s?k.gF:n,isSecret:a.isSecret,isEncrypted:s}}))},[r]);let J=async e=>{z.debug("Removing environment variable at index: ".concat(e));let r=N[e];if("Global"===t&&T&&r.key)try{await T(r.key),F(N.filter((t,r)=>r!==e))}catch(e){z.error("Failed to delete environment variable: ".concat(r.key),e)}else F(N.filter((t,r)=>r!==e)),W(!0)},$=(e,t,r)=>{let n=[...N];if("isSecret"===t){let t=n[e];t.isSecret&&!r?n[e]={...t,isSecret:r,value:"",isEncrypted:!1,showWarning:!0}:n[e]={...t,isSecret:r}}else{let a={...n[e],[t]:r,isSecret:"key"===t?(0,S.xc)(r):n[e].isSecret};if("key"===t&&(a.isValidKey=""===r||/^[a-zA-Z0-9_]+$/.test(r)),"value"===t){let t=r.match(P);a.isBound=!!t,a.boundTo=null==t?void 0:t[1],n[e].isEncrypted&&(a.isEncrypted=!1),n[e].showWarning&&r&&(a.showWarning=!1)}n[e]=a}F(n),W(!0)},G=async()=>{if(N.some(e=>""!==e.key&&!1===e.isValidKey))return void z.error("Cannot save: Some variable names contain invalid characters");z.debug("Saving environment variables for server: ".concat(t),{variableCount:N.length}),D(!0);try{let e=N.reduce((e,t)=>{let{key:r,value:n,isBound:a,boundTo:l,isSecret:s,isEncrypted:o}=t;return r&&(a&&l?e[r]={value:"${global:".concat(l,"}"),metadata:{isSecret:s}}:s&&n===k.gF||(e[r]={value:n,metadata:{isSecret:s}})),e},{});await v(e),W(!1),M&&"Global"!==t&&(z.debug("Restarting server after env variable changes: ".concat(t)),await M(t))}catch(e){z.error("Failed to save environment variables:",e)}D(!1)};return(0,n.jsxs)(l.A,{sx:{p:3,borderRadius:2,border:1,borderColor:e=>"dark"===e.palette.mode?"#3a3a3a":"#e5e7eb"},children:[(0,n.jsxs)(s.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:3},children:[(0,n.jsx)(o.A,{variant:"h6",sx:{fontWeight:"semibold"},children:I("mcp.env.title",{server:t})}),(0,n.jsx)(i.A,{variant:"contained",color:"primary",size:"small",startIcon:(0,n.jsx)(y.A,{}),onClick:()=>{z.debug("Adding new environment variable"),F([...N,{key:"",value:"",isSecret:!1}]),W(!0)},children:I("mcp.env.add")})]}),(0,n.jsx)(c.A,{spacing:3,children:N.map((e,t)=>{var r;return(0,n.jsxs)(d.Ay,{container:!0,spacing:2,alignItems:"flex-start",children:[(0,n.jsx)(d.Ay,{item:!0,xs:12,sm:5,children:(0,n.jsx)(p.A,{fullWidth:!0,placeholder:I("mcp.env.name"),value:e.key,onChange:e=>$(t,"key",e.target.value),error:!1===e.isValidKey,helperText:!1===e.isValidKey?I("mcp.env.invalidName"):"",size:"small"})}),(0,n.jsx)(d.Ay,{item:!0,xs:12,sm:5,children:(0,n.jsx)(p.A,{fullWidth:!0,type:e.isSecret?"password":"text",placeholder:e.showWarning?I("mcp.env.reenter"):I("mcp.env.value"),value:e.value,onChange:e=>$(t,"value",e.target.value),InputProps:{readOnly:e.isBound,startAdornment:e.isEncrypted?(0,n.jsx)(m.A,{position:"start",children:(0,n.jsx)(j.A,{fontSize:"small",titleAccess:I("mcp.env.encrypted")})}):null,endAdornment:e.isBound?(0,n.jsx)(m.A,{position:"end",children:(0,n.jsx)(u.A,{size:"small",label:I("mcp.env.bound",{name:null!=(r=e.boundTo)?r:""}),color:"primary",variant:"outlined",onDelete:()=>(e=>{z.debug("Unbinding variable at index: ".concat(e));let t=[...N];t[e]={...t[e],isBound:!1,boundTo:void 0},F(t),W(!0)})(t),deleteIcon:(0,n.jsx)(A.A,{fontSize:"small"})})}):null},error:e.showWarning,helperText:e.showWarning?I("mcp.env.reenterHelp"):"",size:"small",sx:{bgcolor:t=>e.isBound?"dark"===t.palette.mode?"#1a1a1a":"#f9fafb":t.palette.background.paper}})}),(0,n.jsx)(d.Ay,{item:!0,xs:12,sm:2,children:(0,n.jsxs)(s.default,{sx:{display:"flex",alignItems:"center",mt:.5},children:[(0,n.jsx)(h.A,{control:(0,n.jsx)(g.A,{checked:e.isSecret,onChange:e=>$(t,"isSecret",e.target.checked),size:"small"}),label:I("mcp.env.secret"),sx:{mr:1}}),!e.isBound&&(0,n.jsx)(x.A,{size:"small",color:"primary",onClick:()=>(e=>{z.debug("Opening bind modal for variable at index: ".concat(e)),L(e),H(!0)})(t),title:I("mcp.env.bind"),sx:{mr:1},children:(0,n.jsx)(w.A,{fontSize:"small"})}),(0,n.jsx)(x.A,{size:"small",color:"error",onClick:()=>J(t),title:I("mcp.env.remove"),children:(0,n.jsx)(C.A,{fontSize:"small"})})]})})]},t)})}),(0,n.jsx)(f.A,{open:U,onClose:()=>{H(!1),L(null)},children:(0,n.jsxs)(s.default,{sx:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",width:400,maxWidth:"90%",bgcolor:"background.paper",boxShadow:24,p:4,borderRadius:2},children:[(0,n.jsx)(o.A,{variant:"h6",sx:{mb:2},children:I("mcp.env.bindTitle")}),0===Object.keys(R).length?(0,n.jsx)(o.A,{color:"text.secondary",sx:{mb:2},children:I("mcp.env.noGlobals")}):(0,n.jsx)(s.default,{sx:{maxHeight:300,overflow:"auto",mb:2},children:Object.entries(R).map(e=>{let[t,r]=e;return(0,n.jsxs)(i.A,{fullWidth:!0,variant:"text",onClick:()=>(e=>{if(null!==B){z.debug("Binding variable at index ".concat(B," to global variable: ").concat(e));let t=[...N];t[B]={...t[B],isBound:!0,boundTo:e,value:"${global:".concat(e,"}")},F(t),H(!1),L(null),W(!0)}})(t),sx:{justifyContent:"space-between",textAlign:"left",mb:1,p:1,borderRadius:1},children:[(0,n.jsx)(o.A,{variant:"body2",children:t}),(0,n.jsx)(o.A,{variant:"caption",color:"text.secondary",children:r&&"object"==typeof r&&r.metadata&&r.metadata.isSecret?k.gF:r&&"object"==typeof r?r.value:r})]},t)})}),(0,n.jsx)(s.default,{sx:{display:"flex",justifyContent:"flex-end"},children:(0,n.jsx)(i.A,{variant:"outlined",onClick:()=>{H(!1),L(null)},children:I("mcp.env.cancel")})})]})}),O&&(0,n.jsx)(s.default,{sx:{display:"flex",justifyContent:"flex-end",mt:3},children:(0,n.jsx)(i.A,{variant:"contained",color:"success",onClick:G,disabled:_||N.some(e=>""!==e.key&&!1===e.isValidKey),children:_?I("mcp.env.saving"):I("mcp.env.save")})})]})}},79007:(e,t,r)=>{"use strict";r.r(t),r.d(t,{default:()=>r4});var n=r(95155),a=r(94049),l=r(12115),s=r(95906),o=r(94929),i=r(73288),c=r(25635),d=r(2300),p=r(33077),m=r(36773);let u=(0,i.h)("frontend/components/mcp/MCPServerManager/ServerList"),h=e=>{let{servers:t,isLoading:r,loadError:l,onServerSelect:i,onServerToggle:h,onServerRetry:g,onServerDelete:x,onServerEdit:f,selectionMode:v=!1,selectedServers:b=new Set,onServerSelectionChange:y,updates:j,onServerUpdated:A,folders:w=[],onServerSetFolder:C,onServerToggleFavorite:S}=e,{t:k}=(0,m.s9)();return(u.debug("Rendering ServerList",{serverCount:t.length,isLoading:r,hasError:!!l}),r)?(u.debug("Servers are loading"),(0,n.jsxs)(a.default,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",p:4},children:[(0,n.jsx)(o.default,{size:"large",color:"primary"}),(0,n.jsx)(c.A,{sx:{mt:2,color:"text.secondary"},children:k("mcp.list.loading")})]})):l?(u.warn("Error loading servers:",l),(0,n.jsx)(d.A,{sx:{p:3,bgcolor:"error.light",color:"error.contrastText",borderRadius:1},children:(0,n.jsx)(c.A,{color:"error",children:l})})):0===t.length?(0,n.jsx)(d.A,{sx:{p:3,textAlign:"center",borderRadius:1},children:(0,n.jsx)(c.A,{color:"text.secondary",children:k("mcp.list.empty")})}):(0,n.jsx)(p.Ay,{container:!0,spacing:2.5,children:t.map(e=>{let t="streamable"===e.transport&&void 0!==e.oauthTokens;return(0,n.jsx)(p.Ay,{item:!0,xs:12,md:6,lg:4,children:(0,n.jsx)(s.A,{name:e.name,status:e.status,path:e.rootPath,enabled:!e.disabled,transport:e.transport,onToggle:t=>h(e.name,t),onRetry:()=>g(e.name),onDelete:()=>x(e.name),onClick:()=>i(e.name),onEdit:()=>f(e),error:e.error,stderrOutput:e.stderrOutput,exposeAsMcpServer:e.exposeAsMcpServer,enableMcpApps:e.enableMcpApps,selectionMode:v,selected:b.has(e.name),onSelect:y?t=>y(e.name,t):void 0,hasOAuthTokens:t,updateInfo:e.rootPath?null==j?void 0:j[e.rootPath]:void 0,installCommand:e._installCommand,buildCommand:e._buildCommand,onUpdated:A?()=>A(e.name,e.rootPath):void 0,folder:e.folder,folders:w,onSetFolder:C?t=>C(e.name,t):void 0,favorite:e.favorite,onToggleFavorite:S?()=>S(e.name,!e.favorite):void 0,serverConfig:e})},e.name)})})};var g=r(22003),x=r(80007),f=r(80777),v=r(9562),b=r(91871),y=r(56422),j=r(41983),A=r(9352);let w=e=>{let{githubUrl:t,setGithubUrl:r,savePath:s,setSavePath:o,repoInfo:i,isValidating:d,parseCompleted:p,onValidate:u}=e,[h,g]=(0,l.useState)(""),{getThemeColor:w}=(0,A.Ic)(),{t:C}=(0,m.s9)();return(0,l.useEffect)(()=>{(async()=>{try{let e=await fetch("/api/cwd"),t=await e.json();t.success&&t.mcpServersDir?g(t.mcpServersDir):console.error("Failed to get mcp-servers directory path:",t.error)}catch(e){console.error("Error fetching current working directory:",e)}})()},[]),(0,n.jsxs)(f.A,{spacing:3,children:[(0,n.jsxs)(a.default,{children:[(0,n.jsx)(c.A,{variant:"subtitle2",gutterBottom:!0,children:C("mcp.github.repositoryUrl")}),(0,n.jsx)(v.A,{fullWidth:!0,value:t,onChange:e=>r(e.target.value),placeholder:C("mcp.github.repositoryUrl"),helperText:C("mcp.github.pasteUrl"),variant:"outlined",size:"small"}),(0,n.jsx)(a.default,{sx:{display:"flex",justifyContent:"flex-end",mt:1},children:(0,n.jsx)(b.A,{variant:"contained",color:p?"success":"primary",onClick:u,disabled:d,children:C(d?"mcp.github.validating":"mcp.github.parse")})})]}),(null==i?void 0:i.valid)&&(0,n.jsxs)(a.default,{children:[(0,n.jsx)(c.A,{variant:"subtitle2",gutterBottom:!0,children:C("mcp.github.saveWhere")}),(0,n.jsx)(v.A,{fullWidth:!0,value:s,onChange:e=>o(e.target.value),variant:"outlined",size:"small",InputProps:{endAdornment:(0,n.jsx)(y.A,{position:"end",children:(0,n.jsx)(j.A,{onClick:async()=>{try{let e=await window.showDirectoryPicker(),t=(h?"".concat(h,"/").concat(e.name):"".concat(e.name)).replace(/\\/g,"/");o(t)}catch(e){console.error("Failed to select folder:",e)}},edge:"end","aria-label":C("mcp.github.selectFolder"),children:(0,n.jsx)(x.A,{})})})}})]})]})},C=e=>{let{showCloneButton:t,isCloning:r,cloneCompleted:l,repoInfo:s,repoExists:o,onClone:i}=e,{t:c}=(0,m.s9)();return t?(0,n.jsxs)(a.default,{sx:{display:"flex",justifyContent:"flex-end",gap:2},children:[o&&(0,n.jsx)(b.A,{variant:"outlined",color:"warning",onClick:()=>{i(!0)},disabled:r||!s,children:c(r?"mcp.github.processing":"mcp.github.reclone")}),(0,n.jsx)(b.A,{variant:"contained",color:l?"success":"primary",onClick:()=>{i(!1)},disabled:r||!s,children:c(r?"mcp.github.processing":o?"mcp.github.useExisting":"mcp.github.clone")})]}):null};var S=r(22130);let k=(e,t)=>(0,S.Tl)("en",e,t),E=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:k;try{let r,n,a=new URL(e);if("github.com"!==a.hostname)throw Error(t("mcp.github.notGithub"));let l=e.match(/^https:\/\/github\.com\/([^\/]+)\/([^\/]+)\/(?:blob|tree)\/.*$/);if(l)r=l[1],n=l[2];else{let e=a.pathname.split("/").filter(Boolean);if(e.length>=2)r=e[0],n=e[1];else throw Error(t("mcp.github.invalidPath"))}let s=await fetch("https://api.github.com/repos/".concat(r,"/").concat(n));if(!s.ok)throw Error(t("mcp.github.notFound"));await s.json();let o=await fetch("https://api.github.com/repos/".concat(r,"/").concat(n,"/contents"));if(!o.ok)throw Error(t("mcp.github.contentsFailed"));let i=await o.json();return{repoInfo:{owner:r,repo:n,valid:!0,contents:i},message:{type:"success",text:t("mcp.github.validRepository",{repository:"".concat(r,"/").concat(n)})},showCloneButton:!0}}catch(e){return console.error("GitHub parsing error:",e),{repoInfo:null,message:{type:"error",text:e.message||t("mcp.github.invalidUrl")},showCloneButton:!1}}},z=async function(e,t,r){let n=arguments.length>3&&void 0!==arguments[3]&&arguments[3],a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:k;try{let t=e,l=t.match(/^(https:\/\/github\.com\/[^\/]+\/[^\/]+)\/(?:blob|tree)\/.*$/);l&&(t=l[1]);let s=t.endsWith(".git")?t:"".concat(t.replace(/\/$/,""),".git"),o=r.replace(/\\/g,"/"),i=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"clone",repoUrl:s,savePath:o,branch:void 0,forceClone:n})}),c=await i.json();if(!i.ok&&!("exists"in c))throw Error(c.error||a("mcp.github.cloneFailed"));let d=c.relativePath.replace(/\\/g,"/");return{success:!0,message:{type:"success",text:a("mcp.github.cloned")},clonedRepoPath:d,envExample:c.envExample}}catch(t){console.error("Error cloning repository:",t);let e=t.message||"";if(e.includes("directory already exist")){let t=e.match(/directory already exist: (.+?)(,|\.|$)/),n=t?t[1]:r;return{success:!0,message:{type:"warning",text:a("mcp.github.exists",{path:n})},clonedRepoPath:n.replace(/\\/g,"/"),envExample:void 0}}return{success:!1,message:{type:"error",text:a("mcp.github.cloneError",{error:e||a("mcp.server.unknownError")})},envExample:void 0}}},P=(0,i.h)("utils/mcp/processPathLikeArgument");function T(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1],r=arguments.length>2?arguments[2]:void 0;console.log("parseServerConfig: Starting with text length:",e.length);try{let n,a,l;console.log("parseServerConfig: Unescaping markdown characters");let s=e.replace(/\\#/g,"#").replace(/\\\[/g,"[").replace(/\\\]/g,"]").replace(/\\`\\`\\`/g,"```").replace(/\\`/g,"`");console.log("parseServerConfig: Unescaped text length:",s.length),console.log("parseServerConfig: Setting up command patterns"),console.log("parseServerConfig: Extracting code blocks");let o=[...s.matchAll(/```(?:bash|sh|cmd|powershell|batch)?\s*([\s\S]*?)```/gm)].map(e=>e[1]);console.log("parseServerConfig: Found",o.length,"code blocks");let i=[];console.log("parseServerConfig: Looking for build/install commands in main text");let c=s.match(/(?:^|\n)\s*(?:build|\.\/build|build\.bat|\.\/build\.bat|build\.sh|\.\/build\.sh|npm run build|npx build|yarn build|pnpm build|vite build|webpack build|gradle build|mvn build|cargo build)\s*(?:$|\n)/m);c&&(n=c[0].trim(),console.log("parseServerConfig: Found build command in main text:",n));let d=s.match(/(?:^|\n)\s*(?:install|\.\/install|install\.bat|\.\/install\.bat|install\.sh|\.\/install\.sh|setup|\.\/setup|setup\.bat|\.\/setup\.bat|setup\.sh|\.\/setup\.sh|npm install|pip install|yarn install|pnpm install|uv install|gem install|cargo install|apt install|apt-get install|brew install)\s*(?:$|\n)/m);d&&(a=d[0].trim(),console.log("parseServerConfig: Found install command in main text:",a)),console.log("parseServerConfig: Checking code blocks for commands");for(let e=0;e<o.length;e++){let t=o[e];console.log("parseServerConfig: Processing code block ".concat(e+1,"/").concat(o.length,", length: ").concat(t.length));let r=t.split("\n");console.log("parseServerConfig: Code block has ".concat(r.length," lines"));for(let e=0;e<r.length;e++){let t=r[e];if(console.log("parseServerConfig: Processing line ".concat(e+1,': "').concat(t,'"')),!n){let e=t.match(/^[ \t]*(build\.bat|\.\/build\.bat|build\.sh|\.\/build\.sh|npm run build|npx build|yarn build|pnpm build|vite build|webpack build|gradle build|mvn build|cargo build)(?: [\w-]+)*[ \t]*$/);e&&(n=e[1].trim(),console.log("parseServerConfig: Found build command in code block: ".concat(n)))}if(!a){let e=t.match(/^[ \t]*((?:install\.bat|\.\/install\.bat|install\.sh|\.\/install\.sh|setup\.bat|\.\/setup\.bat|setup\.sh|\.\/setup\.sh|npm install|pip install|yarn install|pnpm install|uv install|gem install|cargo install|apt install|apt-get install|brew install)(?: [\w\.-]+)*)[ \t]*$/);e&&(a=e[1].trim(),console.log("parseServerConfig: Found install command in code block: ".concat(a)))}console.log('parseServerConfig: Checking for run command in line: "'.concat(t,'"'));let s=t.match(/(run\.bat|\.\/run\.bat|run\.sh|\.\/run\.sh|npm start|yarn start|pnpm start|python|node|vite)(?:\s+(.+))?/);if(s&&(console.log("parseServerConfig: Found potential run command: ".concat(s[0])),!l)&&(l=s[1].trim(),console.log("parseServerConfig: Set extracted command to: ".concat(l)),s[2])){let e=s[2].trim().split(/\s+/);console.log("parseServerConfig: Extracted args: ".concat(e.join(", "))),i=e}}}console.log("parseServerConfig: Cleaning text for JSON parsing");let p=e.replace(/\/\/.*$/gm,""),m="",u="",h=!1,g="";console.log("parseServerConfig: Attempting to extract server config"),console.log("parseServerConfig: Trying to match mcpServers structure");let x=p.match(/"mcpServers"\s*:\s*{\s*"([^"]+)"\s*:\s*({[^}]+})/);if(x)[,m,u]=x,h=!0,g="mcpServers structure",console.log("parseServerConfig: Found server config in mcpServers structure for:",m);else{console.log("parseServerConfig: No mcpServers structure found, trying direct structure");let e=p.match(/"([^"]+)"\s*:\s*({[^{]*"command"\s*:[^{]*"args"\s*:[^}]*})/);e?([,m,u]=e,h=!0,g="direct structure",console.log("parseServerConfig: Found direct server configuration for:",m)):(console.log("parseServerConfig: No valid configuration found in either structure"),u=p,console.log("parseServerConfig: Will attempt to extract any available information"),h=!1,g="extracted information")}console.log("parseServerConfig: Extracting command and args from config");let f=u.match(/"command"\s*:\s*"([^"]+)"/),v=f?f[1]:"";console.log("parseServerConfig: Extracted command:",v);let b=u.match(/"args"\s*:\s*\[([\s\S]*?)\]/),y=b?b[1].split(",").map(e=>e.trim()).map(e=>e.replace(/^"(.*)"$/,"$1")).filter(e=>e.length>0):[];console.log("parseServerConfig: Extracted args:",y),console.log("parseServerConfig: Extracting disabled and autoApprove settings");let j=u.match(/"disabled"\s*:\s*(true|false)/),A=!!j&&"true"===j[1];console.log("parseServerConfig: Extracted disabled:",A);let w=u.match(/"autoApprove"\s*:\s*\[([\s\S]*?)\]/),C=w?w[1].split(",").map(e=>e.trim()).map(e=>e.replace(/^"(.*)"$/,"$1")).filter(e=>e.length>0):[];console.log("parseServerConfig: Extracted autoApprove:",C);let S={};if(console.log("parseServerConfig: Parsing environment variables, parseEnvVars =",t),t){for(let e of(console.log("parseServerConfig: Extracting env vars with standard pattern"),s.matchAll(/^\ *(\w+)=["']?([^"'\r\n#]*)["']?(?:\s*#[^\r\n]*)?(?=\r?\n|$)/gm))){let t=e[1],r=e[2].trim();t&&void 0!==r&&(S[t]=r,console.log("parseServerConfig: Found env var (standard): ".concat(t,"=").concat(r)))}for(let e of(console.log("parseServerConfig: Extracting env vars with README pattern"),s.matchAll(/(?:^|\n)[-*]?\s*`?(\w+)`?(?:\s*:|=)\s*[`"']?([^`"'\r\n#]*)(?:[`"'])?(?:\s*#[^\r\n]*)?(?=\r?\n|$)/gm))){let t=e[1],r=e[2].trim();t&&void 0!==r&&!S[t]&&(S[t]=r,console.log("parseServerConfig: Found env var (README): ".concat(t,"=").concat(r)))}}console.log("parseServerConfig: Building final config object");let k=v||l||"";console.log("parseServerConfig: Final command:",k);let E=v&&y.length>0?y:l&&i.length>0?i:y,z=r||m,T=E.map(e=>(function(e,t){if(P.debug("processPathLikeArgument: Entering method",{arg:e,serverName:t}),!e||"string"!=typeof e||!e.includes("/")&&!e.includes("\\"))return e;if(/^@[^/\s]+\/[^/\s@]+(?:@[^/\s]+)?$/.test(e))return P.debug("processPathLikeArgument: Detected scoped npm package, leaving unchanged: ".concat(e)),e;P.debug("processPathLikeArgument: Processing argument: ".concat(e));let r=e;for(let e of["/path/to","PATH_TO","path/to","PATH/TO","/PATH/TO","/PATH_TO","path_to"]){let t=r.indexOf(e);if(-1!==t){r=r.substring(t+e.length),P.debug('processPathLikeArgument: Stripped path pattern "'.concat(e,'": ').concat(r));break}}if(t&&r.includes(t)){let e=new RegExp("(^|[\\/\\\\])".concat(t,"([\\/\\\\]|$)"));e.test(r)&&(r=r.replace(e,"$1$2"),P.debug('processPathLikeArgument: Removed server name "'.concat(t,'": ').concat(r)),r=r.replace(/\/\//g,"/"))}return(r.startsWith("/")||r.startsWith("\\"))&&(r=r.substring(1),P.debug("processPathLikeArgument: Removed leading slash: ".concat(r))),r||(r=".",P.debug('processPathLikeArgument: Empty result, replaced with "."')),P.debug("processPathLikeArgument: Final result: ".concat(r)),r})(e,z));console.log("parseServerConfig: Final args (after path processing):",T);let M={name:m||"",command:k,args:T,env:S,disabled:A,autoApprove:C,_buildCommand:n,_installCommand:a};if(console.log("parseServerConfig: Config object created:",JSON.stringify(M,null,2)),console.log("parseServerConfig: Preparing return message"),h)return console.log("parseServerConfig: Returning success - config found in ".concat(g)),{config:M,foundExplicitConfig:!0,message:{type:"success",text:'Configuration for "'.concat(m,'" extracted successfully from ').concat(g,".")}};{let e=[];if(v&&e.push("command"),y.length>0&&e.push("arguments"),Object.keys(S).length>0&&e.push("environment variables"),e.length>0)return console.log("parseServerConfig: Returning warning - partial data extracted: ".concat(e.join(", "))),{config:M,foundExplicitConfig:!1,message:{type:"warning",text:"No complete server configuration found, but extracted: ".concat(e.join(", "),".")}};return console.log("parseServerConfig: Returning error - no data found"),{config:M,foundExplicitConfig:!1,message:{type:"error",text:"No server configuration data found."}}}}catch(e){return console.error("parseServerConfig: Exception occurred:",e),{config:{},foundExplicitConfig:!1,message:{type:"error",text:"Failed to extract server configuration. Please check the content format."}}}}(0,i.h)("utils/mcp/parseServerConfigFromClipboard");let M=(0,i.h)("utils/mcp/configparse/utils");async function I(e,t){let r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];try{M.debug("Checking if file exists: ".concat(e,"/").concat(t));let n=e.endsWith("/")||e.endsWith("\\")?"".concat(e).concat(t):"".concat(e,"/").concat(t);M.debug("Constructed full path: ".concat(n));let a=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"readFile",savePath:n})});if(!a.ok)return M.debug("File does not exist: ".concat(e,"/").concat(t)),{exists:!1};let l=await a.json();if(!l.content&&r)return M.debug("File exists but is empty: ".concat(e,"/").concat(t)),{exists:!0,content:""};return M.debug("File exists: ".concat(e,"/").concat(t)),{exists:!0,content:r?l.content:void 0}}catch(r){return M.error("Error checking if file exists: ".concat(e,"/").concat(t),r),{exists:!1}}}async function R(e,t){try{let r=await I(e,t,!0);return r.exists&&r.content?r.content:null}catch(r){return M.error("Error reading file: ".concat(e,"/").concat(t),r),null}}let N=(0,i.h)("utils/mcp/configparse/typescript");async function F(e){let{repoPath:t,repoName:r}=e;N.debug("Parsing TypeScript configuration for ".concat(t));let n=await I(t,"package.json",!0);if(!n.exists||!n.content)return N.debug("No package.json found in ".concat(t)),{detected:!1,language:"typescript",message:{type:"warning",text:"No package.json found in the repository."}};try{let e=JSON.parse(n.content);N.debug("Successfully parsed package.json for ".concat(t));let a=function(e){if(e.packageManager){if(e.packageManager.startsWith("yarn"))return"yarn install";else if(e.packageManager.startsWith("pnpm"))return"pnpm install"}return"npm install --include=dev"}(e),l=function(e){let t=e.scripts||{};return t.build?"npm run build":t.compile?"npm run compile":t.dist?"npm run dist":t.prepare&&t.prepare.includes("build")?"npm run prepare":""}(e),s="node",o=await O(e,t),i=await W(t),c=((await I(t,"tsconfig.json")).exists,"typescript");return{detected:!0,language:c,installCommand:a,buildCommand:l,runCommand:s,args:o,env:i,message:{type:"success",text:"TypeScript/JavaScript configuration detected successfully."},config:{name:r,transport:"stdio",command:s,args:o,env:i,_buildCommand:l,_installCommand:a}}}catch(e){return N.error("Error parsing package.json for ".concat(t,":"),e),{detected:!1,language:"typescript",message:{type:"error",text:"Error parsing package.json: ".concat(e instanceof Error?e.message:"Unknown error")}}}}async function O(e,t){let r=e.scripts||{},n=e.main||"",a=[],l="dist";if(r.build){let e=r.build,t=e.match(/tsc\s+.*(?:--outDir\s+|--outDir=|--outDir\s*=\s*|--out-dir\s+|--out-dir=|--out-dir\s*=\s*|--out\s+|--out=|--out\s*=\s*|-d\s+|-d=|-d\s*=\s*)["']?([^"'\s]+)["']?/);t&&t[1]&&(l=t[1],N.debug("Extracted output directory from build script: ".concat(l)));let n=e.match(/(?:webpack|rollup|vite).*(?:--output\s+|--output=|--output\s*=\s*|-o\s+|-o=|-o\s*=\s*)["']?([^"'\s]+)["']?/);n&&n[1]&&(l=n[1],N.debug("Extracted output directory from webpack/rollup/vite build script: ".concat(l))),(e.includes("build/")||e.includes("build\\"))&&(l="build",N.debug("Found 'build' directory reference in build script"))}if(r.start){let e=r.start,t=e.match(/node\s+(?:--[^\s]+=?[^\s]*\s+)*([^\s]+)/);if(t&&t[1])return N.debug("Extracted entry point from start script: ".concat(t[1])),a.push(t[1]),a;let n=e.match(/\b((?:\.\/)?(?:[\w\-\.\/]+)\.js)\b/);if(n&&n[1])return N.debug("Found .js file in start script: ".concat(n[1])),a.push(n[1]),a;let s=e.match(/ts-node\s+([^\s]+)/);if(s&&s[1]){let e=s[1].replace(/\.ts$/,".js").replace(/^src\//,"".concat(l,"/"));return a.push(e),a}}if(n&&!n.endsWith(".ts"))return a.push(n),a;let s="".concat(l,"/index.js");if((await I(t,s)).exists)return a.push(s),a;for(let e of["dist/index.js","build/index.js","lib/index.js","out/index.js"])if((await I(t,e)).exists)return a.push(e),a;return a.push("".concat(l,"/index.js")),a}async function W(e){let t=await R(e,".env.example");if(!t)return{};let r={};for(let e of t.split("\n")){let t=e.trim();if(t.startsWith("#")||""===t)continue;let n=t.match(/^([^=]+)=(.*)$/);if(n){let e=n[1].trim(),t=n[2].trim().replace(/^["'](.*)["']$/,"$1");r[e]=t}}return r}let _=(0,i.h)("utils/mcp/configparse/python");async function D(e){var t;let{repoPath:r,repoName:n}=e;_.debug("Parsing Python configuration for ".concat(r));let a=await I(r,"requirements.txt"),l=await I(r,"pyproject.toml",!0),s=await I(r,"setup.py",!0);if(!a.exists&&!l.exists&&!s.exists)return _.debug("No Python project files found in ".concat(r)),{detected:!1,language:"python",message:{type:"warning",text:"No Python project files found in the repository."}};let o=(t=a.exists,l.exists?"uv sync":t?"uv venv && uv pip install -r requirements.txt":"uv venv && uv pip install -e ."),{runCommand:i,args:c}=await U(r,l.content,s.content),d=await H(r);return{detected:!0,language:"python",installCommand:o,buildCommand:"",runCommand:i,args:c,env:d,message:{type:"success",text:"Python configuration detected successfully."},config:{name:n,transport:"stdio",command:i,args:c,env:d,_buildCommand:"",_installCommand:o}}}async function U(e,t,r){let n=["run","python"];for(let t of["main.py","app.py","server.py","run.py","index.py","src/main.py","src/app.py","src/server.py","src/run.py","src/index.py"])if((await I(e,t)).exists)return n.push(t),{runCommand:"uv",args:n};if(t)try{let e=t.match(/\[tool\.poetry\.scripts\]([\s\S]*?)(\[|$)/);if(e){let t=e[1].match(/(\w+)\s*=\s*["']([^"']+)['"]/);if(t){let e=t[2].split(":")[0];return n.push("-m"),n.push(e),{runCommand:"uv",args:n}}}let r=t.match(/\[project\][\s\S]*?name\s*=\s*["']([^"']+)['"]/);if(r){let e=r[1].replace(/-/g,"_");return n.push("-m"),n.push(e),{runCommand:"uv",args:n}}}catch(e){_.error("Error parsing pyproject.toml:",e)}if(r)try{let e=r.match(/name\s*=\s*["']([^"']+)['"]/);if(e){let t=e[1].replace(/-/g,"_");return n.push("-m"),n.push(t),{runCommand:"uv",args:n}}}catch(e){_.error("Error parsing setup.py:",e)}return 2===n.length&&n.push("main.py"),{runCommand:"uv",args:n}}async function H(e){let t=await R(e,".env.example");if(!t)return{};let r={};for(let e of t.split("\n")){let t=e.trim();if(t.startsWith("#")||""===t)continue;let n=t.match(/^([^=]+)=(.*)$/);if(n){let e=n[1].trim(),t=n[2].trim().replace(/^["'](.*)["']$/,"$1");r[e]=t}}return r}let B=(0,i.h)("utils/mcp/configparse/java");async function L(e){var t,r,n,a,l,s,o,i;let{repoPath:c,repoName:d}=e;B.debug("Parsing Java configuration for ".concat(c));let p=await I(c,"pom.xml",!0),m=await I(c,"build.gradle",!0),u=await I(c,"gradlew"),h=await I(c,"mvnw");if(!p.exists&&!m.exists)return B.debug("No Java project files found in ".concat(c)),{detected:!1,language:"java",message:{type:"warning",text:"No Java project files found in the repository."}};let g=p.exists,x=m.exists,f=u.exists,v=h.exists,b=(t=g,r=x,n=v,a=f,t?n?"./mvnw install -DskipTests":"mvn install -DskipTests":r?a?"./gradlew dependencies":"gradle dependencies":""),y=(l=g,s=x,o=v,i=f,l?o?"./mvnw package -DskipTests":"mvn package -DskipTests":s?i?"./gradlew build":"gradle build":""),{runCommand:j,args:A}=await J(c,g,x,p.content,m.content),w=await $(c);return{detected:!0,language:"java",installCommand:b,buildCommand:y,runCommand:j,args:A,env:w,message:{type:"success",text:"Java configuration detected successfully."},config:{name:d,transport:"stdio",command:j,args:A,env:w,_buildCommand:y,_installCommand:b}}}async function J(e,t,r,n,a){let l="java",s=[];if(s.push("-jar"),t)try{if(n){let e=n.match(/<artifactId>([^<]+)<\/artifactId>/);if(e){let t=e[1];return s.push("target/".concat(t,"*.jar")),{runCommand:l,args:s}}}return s.push("target/*.jar"),{runCommand:l,args:s}}catch(e){B.error("Error determining Maven JAR path:",e)}else if(r)try{let t="build/libs/*-all.jar";if((await I(e,t)).exists)return s.push(t),{runCommand:l,args:s};let r="build/libs/*-fat.jar";if((await I(e,r)).exists)return s.push(r),{runCommand:l,args:s};return s.push("build/libs/*.jar"),{runCommand:l,args:s}}catch(e){B.error("Error determining Gradle JAR path:",e)}if(1===s.length){for(let t of["target/*.jar","build/libs/*.jar","out/artifacts/*/*.jar"])if((await I(e,t)).exists)return s.push(t),{runCommand:l,args:s};s.push("target/*.jar")}return{runCommand:l,args:s}}async function $(e){let t=await R(e,".env.example");if(!t)return{};let r={};for(let e of t.split("\n")){let t=e.trim();if(t.startsWith("#")||""===t)continue;let n=t.match(/^([^=]+)=(.*)$/);if(n){let e=n[1].trim(),t=n[2].trim().replace(/^["'](.*)["']$/,"$1");r[e]=t}}return r}let G=(0,i.h)("utils/mcp/configparse/kotlin");async function q(e){var t,r,n,a,l,s;let{repoPath:o,repoName:i}=e;G.debug("Parsing Kotlin configuration for ".concat(o));let c=await I(o,"build.gradle.kts",!0),d=await I(o,"build.gradle",!0),p=await I(o,"gradlew"),m=await V(o);if(!c.exists&&!m){if(!d.exists)return G.debug("No Kotlin project files found in ".concat(o)),{detected:!1,language:"kotlin",message:{type:"warning",text:"No Kotlin project files found in the repository."}};else if(!(d.content&&(d.content.includes("kotlin")||d.content.includes("org.jetbrains.kotlin"))))return G.debug("No Kotlin project files found in ".concat(o)),{detected:!1,language:"kotlin",message:{type:"warning",text:"No Kotlin project files found in the repository."}}}let u=c.exists,h=d.exists,g=p.exists,x=(t=u,r=h,n=g,t||r?n?"./gradlew dependencies":"gradle dependencies":""),f=(a=u,l=h,s=g,a||l?s?"./gradlew build":"gradle build":""),{runCommand:v,args:b}=await K(o,u,h,c.content,d.content),y=await X(o);return{detected:!0,language:"kotlin",installCommand:x,buildCommand:f,runCommand:v,args:b,env:y,message:{type:"success",text:"Kotlin configuration detected successfully."},config:{name:i,transport:"stdio",command:v,args:b,env:y,_buildCommand:f,_installCommand:x}}}async function V(e){for(let t of["src/main/kotlin","src/test/kotlin","src"])if((await I(e,t)).exists)return!0;return!1}async function K(e,t,r,n,a){let l="java",s=[];s.push("-jar");try{let o="build/libs/*-all.jar";if((await I(e,o)).exists)return s.push(o),{runCommand:l,args:s};let i="build/libs/*-fat.jar";if((await I(e,i)).exists)return s.push(i),{runCommand:l,args:s};let c="build/libs/*-with-dependencies.jar";if((await I(e,c)).exists)return s.push(c),{runCommand:l,args:s};let d="";if(t&&n){let e=n.match(/mainClass\.set\(["']([^"']+)["']\)/);e&&(d=e[1])}else if(r&&a){let e=a.match(/mainClassName\s*=\s*['"]([^'"]+)['"]/);e&&(d=e[1])}if(d){let t=d.split("."),r=t[t.length-1].toLowerCase(),n="build/libs/*".concat(r,"*.jar");if((await I(e,n)).exists)return s.push(n),{runCommand:l,args:s}}return s.push("build/libs/*.jar"),{runCommand:l,args:s}}catch(e){G.error("Error determining Kotlin JAR path:",e)}if(1===s.length){for(let t of["build/libs/*.jar","out/artifacts/*/*.jar"])if((await I(e,t)).exists)return s.push(t),{runCommand:l,args:s};s.push("build/libs/*.jar")}return{runCommand:l,args:s}}async function X(e){let t=await R(e,".env.example");if(!t)return{};let r={};for(let e of t.split("\n")){let t=e.trim();if(t.startsWith("#")||""===t)continue;let n=t.match(/^([^=]+)=(.*)$/);if(n){let e=n[1].trim(),t=n[2].trim().replace(/^["'](.*)["']$/,"$1");r[e]=t}}return r}let Y=(0,i.h)("utils/mcp/configparse/index");async function Z(e){let{repoPath:t,repoName:r}=e;Y.debug("Parsing repository configuration for ".concat(t));let n=await Q(t,r);if(n.detected&&n.foundExplicitConfig&&n.runCommand)return Y.debug("Explicit configuration found in README for ".concat(t)),n;Y.debug("Trying TypeScript/JavaScript parser for ".concat(t));let a=await F(e);if(a.detected)return Y.debug("TypeScript/JavaScript configuration detected for ".concat(t)),a;Y.debug("Trying Python parser for ".concat(t));let l=await D(e);if(l.detected)return Y.debug("Python configuration detected for ".concat(t)),l;Y.debug("Trying Java parser for ".concat(t));let s=await L(e);if(s.detected)return Y.debug("Java configuration detected for ".concat(t)),s;Y.debug("Trying Kotlin parser for ".concat(t));let o=await q(e);return o.detected?(Y.debug("Kotlin configuration detected for ".concat(t)),o):n.detected?(Y.debug("Configuration extracted from README for ".concat(t)),n):(Y.debug("No configuration detected for ".concat(t,", returning default configuration")),{detected:!1,language:"unknown",message:{type:"error",text:"Could not detect repository configuration. Please configure manually."},config:{name:r,transport:"stdio",command:"",args:[],env:{},_buildCommand:"",_installCommand:""}})}async function Q(e,t){try{let r="".concat(e,"/README.md"),n=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"readFile",savePath:r})});if(!n.ok)return Y.debug("Failed to read README file from ".concat(e)),{detected:!1,language:"unknown",message:{type:"warning",text:"No README file found in the repository."}};let a=await n.json();if(!a.content)return Y.debug("README file is empty in ".concat(e)),{detected:!1,language:"unknown",message:{type:"warning",text:"README file is empty."}};let l=await er(a.content,{name:t,transport:"stdio",command:"",args:[],env:{},disabled:!1,autoApprove:[],rootPath:e,_buildCommand:"",_installCommand:""},t);if(l.config&&("stdio"===l.config.transport&&l.config.command||l.config._buildCommand||l.config._installCommand))return{detected:!0,language:"unknown",foundExplicitConfig:l.foundExplicitConfig,installCommand:l.config._installCommand||"",buildCommand:l.config._buildCommand||"",runCommand:"stdio"===l.config.transport&&l.config.command||"",args:"stdio"===l.config.transport&&l.config.args||[],env:l.config.env?Object.fromEntries(Object.entries(l.config.env).map(e=>{let[t,r]=e;return[t,"string"==typeof r?r:r.value]})):{},message:l.message||{type:"success",text:"Configuration extracted from README."},config:l.config};return{detected:!1,language:"unknown",message:{type:"warning",text:"No configuration found in README."}}}catch(t){return Y.error("Error parsing README from ".concat(e,":"),t),{detected:!1,language:"unknown",message:{type:"error",text:"Error parsing README: ".concat(t instanceof Error?t.message:"Unknown error")}}}}let ee=(e,t)=>(0,S.Tl)("en",e,t);function et(e){return"stdio"===e.transport}let er=async function(e,t,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:ee;try{let a=r||t.name,l=T(e,!1,a);if(!l.config||!(Object.keys(l.config).length>0))return{config:t,foundExplicitConfig:!1,message:{type:"warning",text:n("mcp.local.messages.readmeMissingConfig")}};{let e={...t,...l.config,name:t.name,env:{...t.env,...l.config.env}},r="command"in l.config;return{config:et(e)||r?{...e,command:r&&l.config.command||"",transport:e.transport||"stdio"}:{...e,transport:e.transport||"websocket",websocketUrl:e.websocketUrl||""},foundExplicitConfig:l.foundExplicitConfig,message:{type:"success",text:n("mcp.local.messages.readmeExtracted")}}}}catch(e){return console.error("Error parsing README:",e),{config:t,message:{type:"error",text:n("mcp.local.messages.readmeError",{error:e.message||n("mcp.server.unknownError")})}}}},en=async function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:ee;try{let n=t||e.name,a=await window.navigator.clipboard.readText().then(e=>T(e,!1,n));if(!a.config||!(Object.keys(a.config).length>0))return{config:e,message:{type:"warning",text:r("mcp.local.messages.clipboardNoConfig")}};{let t={...e,...a.config,name:e.name,env:{...e.env,...a.config.env}},n="command"in a.config;return{config:et(t)||n?{...t,command:n&&a.config.command||"",transport:t.transport||"stdio"}:{...t,transport:t.transport||"websocket",websocketUrl:t.websocketUrl||""},message:{type:"success",text:r("mcp.local.messages.clipboardParsed")}}}}catch(t){return console.error("Error parsing clipboard:",t),{config:e,message:{type:"error",text:r("mcp.local.messages.clipboardError",{error:t.message||r("mcp.server.unknownError")})}}}},ea=(0,i.h)("frontend/components/mcp/MCPServerManager/Modals/ServerModal/utils/configDetection"),el=(e,t)=>(0,S.Tl)("en",e,t);async function es(e,t,r){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:el;try{ea.debug("Detecting configuration for repository: ".concat(e));let a=await Z({repoPath:e,repoName:t,owner:r});if(a.detected&&a.config)return ea.debug("Configuration detected for ".concat(e),{language:a.language}),{config:a.config,message:{type:"success",text:n("mcp.github.detectionSuccess")},success:!0,language:a.language};return ea.debug("No configuration detected for ".concat(e)),{config:{name:t,transport:"stdio",command:"",args:[],env:{},disabled:!1,autoApprove:[],rootPath:e,_buildCommand:"",_installCommand:""},message:{type:"warning",text:n("mcp.github.detectionFailed")},success:!1,language:a.language}}catch(r){return ea.error("Error detecting configuration for ".concat(e,":"),r),{config:{name:t,transport:"stdio",command:"",args:[],env:{},disabled:!1,autoApprove:[],rootPath:e,_buildCommand:"",_installCommand:""},message:{type:"error",text:n("mcp.github.detectionError",{error:r instanceof Error?r.message:n("mcp.server.unknownError")})},success:!1}}}(0,i.h)("frontend/components/mcp/MCPServerManager/Modals/ServerModal/utils/errorHandling");let eo=(e,t)=>(0,S.Tl)("en",e,t);var ei=r(47712),ec=r.n(ei);let ed=e=>{let{initialConfig:t,onAdd:r,onUpdate:s,onClose:o,setActiveTab:i,initialGitHubUrl:p}=e,{t:u}=(0,m.s9)(),[h,x]=(0,l.useState)(p||""),[v,b]=(0,l.useState)(null),[y,j]=(0,l.useState)(""),[A,S]=(0,l.useState)(!1),[k,P]=(0,l.useState)(!1),[M,I]=(0,l.useState)(!1),[R,N]=(0,l.useState)(!1),[F,O]=(0,l.useState)(!1),[W,_]=(0,l.useState)(null),[D,U]=(0,l.useState)(""),[H,B]=(0,l.useState)(null),[L,J]=(0,l.useState)(""),[$,G]=(0,l.useState)(!1);(0,l.useEffect)(()=>{(async()=>{try{let e=await fetch("/api/cwd"),t=await e.json();t.success&&t.mcpServersDir?J(t.mcpServersDir):console.error("Failed to get mcp-servers directory:",t.error)}catch(e){console.error("Error fetching cwd information:",e)}})()},[]);let q=async()=>{P(!0),_(null),G(!1);let e=await E(h,u);if(b(e.repoInfo),_(e.message),S(e.showCloneButton),e.repoInfo){if(L){let t=ec().join(L,e.repoInfo.repo);j(t),await V(t)}else try{let t=await fetch("/api/cwd"),r=await t.json();if(r.success&&r.mcpServersDir){J(r.mcpServersDir);let t=ec().join(r.mcpServersDir,e.repoInfo.repo);j(t),await V(t)}else console.error("Failed to get mcp-servers directory:",r.error),j("./mcp-servers/".concat(e.repoInfo.repo))}catch(t){console.error("Error fetching cwd information:",t),j("./mcp-servers/".concat(e.repoInfo.repo))}N(!0)}P(!1)},V=async e=>{try{let t=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"exists",savePath:e})}),r=await t.json();r.success&&r.exists?(G(!0),_({type:"warning",text:u("mcp.github.exists",{path:e})})):G(!1)}catch(e){console.error("Error checking if repository exists:",e),G(!1)}},K=async function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(v){I(!0),_({type:"success",text:e?u("mcp.github.recloning"):u("mcp.github.cloning")});try{let a=await z(h,v,y,e,u);if(!a.success||!a.clonedRepoPath){_(a.message),I(!1);return}let l=a.clonedRepoPath;U(l);let o={};a.envExample&&"string"==typeof a.envExample&&(o=(e=>{try{return e.split("\n").filter(e=>""!==e.trim()).reduce((e,t)=>{let[r,n]=t.split("=").map(e=>e.trim());return r&&n&&(e[r]=n),e},{})}catch(e){return console.error("Failed to parse env variables:",e),{}}})(a.envExample),console.log("Parsed environment variables from .env.example:",o));let c=await es(l,v.repo,v.owner,u);_(c.message);let d={},p=c.message;if(c.success&&c.config)console.log("GitHubTab: Initial detection successful. Merging config."),d={...c.config,rootPath:l,env:{...c.config.env||{},...o}},p=c.message;else{console.log("GitHubTab: Initial detection failed. Attempting README parsing fallback.");let e={name:v.repo,transport:"stdio",command:"",args:[],env:o,disabled:!1,autoApprove:[],rootPath:l,_buildCommand:"",_installCommand:""};try{let a=ec().join(v.repo,"README.md");console.log("GitHubTab: Reading README.md from relative path: ".concat(a));let s=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"readFile",savePath:a})}),i=await s.json();if(i.success&&i.content){var t,r,n;console.log("GitHubTab: README.md read successfully. Parsing content.");let a=T(i.content,!0,v.repo);console.log("GitHubTab: README parse result:",a),d={...e,...a.config,rootPath:l,env:{...e.env||{},...(null==(t=a.config)?void 0:t.env)||{},...o},_buildCommand:(null==(r=a.config)?void 0:r._buildCommand)||e._buildCommand,_installCommand:(null==(n=a.config)?void 0:n._installCommand)||e._installCommand},p={type:"warning",text:u("mcp.github.partialReadme")}}else console.log("GitHubTab: Failed to read or parse README.md. Using default config."),d=e,p=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:eo;return{type:"warning",text:e?t("mcp.github.noConfigLanguage",{language:e}):t("mcp.github.noConfig")}}(c.language,u)}catch(t){console.error("GitHubTab: Error reading or parsing README.md:",t),d=e,p={type:"error",text:u("mcp.github.readmeError",{error:t instanceof Error?t.message:u("mcp.server.unknownError")})}}}d={...d,source:{type:"github",repositoryUrl:h}},B(d),_(p),s&&d.name&&s(d),i&&i("local"),O(!0)}catch(e){console.error("Error during repository cloning or configuration detection:",e),_({type:"error",text:u("mcp.github.repositoryError",{error:e instanceof Error?e.message:u("mcp.server.unknownError")})})}finally{I(!1)}}};return(0,n.jsx)(d.A,{elevation:0,sx:{p:0},children:(0,n.jsxs)(f.A,{spacing:3,children:[(0,n.jsx)(c.A,{variant:"h6",gutterBottom:!0,children:u("mcp.github.title")}),(0,n.jsx)(w,{githubUrl:h,setGithubUrl:x,savePath:y,setSavePath:j,repoInfo:v,isValidating:k,parseCompleted:R,onValidate:q}),(0,n.jsx)(C,{showCloneButton:A,isCloning:M,cloneCompleted:F,repoInfo:v,repoExists:$,onClone:K}),W&&(0,n.jsx)(a.default,{children:(0,n.jsx)(g.A,{severity:W.type,children:W.text})})]})})};var ep=r(42063),em=r(68212),eu=r(33567);let eh=e=>{let{output:t,isVisible:r,toggleVisibility:l,title:s}=e,o=(0,eu.A)(),{t:i}=(0,m.s9)();return(0,n.jsxs)(d.A,{variant:"outlined",sx:{p:2,height:"100%",display:"flex",flexDirection:"column"},children:[(0,n.jsxs)(a.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2},children:[(0,n.jsx)(c.A,{variant:"h6",children:null!=s?s:i("mcp.local.console.output")}),(0,n.jsx)(j.A,{onClick:l,size:"small",title:i(r?"mcp.local.console.hide":"mcp.local.console.show"),color:"inherit",sx:{color:"text.secondary"},children:r?(0,n.jsx)(em.A,{}):(0,n.jsx)(ep.A,{})})]}),(0,n.jsx)(a.default,{sx:{fontFamily:"monospace",p:2,borderRadius:1,bgcolor:"dark"===o.palette.mode?"#121212":"#1a1a1a",color:"#4ade80",flex:1,overflow:"auto"},children:t?(0,n.jsx)(a.default,{component:"pre",sx:{whiteSpace:"pre-wrap",m:0},children:t}):(0,n.jsx)(c.A,{variant:"body2",sx:{fontStyle:"italic",color:"text.secondary"},children:i("mcp.local.console.empty")})})]})},eg=()=>{let{t:e}=(0,m.s9)(),[t,r]=(0,l.useState)(""),[n,a]=(0,l.useState)(!1),[s,o]=(0,l.useState)(()=>e("mcp.local.console.output"));return{consoleOutput:t,isConsoleVisible:n,consoleTitle:s,setConsoleTitle:o,toggleConsoleVisibility:()=>{a(e=>!e)},setIsConsoleVisible:a,appendToConsole:e=>{r(t=>t+e)},clearConsole:()=>{r("")},updateConsole:e=>{r(e)}}},ex=e=>{let{name:t,setName:r,rootPath:l,setRootPath:s,onRootPathSelect:o}=e,{t:i}=(0,m.s9)();return(0,n.jsxs)(f.A,{spacing:3,children:[(0,n.jsxs)(a.default,{children:[(0,n.jsx)(c.A,{variant:"subtitle2",gutterBottom:!0,children:i("mcp.local.form.name")}),(0,n.jsx)(v.A,{fullWidth:!0,size:"small",value:t,onChange:e=>r(e.target.value),placeholder:"my-mcp-server",variant:"outlined",required:!0})]}),(0,n.jsxs)(a.default,{children:[(0,n.jsx)(c.A,{variant:"subtitle2",gutterBottom:!0,children:i("mcp.local.form.rootPath")}),(0,n.jsx)(v.A,{fullWidth:!0,size:"small",value:l,onChange:e=>s(e.target.value),placeholder:"/path/to/server/root",variant:"outlined",InputProps:{endAdornment:(0,n.jsx)(y.A,{position:"end",children:(0,n.jsx)(j.A,{onClick:o,edge:"end","aria-label":i("mcp.local.form.selectRoot"),children:(0,n.jsx)(x.A,{})})})}})]})]})};var ef=r(4474);let ev=e=>{let{installCommand:t,setinstallCommand:r,buildCommand:s,setBuildCommand:o,onInstall:i,onBuild:p,isInstalling:u,isBuilding:h,installCompleted:x,buildCompleted:y,buildMessage:j}=e,{t:A}=(0,m.s9)(),w=[A("mcp.local.progress.stillWorking"),A("mcp.local.progress.keepOpen"),A("mcp.local.progress.mayTakeTime"),A("mcp.local.progress.backend"),A("mcp.local.progress.almostThere"),A("mcp.local.progress.processing")],C=[...w,A("mcp.local.progress.installingDependencies"),A("mcp.local.progress.npmInstall"),A("mcp.local.progress.fetchingPackages")],S=[...w,A("mcp.local.progress.buildingServer"),A("mcp.local.progress.compiling"),A("mcp.local.progress.bundling")],[k,E]=(0,l.useState)(0),[z,P]=(0,l.useState)(0);return(0,l.useEffect)(()=>{let e;return u&&(e=setInterval(()=>{E(e=>(e+1)%C.length)},3e3)),()=>{e&&clearInterval(e)}},[u,C.length]),(0,l.useEffect)(()=>{let e;return h&&(e=setInterval(()=>{P(e=>(e+1)%S.length)},3e3)),()=>{e&&clearInterval(e)}},[h,S.length]),(0,n.jsxs)(f.A,{spacing:3,children:[j&&"error"===j.type&&(0,n.jsx)(g.A,{severity:"error",sx:{mb:2},children:j.text}),(0,n.jsxs)(a.default,{children:[(0,n.jsx)(c.A,{variant:"subtitle2",gutterBottom:!0,children:A("mcp.local.installScript")}),(0,n.jsx)(v.A,{fullWidth:!0,size:"small",value:t,onChange:e=>r(e.target.value),variant:"outlined"}),(0,n.jsxs)(a.default,{sx:{display:"flex",flexDirection:"column",alignItems:"flex-end",mt:1},children:[u&&(0,n.jsxs)(d.A,{elevation:3,sx:{p:2,mb:2,width:"100%",bgcolor:"info.lighter",display:"flex",alignItems:"center",gap:2},children:[(0,n.jsx)(ef.default,{size:20,color:"info"}),(0,n.jsx)(c.A,{variant:"body2",color:"info.dark",fontWeight:"medium",children:C[k]})]}),(0,n.jsx)(b.A,{variant:"contained",color:x?"success":"primary",onClick:i,disabled:u,children:A(u?"mcp.local.installing":"mcp.local.installDependencies")})]})]}),(0,n.jsxs)(a.default,{children:[(0,n.jsx)(c.A,{variant:"subtitle2",gutterBottom:!0,children:A("mcp.local.buildCommand")}),(0,n.jsx)(v.A,{fullWidth:!0,size:"small",value:s,onChange:e=>o(e.target.value),variant:"outlined"}),(0,n.jsxs)(a.default,{sx:{display:"flex",flexDirection:"column",alignItems:"flex-end",mt:1},children:[h&&(0,n.jsxs)(d.A,{elevation:3,sx:{p:2,mb:2,width:"100%",bgcolor:"info.lighter",display:"flex",alignItems:"center",gap:2},children:[(0,n.jsx)(ef.default,{size:20,color:"info"}),(0,n.jsx)(c.A,{variant:"body2",color:"info.dark",fontWeight:"medium",children:S[z]})]}),(0,n.jsx)(b.A,{variant:"contained",color:y?"success":"primary",onClick:p,disabled:h,children:A(h?"mcp.local.building":"mcp.local.buildServer")})]})]})]})};var eb=r(71892),ey=r(28548),ej=r(99944),eA=r(22822),ew=r(78470),eC=r(56682),eS=r(86946),ek=r(4484),eE=r(48363),ez=r(12857),eP=r(9164),eT=r(1877),eM=r(52397),eI=r(8964);let eR=/^\$\{global:([A-Za-z0-9_.-]+)\}$/,eN=e=>Object.entries(e||{}).map(e=>{var t,r;let[n,a]=e,l=null!==a&&"object"==typeof a&&"value"in a,s=l?null!=(r=a.value)?r:"":null!=a?a:"",o=l?!!(null==(t=a.metadata)?void 0:t.isSecret):(0,eT.Hm)(n),i=s.match(eR);if(i)return{key:n,value:s,isSecret:o,isBound:!0,boundTo:i[1]};let c=s===eM.RJ||s===eM.gF;return{key:n,value:s,isSecret:o,isMasked:c}}),eF=e=>{let t={};return e.forEach(e=>{let{key:r,value:n,isSecret:a,isBound:l,boundTo:s}=e,o=r.trim();o&&(l&&s?t[o]={value:"${global:"+s+"}",metadata:{isSecret:!!a}}:t[o]={value:n,metadata:{isSecret:!!a}})}),t},eO=e=>{let{headers:t,onChange:r}=e,{globalEnvVars:s}=(0,eP.useStorage)(),{t:o}=(0,m.s9)(),[i,d]=l.useState(()=>eN(t)),[p,u]=l.useState(!1),[h,g]=l.useState(null),x=JSON.stringify(t||{}),A=l.useRef(x);l.useEffect(()=>{A.current!==x&&x!==JSON.stringify(eF(i))&&(d(eN(t)),A.current=x)},[x]);let w=e=>{d(e);let t=eF(e);A.current=JSON.stringify(t),r(t)};return(0,n.jsxs)(a.default,{children:[(0,n.jsx)(c.A,{variant:"subtitle2",gutterBottom:!0,children:o("mcp.local.headers.title")}),(0,n.jsx)(c.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:1.5},children:(0,n.jsx)(eI.A,{message:"mcp.local.headers.help",values:{authorization:(0,n.jsx)("code",{children:"Authorization"}),secret:(0,n.jsx)("strong",{children:o("mcp.local.headers.secretTerm")})}})}),(0,n.jsxs)(f.A,{spacing:1.5,children:[0===i.length&&(0,n.jsx)(c.A,{variant:"body2",color:"text.secondary",children:o("mcp.local.headers.empty")}),i.map((e,t)=>{var r;return(0,n.jsxs)(f.A,{direction:"row",spacing:1,alignItems:"flex-start",children:[(0,n.jsx)(v.A,{size:"small",label:o("mcp.local.headers.header"),placeholder:"Authorization",value:e.key,onChange:e=>((e,t)=>{w(i.map((r,n)=>{if(n!==e)return r;let a=r.isSecret||(0,eT.Hm)(t);return{...r,key:t,isSecret:a}}))})(t,e.target.value),sx:{flex:"0 0 32%"}}),(0,n.jsx)(v.A,{size:"small",label:o("mcp.local.headers.value"),type:e.isSecret&&!e.isBound?"password":"text",placeholder:e.showWarning?o("mcp.local.headers.reenter"):e.isMasked?o("mcp.local.headers.unchanged"):"Basic dXNlcjpwYXNz",value:e.isBound?"":e.value,onChange:e=>((e,t)=>{let r=t.match(eR);w(i.map((n,a)=>a===e?{...n,value:t,isBound:!!r,boundTo:null==r?void 0:r[1],isMasked:!1,showWarning:!1}:n))})(t,e.target.value),error:e.showWarning,helperText:e.showWarning?o("mcp.local.headers.reenterHelp"):e.isMasked?o("mcp.local.headers.storedSecret"):"",InputProps:{readOnly:e.isBound,endAdornment:e.isBound?(0,n.jsx)(y.A,{position:"end",children:(0,n.jsx)(ey.A,{size:"small",label:o("mcp.local.headers.bound",{variable:null!=(r=e.boundTo)?r:""}),color:"primary",variant:"outlined",onDelete:()=>{w(i.map((e,r)=>r===t?{...e,isBound:!1,boundTo:void 0,value:""}:e))},deleteIcon:(0,n.jsx)(ez.A,{fontSize:"small"})})}):null},sx:{flex:1}}),(0,n.jsx)(ej.A,{control:(0,n.jsx)(eA.A,{checked:e.isSecret,onChange:e=>((e,t)=>{w(i.map((r,n)=>n!==e?r:r.isSecret&&!t&&r.isMasked?{...r,isSecret:t,value:"",isMasked:!1,showWarning:!0}:{...r,isSecret:t}))})(t,e.target.checked),size:"small"}),label:o("mcp.local.headers.secret"),sx:{mr:0,mt:.25}}),!e.isBound&&(0,n.jsx)(ew.A,{title:o("mcp.local.headers.bind"),children:(0,n.jsx)(j.A,{"aria-label":o("mcp.local.headers.bind"),size:"small",color:"primary",onClick:()=>{g(t),u(!0)},sx:{mt:.25},children:(0,n.jsx)(eE.A,{fontSize:"small"})})}),(0,n.jsx)(ew.A,{title:o("mcp.local.headers.remove"),children:(0,n.jsx)(j.A,{"aria-label":o("mcp.local.headers.remove"),onClick:()=>{w(i.filter((e,r)=>r!==t))},size:"small",sx:{mt:.25},children:(0,n.jsx)(ek.A,{fontSize:"small"})})})]},t)}),(0,n.jsx)(a.default,{children:(0,n.jsx)(b.A,{startIcon:(0,n.jsx)(eS.A,{}),onClick:()=>{d(e=>[...e,{key:"",value:"",isSecret:!1}])},size:"small",variant:"outlined",children:o("mcp.local.headers.add")})})]}),(0,n.jsx)(eC.A,{open:p,onClose:()=>{u(!1),g(null)},children:(0,n.jsxs)(a.default,{sx:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",width:400,maxWidth:"90%",bgcolor:"background.paper",boxShadow:24,p:4,borderRadius:2},children:[(0,n.jsx)(c.A,{variant:"h6",sx:{mb:2},children:o("mcp.local.headers.bindTitle")}),0===Object.keys(s).length?(0,n.jsx)(c.A,{color:"text.secondary",sx:{mb:2},children:o("mcp.local.headers.noGlobals")}):(0,n.jsx)(a.default,{sx:{maxHeight:300,overflow:"auto",mb:2},children:Object.keys(s).map(e=>(0,n.jsx)(b.A,{fullWidth:!0,variant:"text",onClick:()=>(e=>{null!==h&&(w(i.map((t,r)=>r===h?{...t,isBound:!0,boundTo:e,value:"${global:"+e+"}",isMasked:!1,showWarning:!1}:t)),u(!1),g(null))})(e),sx:{justifyContent:"flex-start",textAlign:"left",mb:1,p:1,borderRadius:1},children:(0,n.jsx)(c.A,{variant:"body2",children:e})},e))}),(0,n.jsx)(a.default,{sx:{display:"flex",justifyContent:"flex-end"},children:(0,n.jsx)(b.A,{variant:"outlined",onClick:()=>{u(!1),g(null)},children:o("mcp.local.cancel")})})]})})]})};var eW=r(32683),e_=r(52277);let eD=/^\$\{global:([^}]+)\}$/,eU=e=>{var t;let{clientId:r,clientSecret:s,onClientIdChange:o,onClientSecretChange:i}=e,{globalEnvVars:d}=(0,eP.useStorage)(),{t:p}=(0,m.s9)(),[u,h]=(0,l.useState)(!1),g=s.match(eD),x=!!g,f=null!=(t=null==g?void 0:g[1])?t:null,y="".concat(window.location.origin,"/api/oauth/callback");return(0,n.jsxs)(a.default,{sx:{position:"relative"},children:[(0,n.jsxs)(c.A,{variant:"subtitle2",gutterBottom:!0,children:[p("mcp.local.oauth.title")," ",(0,n.jsx)(c.A,{component:"span",variant:"caption",color:"text.secondary",children:p("mcp.local.optional")})]}),(0,n.jsx)(c.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:1.5},children:(0,n.jsx)(eI.A,{message:"mcp.local.oauth.help",values:{specLink:(0,n.jsx)(eW.A,{href:"https://modelcontextprotocol.io/specification/draft/basic/authorization",target:"_blank",rel:"noopener",children:p("mcp.local.oauth.spec")})}})}),(0,n.jsx)(v.A,{fullWidth:!0,size:"small",label:p("mcp.local.oauth.clientId"),value:r,onChange:e=>o(e.target.value),placeholder:"e.g. 1234567890abcdef",variant:"outlined",sx:{mb:1.5}}),(0,n.jsx)(v.A,{fullWidth:!0,size:"small",label:p("mcp.local.oauth.clientSecret"),type:x?"text":"password",value:s,onChange:e=>i(e.target.value),placeholder:p("mcp.local.oauth.secretPlaceholder"),variant:"outlined",autoComplete:"off",InputProps:{readOnly:x,endAdornment:x?(0,n.jsx)(ew.A,{title:p("mcp.local.oauth.unbind"),children:(0,n.jsx)(j.A,{size:"small",onClick:()=>i(""),children:(0,n.jsx)(ez.A,{fontSize:"small"})})}):(0,n.jsx)(ew.A,{title:p("mcp.local.headers.bind"),children:(0,n.jsx)(j.A,{size:"small",onClick:()=>h(!0),children:(0,n.jsx)(eE.A,{fontSize:"small"})})})},helperText:x?p("mcp.local.oauth.bound",{variable:null!=f?f:""}):s===eM.RJ?p("mcp.local.oauth.storedSecret"):void 0}),(0,n.jsxs)(a.default,{sx:{mt:1.5,display:"flex",alignItems:"center",gap:.5},children:[(0,n.jsx)(c.A,{variant:"caption",color:"text.secondary",children:p("mcp.local.oauth.redirect")}),(0,n.jsx)(c.A,{variant:"caption",sx:{fontFamily:"monospace"},children:y}),(0,n.jsx)(ew.A,{title:p("mcp.local.oauth.copyRedirect"),children:(0,n.jsx)(j.A,{size:"small",onClick:()=>navigator.clipboard.writeText(y),children:(0,n.jsx)(e_.A,{sx:{fontSize:14}})})})]}),u&&(0,n.jsxs)(a.default,{sx:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",width:400,bgcolor:"background.paper",boxShadow:24,p:3,borderRadius:1,zIndex:9999},children:[(0,n.jsx)(c.A,{variant:"h6",component:"h2",sx:{mb:2},children:p("mcp.local.oauth.bindTitle")}),0===Object.keys(d).length?(0,n.jsx)(c.A,{sx:{mb:2},children:p("mcp.local.headers.noGlobals")}):(0,n.jsx)(a.default,{sx:{maxHeight:300,overflow:"auto",mb:2},children:Object.keys(d).map(e=>(0,n.jsx)(b.A,{onClick:()=>{i("${global:".concat(e,"}")),h(!1)},fullWidth:!0,sx:{justifyContent:"flex-start",textAlign:"left",mb:1,p:1,"&:hover":{bgcolor:"action.hover"}},children:(0,n.jsx)(c.A,{children:e})},e))}),(0,n.jsx)(a.default,{sx:{display:"flex",justifyContent:"flex-end"},children:(0,n.jsx)(b.A,{onClick:()=>h(!1),children:p("mcp.local.cancel")})})]})]})};var eH=r(57813),eB=r(26466),eL=r(18369),eJ=r(13548);let e$=new Set(["npx","bunx","uvx","pipx","dlx"]),eG=new Set(["pnpm","yarn","bun","npm"]),eq=new Set(["dlx","exec","x"]);function eV(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],r=((e||"").split(/[\\/]/).filter(Boolean).pop()||"").toLowerCase().replace(/\.(cmd|exe|bat|ps1)$/i,"");if(e$.has(r))return!0;if(eG.has(r)){let e=(t[0]||"").toLowerCase();return eq.has(e)}return!1}function eK(e){var t;return"stdio"===e.transport&&eV(e.command,null!=(t=e.args)?t:[])}let eX=e=>{let{command:t,setCommand:r,transport:s,setTransport:o,websocketUrl:i,setWebsocketUrl:d,serverUrl:p,setServerUrl:u,onRun:h,isRunning:x,runCompleted:y,env:j,onEnvChange:A,headers:w={},onHeadersChange:C,oauthClientId:S="",oauthClientSecret:k="",onOAuthClientIdChange:E,onOAuthClientSecretChange:z,serverName:P,consoleOutput:T,message:M,setMessage:I,oauthCapable:R=!1,onSaveAndAuthenticate:N,isAuthenticating:F=!1}=e,{t:O,formatNumber:W}=(0,m.s9)();(0,l.useEffect)(()=>{T.includes("MODULE_NOT_FOUND")&&I({type:"error",text:O("mcp.local.run.moduleNotFound")})},[T,I,O]);let _="websocket"!==s||(e=>{if(!e)return!1;try{let t=new URL(e);return"ws:"===t.protocol||"wss:"===t.protocol}catch(e){return!1}})(i),D="sse"!==s&&"streamable"!==s||(e=>{if(!e)return!1;try{let t=new URL(e);return"http:"===t.protocol||"https:"===t.protocol}catch(e){return!1}})(p),U="websocket"===s&&_&&(e=>{try{let t=new URL(e);return"ws:"===t.protocol&&!(e=>{let t=e.toLowerCase();return"localhost"===t||"127.0.0.1"===t||"::1"===t||"[::1]"===t||t.endsWith(".localhost")})(t.hostname)}catch(e){return!1}})(i),H=t.trim().split(/\s+/).filter(Boolean),B="stdio"===s&&H.length>0&&eV(H[0],H.slice(1)),L=Math.round(90);return(0,n.jsxs)(f.A,{spacing:3,children:[M&&"error"===M.type&&(0,n.jsx)(g.A,{severity:"error",sx:{mb:2},children:M.text}),(0,n.jsxs)(a.default,{children:[(0,n.jsx)(c.A,{variant:"subtitle2",gutterBottom:!0,children:O("mcp.local.run.transport")}),(0,n.jsxs)(eH.A,{value:s,onChange:(e,t)=>o(t),sx:{borderBottom:1,borderColor:"divider",mb:2},variant:"scrollable",scrollButtons:"auto",children:[(0,n.jsx)(eB.A,{label:O("mcp.server.transport.stdio"),value:"stdio"}),(0,n.jsx)(eB.A,{label:O("mcp.server.transport.websocket"),value:"websocket"}),(0,n.jsx)(eB.A,{label:O("mcp.server.transport.sse"),value:"sse"}),(0,n.jsx)(eB.A,{label:O("mcp.server.transport.streamable"),value:"streamable"})]})]}),"websocket"===s&&(0,n.jsxs)(a.default,{children:[(0,n.jsx)(c.A,{variant:"subtitle2",gutterBottom:!0,children:O("mcp.local.run.websocketUrl")}),(0,n.jsx)(v.A,{fullWidth:!0,size:"small",value:i,onChange:e=>d(e.target.value),placeholder:"ws://localhost:3000",variant:"outlined",required:!0,error:!_,helperText:!_&&O("mcp.local.run.invalidWebsocket")}),U&&(0,n.jsx)(g.A,{severity:"warning",sx:{mt:1},children:O("mcp.local.run.insecureWebsocket")})]}),("sse"===s||"streamable"===s)&&(0,n.jsxs)(a.default,{children:[(0,n.jsx)(c.A,{variant:"subtitle2",gutterBottom:!0,children:O("mcp.local.run.serverUrl")}),(0,n.jsx)(v.A,{fullWidth:!0,size:"small",value:p,onChange:e=>u(e.target.value),placeholder:"https://localhost:3000",variant:"outlined",required:!0,error:!D,helperText:!D&&O("mcp.local.run.invalidHttp")})]}),("sse"===s||"streamable"===s)&&(0,n.jsx)(a.default,{children:(0,n.jsx)(eO,{headers:w,onChange:C||(()=>{})})}),("sse"===s||"streamable"===s)&&(0,n.jsx)(a.default,{children:(0,n.jsx)(eU,{clientId:S,clientSecret:k,onClientIdChange:E||(()=>{}),onClientSecretChange:z||(()=>{})})}),"stdio"===s&&(0,n.jsxs)(a.default,{children:[(0,n.jsx)(c.A,{variant:"subtitle2",gutterBottom:!0,children:O("mcp.local.run.command")}),(0,n.jsx)(v.A,{fullWidth:!0,size:"small",value:t,onChange:e=>r(e.target.value),placeholder:"npm start",variant:"outlined",required:!0}),B&&(0,n.jsx)(eL.A,{children:O("mcp.local.run.runnerTimeout",{seconds:W(L)})})]}),(0,n.jsx)(a.default,{sx:{display:"flex",justifyContent:"flex-end",mt:1},children:(0,n.jsx)(b.A,{variant:"contained",color:y?"success":"primary",onClick:h,startIcon:x?(0,n.jsx)(ef.default,{size:16,color:"inherit"}):void 0,disabled:x||"stdio"===s&&!t.trim()||"websocket"===s&&!_||("sse"===s||"streamable"===s)&&!D,title:"stdio"!==s||t.trim()?"websocket"!==s||_?"sse"!==s&&"streamable"!==s||D?O("mcp.local.run.testHelp"):O("mcp.local.run.validServer"):O("mcp.local.run.validWebsocket"):O("mcp.local.run.enterCommand"),children:x?O("mcp.local.run.running"):O("mcp.local.run.test")})}),R&&("sse"===s||"streamable"===s)&&N&&(0,n.jsx)(g.A,{severity:"info",action:(0,n.jsx)(b.A,{color:"inherit",size:"small",variant:"outlined",startIcon:F?(0,n.jsx)(ef.default,{size:16,color:"inherit"}):(0,n.jsx)(eJ.A,{}),onClick:()=>{N()},disabled:F||!D,children:F?O("mcp.local.run.authenticating"):O("mcp.local.run.saveAuthenticate")}),children:O("mcp.local.run.oauthHelp")}),(0,n.jsx)(a.default,{children:(0,n.jsx)(eb.A,{serverName:P,initialEnv:j,onSave:async e=>(A(e),Promise.resolve())})})]})};var eY=r(78095);let eZ=e=>{let{args:t,onArgChange:r,onAddArg:l,onRemoveArg:s,onFolderSelect:o,onParseReadme:i,onParseClipboard:d,isParsingReadme:p}=e,{getThemeColor:u}=(0,A.Ic)(),{t:h}=(0,m.s9)();return(0,n.jsxs)(a.default,{children:[(0,n.jsxs)(a.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:1},children:[(0,n.jsx)(c.A,{variant:"subtitle2",children:h("mcp.local.arguments")}),(0,n.jsxs)(f.A,{direction:"row",spacing:1,children:[(0,n.jsx)(b.A,{size:"small",startIcon:(0,n.jsx)(eY.A,{}),onClick:i,disabled:p,color:"inherit",sx:{color:"text.secondary"},children:h("mcp.local.parseReadme")}),(0,n.jsx)(b.A,{size:"small",startIcon:(0,n.jsx)(eY.A,{}),onClick:d,color:"inherit",sx:{color:"text.secondary"},children:h("mcp.local.parseClipboard")})]})]}),(0,n.jsxs)(f.A,{spacing:1,children:[t.map((e,t)=>(0,n.jsxs)(f.A,{direction:"row",spacing:1,children:[(0,n.jsx)(v.A,{fullWidth:!0,size:"small",value:e,onChange:e=>r(t,e.target.value),variant:"outlined"}),(0,n.jsx)(ew.A,{title:h("mcp.local.selectFolder"),children:(0,n.jsx)(j.A,{onClick:()=>o(t),size:"small",sx:{border:1,borderColor:"divider"},children:(0,n.jsx)(x.A,{})})}),(0,n.jsx)(ew.A,{title:h("mcp.local.removeArgument"),children:(0,n.jsx)(j.A,{onClick:()=>s(t),size:"small",sx:{border:1,borderColor:"divider"},children:(0,n.jsx)(ek.A,{})})})]},t)),(0,n.jsx)(b.A,{startIcon:(0,n.jsx)(eS.A,{}),onClick:l,color:"primary",sx:{alignSelf:"flex-start",mt:1},children:h("mcp.local.addArgument")})]})]})};var eQ=r(71651),e0=r(9957),e1=r(52641),e2=r(95436),e5=r(55606),e4=r(86973),e3=r(15485);let e6=(0,e3.A)((0,n.jsx)("path",{d:"M20 9V7c0-1.1-.9-2-2-2h-3c0-1.66-1.34-3-3-3S9 3.34 9 5H6c-1.1 0-2 .9-2 2v2c-1.66 0-3 1.34-3 3s1.34 3 3 3v4c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-4c1.66 0 3-1.34 3-3s-1.34-3-3-3M7.5 11.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5S9.83 13 9 13s-1.5-.67-1.5-1.5M16 17H8v-2h8zm-1-4c-.83 0-1.5-.67-1.5-1.5S14.17 10 15 10s1.5.67 1.5 1.5S15.83 13 15 13"}),"SmartToy");var e7=r(43076);let e9=(0,i.h)("frontend/components/mcp/.../SamplingManager"),e8=e=>{var t;let{policy:r,onChange:s}=e,[o,i]=(0,l.useState)([]),{t:d}=(0,m.s9)(),p=!!(null==r?void 0:r.enabled);(0,l.useEffect)(()=>{let e=!1;return e7.N.loadModels().then(t=>{e||i(Array.isArray(t)?t:[])}).catch(e=>e9.warn("Failed to load models for sampling policy",e)),()=>{e=!0}},[]);let u=e=>{s({enabled:p,modelId:null==r?void 0:r.modelId,maxCallsPerMinute:null==r?void 0:r.maxCallsPerMinute,...e})};return(0,n.jsxs)(a.default,{children:[(0,n.jsx)(g.A,{severity:"warning",sx:{mb:2},children:d("mcp.local.sampling.deprecated")}),(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",mb:.5},children:[(0,n.jsx)(e6,{fontSize:"small",sx:{mr:1,color:"text.secondary"}}),(0,n.jsx)(c.A,{variant:"subtitle1",children:d("mcp.local.sampling.title")}),(0,n.jsx)(e0.A,{checked:p,onChange:e=>u({enabled:e.target.checked}),size:"small",sx:{ml:1}})]}),(0,n.jsx)(c.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:1.5},children:d("mcp.local.sampling.help")}),p&&(0,n.jsxs)(a.default,{sx:{display:"flex",gap:2,flexWrap:"wrap",alignItems:"flex-start"},children:[(0,n.jsxs)(e1.A,{size:"small",sx:{minWidth:260},error:!(null==r?void 0:r.modelId),children:[(0,n.jsx)(e2.A,{id:"sampling-model-label",children:d("mcp.local.sampling.model")}),(0,n.jsxs)(e5.A,{labelId:"sampling-model-label",label:d("mcp.local.sampling.model"),value:o.some(e=>e.id===(null==r?void 0:r.modelId))?null==r?void 0:r.modelId:"",onChange:e=>u({modelId:e.target.value||void 0}),children:[0===o.length&&(0,n.jsx)(e4.A,{value:"",disabled:!0,children:d("mcp.local.sampling.noModels")}),o.map(e=>(0,n.jsx)(e4.A,{value:e.id,children:e.displayName||e.name},e.id))]})]}),(0,n.jsx)(v.A,{size:"small",type:"number",label:d("mcp.local.sampling.maxCalls"),sx:{width:160},value:null!=(t=null==r?void 0:r.maxCallsPerMinute)?t:"",placeholder:"10",onChange:e=>{let t=parseInt(e.target.value,10);u({maxCallsPerMinute:Number.isFinite(t)&&t>0?t:void 0})},helperText:d("mcp.local.sampling.defaultCalls")}),!(null==r?void 0:r.modelId)&&(0,n.jsx)(g.A,{severity:"warning",sx:{width:"100%"},children:d("mcp.local.sampling.selectModel")})]})]})},te=(0,e3.A)([(0,n.jsx)("path",{d:"M4 6H2v14c0 1.1.9 2 2 2h14v-2H4z"},"0"),(0,n.jsx)("path",{d:"M20 2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2m-5.99 13c-.59 0-1.05-.47-1.05-1.05 0-.59.47-1.04 1.05-1.04.59 0 1.04.45 1.04 1.04-.01.58-.45 1.05-1.04 1.05m2.5-6.17c-.63.93-1.23 1.21-1.56 1.81-.13.24-.18.4-.18 1.18h-1.52c0-.41-.06-1.08.26-1.65.41-.73 1.18-1.16 1.63-1.8.48-.68.21-1.94-1.14-1.94-.88 0-1.32.67-1.5 1.23l-1.37-.57C11.51 5.96 12.52 5 13.99 5c1.23 0 2.08.56 2.51 1.26.37.61.58 1.73.01 2.57"},"1")],"Quiz"),tt=e=>{let{policy:t,onChange:r}=e,l=!!(null==t?void 0:t.enabled),{t:s}=(0,m.s9)();return(0,n.jsxs)(a.default,{children:[(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",mb:.5},children:[(0,n.jsx)(te,{fontSize:"small",sx:{mr:1,color:"text.secondary"}}),(0,n.jsx)(c.A,{variant:"subtitle1",children:s("mcp.local.elicitation.title")}),(0,n.jsx)(e0.A,{checked:l,onChange:e=>r({enabled:e.target.checked}),size:"small",sx:{ml:1}})]}),(0,n.jsx)(c.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:1},children:s("mcp.local.elicitation.help")}),l&&(0,n.jsx)(g.A,{severity:"info",sx:{mt:.5},children:s("mcp.local.elicitation.enabled")})]})};var tr=r(62640),tn=r(86631),ta=r(17897);let tl=(e,t)=>(0,S.Tl)("en",e,t),ts=(e,t,r,n,a)=>{var l;let s;return{...s="websocket"===e.transport?{...e,transport:"websocket",websocketUrl:t,_buildCommand:n,_installCommand:a}:"sse"===e.transport?{...e,transport:"sse",serverUrl:r,_buildCommand:n,_installCommand:a}:"streamable"===e.transport?{...e,transport:"streamable",serverUrl:r,_buildCommand:n,_installCommand:a}:{...e,transport:"stdio",_buildCommand:n,_installCommand:a},source:null!=(l=s.source)?l:{type:"local"}}},to=function(e,t,r,n,a,l,s,o,i,c,d){let p=arguments.length>11&&void 0!==arguments[11]?arguments[11]:tl;if(e.preventDefault(),!t.name||"stdio"===t.transport&&!t.command)return void s({type:"error",text:p("mcp.local.messages.required")});if("websocket"===t.transport&&!r)return void s({type:"error",text:p("mcp.local.run.validWebsocket")});if(("sse"===t.transport||"streamable"===t.transport)&&!n)return void s({type:"error",text:p("mcp.local.run.validServer")});let m=ts(t,r,n,a,l);c&&i?i(m):o(m),d&&d()},ti=async function(e,t,r,n,a,l,s){let o=arguments.length>7&&void 0!==arguments[7]?arguments[7]:tl,i=await en(e,e.name,o);i.message&&r(i.message),i.config&&(t("websocket"===i.config.transport?{...i.config,env:e.env,transport:"websocket",websocketUrl:i.config.websocketUrl||s}:{...i.config,env:e.env,transport:"stdio",command:i.config.command||"",args:i.config.args||[]}),i.config._buildCommand&&n(i.config._buildCommand),i.config._installCommand&&a(i.config._installCommand))},tc=async function(e,t,r,n,a,l,s,o){let i=arguments.length>8&&void 0!==arguments[8]?arguments[8]:tl;n(!0),r({type:"success",text:i("mcp.local.messages.parsingReadme")});try{if(!e.name)throw Error(i("mcp.local.messages.serverNameFirst"));let n=e.name,c=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"readFile",savePath:"".concat(n,"/README.md")})});if(console.log("DEBUG - API response status:",c.status),!c.ok)throw Error(i("mcp.local.messages.readmeReadFailed"));let d=await c.json();if(!d.content)throw Error(i("mcp.local.messages.readmeEmpty"));let p=await er(d.content,e,e.name,i);console.log("DEBUG - Parsing README content with repository root path:",e.name),p.message&&r(p.message),p.config&&("websocket"===p.config.transport?(t({...p.config,transport:"websocket",websocketUrl:p.config.websocketUrl||o}),p.config.websocketUrl&&s(p.config.websocketUrl)):t({...p.config,transport:"stdio",command:p.config.command||"",args:p.config.args||[]}),p.config._buildCommand&&a(p.config._buildCommand),p.config._installCommand&&l(p.config._installCommand))}catch(e){console.error("Error parsing README:",e),r({type:"error",text:i("mcp.local.messages.readmeError",{error:e.message||i("mcp.server.unknownError")})})}finally{n(!1)}},td=async function(e,t,r,n,a,l,s,o){let i=arguments.length>8&&void 0!==arguments[8]?arguments[8]:tl;if(!e.name)return void n({type:"error",text:i("mcp.local.messages.serverNameFirst")});r(!0),n({type:"success",text:i("mcp.local.progress.installingDependencies")}),a(i("mcp.local.console.installTitle")),l(!0),s("".concat(i("mcp.local.console.executing",{command:t}),"\n\n")),console.log("DEBUG - Installing dependencies for server:",e.name);let c=e.rootPath||"mcp-servers/".concat(e.name),d=!1,p=await (0,tn.b)(c,t,e=>{d=!0,s(t=>t+e)},i);d||s(e=>e+(p.output||i("mcp.local.console.noCommandOutput"))),p.success?(o(!0),n({type:"success",text:i("mcp.local.messages.installSuccess")})):n({type:"error",text:i("mcp.local.messages.installFailed")}),r(!1)},tp=async function(e,t,r,n,a,l,s,o){let i=arguments.length>8&&void 0!==arguments[8]?arguments[8]:tl;if(!e.name)return void n({type:"error",text:i("mcp.local.messages.serverNameFirst")});r(!0),n({type:"success",text:i("mcp.local.progress.buildingServer")}),a(i("mcp.local.console.buildTitle")),l(!0),s("".concat(i("mcp.local.console.executing",{command:t}),"\n\n")),console.log("DEBUG - Building server:",e.name);let c=e.rootPath||"mcp-servers/".concat(e.name),d=!1,p=await (0,tn.c)(c,t,e=>{d=!0,s(t=>t+e)},i);d||s(e=>e+(p.output||i("mcp.local.console.noCommandOutput"))),p.success?(o(!0),n({type:"success",text:i("mcp.local.messages.buildSuccess")})):n({type:"error",text:i("mcp.local.messages.buildFailed")}),r(!1)},tm=async function(e,t,r,n,a,l,s,o,i,c,d){var p,m,u;let h=arguments.length>11&&void 0!==arguments[11]?arguments[11]:tl;if(null==d||d(!1),!e.name)return void o({type:"error",text:h("mcp.local.messages.serverNameFirst")});if("stdio"===e.transport&&!e.command)return void o({type:"error",text:h("mcp.local.run.enterCommand")});if("websocket"===e.transport&&!t)return void o({type:"error",text:h("mcp.local.run.validWebsocket")});if(("sse"===e.transport||"streamable"===e.transport)&&!r)return void o({type:"error",text:h("mcp.local.run.validServer")});n(!0),a(h("mcp.local.console.testTitle")),l("".concat(h("mcp.local.messages.testing"),"\n")),s(!0),o({type:"success",text:h("mcp.local.messages.testing")});let g=e=>{"stderr"===e.type||"stdout"===e.type?l(t=>t+e.data):"status"===e.type&&e.message&&l(t=>t+e.message+"\n")};if("sse"===e.transport||"streamable"===e.transport){try{l(e=>e+"".concat(h("mcp.local.console.attempting",{url:r}),"\n"));let t={...e,serverUrl:r},n=Object.keys(e.headers||{}).length;n>0&&l(e=>e+"".concat(h("mcp.local.console.headerCount",{count:n}),"\n"));let a=await ta.S.testConnectionStreaming(t,g,c);if(a.success){i(!0);let e=null==(p=a.data)?void 0:p.toolCount;o({type:"success",text:h("mcp.local.messages.testSuccessReachable")}),l(e=>e+"".concat(h("mcp.local.console.handshake"),"\n")),"number"==typeof e&&l(t=>t+"".concat(h("mcp.local.console.toolsFound",{count:e}),"\n")),l(e=>e+"\n✅ ".concat(h("mcp.local.console.passed"),"\n"))}else a.requiresAuthentication?(l(e=>e+"".concat(h("mcp.local.console.authRequired"),"\n")),a.error&&l(e=>{var t;return e+"".concat(h("mcp.local.console.details",{details:null!=(t=a.error)?t:""}),"\n")}),a.oauthCapable&&"streamable"===e.transport?(null==d||d(!0),o({type:"warning",text:h("mcp.local.messages.oauthReachable")}),l(e=>e+"\n\uD83D\uDD11 ".concat(h("mcp.local.console.oauthAction"),"\n"))):(o({type:"warning",text:h("mcp.local.messages.authReachable")}),l(e=>e+"\n⚠️ ".concat(h("mcp.local.console.authHeaders"),"\n")))):(o({type:"error",text:h("mcp.local.messages.testFailed")}),l(e=>e+"".concat(h("mcp.local.console.failed"),"\n")),l(e=>e+"".concat(h("mcp.local.console.details",{details:a.error||h("mcp.server.unknownError")}),"\n")),l(e=>e+"\n❌ ".concat(h("mcp.local.messages.testFailed"),"\n")))}catch(e){console.error("Error testing connection:",e),l(t=>t+"\n".concat(h("mcp.local.console.testError",{error:e.message||h("mcp.server.unknownError")}),"\n")),o({type:"error",text:h("mcp.local.messages.testError")})}finally{n(!1)}return}if("websocket"===e.transport){try{l(e=>e+"".concat(h("mcp.local.console.attempting",{url:t}),"\n"));let r={...e,websocketUrl:t},n=await ta.S.testConnectionStreaming(r,g);if(n.success){i(!0);let e=null==(m=n.data)?void 0:m.toolCount;o({type:"success",text:h("mcp.local.messages.testSuccessHandshake")}),l(e=>e+"".concat(h("mcp.local.console.handshake"),"\n")),"number"==typeof e&&l(t=>t+"".concat(h("mcp.local.console.toolsFound",{count:e}),"\n")),l(e=>e+"\n✅ ".concat(h("mcp.local.console.passed"),"\n"))}else n.requiresAuthentication?(o({type:"warning",text:h("mcp.local.messages.authReachable")}),l(e=>e+"".concat(h("mcp.local.console.authRequired"),"\n")),n.error&&l(e=>{var t;return e+"".concat(h("mcp.local.console.details",{details:null!=(t=n.error)?t:""}),"\n")}),l(e=>e+"\n⚠️ ".concat(h("mcp.local.console.authCredentials"),"\n"))):(o({type:"error",text:h("mcp.local.messages.testFailed")}),l(e=>e+"".concat(h("mcp.local.console.failed"),"\n")),l(e=>e+"".concat(h("mcp.local.console.details",{details:n.error||h("mcp.server.unknownError")}),"\n")),l(e=>e+"\n❌ ".concat(h("mcp.local.messages.testFailed"),"\n")))}catch(e){console.error("Error testing WebSocket connection:",e),l(t=>t+"\n".concat(h("mcp.local.console.testError",{error:e.message||h("mcp.server.unknownError")}),"\n")),o({type:"error",text:h("mcp.local.messages.testError")})}finally{n(!1)}return}try{if("stdio"===e.transport){let t=(e.args||[]).join(" ");if(l(r=>r+"".concat(h("mcp.local.console.launching",{command:"".concat(e.command).concat(t?" "+t:"")}),"\n")),eK(e)){let t=Math.round((eK(e)?9e4:15e3)/1e3);l(e=>e+"".concat(h("mcp.local.console.runnerWait",{seconds:t}),"\n"))}}let t=await ta.S.testConnectionStreaming(e,g);if(t.success){i(!0);let e=null==(u=t.data)?void 0:u.toolCount;o({type:"success",text:h("mcp.local.messages.testSuccessStarted")}),l(e=>e+"".concat(h("mcp.local.console.handshake"),"\n")),"number"==typeof e&&l(t=>t+"".concat(h("mcp.local.console.toolsFound",{count:e}),"\n")),l(e=>e+"\n✅ ".concat(h("mcp.local.console.passed"),"\n"))}else t.requiresAuthentication?(o({type:"warning",text:h("mcp.local.messages.authStarted")}),l(e=>e+"".concat(h("mcp.local.console.authRequired"),"\n")),t.error&&l(e=>{var r;return e+"".concat(h("mcp.local.console.details",{details:null!=(r=t.error)?r:""}),"\n")}),l(e=>e+"\n⚠️ ".concat(h("mcp.local.console.authEnvHeaders"),"\n"))):(o({type:"error",text:h("mcp.local.messages.testFailed")}),l(e=>e+"".concat(h("mcp.local.console.failed"),"\n")),l(e=>e+"".concat(h("mcp.local.console.details",{details:t.error||h("mcp.server.unknownError")}),"\n")),l(e=>e+"\n❌ ".concat(h("mcp.local.messages.testFailed"),"\n")))}catch(e){console.error("Error testing stdio connection:",e),l(t=>t+"\n".concat(h("mcp.local.console.testError",{error:e.message||h("mcp.server.unknownError")}),"\n")),o({type:"error",text:h("mcp.local.messages.testError")})}finally{n(!1)}};var tu=r(98267),th=r(20537),tg=r(37960),tx=r(63186);let tf=e=>{let{initialConfig:t,onAdd:r,onUpdate:s,onClose:o,autoTestRun:i,onSaveAndAuthenticate:d}=e,{t:u}=(0,m.s9)(),{localConfig:h,setLocalConfig:x,websocketUrl:v,setWebsocketUrl:y,serverUrl:j,setServerUrl:A,buildCommand:w,setBuildCommand:C,installCommand:S,setInstallCommand:k,message:E,setMessage:z,buildMessage:P,setBuildMessage:T,isBuilding:M,setIsBuilding:I,isInstalling:R,setIsInstalling:N,buildCompleted:F,setBuildCompleted:O,installCompleted:W,setInstallCompleted:_,isParsingReadme:D,setIsParsingReadme:U,isParsingEnv:H,setIsParsingEnv:B,isRunning:L,setIsRunning:J,runCompleted:$,setRunCompleted:G,expandedSections:q,setExpandedSections:V,handleTransportChange:K,handleArgChange:X,addArgField:Y,removeArgField:Z,handleEnvChange:Q}=(e=>{let{initialConfig:t,isOpen:r=!0}=e,{t:n}=(0,m.s9)(),[a,s]=(0,l.useState)({define:!0,build:!0,run:!0}),[o,i]=(0,l.useState)({name:"",command:"",args:[],env:{},disabled:!1,autoApprove:[],rootPath:"",transport:"stdio",_buildCommand:"",_installCommand:""}),[c,d]=(0,l.useState)(""),[p,u]=(0,l.useState)(""),[h,g]=(0,l.useState)(""),[x,f]=(0,l.useState)(""),[v,b]=(0,l.useState)(null),[y,j]=(0,l.useState)(null),[A,w]=(0,l.useState)(!1),[C,S]=(0,l.useState)(!1),[k,E]=(0,l.useState)(!1),[z,P]=(0,l.useState)(!1),[T,M]=(0,l.useState)(!1),[I,R]=(0,l.useState)(!1),[N,F]=(0,l.useState)(""),[O,W]=(0,l.useState)(!1),[_,D]=(0,l.useState)(!1),[U,H]=(0,l.useState)(!1),[B,L]=(0,l.useState)(()=>n("mcp.local.console.output"));return(0,l.useEffect)(()=>{if(r)if(t){let e=t.rootPath||"";i({...t,rootPath:e}),g(t._buildCommand||""),f(t._installCommand||""),"websocket"===t.transport?(d(t.websocketUrl||""),u("")):"sse"===t.transport||"streamable"===t.transport?(u(t.serverUrl||""),d("")):(d(""),u(""))}else i({name:"",command:"",args:[],env:{},disabled:!1,autoApprove:[],rootPath:"",transport:"stdio",_buildCommand:"",_installCommand:""}),g(""),f(""),d(""),b(null),j(null),w(!1),S(!1),E(!1),P(!1),M(!1),R(!1),F(""),W(!1),D(!1),H(!1),L(n("mcp.local.console.output")),s({define:!0,build:!0,run:!0})},[r,t,n]),{localConfig:o,setLocalConfig:i,websocketUrl:c,setWebsocketUrl:d,serverUrl:p,setServerUrl:u,buildCommand:h,setBuildCommand:g,installCommand:x,setInstallCommand:f,message:v,setMessage:b,buildMessage:y,setBuildMessage:j,isBuilding:A,setIsBuilding:w,isInstalling:C,setIsInstalling:S,buildCompleted:k,setBuildCompleted:E,installCompleted:z,setInstallCompleted:P,isParsingReadme:T,setIsParsingReadme:M,isParsingEnv:I,setIsParsingEnv:R,consoleOutput:N,setConsoleOutput:F,isConsoleVisible:O,setIsConsoleVisible:W,isRunning:_,setIsRunning:D,runCompleted:U,setRunCompleted:H,consoleTitle:B,setConsoleTitle:L,expandedSections:a,setExpandedSections:s,handleTransportChange:e=>{"websocket"===e?i(e=>({name:e.name,disabled:e.disabled,autoApprove:e.autoApprove,rootPath:e.rootPath,env:e.env,_buildCommand:e._buildCommand,_installCommand:e._installCommand,roots:e.roots,exposeAsMcpServer:e.exposeAsMcpServer,sampling:e.sampling,transport:"websocket",websocketUrl:c})):"sse"===e?i(e=>({name:e.name,disabled:e.disabled,autoApprove:e.autoApprove,rootPath:e.rootPath,env:e.env,_buildCommand:e._buildCommand,_installCommand:e._installCommand,roots:e.roots,exposeAsMcpServer:e.exposeAsMcpServer,sampling:e.sampling,transport:"sse",serverUrl:p,headers:e.headers||{}})):"streamable"===e?i(e=>({name:e.name,disabled:e.disabled,autoApprove:e.autoApprove,rootPath:e.rootPath,env:e.env,_buildCommand:e._buildCommand,_installCommand:e._installCommand,roots:e.roots,exposeAsMcpServer:e.exposeAsMcpServer,sampling:e.sampling,transport:"streamable",serverUrl:p,headers:e.headers||{}})):i(e=>({name:e.name,command:"stdio"===e.transport?e.command:"",args:"stdio"===e.transport?e.args:[],disabled:e.disabled,autoApprove:e.autoApprove,rootPath:e.rootPath,env:e.env,_buildCommand:e._buildCommand,_installCommand:e._installCommand,roots:e.roots,exposeAsMcpServer:e.exposeAsMcpServer,sampling:e.sampling,transport:"stdio"}))},handleArgChange:(e,t)=>{"stdio"===o.transport&&i(r=>"stdio"===r.transport&&r.args?{...r,args:r.args.map((r,n)=>n===e?t:r)}:r)},addArgField:()=>{"stdio"===o.transport&&i(e=>{if("stdio"===e.transport){let t=e.args||[];return{...e,args:[...t,""]}}return e})},removeArgField:e=>{"stdio"===o.transport&&i(t=>"stdio"===t.transport&&t.args?{...t,args:t.args.filter((t,r)=>r!==e)}:t)},handleEnvChange:e=>{i(t=>{let r={...t,env:e};return"stdio"===t.transport||"websocket"===t.transport?r:t})}}})({initialConfig:t,isOpen:!0});(0,l.useEffect)(()=>{t&&t.name&&t.rootPath&&"stdio"===t.transport&&(!t.command||""===t.command)&&(!t._buildCommand||""===t._buildCommand)&&(!t._installCommand||""===t._installCommand)&&(z({type:"warning",text:u("mcp.local.detectionFailed")}),V({define:!0,build:!0,run:!0}))},[t,V,z,u]);let[ee,et]=(0,l.useState)(!1),[er,en]=(0,l.useState)(null),ea=async()=>{et(!0)},el=async e=>{en(e)},es=async()=>{await ti(h,x,z,C,k,y,v,u)},eo=async()=>{await tc(h,x,z,U,C,k,y,v,u)},ei=async()=>{await td(h,S,N,T,ew,eS,ez,_,u)},ec=async()=>{await tp(h,w,I,T,ew,eS,ez,O,u)},[ed,ep]=(0,l.useState)(!1),[em,eu]=(0,l.useState)(!1),ef=async()=>{await tm(h,v,j,J,ew,ez,eS,z,G,null==t?void 0:t.name,ep,u)},eb=async()=>{if(!d)return;if(!h.name||!j)return void z({type:"error",text:u("mcp.local.auth.missingDetails")});let e=ts(h,v,j,w,S);eu(!0),z({type:"success",text:u("mcp.local.auth.starting",{server:e.name})});try{let t=await d(e);"needs_client_credentials"===t.status?z({type:"warning",text:t.error||u("mcp.local.auth.credentialsRequired")}):"error"===t.status&&z({type:"error",text:t.error||u("mcp.local.auth.failed")})}catch(e){z({type:"error",text:u("mcp.local.auth.failedWithError",{error:e instanceof Error?e.message:u("mcp.server.unknownError")})})}finally{eu(!1)}},{consoleOutput:ey,isConsoleVisible:ej,consoleTitle:eA,setConsoleTitle:ew,toggleConsoleVisibility:eC,setIsConsoleVisible:eS,appendToConsole:ek,clearConsole:eE,updateConsole:ez}=eg(),eP=(0,l.useRef)(!1);(0,l.useEffect)(()=>{i&&!eP.current&&(null==t?void 0:t.name)&&h.name===t.name&&(eP.current=!0,V({define:!1,build:!1,run:!0}),_(!0),O(!0),ef())},[i,t,h.name]);let eT=e=>(t,r)=>{V({...q,[e]:r})},eM=e=>{switch(e){case"error":return"error.main";case"success":return"success.main";case"warning":return"warning.main";case"loading":return"info.main";default:return"text.primary"}};return(0,n.jsxs)(a.default,{component:"form",onSubmit:e=>{to(e,h,v,j,w,S,z,r,s,t,o,u)},sx:{width:"100%"},children:[(0,n.jsxs)(p.Ay,{container:!0,spacing:2,children:[(0,n.jsx)(p.Ay,{item:!0,xs:ej?8:12,children:(0,n.jsxs)(f.A,{spacing:3,children:[(0,n.jsxs)(tu.A,{expanded:q.define,onChange:eT("define"),sx:{border:1,borderColor:h.name&&h.rootPath?i?"success.main":"divider":"error.main",bgcolor:h.name&&h.rootPath?i?"success.lighter":"background.paper":"error.lighter","&:before":{display:"none"},borderRadius:1,boxShadow:e=>+("dark"===e.palette.mode),mb:2,overflow:"hidden"},children:[(0,n.jsx)(th.A,{expandIcon:(0,n.jsx)(tx.A,{}),"aria-controls":"define-server-content",id:"define-server-header",sx:{"& .MuiAccordionSummary-content":{alignItems:"center"},minHeight:56,px:2},children:(0,n.jsx)(c.A,{variant:"h6",sx:{color:eM(h.name&&h.rootPath?i?"success":"default":"error"),fontWeight:500},children:u("mcp.local.section.define")})}),(0,n.jsx)(tg.A,{sx:{px:3,py:2},children:(0,n.jsx)(ex,{name:h.name,setName:e=>x({...h,name:e}),rootPath:h.rootPath||"",setRootPath:e=>x({...h,rootPath:e}),onRootPathSelect:ea})})]}),(0,n.jsxs)(tu.A,{expanded:q.build,onChange:eT("build"),sx:{border:1,borderColor:(null==P?void 0:P.type)==="error"?"error.main":W&&F?"success.main":W||F?"warning.main":R||M?"info.main":"divider",bgcolor:(null==P?void 0:P.type)==="error"?"error.lighter":W&&F?"success.lighter":W||F?"warning.lighter":R||M?"info.lighter":"background.paper","&:before":{display:"none"},borderRadius:1,boxShadow:e=>+("dark"===e.palette.mode),mb:2,overflow:"hidden"},children:[(0,n.jsx)(th.A,{expandIcon:(0,n.jsx)(tx.A,{}),"aria-controls":"build-content",id:"build-header",sx:{"& .MuiAccordionSummary-content":{alignItems:"center"},minHeight:56,px:2},children:(0,n.jsx)(c.A,{variant:"h6",sx:{color:eM((null==P?void 0:P.type)==="error"?"error":W&&F?"success":W||F?"warning":R||M?"loading":"default"),fontWeight:500},children:u("mcp.local.section.build")})}),(0,n.jsx)(tg.A,{sx:{px:3,py:2},children:(0,n.jsx)(ev,{installCommand:S,setinstallCommand:k,buildCommand:w,setBuildCommand:C,onInstall:ei,onBuild:ec,isInstalling:R,isBuilding:M,installCompleted:W,buildCompleted:F,buildMessage:P})})]}),(0,n.jsxs)(tu.A,{expanded:q.run,onChange:eT("run"),sx:{border:1,borderColor:(null==E?void 0:E.type)!=="error"||L?$?"success.main":L?"info.main":"divider":"error.main",bgcolor:(null==E?void 0:E.type)!=="error"||L?$?"success.lighter":L?"info.lighter":"background.paper":"error.lighter","&:before":{display:"none"},borderRadius:1,boxShadow:e=>+("dark"===e.palette.mode),mb:2,overflow:"hidden"},children:[(0,n.jsx)(th.A,{expandIcon:(0,n.jsx)(tx.A,{}),"aria-controls":"run-content",id:"run-header",sx:{"& .MuiAccordionSummary-content":{alignItems:"center"},minHeight:56,px:2},children:(0,n.jsx)(c.A,{variant:"h6",sx:{color:eM((null==E?void 0:E.type)!=="error"||L?$?"success":L?"loading":"default":"error"),fontWeight:500},children:u("mcp.local.section.run")})}),(0,n.jsx)(tg.A,{sx:{px:3,py:2},children:(0,n.jsxs)(f.A,{spacing:4,children:[(0,n.jsx)(eX,{command:"stdio"===h.transport?h.command:"",setCommand:e=>{"stdio"===h.transport&&x(t=>"stdio"===t.transport?{...t,command:e}:t)},transport:h.transport,setTransport:K,websocketUrl:v,setWebsocketUrl:y,serverUrl:j,setServerUrl:A,onRun:ef,isRunning:L,runCompleted:$,env:h.env,onEnvChange:Q,headers:("sse"===h.transport||"streamable"===h.transport)&&h.headers||{},onHeadersChange:e=>x(t=>({...t,headers:e})),oauthClientId:h.oauthClientId||"",oauthClientSecret:h.oauthClientSecret||"",onOAuthClientIdChange:e=>x(t=>({...t,oauthClientId:e})),onOAuthClientSecretChange:e=>x(t=>({...t,oauthClientSecret:e})),serverName:h.name,consoleOutput:ey,message:E,setMessage:z,oauthCapable:ed,onSaveAndAuthenticate:d?eb:void 0,isAuthenticating:em}),(0,n.jsx)(a.default,{children:(0,n.jsx)(eZ,{args:"stdio"===h.transport&&h.args||[],onArgChange:X,onAddArg:Y,onRemoveArg:Z,onFolderSelect:el,onParseReadme:eo,onParseClipboard:es,isParsingReadme:D})}),(0,n.jsx)(a.default,{children:(0,n.jsx)(eQ.A,{roots:h.roots||[],onChange:e=>x(t=>({...t,roots:e}))})}),(0,n.jsx)(a.default,{children:(0,n.jsx)(e8,{policy:h.sampling,onChange:e=>x(t=>({...t,sampling:e}))})}),(0,n.jsx)(a.default,{children:(0,n.jsx)(tt,{policy:h.elicitation,onChange:e=>x(t=>({...t,elicitation:e}))})})]})})]})]})}),ej&&(0,n.jsx)(p.Ay,{item:!0,xs:4,children:(0,n.jsx)(eh,{output:ey,isVisible:!0,toggleVisibility:eC,title:eA})})]}),E&&(0,n.jsx)(a.default,{sx:{mt:2,mb:2},children:(0,n.jsx)(g.A,{severity:E.type,children:E.text})}),(0,n.jsxs)(a.default,{sx:{display:"flex",justifyContent:"flex-end",gap:1,mt:3},children:[(0,n.jsx)(b.A,{variant:"outlined",onClick:o,children:u("mcp.local.cancel")}),(0,n.jsx)(b.A,{type:"submit",variant:"contained",color:"primary",children:t?u("mcp.local.updateServer"):u("mcp.local.addServer")})]}),(0,n.jsx)(tr.A,{open:ee,title:u("mcp.local.chooseServerFolder"),initialPath:h.rootPath||void 0,onClose:()=>et(!1),onSelect:e=>x({...h,rootPath:e})}),(0,n.jsx)(tr.A,{open:null!==er,title:u("mcp.local.chooseFolderOrFile"),selectFiles:!0,onClose:()=>en(null),onSelect:e=>{null!==er&&X(er,e)}})]})},tv={npm:"npx",pypi:"uvx",oci:"docker",nuget:"dnx"},tb={npm:"npm",pypi:"PyPI",oci:"Docker",nuget:"NuGet",mcpb:"MCPB",cargo:"Cargo"};function ty(e){var t,r,n;let a=[];for(let r of null!=(t=e.packages)?t:[])(function(e){var t;if(!e.identifier||!tv[e.registryType]&&!e.runtimeHint)return!1;let r=null==(t=e.transport)?void 0:t.type;return!r||"stdio"===r})(r)&&a.push({kind:"package",label:"".concat(tb[n=r.registryType]||n,": ").concat(r.identifier),pkg:r});for(let t of null!=(r=e.remotes)?r:[])t.url&&("streamable-http"===t.type||"sse"===t.type)&&a.push({kind:"remote",label:"Remote (".concat("sse"===t.type?"SSE":"Streamable HTTP","): ").concat(t.url),remote:t});return a}let tj=new Set(["mcp","server","mcp-server","mcpserver"]);function tA(e){let t=e.indexOf("/"),r=t>=0?e.slice(0,t):"",n=t>=0?e.slice(t+1):e;if(!tj.has(n.toLowerCase())||!r)return n;let a=r.split(".").pop()||"";return a?"".concat(a,"-").concat(n):n}function tw(e){return e.title?e.title:tA(e.name)}function tC(e,t){let r=e.icons;if(!r||0===r.length)return null;let n=r.filter(e=>{if(!(null==e?void 0:e.src))return!1;try{return/^https?:$/.test(new URL(e.src).protocol)}catch(e){return!1}});if(0===n.length)return null;let a=t?n.find(e=>e.theme===t):void 0;return(null!=a?a:n[0]).src}function tS(e){var t;let r=null!=(t=e.value)?t:e.default;return"named"===e.type?e.name?void 0!==r&&""!==r?[e.name,r]:e.isRequired&&e.valueHint?[e.name,"<".concat(e.valueHint,">")]:e.isRequired?[e.name]:[]:[]:void 0!==r&&""!==r?[r]:e.isRequired?["<".concat(e.valueHint||"value",">")]:[]}function tk(e){return(null!=e?e:[]).flatMap(tS)}function tE(e){return{name:tA(e.name).replace(/[^a-zA-Z0-9_-]+/g,"-").replace(/^-+|-+$/g,"")||"mcp-server",disabled:!1,autoApprove:[],env:{},_buildCommand:"",_installCommand:""}}function tz(e){return e.version?"".concat(e.identifier,"@").concat(e.version):e.identifier}function tP(e,t){var r;let n="package"===t.kind?function(e,t){let r,n=t.runtimeHint||tv[t.registryType],a=tk(t.packageArguments),l=tk(t.runtimeArguments),s=function(e){let t={};for(let a of null!=e?e:[]){var r,n;if(!a.name)continue;let e=null!=(n=null!=(r=a.value)?r:a.default)?n:"";t[a.name]=a.isSecret?{value:e,metadata:{isSecret:!0}}:e}return t}(t.environmentVariables);switch(t.registryType){case"npm":r=[...l,"-y",tz(t),...a];break;case"pypi":r=[...l,t.version?"".concat(t.identifier,"==").concat(t.version):t.identifier,...a];break;case"oci":{let e=Object.keys(s).flatMap(e=>["-e",e]);r=[..."run"===l[0]?[]:["run","-i","--rm"],...l,...e,function(e){let t=e.identifier.split("/").pop()||e.identifier;return!(t.includes(":")||t.includes("@"))&&e.version?"".concat(e.identifier,":").concat(e.version):e.identifier}(t),...a];break}case"nuget":r=[...l,tz(t),"--yes",...a];break;default:r=[...l,tz(t),...a]}return{...tE(e),transport:"stdio",command:n,args:r,env:s,rootPath:"."}}(e,t.pkg):function(e,t){var r,n,a;let l={};for(let e of null!=(r=t.headers)?r:[])e.name&&(l[e.name]=null!=(a=null!=(n=e.value)?n:e.default)?a:"");let s=tE(e);return{...s,transport:"sse"===t.type?"sse":"streamable",serverUrl:t.url,headers:l,rootPath:"mcp-servers/".concat(s.name)}}(e,t.remote),a="package"===t.kind&&null!=(r=t.pkg.version)?r:e.version,l={type:"registry",registryName:e.name,...a?{version:a}:{}};return{...n,source:l}}function tT(e,t){var r,n;return"package"===e.kind?(null!=(r=e.pkg.environmentVariables)?r:[]).filter(e=>{var r;return e.isRequired&&!(null!=(r=e.value)?r:e.default)&&!(null==t?void 0:t[e.name])}).map(e=>e.name):(null!=(n=e.remote.headers)?n:[]).filter(e=>{var r;return e.isRequired&&!(null!=(r=e.value)?r:e.default)&&!(null==t?void 0:t[e.name])}).map(e=>e.name)}var tM=r(29767),tI=r(53062),tR=r(2821),tN=r(57001),tF=r(48116),tO=r(66964),tW=r(16625);let t_=(0,e3.A)((0,n.jsx)("path",{d:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"}),"Person");var tD=r(85795),tU=r(95195);function tH(e){return(0,tU.Ay)("MuiAvatar",e)}(0,tD.A)("MuiAvatar",["root","colorDefault","circular","rounded","square","img","fallback"]);var tB=r(77765);let tL=(0,tF.Ay)("div",{name:"MuiAvatar",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:r}=e;return[t.root,t[r.variant],r.colorDefault&&t.colorDefault]}})((0,tO.A)(e=>{let{theme:t}=e;return{position:"relative",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0,width:40,height:40,fontFamily:t.typography.fontFamily,fontSize:t.typography.pxToRem(20),lineHeight:1,borderRadius:"50%",overflow:"hidden",userSelect:"none",variants:[{props:{variant:"rounded"},style:{borderRadius:(t.vars||t).shape.borderRadius}},{props:{variant:"square"},style:{borderRadius:0}},{props:{colorDefault:!0},style:{color:(t.vars||t).palette.background.default,...t.vars?{backgroundColor:t.vars.palette.Avatar.defaultBg}:{backgroundColor:t.palette.grey[400],...t.applyStyles("dark",{backgroundColor:t.palette.grey[600]})}}}]}})),tJ=(0,tF.Ay)("img",{name:"MuiAvatar",slot:"Img",overridesResolver:(e,t)=>t.img})({width:"100%",height:"100%",textAlign:"center",objectFit:"cover",color:"transparent",textIndent:1e4}),t$=(0,tF.Ay)(t_,{name:"MuiAvatar",slot:"Fallback",overridesResolver:(e,t)=>t.fallback})({width:"75%",height:"75%"}),tG=l.forwardRef(function(e,t){let r=(0,tW.b)({props:e,name:"MuiAvatar"}),{alt:a,children:s,className:o,component:i="div",slots:c={},slotProps:d={},imgProps:p,sizes:m,src:u,srcSet:h,variant:g="circular",...x}=r,f=null,v={...r,component:i,variant:g},b=function(e){let{crossOrigin:t,referrerPolicy:r,src:n,srcSet:a}=e,[s,o]=l.useState(!1);return l.useEffect(()=>{if(!n&&!a)return;o(!1);let e=!0,l=new Image;return l.onload=()=>{e&&o("loaded")},l.onerror=()=>{e&&o("error")},l.crossOrigin=t,l.referrerPolicy=r,l.src=n,a&&(l.srcset=a),()=>{e=!1}},[t,r,n,a]),s}({...p,..."function"==typeof d.img?d.img(v):d.img,src:u,srcSet:h}),y=u||h,j=y&&"error"!==b;v.colorDefault=!j,delete v.ownerState;let A=(e=>{let{classes:t,variant:r,colorDefault:n}=e;return(0,tN.A)({root:["root",r,n&&"colorDefault"],img:["img"],fallback:["fallback"]},tH,t)})(v),[w,C]=(0,tB.A)("img",{className:A.img,elementType:tJ,externalForwardedProps:{slots:c,slotProps:{img:{...p,...d.img}}},additionalProps:{alt:a,src:u,srcSet:h,sizes:m},ownerState:v});return f=j?(0,n.jsx)(w,{...C}):s||0===s?s:y&&a?a[0]:(0,n.jsx)(t$,{ownerState:v,className:A.fallback}),(0,n.jsx)(tL,{as:i,className:(0,tR.A)(A.root,o),ref:t,...x,ownerState:v,children:f})});var tq=r(84578),tV=r(2778),tK=r(52363),tX=r(65036),tY=r(41602),tZ=r(73707),tQ=r(49501),t0=r(17681),t1=r(75912),t2=r(51611);let t5=(0,e3.A)((0,n.jsx)("path",{d:"M12 1.27a11 11 0 00-3.48 21.46c.55.09.73-.28.73-.55v-1.84c-3.03.64-3.67-1.46-3.67-1.46-.55-1.29-1.28-1.65-1.28-1.65-.92-.65.1-.65.1-.65 1.1 0 1.73 1.1 1.73 1.1.92 1.65 2.57 1.2 3.21.92a2 2 0 01.64-1.47c-2.47-.27-5.04-1.19-5.04-5.5 0-1.1.46-2.1 1.2-2.84a3.76 3.76 0 010-2.93s.91-.28 3.11 1.1c1.8-.49 3.7-.49 5.5 0 2.1-1.38 3.02-1.1 3.02-1.1a3.76 3.76 0 010 2.93c.83.74 1.2 1.74 1.2 2.94 0 4.21-2.57 5.13-5.04 5.4.45.37.82.92.82 2.02v3.03c0 .27.1.64.73.55A11 11 0 0012 1.27"}),"GitHub");var t4=r(53657),t3=r(67891);let t6=(0,e3.A)((0,n.jsx)("path",{d:"M19.35 10.04C18.67 6.59 15.64 4 12 4 9.11 4 6.6 5.64 5.35 8.04 2.34 8.36 0 10.91 0 14c0 3.31 2.69 6 6 6h13c2.76 0 5-2.24 5-5 0-2.64-2.05-4.78-4.65-4.96"}),"Cloud");var t7=r(12140),t9=r(76808),t8=r(62291),re=r(61563);let rt=e=>{var t,r,s;let{onClose:o,setActiveTab:i,onUpdate:d,onOpenInGitHubTab:u}=e,h=(0,eu.A)(),{t:x,formatNumber:A,formatList:w}=(0,m.s9)(),[C,S]=(0,l.useState)(""),[k,E]=(0,l.useState)(""),[z,P]=(0,l.useState)([]),[T,M]=(0,l.useState)(null),[I,R]=(0,l.useState)(!1),[N,F]=(0,l.useState)(!1),[O,W]=(0,l.useState)(null),[_,D]=(0,l.useState)(null),[U,H]=(0,l.useState)(!1),B=(0,l.useRef)(0),L=(0,l.useCallback)(e=>{H(!1),D(e)},[]),J=(0,l.useCallback)(()=>{D(null),H(!1)},[]),$=(0,l.useCallback)(async(e,t)=>{let r=++B.current,n=!t;n?R(!0):F(!0),W(null);try{var a,l,s;let o=new URLSearchParams({limit:String(30)});e&&o.set("search",e),t&&o.set("cursor",t);let i=await fetch("/api/mcp-registry?".concat(o.toString())),c=await i.json();if(r!==B.current)return;if(!i.ok||!1===c.success)throw Error(c.error||String(i.status));let d=null!=(l=c.servers)?l:[];P(e=>n?d:[...e,...d]),M(d.length>0&&null!=(s=null==(a=c.metadata)?void 0:a.nextCursor)?s:null)}catch(e){if(r!==B.current)return;console.error("Error fetching from MCP Registry:",e),W({type:"error",text:x("mcp.marketplace.loadError",{error:e instanceof Error?e.message:x("mcp.server.unknownError")})})}finally{r===B.current&&(R(!1),F(!1))}},[x]);(0,l.useEffect)(()=>{k&&$(k)},[k,$]);let G=()=>{S(""),E(""),B.current++,R(!1),F(!1),P([]),M(null),W(null)},q=e=>{var t;let r=null==(t=e.repository)?void 0:t.url;if(!r)return null;try{return"github.com"===new URL(r).hostname?r:null}catch(e){return null}},V=_?ty(_):[];return(0,n.jsxs)(a.default,{sx:{width:"100%"},children:[(0,n.jsxs)(f.A,{spacing:3,children:[(0,n.jsx)(c.A,{variant:"h6",gutterBottom:!0,children:x("mcp.marketplace.title")}),(0,n.jsx)(c.A,{variant:"body2",color:"text.secondary",children:(0,n.jsx)(eI.A,{message:"mcp.marketplace.help",values:{registryLink:(0,n.jsx)(eW.A,{href:"https://registry.modelcontextprotocol.io",target:"_blank",rel:"noopener noreferrer",children:x("mcp.marketplace.registry")})}})}),(0,n.jsx)(v.A,{fullWidth:!0,size:"small",value:C,onChange:e=>S(e.target.value),onKeyDown:e=>{if("Enter"===e.key){e.preventDefault();let t=C.trim();t?t===k?$(t):E(t):G()}},placeholder:x("mcp.marketplace.search"),variant:"outlined",InputProps:{startAdornment:(0,n.jsx)(y.A,{position:"start",children:(0,n.jsx)(t2.A,{})}),endAdornment:C?(0,n.jsx)(y.A,{position:"end",children:(0,n.jsx)(j.A,{size:"small",onClick:G,"aria-label":x("mcp.marketplace.clearSearch"),children:(0,n.jsx)(t7.A,{fontSize:"small"})})}):void 0}}),O&&(0,n.jsx)(g.A,{severity:O.type,onClose:()=>W(null),children:O.text}),I?(0,n.jsx)(a.default,{sx:{display:"flex",justifyContent:"center",my:4},children:(0,n.jsx)(ef.default,{})}):(0,n.jsxs)(n.Fragment,{children:[0===z.length&&!O&&(0,n.jsx)(c.A,{variant:"body1",color:"text.secondary",sx:{textAlign:"center",my:4},children:k?(0,n.jsx)(n.Fragment,{children:x("mcp.marketplace.noResults",{search:k})}):(0,n.jsx)(n.Fragment,{children:x("mcp.marketplace.startSearch")})}),(0,n.jsx)(p.Ay,{container:!0,spacing:2,children:z.map(e=>{var t,r,l;let s=e.server,o=ty(s).length>0,i="active"===function(e){var t,r;let n=null==e||null==(r=e._meta)||null==(t=r["io.modelcontextprotocol.registry/official"])?void 0:t.status;return"string"==typeof n&&n.length>0?n:"unverified"}(e);return(0,n.jsx)(p.Ay,{item:!0,xs:12,sm:6,md:4,children:(0,n.jsx)(tM.A,{sx:{height:"100%",display:"flex",flexDirection:"column",transition:"transform 0.2s, box-shadow 0.2s","&:hover":{transform:"translateY(-4px)",boxShadow:6}},children:(0,n.jsxs)(tI.A,{sx:{flexGrow:1,display:"flex",flexDirection:"column",alignItems:"stretch"},onClick:()=>{L(s)},children:[(0,n.jsxs)(a.default,{sx:{p:2,display:"flex",alignItems:"center",borderBottom:"1px solid",borderColor:"divider"},children:[(0,n.jsx)(tG,{src:null!=(l=tC(s,h.palette.mode))?l:void 0,sx:{bgcolor:h.palette.primary.main,color:"#fff",mr:2,boxShadow:1},children:tw(s).charAt(0).toUpperCase()}),(0,n.jsxs)(a.default,{sx:{flexGrow:1,minWidth:0},children:[(0,n.jsx)(c.A,{variant:"subtitle1",component:"div",noWrap:!0,title:tw(s),children:tw(s)}),(0,n.jsx)(c.A,{variant:"caption",color:"text.secondary",noWrap:!0,component:"div",title:s.name,children:s.name})]})]}),(0,n.jsxs)(tq.A,{sx:{flexGrow:1,pt:2,width:"100%"},children:[(0,n.jsx)(c.A,{variant:"body2",color:"text.secondary",sx:{mb:2,display:"-webkit-box",WebkitLineClamp:3,WebkitBoxOrient:"vertical",overflow:"hidden"},children:s.description||x("mcp.spotlight.noDescription")}),(0,n.jsxs)(a.default,{sx:{display:"flex",flexWrap:"wrap",gap:.5,alignItems:"center"},children:["number"==typeof(null==(t=e.quality)?void 0:t.stars)&&(0,n.jsx)(ey.A,{size:"small",variant:"outlined",icon:(0,n.jsx)(t8.A,{}),label:A(e.quality.stars,{notation:"compact",maximumFractionDigits:1}),title:x("mcp.marketplace.stars",{count:A(e.quality.stars)})}),"number"==typeof(null==(r=e.quality)?void 0:r.weeklyDownloads)&&(0,n.jsx)(ey.A,{size:"small",variant:"outlined",icon:(0,n.jsx)(re.A,{}),label:x("mcp.marketplace.weeklyCompact",{count:A(e.quality.weeklyDownloads,{notation:"compact",maximumFractionDigits:1})}),title:x("mcp.marketplace.weeklyDownloads",{count:A(e.quality.weeklyDownloads)})}),(e=>{var t,r;let a=[],l=new Set;for(let r of null!=(t=e.packages)?t:[]){let e=function(e){return tb[e]||e}(r.registryType);l.has(e)||(l.add(e),a.push((0,n.jsx)(ey.A,{size:"small",icon:(0,n.jsx)(t3.A,{}),label:e},"pkg-".concat(e))))}return(null!=(r=e.remotes)?r:[]).length>0&&a.push((0,n.jsx)(ey.A,{size:"small",icon:(0,n.jsx)(t6,{}),label:x("mcp.marketplace.remote")},"remote")),a})(s),s.version&&(0,n.jsx)(ey.A,{size:"small",variant:"outlined",label:"v".concat(s.version)}),!o&&(0,n.jsx)(ey.A,{size:"small",color:"warning",variant:"outlined",label:x("mcp.marketplace.manualSetup")}),o&&!i&&(0,n.jsx)(ey.A,{size:"small",color:"warning",variant:"outlined",icon:(0,n.jsx)(t9.A,{}),label:x("mcp.marketplace.unverified"),title:x("mcp.marketplace.unverifiedHelp")})]})]})]})})},s.name)})}),T&&z.length>0&&(0,n.jsx)(a.default,{sx:{display:"flex",justifyContent:"center"},children:(0,n.jsx)(b.A,{variant:"outlined",onClick:()=>$(k,T),disabled:N,startIcon:N?(0,n.jsx)(ef.default,{size:20,color:"inherit"}):void 0,children:N?x("mcp.marketplace.loading"):x("mcp.marketplace.loadMore")})})]}),(0,n.jsx)(a.default,{sx:{display:"flex",justifyContent:"flex-end",gap:1},children:(0,n.jsx)(b.A,{variant:"outlined",onClick:o,children:x("mcp.local.cancel")})})]}),(0,n.jsx)(tV.A,{open:null!==_,onClose:J,maxWidth:"sm",fullWidth:!0,children:_&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(tK.A,{component:"div",children:(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1.5,minWidth:0},children:[(0,n.jsx)(tG,{src:null!=(s=tC(_,h.palette.mode))?s:void 0,sx:{bgcolor:h.palette.primary.main,color:"#fff",width:40,height:40},children:tw(_).charAt(0).toUpperCase()}),(0,n.jsxs)(a.default,{sx:{minWidth:0},children:[(0,n.jsx)(c.A,{variant:"h6",noWrap:!0,title:tw(_),children:tw(_)}),(0,n.jsx)(c.A,{variant:"caption",color:"text.secondary",noWrap:!0,component:"div",title:_.name,children:_.name})]})]})}),(0,n.jsxs)(tX.A,{children:[((null==(t=_.repository)?void 0:t.url)||_.websiteUrl)&&(0,n.jsxs)(a.default,{sx:{display:"flex",gap:1,mb:2,flexWrap:"wrap"},children:[(null==(r=_.repository)?void 0:r.url)&&(0,n.jsx)(b.A,{size:"small",startIcon:(0,n.jsx)(t5,{}),component:"a",href:_.repository.url,target:"_blank",rel:"noopener noreferrer",children:x("mcp.marketplace.repository")}),_.websiteUrl&&(0,n.jsx)(b.A,{size:"small",startIcon:(0,n.jsx)(t4.A,{}),component:"a",href:_.websiteUrl,target:"_blank",rel:"noopener noreferrer",children:x("mcp.marketplace.website")})]}),(0,n.jsx)(c.A,{variant:"body2",color:"text.secondary",sx:{mb:2},children:_.description||x("mcp.spotlight.noDescription")}),(0,n.jsx)(g.A,{severity:"warning",icon:(0,n.jsx)(t9.A,{}),sx:{mb:1},children:x("mcp.marketplace.securityWarning")}),(0,n.jsx)(ej.A,{sx:{mb:1},control:(0,n.jsx)(eA.A,{checked:U,onChange:e=>H(e.target.checked)}),label:x("mcp.marketplace.trust")}),V.length>0?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(c.A,{variant:"subtitle2",gutterBottom:!0,children:x("mcp.marketplace.chooseInstall")}),(0,n.jsx)(tY.A,{children:V.map((e,t)=>{let r=tT(e);return(0,n.jsxs)(tZ.A,{disabled:!U,onClick:()=>((e,t)=>{let r=tP(e,t),n=tT(t);d&&d(r,{autoTestRun:!0}),J(),i&&i("local"),W({type:n.length>0?"warning":"success",text:n.length>0?x("mcp.marketplace.preparedMissing",{values:w(n)}):x("mcp.marketplace.prepared")})})(_,e),children:[(0,n.jsx)(tQ.A,{children:"package"===e.kind?(0,n.jsx)(t3.A,{}):(0,n.jsx)(t6,{})}),(0,n.jsx)(t0.A,{primary:e.label,secondary:r.length>0?x("mcp.marketplace.requires",{values:w(r)}):"package"===e.kind?x("mcp.marketplace.runsLocal"):x("mcp.marketplace.hostedRemote"),primaryTypographyProps:{sx:{wordBreak:"break-all"}}})]},t)})})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(g.A,{severity:"info",children:[x("mcp.marketplace.noAutomatic"),q(_)&&u&&(0,n.jsxs)(n.Fragment,{children:[" ",x("mcp.marketplace.githubFallback")]})]}),q(_)&&u&&(0,n.jsx)(b.A,{variant:"contained",startIcon:(0,n.jsx)(t5,{}),disabled:!U,onClick:()=>(e=>{let t=q(e);t&&u&&(J(),u(t))})(_),sx:{mt:2},children:x("mcp.marketplace.tryManual")})]})]}),(0,n.jsx)(t1.A,{children:(0,n.jsx)(b.A,{onClick:J,children:x("mcp.marketplace.close")})})]})})]})};var rr=r(76530);let rn=e=>{var t,r;let{onClose:s,setActiveTab:o,onUpdate:i}=e,d=(0,eu.A)(),{t:u,tp:h,formatDate:x}=(0,m.s9)(),[v,y]=(0,l.useState)(null),[j,A]=(0,l.useState)(!0),[w,C]=(0,l.useState)(!1),[S,k]=(0,l.useState)(null),[E,z]=(0,l.useState)(null);(0,l.useEffect)(()=>{let e=!1;return(async()=>{try{var t;let r=await fetch("/api/mcp-registry/spotlight"),n=await r.json();if(e)return;if(!r.ok||!1===n.success)throw Error(n.error||String(r.status));y(null!=(t=n.cache)?t:null)}catch(t){e||k({type:"error",text:u("mcp.spotlight.loadError",{error:t instanceof Error?t.message:u("mcp.server.unknownError")})})}finally{e||A(!1)}})(),()=>{e=!0}},[u]);let P=async()=>{C(!0),k(null);try{var e;let t=await fetch("/api/mcp-registry/spotlight",{method:"POST"}),r=await t.json();if(!t.ok||!1===r.success)throw Error(r.error||String(t.status));y(null!=(e=r.cache)?e:null)}catch(e){k({type:"error",text:u("mcp.spotlight.refreshError",{error:e instanceof Error?e.message:u("mcp.server.unknownError")})})}finally{C(!1)}},T=(e,t)=>{let r=function(e,t){var r,n;if(!t||0===Object.keys(t).length)return e;let a={...null!=(r=e.env)?r:{}};for(let[e,r]of Object.entries(t)){let t=a[e];t&&"object"==typeof t&&(null==(n=t.metadata)?void 0:n.isSecret)?a[e]={value:r,metadata:{isSecret:!0}}:a[e]=r}return{...e,env:a}}(tP(e.server,t),e.env);z(null),i&&i(r,{autoTestRun:!0}),o&&o("local")},M=(null!=(t=null==v?void 0:v.entries)?t:[]).filter(e=>e.result).map(e=>({server:e.result.server,env:e.env})),I=(null!=(r=null==v?void 0:v.entries)?r:[]).filter(e=>!e.result),R=E?ty(E.server):[],N=R.find(e=>"package"===e.kind),F=R.find(e=>"remote"===e.kind);return(0,n.jsxs)(a.default,{sx:{width:"100%"},children:[(0,n.jsxs)(f.A,{spacing:3,children:[(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,n.jsx)(c.A,{variant:"h6",children:u("mcp.spotlight.title")}),(0,n.jsx)(b.A,{variant:"outlined",size:"small",onClick:P,disabled:w,startIcon:w?(0,n.jsx)(ef.default,{size:16,color:"inherit"}):(0,n.jsx)(rr.A,{}),children:w?u("mcp.spotlight.refreshing"):u("mcp.spotlight.refresh")})]}),(0,n.jsxs)(c.A,{variant:"body2",color:"text.secondary",children:[u("mcp.spotlight.help"),(null==v?void 0:v.updatedAt)&&(0,n.jsxs)(n.Fragment,{children:[" ",u("mcp.spotlight.updated",{date:x(v.updatedAt,{dateStyle:"medium",timeStyle:"short"})})]})]}),S&&(0,n.jsx)(g.A,{severity:S.type,onClose:()=>k(null),children:S.text}),j?(0,n.jsx)(a.default,{sx:{display:"flex",justifyContent:"center",my:4},children:(0,n.jsx)(ef.default,{})}):0===M.length?(0,n.jsx)(c.A,{variant:"body1",color:"text.secondary",sx:{textAlign:"center",my:4},children:u("mcp.spotlight.empty")}):(0,n.jsx)(p.Ay,{container:!0,spacing:2,children:M.map(e=>{let{server:t}=e,r=ty(t),l=r.some(e=>"package"===e.kind),s=r.some(e=>"remote"===e.kind);return(0,n.jsx)(p.Ay,{item:!0,xs:12,sm:6,md:4,children:(0,n.jsx)(tM.A,{sx:{height:"100%",display:"flex",flexDirection:"column",transition:"transform 0.2s, box-shadow 0.2s","&:hover":{transform:"translateY(-4px)",boxShadow:6}},children:(0,n.jsxs)(tI.A,{sx:{flexGrow:1,display:"flex",flexDirection:"column",alignItems:"stretch"},onClick:()=>(e=>{let t=ty(e.server);if(0===t.length)return void k({type:"warning",text:u("mcp.spotlight.noInstall",{server:tw(e.server)})});let r=t.filter(e=>"package"===e.kind),n=t.filter(e=>"remote"===e.kind);if(r.length>0&&n.length>0)return void z(e);T(e,t[0])})(e),children:[(0,n.jsxs)(a.default,{sx:{p:2,display:"flex",alignItems:"center",borderBottom:"1px solid",borderColor:"divider"},children:[(0,n.jsx)(tG,{sx:{bgcolor:d.palette.warning.main,color:"#fff",mr:2,boxShadow:1},children:(0,n.jsx)(t8.A,{fontSize:"small"})}),(0,n.jsxs)(a.default,{sx:{flexGrow:1,minWidth:0},children:[(0,n.jsx)(c.A,{variant:"subtitle1",component:"div",noWrap:!0,title:tw(t),children:tw(t)}),(0,n.jsx)(c.A,{variant:"caption",color:"text.secondary",noWrap:!0,component:"div",title:t.name,children:t.name})]})]}),(0,n.jsxs)(tq.A,{sx:{flexGrow:1,pt:2,width:"100%"},children:[(0,n.jsx)(c.A,{variant:"body2",color:"text.secondary",sx:{mb:2,display:"-webkit-box",WebkitLineClamp:3,WebkitBoxOrient:"vertical",overflow:"hidden"},children:t.description||u("mcp.spotlight.noDescription")}),(0,n.jsxs)(a.default,{sx:{display:"flex",flexWrap:"wrap",gap:.5,alignItems:"center"},children:[l&&(0,n.jsx)(ey.A,{size:"small",icon:(0,n.jsx)(t3.A,{}),label:u("mcp.spotlight.local")}),s&&(0,n.jsx)(ey.A,{size:"small",icon:(0,n.jsx)(t6,{}),label:u("mcp.spotlight.remote")}),t.version&&(0,n.jsx)(ey.A,{size:"small",variant:"outlined",label:"v".concat(t.version)})]})]})]})})},t.name)})}),I.length>0&&!j&&(0,n.jsxs)(g.A,{severity:"warning",children:[h("mcp.spotlight.failures",I.length),I.map(e=>(0,n.jsxs)(c.A,{variant:"caption",component:"div",sx:{wordBreak:"break-all"},children:[e.url," — ",e.error||u("mcp.server.unknownError")]},e.url))]}),(0,n.jsx)(a.default,{sx:{display:"flex",justifyContent:"flex-end",gap:1},children:(0,n.jsx)(b.A,{variant:"outlined",onClick:s,children:u("mcp.local.cancel")})})]}),(0,n.jsx)(tV.A,{open:null!==E,onClose:()=>z(null),maxWidth:"xs",fullWidth:!0,children:E&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(tK.A,{children:tw(E.server)}),(0,n.jsxs)(tX.A,{children:[(0,n.jsx)(c.A,{variant:"body2",color:"text.secondary",sx:{mb:1},children:u("mcp.spotlight.chooseHelp")}),(0,n.jsxs)(tY.A,{children:[N&&(0,n.jsxs)(tZ.A,{onClick:()=>T(E,N),children:[(0,n.jsx)(tQ.A,{children:(0,n.jsx)(t3.A,{})}),(0,n.jsx)(t0.A,{primary:u("mcp.spotlight.local"),secondary:u("mcp.spotlight.localHelp")})]}),F&&(0,n.jsxs)(tZ.A,{onClick:()=>T(E,F),children:[(0,n.jsx)(tQ.A,{children:(0,n.jsx)(t6,{})}),(0,n.jsx)(t0.A,{primary:u("mcp.spotlight.remote"),secondary:u("mcp.spotlight.remoteHelp")})]})]})]}),(0,n.jsx)(t1.A,{children:(0,n.jsx)(b.A,{onClick:()=>z(null),children:u("mcp.local.cancel")})})]})})]})},ra=e=>{let{onAdd:t,onClose:r,setActiveTab:s,onUpdate:o}=e,i=(0,eu.A)(),{t:u,tp:h}=(0,m.s9)(),[x,v]=(0,l.useState)(!1),[y,j]=(0,l.useState)(!1),[A,w]=(0,l.useState)(!1),[C,S]=(0,l.useState)(null),[k,E]=(0,l.useState)([]),[z,P]=(0,l.useState)(""),[T,M]=(0,l.useState)(!1),{consoleOutput:I,isConsoleVisible:R,setIsConsoleVisible:N,updateConsole:F,clearConsole:O}=eg();(0,l.useEffect)(()=>{(async()=>{v(!0);try{let e=await fetch("/api/cwd"),t=await e.json();if(t.success){P(t.mcpServersDir);let e="".concat(t.mcpServersDir,"/servers"),r=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"exists",savePath:e})}),n=await r.json();M(n.exists),n.exists?await _(e):S({type:"warning",text:u("mcp.reference.repoMissing")})}}catch(e){console.error("Error initializing Reference Servers tab:",e),S({type:"error",text:u("mcp.reference.initializeError",{error:e instanceof Error?e.message:u("mcp.server.unknownError")})})}finally{v(!1)}})()},[u]);let W=async()=>{j(!0),O(),N(!0),F("".concat(u("mcp.reference.refreshStart"),"\n"));try{let e="https://github.com/modelcontextprotocol/servers.git",t="".concat(z,"/servers");if(T){F("".concat(u("mcp.reference.repoPulling"),"\n"));let e=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"run",savePath:t,runCommand:"git pull"})}),r=await e.json();r.success?F("".concat(u("mcp.reference.pullSuccess",{output:r.output||u("mcp.reference.repoUpdated")}),"\n")):(F("".concat(u("mcp.reference.pullWarning",{error:r.error||u("mcp.server.unknownError")}),"\n")),F("".concat(u("mcp.reference.continuing"),"\n")))}else{w(!0),F("".concat(u("mcp.reference.cloning",{url:e}),"\n")),t.substring(0,t.lastIndexOf("/"));let r=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"clone",repoUrl:e,savePath:t})}),n=await r.json();if(n.success)F("".concat(u("mcp.reference.cloneSuccess",{output:n.output||u("mcp.reference.repoCloned")}),"\n")),M(!0);else throw Error(u("mcp.reference.cloneFailed",{error:n.error||u("mcp.server.unknownError")}));w(!1)}F("".concat(u("mcp.reference.installing"),"\n"));let r=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"install",savePath:t,installCommand:"npm install --include=dev"})}),n=await r.json();if(n.success){F("".concat(n.output||u("mcp.reference.dependenciesInstalled"),"\n")),F("".concat(u("mcp.reference.building"),"\n"));let e=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"build",savePath:t,buildCommand:"npm run build"})}),r=await e.json();r.success?F("".concat(r.output||u("mcp.reference.buildComplete"),"\n")):F("".concat(u("mcp.reference.buildWarning",{error:r.error||u("mcp.server.unknownError")}),"\n"))}else F("".concat(u("mcp.reference.installWarning",{error:n.error||u("mcp.server.unknownError")}),"\n"));await _(t),S({type:"success",text:u("mcp.reference.refreshed")})}catch(e){console.error("Error refreshing repository:",e),F("".concat(u("mcp.local.console.details",{details:e instanceof Error?e.message:u("mcp.server.unknownError")}),"\n")),S({type:"error",text:u("mcp.reference.refreshFailed",{error:e instanceof Error?e.message:u("mcp.server.unknownError")})})}finally{j(!1)}},_=async e=>{F("".concat(u("mcp.reference.fetching"),"\n"));try{let t="".concat(e,"/src"),r=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"listDir",savePath:t})}),n=await r.json();if(!n.success)throw Error(u("mcp.reference.listFailed",{error:n.error||u("mcp.server.unknownError")}));let a=n.items.filter(e=>"directory"===e.type&&!e.isHidden).map(e=>({name:e.name,type:e.type}));F("".concat(u("mcp.reference.directoriesFound",{count:a.length}),"\n"));let l=a.map(async e=>{let r="".concat(t,"/").concat(e.name),n="",a=!1;try{let e=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"readFile",savePath:"".concat(r,"/README.md")})}),t=await e.json();t.success&&t.content&&(n=t.content,a=!0)}catch(e){console.error("Error reading README with readFile action:",e)}let l={name:e.name,description:"",directory:r,repoUrl:"https://github.com/modelcontextprotocol/servers/tree/main/src/".concat(e.name)};if(a&&n){l.readmeContent=n;let e=n.match(/# ([^\n]+)|^([^\n#][^\n]*)/);e&&(l.description=e[1]||e[2]);let t=n.match(/npm install|yarn install/);t&&(l.installCommand=t[0]);let r=n.match(/npm (start|run dev|run serve)|node [\w\/\.-]+|npx -y @modelcontextprotocol\/[a-zA-Z0-9-_]+/);r&&(l.command=r[0])}return l}),s=await Promise.all(l);E(s),F("".concat(u("mcp.reference.serversFound",{count:s.length}),"\n"))}catch(e){throw console.error("Error fetching server info:",e),F("".concat(u("mcp.reference.fetchError",{error:e instanceof Error?e.message:u("mcp.server.unknownError")}),"\n")),e}},D=async e=>{try{let t=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"readFile",savePath:e})});return(await t.json()).success}catch(e){return!1}},U=async e=>{try{let t=await D("".concat(e.directory,"/package.json")),r=await D("".concat(e.directory,"/pyproject.toml")),n="",a=[],l="",i="";if(t){n="node",a=["dist/index.js"],l="npm run build",i="npm install --include=dev";try{let t=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"readFile",savePath:"".concat(e.directory,"/package.json")})}),r=await t.json();if(r.success){let t=JSON.parse(r.content);if(t.bin){let r="";if("string"==typeof t.bin)r=t.bin;else{let n="mcp-server-".concat(e.name);t.bin[n]&&(r=t.bin[n])}r&&(a=[r])}}}catch(e){console.error("Error reading package.json:",e)}}else if(r){n="python";let t=e.name.replace(/-/g,"_");a=["-m","mcp_server_".concat(t)],await D("".concat(e.directory,"/requirements.txt"))?(i="pip install -r requirements.txt",l=r?"pip install -e .":""):(i="pip install -e .",l="");try{let t=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"readFile",savePath:"".concat(e.directory,"/pyproject.toml")})}),r=await t.json();if(r.success){let e=r.content.match(/\[project\.scripts\][\s\S]*?mcp-server-[^=]+=\s*"([^:]+):/);e&&e[1]&&(a=["-m",e[1]])}}catch(e){console.error("Error reading pyproject.toml:",e)}}else n=e.command||"npx -y @modelcontextprotocol/server-"+e.name,a=[],l=e.buildCommand||"npm run build",i=e.installCommand||"npm install";let c={name:e.name,rootPath:e.directory,command:n,args:a,env:{},disabled:!1,autoApprove:[],transport:"stdio",_buildCommand:l,_installCommand:i,source:{type:"github",repositoryUrl:"https://github.com/modelcontextprotocol/servers.git",subdirectory:"src/".concat(e.name)}};o&&o(c),s&&s("local")}catch(e){console.error("Error configuring server:",e),S({type:"error",text:u("mcp.reference.configureError",{error:e instanceof Error?e.message:u("mcp.server.unknownError")})})}};return(0,n.jsx)(a.default,{sx:{width:"100%"},children:(0,n.jsxs)(f.A,{spacing:3,children:[(0,n.jsx)(c.A,{variant:"h6",gutterBottom:!0,children:u("mcp.reference.title")}),(0,n.jsxs)(a.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2},children:[(0,n.jsx)(c.A,{variant:"body1",children:T?h("mcp.reference.available",k.length):u("mcp.reference.notCloned")}),(0,n.jsx)(b.A,{variant:"contained",color:"primary",startIcon:y?(0,n.jsx)(ef.default,{size:20,color:"inherit"}):(0,n.jsx)(rr.A,{}),onClick:W,disabled:y,children:y?u("mcp.spotlight.refreshing"):u("mcp.spotlight.refresh")})]}),C&&(0,n.jsx)(g.A,{severity:C.type,sx:{mb:2},children:C.text}),x?(0,n.jsx)(a.default,{sx:{display:"flex",justifyContent:"center",my:4},children:(0,n.jsx)(ef.default,{})}):(0,n.jsxs)(n.Fragment,{children:[R&&(0,n.jsx)(d.A,{variant:"outlined",sx:{p:2,mb:3,maxHeight:"200px",overflow:"auto",fontFamily:"monospace",fontSize:"0.9rem",bgcolor:"dark"===i.palette.mode?"#121212":"#f5f5f5"},children:(0,n.jsx)(a.default,{component:"pre",sx:{m:0,whiteSpace:"pre-wrap"},children:I})}),(0,n.jsx)(p.Ay,{container:!0,spacing:2,children:k.map(e=>(0,n.jsx)(p.Ay,{item:!0,xs:12,sm:6,md:4,children:(0,n.jsx)(tM.A,{sx:{height:"100%",display:"flex",flexDirection:"column",transition:"transform 0.2s, box-shadow 0.2s",position:"relative",overflow:"visible","&:hover":{transform:"translateY(-4px)",boxShadow:6}},children:(0,n.jsxs)(tI.A,{sx:{flexGrow:1,display:"flex",flexDirection:"column",alignItems:"stretch"},onClick:()=>U(e),children:[(0,n.jsxs)(a.default,{sx:{p:2,display:"flex",alignItems:"center",borderBottom:"1px solid",borderColor:"divider",background:(e=>{let t="dark"===e.palette.mode?"#424242":"#607d8b",r="dark"===e.palette.mode?"#303030":"#455a64";return"linear-gradient(135deg, ".concat(t," 0%, ").concat(r," 100%)")})(i)},children:[(0,n.jsx)(tG,{sx:{bgcolor:"dark"===i.palette.mode?"#424242":"#607d8b",color:"#fff",mr:2,boxShadow:1},children:e.name.charAt(0).toUpperCase()}),(0,n.jsxs)(a.default,{sx:{flexGrow:1},children:[(0,n.jsx)(c.A,{variant:"h6",component:"div",sx:{textTransform:"capitalize",color:"#fff",textShadow:"0px 1px 2px rgba(0,0,0,0.2)"},children:e.name.replace(/-/g," ")}),(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center"},children:[(0,n.jsx)(ey.A,{size:"small",icon:(0,n.jsx)(t5,{}),label:"MCP",sx:{mr:1,bgcolor:"rgba(255,255,255,0.2)",color:"#fff","& .MuiChip-icon":{color:"#fff"}}}),(0,n.jsx)(c.A,{variant:"caption",sx:{color:"rgba(255,255,255,0.8)"},children:u("mcp.reference.label")})]})]})]}),(0,n.jsx)(tq.A,{sx:{flexGrow:1,pt:2},children:(0,n.jsx)(c.A,{variant:"body2",color:"text.secondary",sx:{mb:2},children:e.description||u("mcp.reference.description",{server:e.name.replace(/-/g," ")})})})]})})},e.name))})]})]})})};var rl=r(21067);let rs=e=>{let{onAdd:t,onClose:r,setActiveTab:s,onUpdate:o}=e,{t:i}=(0,m.s9)(),[p,u]=(0,l.useState)(""),[h,x]=(0,l.useState)(!1),[y,j]=(0,l.useState)(null),[A,w]=(0,l.useState)(!1),[C,S]=(0,l.useState)(void 0),k=(e=>{if(!e)return!1;try{let t=new URL(e);return"http:"===t.protocol||"https:"===t.protocol}catch(e){return!1}})(p),E=()=>{let e=(e=>{try{return new URL(e).hostname.replace(/\./g,"-")}catch(e){return"remote-server"}})(p),t={name:e,transport:"streamable",serverUrl:p,rootPath:"mcp-servers/".concat(e),disabled:!1,autoApprove:[],env:{},_buildCommand:"",_installCommand:"",source:{type:"remote"},...C?{sampling:C}:{}};o&&o(t),s&&s("local")},z=async()=>{if(!k)return void j({type:"error",text:i("mcp.remote.invalidUrl")});if(A)return void E();x(!0),j({type:"success",text:i("mcp.remote.checkingServer")});try{if((await ta.S.probeOAuthCapability(p)).oauthCapable){w(!0),j({type:"success",text:i("mcp.remote.oauthDetected")}),x(!1);return}E(),j({type:"success",text:i("mcp.remote.switching")})}catch(e){console.error("Error processing remote URL:",e),j({type:"error",text:i("mcp.remote.processingError",{error:e instanceof Error?e.message:i("mcp.server.unknownError")})})}finally{x(!1)}};return(0,n.jsx)(d.A,{elevation:0,sx:{p:0},children:(0,n.jsxs)(f.A,{spacing:3,children:[(0,n.jsx)(c.A,{variant:"h6",gutterBottom:!0,children:i("mcp.remote.title")}),(0,n.jsx)(c.A,{variant:"body2",color:"text.secondary",children:i("mcp.remote.help")}),(0,n.jsxs)(a.default,{children:[(0,n.jsx)(c.A,{variant:"subtitle2",gutterBottom:!0,children:i("mcp.remote.url")}),(0,n.jsx)(v.A,{fullWidth:!0,size:"small",value:p,onChange:e=>{u(e.target.value),w(!1),y&&j(null)},placeholder:"https://example.com/mcp",variant:"outlined",required:!0,error:p.length>0&&!k,helperText:p.length>0&&!k?i("mcp.remote.invalidUrl"):i("mcp.remote.urlHelp"),disabled:h})]}),y&&(0,n.jsx)(a.default,{children:(0,n.jsx)(g.A,{severity:y.type,children:y.text})}),(0,n.jsx)(rl.A,{}),(0,n.jsxs)(a.default,{children:[(0,n.jsx)(c.A,{variant:"subtitle2",gutterBottom:!0,children:i("mcp.remote.sampling")}),(0,n.jsx)(e8,{policy:C,onChange:S})]}),(0,n.jsxs)(a.default,{sx:{display:"flex",justifyContent:"flex-end",gap:1,mt:3},children:[(0,n.jsx)(b.A,{variant:"outlined",onClick:r,disabled:h,children:i("mcp.remote.cancel")}),(0,n.jsx)(b.A,{variant:"contained",color:"primary",onClick:z,disabled:!k||h,children:h?i("mcp.remote.checking"):A?i("mcp.remote.continue"):i("mcp.remote.connect")})]})]})})};var ro=r(77073);let ri=e=>{let{isOpen:t,onClose:r,onAdd:s,initialConfig:o,onUpdate:i,onRestartAfterUpdate:d,onSaveAndAuthenticate:p}=e,{t:u}=(0,m.s9)(),[h,g]=(0,l.useState)("spotlight"),[x,f]=(0,l.useState)(null),[v,b]=(0,l.useState)(!1),[y,w]=(0,l.useState)(""),[C,S]=(0,l.useState)({spotlight:!1,marketplace:!1,github:!1,local:!1,reference:!1,remote:!1});(0,l.useEffect)(()=>{o||C[h]||S(e=>({...e,[h]:!0}))},[h,o,C]);let{getThemeValue:k}=(0,A.Ic)(),E=()=>{f(null),b(!1),w(""),g("spotlight"),r()};return(0,n.jsxs)(tV.A,{open:t,onClose:E,maxWidth:"xl",fullWidth:!0,PaperProps:{sx:{width:"95vw",maxWidth:"95vw",maxHeight:"95vh",height:"auto"}},children:[(0,n.jsxs)(tK.A,{component:"div",sx:{display:"flex",justifyContent:"space-between",alignItems:"center",borderBottom:1,borderColor:"divider",pb:1},children:[(0,n.jsx)(c.A,{variant:"h6",children:o?u("mcp.modal.editTitle",{name:o.name}):u("mcp.modal.addTitle")}),(0,n.jsx)(j.A,{edge:"end",color:"inherit",onClick:E,"aria-label":u("mcp.modal.close"),children:(0,n.jsx)(ro.A,{})})]}),(0,n.jsxs)(tX.A,{sx:{p:0},children:[o?null:(0,n.jsx)(a.default,{sx:{borderBottom:1,borderColor:"divider"},children:(0,n.jsxs)(eH.A,{value:h,onChange:(e,t)=>{b(!1),w(""),g(t)},"aria-label":u("mcp.modal.tabsAria"),sx:{px:2},children:[(0,n.jsx)(eB.A,{label:u("mcp.modal.spotlight"),value:"spotlight"}),(0,n.jsx)(eB.A,{label:u("mcp.modal.marketplace"),value:"marketplace"}),(0,n.jsx)(eB.A,{label:u("mcp.modal.github"),value:"github"}),(0,n.jsx)(eB.A,{label:u("mcp.modal.local"),value:"local"}),(0,n.jsx)(eB.A,{label:u("mcp.modal.remote"),value:"remote"}),(0,n.jsx)(eB.A,{label:u("mcp.modal.reference"),value:"reference"})]})}),(0,n.jsx)(a.default,{sx:{p:3},children:o?(0,n.jsx)(tf,{initialConfig:o,onAdd:s,onUpdate:i,onClose:r,onRestartAfterUpdate:d,onSaveAndAuthenticate:p}):"spotlight"===h?(0,n.jsx)(rn,{onAdd:s,onClose:r,setActiveTab:g,onUpdate:(e,t)=>{f(e),b(!!(null==t?void 0:t.autoTestRun))}}):"marketplace"===h?(0,n.jsx)(rt,{onAdd:s,onClose:r,setActiveTab:g,onUpdate:(e,t)=>{f(e),b(!!(null==t?void 0:t.autoTestRun))},onOpenInGitHubTab:e=>{w(e),g("github")}}):"github"===h?(0,n.jsx)(ed,{onAdd:s,onClose:r,setActiveTab:g,initialGitHubUrl:y,onUpdate:e=>{f(e),b(!1)}}):"local"===h?(0,n.jsx)(tf,{initialConfig:x,onAdd:s,onClose:r,autoTestRun:v,onSaveAndAuthenticate:p}):"remote"===h?(0,n.jsx)(rs,{onAdd:s,onClose:r,setActiveTab:g,onUpdate:e=>{f(e),b(!1)}}):(0,n.jsx)(ra,{onAdd:s,onClose:r,setActiveTab:g,onUpdate:e=>{f(e),b(!1)}})})]})]})};var rc=r(52005),rd=r(6504),rp=r(22133),rm=r(17427),ru=r(41080),rh=r(23731);let rg=(0,i.h)("frontend/components/mcp/MCPToolManager/ToolTester"),rx=e=>{var t,r;let{serverName:s,tools:i=[],onTestTool:p,onClose:u,prefill:h}=e,{t:x,formatNumber:f}=(0,m.s9)();rg.debug("Props:",{serverName:s,toolsCount:null==i?void 0:i.length});let y=Array.isArray(i)?i:[];rg.debug("Tools array:",{count:y.length});let[w,C]=(0,l.useState)(""),[S,k]=(0,l.useState)({}),[E,z]=(0,l.useState)(null),[P,T]=(0,l.useState)(!1),[M,I]=(0,l.useState)(60),[R,N]=(0,l.useState)(null),[F,O]=(0,l.useState)(null),[W,_]=(0,l.useState)(null),[D,U]=(0,l.useState)(!1),[H,B]=(0,l.useState)(!1);(0,l.useEffect)(()=>{h&&y.some(e=>e.name===h.toolName)&&(C(h.toolName),k({...h.arguments}),z(null),O(null),_(null),N(null))},[h,i]);let L=async()=>{rg.debug("Testing tool: ".concat(w," with params:"),JSON.stringify(S)),rg.debug("Timeout: ".concat(M," seconds")),O(null),_(null),T(!0);try{var e;let t={},r=y.find(e=>e.name===w);(null==r||null==(e=r.inputSchema)?void 0:e.properties)?Object.entries(S).forEach(e=>{let[n,a]=e,l=r.inputSchema.properties[n];if(!l){t[n]=a;return}if("number"===l.type||"integer"===l.type){let e="string"==typeof a?parseFloat(a):a;t[n]=isNaN(e)?0:e}else"boolean"===l.type?t[n]=!!a:t[n]=a}):Object.assign(t,S),rg.debug("Sending typed params:",JSON.stringify(t));let n=await p(w,t,M);rg.debug("Test result:",JSON.stringify(n)),n&&n.progressToken&&_(n.progressToken),z(n)}catch(e){rg.error("Error testing tool:",e),z({success:!1,output:"",error:e instanceof Error?e.message:x("mcp.tester.unknownError")})}T(!1)},J=async()=>{if(!D){U(!0),rg.debug("Cancelling tool execution");try{let e=W?"/api/mcp/cancel?token=".concat(W,"&serverName=").concat(encodeURIComponent(s)):"/api/mcp/cancel?serverName=".concat(encodeURIComponent(s)),t=await fetch(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({reason:x("mcp.tester.cancel")})});if(t.ok)rg.info("Successfully sent cancellation request"),N(x("mcp.tester.cancelSent"));else{let e=await t.json();rg.warn("Failed to cancel operation:",e),N(x("mcp.tester.cancelFailed",{error:e.error||x("mcp.tester.unknownError")}))}}catch(e){rg.error("Error cancelling tool:",e),N(x("mcp.tester.cancelError",{error:e instanceof Error?e.message:x("mcp.tester.unknownError")}))}finally{U(!1)}}},$=y.find(e=>e.name===w);rg.debug("Selected tool data:",{name:null==$?void 0:$.name,hasSchema:!!(null==$?void 0:$.inputSchema)});let{getThemeValue:G}=(0,A.Ic)();return(0,n.jsxs)(d.A,{sx:{p:2,bgcolor:e=>e.palette.background.paper,color:e=>e.palette.text.primary,borderRadius:2,border:1,borderColor:e=>"dark"===e.palette.mode?"#3a3a3a":"#e5e7eb"},children:[(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",mb:2},children:[(0,n.jsx)(c.A,{variant:"h6",sx:{fontWeight:"semibold"},children:x("mcp.tester.title",{server:s})}),u&&(0,n.jsx)(ew.A,{title:x("mcp.tester.close"),children:(0,n.jsx)(j.A,{size:"small",onClick:u,"aria-label":x("mcp.tester.close"),children:(0,n.jsx)(ro.A,{fontSize:"small"})})})]}),R&&(0,n.jsx)(g.A,{severity:"error",sx:{mb:2},children:R}),(0,n.jsxs)(a.default,{sx:{mb:2},children:[(0,n.jsx)(c.A,{component:"label",variant:"body2",sx:{display:"block",mb:1,fontWeight:"medium",color:e=>"dark"===e.palette.mode?"#d1d5db":"#4b5563"},children:x("mcp.tester.select")}),(0,n.jsxs)(e5.A,{fullWidth:!0,value:w,onChange:e=>{C(e.target.value),k({}),z(null)},displayEmpty:!0,sx:{bgcolor:e=>e.palette.background.paper,"& .MuiOutlinedInput-notchedOutline":{borderColor:e=>"dark"===e.palette.mode?"#3a3a3a":"#e5e7eb"}},children:[(0,n.jsx)(e4.A,{value:"",children:x("mcp.tester.choose")}),y.map(e=>(0,n.jsx)(e4.A,{value:e.name,children:e.name},e.name))]})]}),$?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(a.default,{sx:{mb:2},children:(0,n.jsx)(c.A,{variant:"body2",sx:{color:e=>"dark"===e.palette.mode?"#9ca3af":"#6b7280"},children:$.description})}),(0,n.jsxs)(a.default,{sx:{mb:2,display:"flex",flexDirection:"column",gap:2},children:[(0,n.jsx)(rm.A,{schema:$.inputSchema,values:S,onChange:k}),(0,n.jsxs)(a.default,{children:[(0,n.jsx)(c.A,{component:"label",variant:"body2",sx:{display:"block",mb:.5,fontWeight:"medium",color:e=>"dark"===e.palette.mode?"#d1d5db":"#4b5563"},children:x("mcp.tester.timeout")}),(0,n.jsx)(v.A,{type:"number",fullWidth:!0,size:"small",value:60===M?"":M,onChange:e=>(e=>{let t=parseInt(e,10);""===e||isNaN(t)||t<-1||0===t?I(60):I(t)})(e.target.value),placeholder:x("mcp.tester.timeoutPlaceholder"),sx:{bgcolor:e=>e.palette.background.paper,"& .MuiOutlinedInput-notchedOutline":{borderColor:e=>"dark"===e.palette.mode?"#3a3a3a":"#e5e7eb"}}}),(0,n.jsx)(c.A,{variant:"caption",sx:{display:"block",mt:.5,color:e=>"dark"===e.palette.mode?"#9ca3af":"#6b7280"},children:x("mcp.tester.timeoutHelp")})]})]}),(0,n.jsxs)(a.default,{sx:{display:"flex",gap:1},children:[(0,n.jsx)(b.A,{variant:"contained",color:"primary",onClick:L,disabled:P,startIcon:P&&(0,n.jsx)(o.default,{size:"small",color:"white"}),children:P?x("mcp.tester.testing"):x("mcp.tester.test")}),P&&(0,n.jsx)(b.A,{variant:"contained",color:"error",onClick:J,disabled:D,startIcon:D?(0,n.jsx)(o.default,{size:"small",color:"white"}):(0,n.jsx)(a.default,{component:"span",sx:{display:"flex",alignItems:"center",justifyContent:"center",width:16,height:16},children:(0,n.jsx)("svg",{width:"16",height:"16",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",children:(0,n.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2",d:"M6 18L18 6M6 6l12 12"})})}),children:D?x("mcp.tester.cancelling"):x("mcp.tester.cancel")})]}),P&&(0,n.jsxs)(a.default,{sx:{mt:2},children:[!F&&(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:1},children:[(0,n.jsx)(o.default,{size:"small",color:"primary"}),(0,n.jsx)(c.A,{variant:"body2",color:"text.secondary",children:x("mcp.tester.processing")})]}),F&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(a.default,{sx:{display:"flex",justifyContent:"space-between",mb:.5},children:[(0,n.jsx)(c.A,{variant:"body2",color:"text.secondary",children:x("mcp.tester.progress")}),(0,n.jsx)(c.A,{variant:"body2",color:"text.secondary",children:F.total?"".concat(f(Math.round(F.current)),"/").concat(f(Math.round(F.total))," (").concat(f(F.current/F.total,{style:"percent",maximumFractionDigits:0}),")"):f(F.current/100,{style:"percent",maximumFractionDigits:0})})]}),(0,n.jsx)(rc.A,{variant:"determinate",value:F.total?Math.min(100,F.current/F.total*100):Math.min(100,F.current)})]})]})]}):(0,n.jsx)(c.A,{color:"text.secondary",children:x("mcp.tester.noSelection")}),E&&(0,n.jsxs)(d.A,{sx:{mt:2,p:2,bgcolor:e=>"dark"===e.palette.mode?"#1a1a1a":"#f9fafb"},children:[(0,n.jsxs)(a.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:1},children:[(0,n.jsx)(c.A,{variant:"subtitle1",sx:{fontWeight:"medium"},children:x("mcp.tester.result")}),(0,n.jsx)(ej.A,{control:(0,n.jsx)(e0.A,{checked:H,onChange:e=>B(e.target.checked),size:"small"}),label:x("mcp.tester.showRaw"),sx:{mr:0}})]}),H?(0,n.jsx)(a.default,{component:"pre",sx:{whiteSpace:"pre-wrap",wordBreak:"break-all",fontSize:"0.875rem",p:1,borderRadius:1,border:1,borderColor:e=>"dark"===e.palette.mode?"#3a3a3a":"#e5e7eb",bgcolor:e=>e.palette.background.paper,color:e=>e.palette.text.primary,overflow:"auto",maxHeight:"400px"},children:E.success?E.output:x("mcp.tester.error",{error:null!=(t=E.error)?t:""})}):E.success?(()=>{try{let e=JSON.parse(E.output);if(e&&e.data&&Array.isArray(e.data.content))return(0,n.jsx)(a.default,{sx:{display:"flex",flexDirection:"column",gap:1},children:e.data.content.map((e,t)=>"text"===e.type?(0,n.jsx)(rd.oz,{remarkPlugins:[rp.A],children:e.text},t):"image"===e.type&&e.data&&e.mimeType?(0,n.jsx)("img",{src:"data:".concat(e.mimeType,";base64,").concat(e.data),alt:x("mcp.tester.imageAlt",{number:f(t+1)}),style:{maxWidth:"100%",height:"auto",borderRadius:"4px"}},t):"audio"===e.type&&e.data&&e.mimeType?(0,n.jsx)("audio",{controls:!0,src:"data:".concat(e.mimeType,";base64,").concat(e.data),style:{width:"100%"},children:x("mcp.tester.audioUnsupported")},t):(0,n.jsx)(a.default,{component:"pre",sx:{whiteSpace:"pre-wrap",wordBreak:"break-all",fontSize:"0.875rem",p:1,borderRadius:1,border:1,borderColor:e=>"dark"===e.palette.mode?"#3a3a3a":"#e5e7eb",bgcolor:e=>e.palette.background.paper,color:e=>e.palette.text.primary,overflow:"auto"},children:JSON.stringify(e,null,2)},t))});throw Error("Output is valid JSON but not in the expected MCP 'data.content' format.")}catch(e){return(0,n.jsx)(a.default,{component:"pre",sx:{whiteSpace:"pre-wrap",wordBreak:"break-all",fontSize:"0.875rem",p:1,borderRadius:1,border:1,borderColor:e=>"dark"===e.palette.mode?"#3a3a3a":"#e5e7eb",bgcolor:e=>e.palette.background.paper,color:e=>e.palette.text.primary,overflow:"auto"},children:E.output})}})():(0,n.jsx)(c.A,{color:"error.main",children:x("mcp.tester.error",{error:null!=(r=E.error)?r:""})})]}),(null==E?void 0:E.success)&&(()=>{let e,t=(0,ru.Gt)(null==$?void 0:$._meta);if(!t)return null;try{var r;let t=JSON.parse(E.output);e=JSON.stringify(null!=(r=null==t?void 0:t.data)?r:t)}catch(t){e=void 0}return(0,n.jsx)(rh.Ay,{serverName:s,uri:t,toolName:w,toolArgs:JSON.stringify(S),toolResultContent:e})})()]})};var rf=r(94035);let rv=(0,i.h)("frontend/components/mcp/MCPToolManager"),rb=e=>{let{serverName:t,onClose:r,prefill:a}=e,{t:s,formatNumber:i}=(0,m.s9)(),{tools:c,isLoading:d,error:p,loadTools:u,retryLoadTools:h,isRetrying:g,retryCount:x,testTool:f}=(0,rf.O)(t),v=async(e,t,r)=>(rv.debug("Testing tool ".concat(e," with params:"),t),void 0!==r&&rv.debug("Using timeout: ".concat(r," seconds")),await f(e,t,r));(0,l.useEffect)(()=>{if(t){let e=setInterval(()=>{rv.debug("Periodic tool refresh"),ta.S.clearToolsCache(t),u(!0)},3e4);return()=>clearInterval(e)}},[u,t]);let{getThemeValue:b}=(0,A.Ic)();return p&&(!c||0===c.length)?(0,n.jsxs)("div",{className:"mt-8 border rounded-lg p-4",style:{backgroundColor:b("#fef2f2","#3a2222"),borderColor:b("#fecaca","#5a3333"),color:b("#333","#f0f0f0")},children:[(0,n.jsx)("h3",{className:"text-lg font-semibold mb-4",style:{color:b("#111","#f8f8f8")},children:s("mcp.tools.managerServer",{server:t||s("mcp.tools.noServer")})}),(0,n.jsxs)("div",{className:"text-red-500",children:[(0,n.jsx)("p",{children:s("mcp.tools.errorLoading",{error:p})}),(0,n.jsx)("button",{onClick:()=>{t&&ta.S.clearToolsCache(t),h()},className:"mt-2 px-3 py-1 bg-blue-500 text-white rounded hover:bg-blue-600 flex items-center",disabled:g,children:g?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o.default,{size:"small",color:"white",className:"mr-2"}),s("mcp.tools.retrying")]}):s("mcp.tools.retry")}),x>0&&(0,n.jsx)("p",{className:"text-sm mt-1",children:s("mcp.tools.retryAttempt",{count:i(x)})})]})]}):t?(0,n.jsxs)("div",{className:"mt-8",style:{color:b("#333","#f0f0f0")},children:[(0,n.jsx)(rx,{serverName:t,tools:c,onTestTool:v,onClose:r,prefill:a}),d&&(0,n.jsxs)("div",{className:"mt-4 flex items-center space-x-2 text-blue-500",children:[(0,n.jsx)(o.default,{size:"small",color:"primary"}),(0,n.jsx)("p",{children:s("mcp.tools.loading")})]}),p&&c&&c.length>0&&(0,n.jsxs)("div",{className:"mt-2 text-yellow-500",children:[(0,n.jsx)("p",{children:s("mcp.tools.warning",{error:p})}),(0,n.jsx)("p",{className:"text-sm",children:s("mcp.tools.cached")}),(0,n.jsx)("button",{onClick:()=>{t&&ta.S.clearToolsCache(t),h()},className:"mt-1 px-2 py-1 text-xs bg-blue-500 text-white rounded hover:bg-blue-600 flex items-center",disabled:g,children:g?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o.default,{size:"small",color:"white",className:"mr-1"}),(0,n.jsx)("span",{className:"text-xs",children:s("mcp.tools.retrying")})]}):s("mcp.tools.retry")}),x>0&&(0,n.jsx)("p",{className:"text-xs mt-1",children:s("mcp.tools.retryAttempt",{count:i(x)})})]})]}):(0,n.jsxs)("div",{className:"mt-8 border rounded-lg p-4",style:{backgroundColor:b("white","#2a2a2a"),borderColor:b("#e5e7eb","#3a3a3a"),color:b("#333","#f0f0f0")},children:[(0,n.jsx)("h3",{className:"text-lg font-semibold mb-4",style:{color:b("#111","#f8f8f8")},children:s("mcp.tools.manager")}),(0,n.jsx)("p",{style:{color:b("#6b7280","#9ca3af")},children:s("mcp.tools.selectServer")})]})},ry=(0,i.h)("frontend/components/mcp/MCPCapabilitiesManager"),rj=e=>{let{serverName:t,show:r="both"}=e,{t:s,formatNumber:o}=(0,m.s9)(),i="both"===r||"resources"===r,p="both"===r||"prompts"===r,[u,h]=(0,l.useState)([]),[x,y]=(0,l.useState)([]),[j,A]=(0,l.useState)([]),[w,C]=(0,l.useState)(!1),[S,k]=(0,l.useState)(),[E,z]=(0,l.useState)(null),[P,T]=(0,l.useState)(""),[M,I]=(0,l.useState)(!1),[R,N]=(0,l.useState)(),[F,O]=(0,l.useState)({}),W=(0,l.useCallback)(async()=>{if(t){C(!0),k(void 0);try{let[e,r]=await Promise.all([i?ta.S.listServerResources(t):Promise.resolve(null),p?ta.S.listServerPrompts(t):Promise.resolve(null)]);e&&(h(e.resources||[]),y(e.resourceTemplates||[])),r&&A(r.prompts||[]),k((null==e?void 0:e.error)||(null==r?void 0:r.error))}catch(e){ry.warn("Failed to load capabilities",e),k(e instanceof Error?e.message:s("mcp.capabilities.loadFailed"))}finally{C(!1)}}},[t,i,p,s]);(0,l.useEffect)(()=>{z(null),T(""),N(void 0),W()},[W]),(0,l.useEffect)(()=>{if(!t||!i)return;let e=setInterval(async()=>{try{var e;let r=null!=(e=(await ta.S.getServerStatus(t)).resourceListVersion)?e:0;ta.S.checkResourceListVersion(t,r)&&(ry.debug("MCPCapabilitiesManager: resource list changed for ".concat(t," — auto-refreshing")),await W())}catch(e){}},1e4);return()=>clearInterval(e)},[t,i,W]);let _=async(e,r)=>{z(s("mcp.capabilities.resourceTitle",{name:r})),T(""),N(void 0),I(!0);try{let r=await ta.S.readResource(t,e);r.success?T(function(e,t,r){let n=null==e?void 0:e.contents;return Array.isArray(n)&&0!==n.length?n.map(e=>"string"==typeof e.text?e.text:"string"==typeof e.blob?t("mcp.capabilities.binary",{type:e.mimeType||t("mcp.capabilities.data"),count:r(e.blob.length)}):JSON.stringify(e,null,2)).join("\n\n---\n\n"):t("mcp.capabilities.noContents")}(r.data,s,o)):N(r.error||s("mcp.capabilities.readFailed"))}finally{I(!1)}},D=async e=>{z(s("mcp.capabilities.promptTitle",{name:e.name})),T(""),N(void 0),I(!0);try{let r=await ta.S.getPrompt(t,e.name,F[e.name]);r.success?T(function(e,t){let r=null==e?void 0:e.messages;return Array.isArray(r)&&0!==r.length?r.map(e=>{var r;let n,a=e.role||"user",l=e.content;return n="string"==typeof(null==l?void 0:l.text)?l.text:(null==l?void 0:l.type)==="resource"?t("mcp.capabilities.embedded",{uri:(null==(r=l.resource)?void 0:r.uri)||""}):JSON.stringify(l,null,2),"[".concat(a,"]\n").concat(n)}).join("\n\n"):t("mcp.capabilities.noMessages")}(r.data,s)):N(r.error||s("mcp.capabilities.promptFailed"))}finally{I(!1)}},U=!w&&!S&&(!i||0===u.length&&0===x.length)&&(!p||0===j.length),H="resources"===r?s("mcp.capabilities.resources"):"prompts"===r?s("mcp.capabilities.prompts"):s("mcp.capabilities.both"),B="resources"===r?s("mcp.capabilities.noResources"):"prompts"===r?s("mcp.capabilities.noPrompts"):s("mcp.capabilities.none");return(0,n.jsxs)(d.A,{variant:"outlined",sx:{p:2},children:[(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",mb:1},children:[(0,n.jsx)(c.A,{variant:"h6",children:H}),(0,n.jsx)(b.A,{size:"small",onClick:()=>{ta.S.clearCapabilitiesCache(t),W()},disabled:w,children:s("mcp.capabilities.refresh")})]}),w&&(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1,py:2},children:[(0,n.jsx)(ef.default,{size:18}),(0,n.jsx)(c.A,{variant:"body2",children:s("mcp.capabilities.loading")})]}),S&&(0,n.jsx)(g.A,{severity:"warning",sx:{mb:2},children:S}),U&&(0,n.jsx)(c.A,{variant:"body2",color:"text.secondary",sx:{py:1},children:B}),(0,n.jsxs)(a.default,{sx:{display:"flex",gap:2,flexWrap:"wrap",alignItems:"flex-start"},children:[(0,n.jsxs)(a.default,{sx:{flex:"1 1 360px",minWidth:280},children:[i&&(u.length>0||x.length>0)&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(c.A,{variant:"subtitle2",sx:{mt:1},children:s("mcp.capabilities.resources")}),(0,n.jsx)(tY.A,{dense:!0,disablePadding:!0,children:u.map(e=>(0,n.jsxs)(tZ.A,{onClick:()=>_(e.uri,e.name||e.uri),children:[(0,n.jsx)(t0.A,{primary:e.name||e.uri,secondary:e.description||e.uri,slotProps:{secondary:{sx:{wordBreak:"break-all"}}}}),e.mimeType&&(0,n.jsx)(ey.A,{size:"small",label:e.mimeType,sx:{ml:1}})]},e.uri))}),x.length>0&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(c.A,{variant:"caption",color:"text.secondary",sx:{mt:1,display:"block"},children:s("mcp.capabilities.templates")}),(0,n.jsx)(tY.A,{dense:!0,disablePadding:!0,children:x.map(e=>(0,n.jsx)(t0.A,{sx:{pl:2,py:.5},primary:e.name||e.uriTemplate,secondary:e.uriTemplate,slotProps:{secondary:{sx:{wordBreak:"break-all"}}}},e.uriTemplate))})]})]}),p&&j.length>0&&(0,n.jsxs)(n.Fragment,{children:["both"===r&&(0,n.jsx)(rl.A,{sx:{my:1}}),(0,n.jsx)(c.A,{variant:"subtitle2",children:s("mcp.capabilities.prompts")}),(0,n.jsx)(f.A,{spacing:1,sx:{mt:.5},children:j.map(e=>(0,n.jsxs)(a.default,{sx:{border:"1px solid",borderColor:"divider",borderRadius:1,p:1},children:[(0,n.jsx)(c.A,{variant:"body2",sx:{fontWeight:600},children:e.name}),e.description&&(0,n.jsx)(c.A,{variant:"caption",color:"text.secondary",children:e.description}),(e.arguments||[]).map(t=>{var r;return(0,n.jsx)(v.A,{size:"small",fullWidth:!0,margin:"dense",label:"".concat(t.name).concat(t.required?" *":""),placeholder:t.description||"",value:(null==(r=F[e.name])?void 0:r[t.name])||"",onChange:r=>((e,t,r)=>{O(n=>({...n,[e]:{...n[e]||{},[t]:r}}))})(e.name,t.name,r.target.value)},t.name)}),(0,n.jsx)(b.A,{size:"small",sx:{mt:.5},onClick:()=>D(e),children:s("mcp.capabilities.preview")})]},e.name))})]})]}),E&&(0,n.jsxs)(a.default,{sx:{flex:"1 1 360px",minWidth:280},children:[(0,n.jsx)(c.A,{variant:"subtitle2",children:E}),M?(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1,py:2},children:[(0,n.jsx)(ef.default,{size:16}),(0,n.jsx)(c.A,{variant:"body2",children:s("mcp.capabilities.loadingPreview")})]}):R?(0,n.jsx)(g.A,{severity:"error",sx:{mt:1},children:R}):(0,n.jsx)(a.default,{component:"pre",sx:{mt:1,p:1,bgcolor:"action.hover",borderRadius:1,maxHeight:360,overflow:"auto",fontSize:12,whiteSpace:"pre-wrap",wordBreak:"break-word"},children:P||s("mcp.capabilities.empty")})]})]})]})},rA=(0,i.h)("frontend/components/mcp/MCPServerManager/ServerDetailsModal"),rw=e=>{let{server:t,onClose:r,onSaveEnv:s,onServerRestart:o,toolPrefill:i}=e,{t:d}=(0,m.s9)(),[p,u]=(0,l.useState)("tools");(0,l.useEffect)(()=>{t&&u("tools")},[null==t?void 0:t.name]);let h=null!==t,g=(null==t?void 0:t.name)||"",x=async e=>{t&&(rA.debug("Saving env for ".concat(t.name)),await s(t.name,e))};return(0,n.jsxs)(tV.A,{open:h,onClose:r,maxWidth:"lg",fullWidth:!0,PaperProps:{sx:{height:"85vh",maxHeight:"85vh"}},children:[(0,n.jsxs)(tK.A,{component:"div",sx:{pb:0},children:[(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between"},children:[(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"baseline",gap:1.5},children:[(0,n.jsx)(c.A,{variant:"h6",children:g}),t&&(0,n.jsx)(c.A,{variant:"body2",sx:{color:(e=>"connected"===e?"success.main":"error"===e?"error.main":"connecting"===e||"initialization"===e?"info.main":"text.secondary")(t.status)},children:(e=>{switch(e){case"connected":return d("mcp.status.connected");case"error":return d("mcp.status.error");case"connecting":return d("mcp.status.connecting");case"initialization":return d("mcp.status.initialization");default:return d("mcp.status.disconnected")}})(t.status)})]}),(0,n.jsx)(j.A,{edge:"end",onClick:r,"aria-label":d("mcp.details.close"),children:(0,n.jsx)(ro.A,{})})]}),(0,n.jsxs)(eH.A,{value:p,onChange:(e,t)=>u(t),sx:{mt:1},children:[(0,n.jsx)(eB.A,{label:d("mcp.details.tools"),value:"tools"}),(0,n.jsx)(eB.A,{label:d("mcp.details.resources"),value:"resources"}),(0,n.jsx)(eB.A,{label:d("mcp.details.prompts"),value:"prompts"}),(0,n.jsx)(eB.A,{label:d("mcp.details.env"),value:"env"})]})]}),(0,n.jsx)(rl.A,{}),(0,n.jsxs)(tX.A,{sx:{overflow:"auto"},children:[h&&"tools"===p&&(0,n.jsx)(rb,{serverName:g,prefill:i}),h&&"resources"===p&&(0,n.jsx)(rj,{serverName:g,show:"resources"}),h&&"prompts"===p&&(0,n.jsx)(rj,{serverName:g,show:"prompts"}),h&&"env"===p&&(0,n.jsx)(a.default,{sx:{mt:1},children:(0,n.jsx)(eb.A,{serverName:g,initialEnv:(null==t?void 0:t.env)||{},onSave:x,onServerRestart:async e=>{await o(e)}})})]})]})},rC=(0,e3.A)((0,n.jsx)("path",{d:"M4 8h4V4H4zm6 12h4v-4h-4zm-6 0h4v-4H4zm0-6h4v-4H4zm6 0h4v-4h-4zm6-10v4h4V4zm-6 4h4V4h-4zm6 6h4v-4h-4zm0 6h4v-4h-4z"}),"Apps"),rS=(0,e3.A)((0,n.jsx)("path",{d:"m22.7 19-9.1-9.1c.9-2.3.4-5-1.5-6.9-2-2-5-2.4-7.4-1.3L9 6 6 9 1.6 4.7C.4 7.1.9 10.1 2.9 12.1c1.9 1.9 4.6 2.4 6.9 1.5l9.1 9.1c.4.4 1 .4 1.4 0l2.3-2.3c.5-.4.5-1.1.1-1.4"}),"Build"),rk=(e,t)=>"".concat(e,"\0").concat(t),rE=e=>{let t=e.replace(/^ui:\/\//i,"").split("/").filter(Boolean).at(-1);if(!t)return e;try{return decodeURIComponent(t).replace(/[-_]+/g," ").replace(/\b\w/g,e=>e.toUpperCase())}catch(e){return t.replace(/[-_]+/g," ").replace(/\b\w/g,e=>e.toUpperCase())}},rz=(e,t)=>"string"==typeof e&&e.trim()?e:e instanceof Error&&e.message.trim()?e.message:t,rP=e=>{let{open:t,onClose:r,onOpenToolTester:s}=e,{t:o,tp:i}=(0,m.s9)(),[d,p]=(0,l.useState)([]),[u,h]=(0,l.useState)(null),[x,v]=(0,l.useState)(!1),[y,A]=(0,l.useState)(!1),[w,C]=(0,l.useState)(null),S=(0,l.useRef)(0),k=(0,l.useCallback)(async function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=++S.current;h(null),C(null),e?A(!0):v(!0);try{let r=await ta.S.loadServerConfigs();if(t!==S.current)return;if(!Array.isArray(r)){p([]),C(rz(null==r?void 0:r.error,o("mcp.apps.configFailed")));return}let n=r.filter(e=>!0!==e.disabled&&!0===e.enableMcpApps),a=await Promise.all(n.map(async t=>{e&&(ta.S.clearCapabilitiesCache(t.name),ta.S.clearToolsCache(t.name));let[r,n]=await Promise.all([ta.S.listServerResources(t.name),ta.S.listServerTools(t.name)]),a=new Map;for(let e of Array.isArray(null==n?void 0:n.tools)?n.tools:[]){let t=(0,ru.Gt)(null==e?void 0:e._meta);t&&"string"==typeof(null==e?void 0:e.name)&&e.name.trim()&&a.set(t,[...a.get(t)||[],e.name])}if((null==r?void 0:r.error)&&0===a.size)return{name:t.name,apps:[],error:rz(r.error,o("mcp.apps.discoveryUnavailable"))};let l=new Map;for(let e of Array.isArray(null==r?void 0:r.resources)?r.resources:[]){if(!(0,ru.DG)(null==e?void 0:e.uri)||!(0,ru.q$)(null==e?void 0:e.mimeType))continue;let r="string"==typeof e.title&&e.title.trim()?e.title.trim():"string"==typeof e.name&&e.name.trim()?e.name.trim():e.uri;l.set(e.uri,{serverName:t.name,uri:e.uri,name:r,description:"string"==typeof e.description&&e.description.trim()?e.description.trim():void 0,mimeType:e.mimeType,toolNames:a.get(e.uri)||[],listedResource:!0})}for(let[e,r]of a)l.has(e)||l.set(e,{serverName:t.name,uri:e,name:rE(e),mimeType:"text/html;profile=mcp-app",toolNames:r,listedResource:!1});return{name:t.name,apps:Array.from(l.values())}}));t===S.current&&p(a)}catch(e){t===S.current&&(p([]),C(rz(e,o("mcp.apps.discoveryFailed"))))}finally{t===S.current&&(v(!1),A(!1))}},[o]);(0,l.useEffect)(()=>{if(!t){S.current+=1,h(null);return}k(!1)},[k,t]),(0,l.useEffect)(()=>{if(!t)return;let e=e=>{var t,r;let n=e.detail;if(!(null==n?void 0:n.serverName))return;let a=d.find(e=>null==u?void 0:u.startsWith("".concat(e.name,"\0"))),l=(null==(t=n.config)?void 0:t.disabled)===!0||(null==(r=n.config)?void 0:r.enableMcpApps)===!1;(null==a?void 0:a.name)===n.serverName&&l&&h(null),ta.S.clearCapabilitiesCache(n.serverName),ta.S.clearToolsCache(n.serverName),k(!0)};return window.addEventListener("flujo:mcp-server-config-changed",e),()=>window.removeEventListener("flujo:mcp-server-config-changed",e)},[k,t,u,d]);let E=(0,l.useMemo)(()=>d.flatMap(e=>e.apps),[d]),z=(0,l.useMemo)(()=>E.find(e=>rk(e.serverName,e.uri)===u),[E,u]),P=d.filter(e=>e.error),T=d.length;return(0,n.jsxs)(tV.A,{open:t,onClose:r,fullWidth:!0,maxWidth:"xl","aria-labelledby":"mcp-apps-dashboard-title",children:[(0,n.jsxs)(tK.A,{id:"mcp-apps-dashboard-title",sx:{display:"flex",alignItems:"center",gap:1},children:[(0,n.jsx)(rC,{color:"primary"}),o("mcp.apps.title"),(0,n.jsx)(a.default,{sx:{flex:1}}),(0,n.jsx)(ew.A,{title:o("mcp.apps.refresh"),children:(0,n.jsx)("span",{children:(0,n.jsx)(j.A,{"aria-label":o("mcp.apps.refresh"),onClick:()=>void k(!0),disabled:x||y,size:"small",children:y?(0,n.jsx)(ef.default,{size:20}):(0,n.jsx)(rr.A,{fontSize:"small"})})})}),(0,n.jsx)(j.A,{"aria-label":o("mcp.apps.closeAria"),onClick:r,size:"small",children:(0,n.jsx)(ro.A,{fontSize:"small"})})]}),(0,n.jsx)(rl.A,{}),(0,n.jsx)(tX.A,{sx:{p:0,minHeight:{xs:480,md:620}},children:x?(0,n.jsxs)(f.A,{alignItems:"center",justifyContent:"center",spacing:2,sx:{minHeight:420},children:[(0,n.jsx)(ef.default,{}),(0,n.jsx)(c.A,{color:"text.secondary",children:o("mcp.apps.discovering")})]}):w?(0,n.jsx)(g.A,{severity:"error",sx:{m:3},children:w}):0===T?(0,n.jsxs)(f.A,{alignItems:"center",justifyContent:"center",spacing:1,sx:{minHeight:420,p:3},children:[(0,n.jsx)(rC,{color:"disabled",sx:{fontSize:48}}),(0,n.jsx)(c.A,{variant:"h6",children:o("mcp.apps.noServers")}),(0,n.jsx)(c.A,{color:"text.secondary",textAlign:"center",children:o("mcp.apps.noServersHelp")})]}):(0,n.jsxs)(a.default,{sx:{display:"grid",gridTemplateColumns:{xs:"1fr",md:"minmax(300px, 38%) 1fr"},minHeight:620},children:[(0,n.jsxs)(a.default,{sx:{borderRight:{md:"1px solid"},borderColor:{md:"divider"},p:2,overflow:"auto"},children:[(0,n.jsx)(c.A,{variant:"subtitle2",color:"text.secondary",sx:{mb:1},children:o("mcp.apps.summary",{apps:i("mcp.apps.app",E.length),servers:i("mcp.apps.server",T)})}),d.map(e=>(0,n.jsxs)(a.default,{sx:{mb:2.5},children:[(0,n.jsx)(c.A,{variant:"subtitle1",fontWeight:600,sx:{mb:1},children:e.name}),e.error?(0,n.jsxs)(g.A,{severity:"warning",children:[(0,n.jsx)(c.A,{variant:"body2",fontWeight:600,children:o("mcp.apps.unavailable")}),(0,n.jsx)(c.A,{variant:"body2",children:e.error})]}):0===e.apps.length?(0,n.jsx)(c.A,{variant:"body2",color:"text.secondary",children:o("mcp.apps.noneForServer")}):(0,n.jsx)(f.A,{spacing:1,children:e.apps.map(e=>{let t=rk(e.serverName,e.uri);return(0,n.jsx)(tM.A,{variant:"outlined",sx:{borderColor:u===t?"primary.main":"divider"},children:(0,n.jsx)(tI.A,{onClick:()=>h(t),"aria-pressed":u===t,children:(0,n.jsxs)(tq.A,{sx:{py:1.5},children:[(0,n.jsx)(c.A,{variant:"subtitle2",children:e.name}),(0,n.jsx)(c.A,{variant:"caption",color:"text.secondary",sx:{display:"block",overflowWrap:"anywhere"},children:e.uri}),e.toolNames.length>0&&(0,n.jsx)(ey.A,{icon:(0,n.jsx)(rS,{}),label:i("mcp.apps.tools",e.toolNames.length),size:"small",sx:{mt:1}}),!e.listedResource&&(0,n.jsx)(ey.A,{label:o("mcp.apps.toolDiscovered"),size:"small",variant:"outlined",sx:{mt:1,ml:+(e.toolNames.length>0)}})]})})},t)})})]},e.name)),0===E.length&&0===P.length&&(0,n.jsx)(g.A,{severity:"info",children:o("mcp.apps.none")})]}),(0,n.jsx)(a.default,{sx:{p:{xs:2,md:3},minWidth:0,overflow:"auto"},children:z?(0,n.jsxs)(a.default,{children:[(0,n.jsx)(c.A,{variant:"h6",children:z.name}),z.description&&(0,n.jsx)(c.A,{color:"text.secondary",sx:{mt:.5},children:z.description}),(0,n.jsxs)(f.A,{direction:"row",gap:1,flexWrap:"wrap",sx:{mt:1},children:[(0,n.jsx)(ey.A,{label:z.serverName,size:"small"}),(0,n.jsx)(ey.A,{label:z.mimeType,size:"small",variant:"outlined"})]}),z.toolNames.length>0&&(0,n.jsxs)(g.A,{severity:"info",sx:{mt:2},children:[(0,n.jsx)(c.A,{variant:"body2",sx:{mb:1},children:o("mcp.apps.linkedHelp")}),(0,n.jsx)(f.A,{direction:"row",gap:1,flexWrap:"wrap",children:z.toolNames.map(e=>(0,n.jsx)(b.A,{size:"small",variant:"outlined",startIcon:(0,n.jsx)(rS,{}),onClick:()=>s(z.serverName,e),children:o("mcp.apps.test",{tool:e})},e))})]}),(0,n.jsx)(rh.Ay,{serverName:z.serverName,uri:z.uri},rk(z.serverName,z.uri))]}):(0,n.jsxs)(f.A,{alignItems:"center",justifyContent:"center",spacing:1,sx:{minHeight:360},children:[(0,n.jsx)(rC,{color:"disabled",sx:{fontSize:44}}),(0,n.jsx)(c.A,{variant:"h6",children:o("mcp.apps.select")}),(0,n.jsx)(c.A,{color:"text.secondary",textAlign:"center",children:o("mcp.apps.sandbox")})]})})]})}),(0,n.jsx)(rl.A,{}),(0,n.jsx)(t1.A,{children:(0,n.jsx)(b.A,{onClick:r,children:o("mcp.apps.close")})})]})};var rT=r(80411),rM=r(9898),rI=r(70272),rR=r(36314),rN=r(50001);let rF=(0,e3.A)((0,n.jsx)("path",{d:"M5 20h14v-2H5zm0-10h4v6h6v-6h4l-7-7z"}),"Upload");var rO=r(30989),rW=r(64419),r_=r(28466),rD=r(36741),rU=r(55406);let rH=(0,e3.A)((0,n.jsx)("path",{d:"M6 6h12v12H6z"}),"Stop"),rB=(0,e3.A)((0,n.jsx)("path",{d:"M3 5h2V3c-1.1 0-2 .9-2 2m0 8h2v-2H3zm4 8h2v-2H7zM3 9h2V7H3zm10-6h-2v2h2zm6 0v2h2c0-1.1-.9-2-2-2M5 21v-2H3c0 1.1.9 2 2 2m-2-4h2v-2H3zM9 3H7v2h2zm2 18h2v-2h-2zm8-8h2v-2h-2zm0 8c1.1 0 2-.9 2-2h-2zm0-12h2V7h-2zm0 8h2v-2h-2zm-4 4h2v-2h-2zm0-16h2V3h-2zM7 17h10V7H7zm2-8h6v6H9z"}),"SelectAll");var rL=r(94885),rJ=r(15686),r$=r(91665),rG=r(91287),rq=r(22573),rV=r(79508),rK=r(38459),rX=r(65818),rY=r(97104),rZ=r(64598),rQ=r(23201);let r0=(0,i.h)("frontend/components/mcp/MCPServerManager"),r1=e=>{let{onServerModalToggle:t}=e,{t:s,tp:o,formatNumber:i}=(0,m.s9)(),{servers:p,isLoading:u,loadError:g,connectingServers:x,toggleServer:f,retryServer:A,deleteServer:w,addServer:C,updateServer:S,setServerFolder:k,setServerFavorite:E,saveEnv:z}=(0,rM.v)(),[P,T]=(0,l.useState)(!1),[M,I]=(0,l.useState)(null),[R,N]=(0,l.useState)(!1),[F,O]=(0,l.useState)(""),[W,_]=(0,l.useState)(null),[D,U]=(0,l.useState)(!1),[H,B]=(0,l.useState)("claude"),[L,J]=(0,l.useState)(null),[$,G]=(0,l.useState)(null),[q,V]=(0,l.useState)(null),[K,X]=(0,l.useState)(),[Y,Z]=(0,l.useState)(!1),[Q,ee]=(0,l.useState)({}),et=(0,l.useMemo)(()=>Array.from(new Set(p.filter(e=>"stdio"===e.transport&&e.rootPath).map(e=>e.rootPath))).join("|"),[p]);(0,l.useEffect)(()=>{let e=et.split("|").filter(Boolean);if(0===e.length)return;let t=!1;return(0,rT.M8)(e).then(e=>{t||ee(t=>({...t,...e}))}).catch(e=>r0.warn("Server update check failed",e)),()=>{t=!0}},[et]);let er=async(e,t)=>{r0.info("Server ".concat(e," updated from git, refreshing update status"));let r=et.split("|").filter(Boolean),n=await (0,rT.M8)(r.length>0?r:[t],!0);ee(e=>({...e,...n}))},en=e=>{let t=p.find(t=>t.name===e);if(!t||t.disabled)return void r0.debug("Not opening details for ".concat(e," (missing or disabled)"));V(e)};(0,l.useEffect)(()=>{if(0===p.length)return;let e=new URLSearchParams(window.location.search),t=e.get("server"),r=e.get("tool");if(!t||!r)return;let n=p.find(e=>e.name===t);if(!n||n.disabled)return;let a={};try{let t=JSON.parse(e.get("args")||"{}");t&&"object"==typeof t&&!Array.isArray(t)&&(a=t)}catch(e){}X({toolName:r,arguments:a}),V(t),window.history.replaceState(window.history.state,"","/mcp")},[p]);let ea=async e=>{await f(e,!1),await f(e,!0)},el=q&&p.find(e=>e.name===q)||null,[es,eo]=(0,l.useState)(""),[ei,ec]=(0,rY.Xk)("flujo-ui:mcp:sort","name-asc"),[ed,ep]=(0,rY.Xk)("flujo-ui:mcp:filter","all"),[em,eh]=(0,l.useState)(null),[eg,ex]=(0,rY.Xk)("flujo-ui:mcp:group",rK.FM),[ef,ev]=(0,l.useState)(null),[eb,ey]=(0,rY.Xk)("flujo-ui:mcp:collapsed",[]),ej=(0,l.useMemo)(()=>new Set(eb),[eb]),[eA,eC]=(0,l.useState)(!1),[ek,eE]=(0,l.useState)(new Set),[eP,eT]=(0,l.useState)({open:!1,action:null}),eM=(0,eu.A)(),eI=async(e,t)=>{r0.debug("Toggling server ".concat(e," to ").concat(t?"enabled":"disabled")),await f(e,t)},eR=async e=>{r0.debug("Retrying pulling server status for server: ".concat(e)),await A(e)},eN=async e=>{r0.debug("Deleting server: ".concat(e)),await w(e)},eF=e=>{r0.debug("Editing server: ".concat(e.name)),I(e),T(!0),null==t||t(!0)},eO=async e=>{r0.debug("Adding server: ".concat(e.name)),await C(e),T(!1),I(null),null==t||t(!1)},eW=async e=>{let r=null==M?void 0:M.name;r0.debug("Updating server: ".concat(null!=r?r:e.name)+(r&&r!==e.name?" -> ".concat(e.name):"")),await S(e,r),T(!1),I(null),null==t||t(!1)},e_=async e=>{r0.debug("Save & Authenticate for server: ".concat(e.name));let n=()=>{T(!1),I(null),null==t||t(!1)};try{M?await S(e,M.name):await C(e);let t=await fetch("/api/oauth/initiate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({serverName:e.name})}),a=await t.json();if(!t.ok){if(a.needsClientCredentials)return{status:"needs_client_credentials",error:a.error};return{status:"error",error:a.error||s("mcp.server.oauthFailed")}}if(a.alreadyAuthorized||!a.authorizationUrl)return n(),await A(e.name),{status:"authorized"};let{openOAuthPopup:l}=await r.e(8198).then(r.bind(r,68198));return await l({url:a.authorizationUrl,windowName:"oauth_".concat(e.name)}),n(),await A(e.name),{status:"authorized"}}catch(t){return r0.warn("Save & Authenticate failed for ".concat(e.name,":"),t),{status:"error",error:t instanceof Error?t.message:s("mcp.server.unknownError")}}},eD=async()=>{let e=(0,rI.Kt)(H);r0.debug("Importing server configurations from ".concat(e.label," format")),_(null);let{servers:t,errors:r}=e.import(F);if(0===t.length)return void _(r.length>0?r.join("\n"):s("mcp.server.noImportServers"));U(!0);let n=new Set(p.map(e=>e.name)),a=0,l=0,o=[];for(let e of t)try{n.has(e.name)?(await S(e),l++):(await C(e),n.add(e.name),a++)}catch(t){o.push(t.message?"“".concat(e.name,"”: ").concat(t.message):s("mcp.server.importEntryFailed",{name:e.name}))}U(!1);let c=[...r,...o];if(0===a&&0===l)return void _(c.length>0?c.join("\n"):s("mcp.server.noneImported"));r0.info("Imported MCP servers: ".concat(a," added, ").concat(l," updated")),c.length>0?_(s("mcp.server.partialImport",{added:i(a),updated:i(l),problems:c.join("\n")})):(N(!1),O(""))},eU=()=>{N(!1),O(""),_(null)},eH=(0,l.useMemo)(()=>{r0.debug("Filtering and sorting servers",{searchTerm:es,sortOption:ei,filterOption:ed});let e=p;if(""!==es.trim()){let t=es.toLowerCase();e=p.filter(e=>{var r;return e.name.toLowerCase().includes(t)||(null==(r=e.rootPath)?void 0:r.toLowerCase().includes(t))})}return"all"!==ed&&(e=e.filter(e=>{switch(ed){case"connected":return"connected"===e.status;case"disconnected":return"disconnected"===e.status;case"error":return"error"===e.status;case"enabled":return!e.disabled;case"disabled":return e.disabled;case"stdio":case"websocket":case"sse":case"streamable":return e.transport===ed;default:return!0}})),(0,rX.oO)(e,ei)},[p,es,ei,ed]),{ref:eB,showBackToTop:eL,scrollToTop:eJ}=(0,rZ.R)("flujo-ui:scroll:mcp",{deps:[u,eH.length]}),e$=(0,l.useMemo)(()=>(0,rK.yF)(p,e=>e.folder),[p]),eG=e=>s("mcp.server.sort.".concat(e)),eq=(0,l.useMemo)(()=>"folder"===eg?(0,rK.Je)(eH,e=>e.folder,s("mcp.server.ungrouped")):"sort"===eg?(0,rK.Az)(eH,e=>{let t=(0,rX.mO)(e,ei);return"status:connected"===t.key?{...t,label:s("mcp.status.connected")}:"status:error"===t.key?{...t,label:s("mcp.status.error")}:"status:auth"===t.key?{...t,label:s("mcp.server.requiresAuth")}:"status:disconnected"===t.key?{...t,label:s("mcp.status.disconnected")}:"transport:stdio"===t.key?{...t,label:s("mcp.server.transport.stdio")}:"transport:websocket"===t.key?{...t,label:s("mcp.server.transport.websocket")}:"transport:sse"===t.key?{...t,label:s("mcp.server.transport.sse")}:"transport:streamable"===t.key?{...t,label:s("mcp.server.transport.streamable")}:t}):[],[eg,eH,ei,s]),eV=e=>{ex(e),ev(null)},eK=async()=>{r0.debug("Bulk enabling servers",{selectedServers:Array.from(ek)});let e=Array.from(ek).map(e=>eI(e,!0));await Promise.all(e),eE(new Set),eT({open:!1,action:null})},eX=async()=>{r0.debug("Bulk disabling servers",{selectedServers:Array.from(ek)});let e=Array.from(ek).map(e=>eI(e,!1));await Promise.all(e),eE(new Set),eT({open:!1,action:null})},eY=(e,t)=>{let r=new Set(ek);t?r.add(e):r.delete(e),eE(r)},eZ=()=>{eh(null)},eQ=e=>{ec(e),eZ()},e0=e=>(0,n.jsx)(h,{servers:e.map(e=>({...e,tools:[]})),isLoading:u,loadError:g,onServerSelect:en,onServerToggle:eI,onServerRetry:eR,onServerDelete:eN,onServerEdit:eF,selectionMode:eA,selectedServers:ek,onServerSelectionChange:eY,updates:Q,onServerUpdated:er,folders:e$,onServerSetFolder:k,onServerToggleFavorite:E});return(0,n.jsxs)(a.default,{sx:{color:"text.primary"},children:[(0,n.jsx)(rV.default,{eyebrowKey:"mcp.server.eyebrow",titleKey:"mcp.server.title",descriptionKey:"mcp.server.description",icon:rG.A,actions:(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(b.A,{variant:"outlined",color:"primary",onClick:e=>G(e.currentTarget),startIcon:(0,n.jsx)(rF,{}),endIcon:(0,n.jsx)(rO.A,{}),sx:{textTransform:"none",fontWeight:500},children:s("mcp.server.import")}),(0,n.jsx)(rR.A,{anchorEl:$,open:!!$,onClose:()=>G(null),children:rI._i.map(e=>(0,n.jsx)(e4.A,{onClick:()=>{B(e.id),O(""),_(null),G(null),N(!0)},children:(0,n.jsx)(t0.A,{primary:s("mcp.server.format",{name:e.label})})},e.id))}),(0,n.jsx)(b.A,{variant:"contained",color:"primary",onClick:e=>J(e.currentTarget),startIcon:(0,n.jsx)(re.A,{}),endIcon:(0,n.jsx)(rO.A,{}),sx:{textTransform:"none",fontWeight:500,boxShadow:1},children:s("mcp.server.export")}),(0,n.jsx)(rR.A,{anchorEl:L,open:!!L,onClose:()=>J(null),children:rI._i.map(e=>(0,n.jsx)(e4.A,{onClick:()=>(e=>{let t=(0,rI.Kt)(e);r0.debug("Exporting server configurations in ".concat(t.label," format")),J(null);let r=new Blob([JSON.stringify(t.export(p,{proxyBaseUrl:window.location.origin}),null,2)],{type:"application/json"}),n=URL.createObjectURL(r),a=document.createElement("a");a.href=n,a.download=t.fileName,document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(n)})(e.id),children:(0,n.jsx)(t0.A,{primary:s("mcp.server.format",{name:e.label})})},e.id))}),(0,n.jsx)(b.A,{variant:"contained",color:"primary","data-tour":"add-mcp-server",onClick:()=>{I(null),T(!0),null==t||t(!0)},startIcon:(0,n.jsx)(eS.A,{}),sx:{textTransform:"none",fontWeight:500,boxShadow:1},children:s("mcp.server.add")})]})}),(0,n.jsx)(d.A,{elevation:0,variant:"outlined",sx:{mx:{xs:2,md:3,lg:4},mt:3,mb:1.5,p:1.2,borderRadius:3},children:(0,n.jsxs)(a.default,{sx:{display:"flex",flexDirection:{xs:"column",sm:"row"},gap:1,alignItems:{xs:"stretch",sm:"center"},justifyContent:"space-between"},children:[(0,n.jsx)(v.A,{placeholder:s("mcp.server.search"),variant:"outlined",size:"small",fullWidth:!0,value:es,onChange:e=>eo(e.target.value),InputProps:{startAdornment:(0,n.jsx)(y.A,{position:"start",children:(0,n.jsx)(t2.A,{fontSize:"small"})})},sx:{maxWidth:{sm:300}}}),(0,n.jsxs)(a.default,{sx:{display:"flex",gap:1,alignItems:"center",flexWrap:"wrap"},children:[(0,n.jsx)(b.A,{size:"small",variant:eA?"contained":"outlined",onClick:()=>{eC(!eA),eA&&eE(new Set)},startIcon:(0,n.jsx)(rB,{}),children:s("mcp.server.select")}),eA&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(b.A,{size:"small",onClick:()=>{ek.size===eH.length?eE(new Set):eE(new Set(eH.map(e=>e.name)))},disabled:0===eH.length,children:ek.size===eH.length&&ek.size>0?s("mcp.server.deselectAll"):s("mcp.server.selectAll")}),ek.size>0&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(b.A,{size:"small",variant:"contained",color:"success",onClick:()=>eT({open:!0,action:"enable"}),startIcon:(0,n.jsx)(rU.A,{}),children:s("mcp.server.enableCount",{count:i(ek.size)})}),(0,n.jsx)(b.A,{size:"small",variant:"contained",color:"error",onClick:()=>eT({open:!0,action:"disable"}),startIcon:(0,n.jsx)(rH,{}),children:s("mcp.server.disableCount",{count:i(ek.size)})})]})]}),(0,n.jsx)(ew.A,{title:s("mcp.server.openApps"),children:(0,n.jsx)(j.A,{size:"small","aria-label":s("mcp.server.openApps"),onClick:()=>Z(!0),color:Y?"primary":"default",sx:{border:"1px solid ".concat(eM.palette.divider),backgroundColor:eM.palette.background.default},children:(0,n.jsx)(rC,{fontSize:"small"})})}),(0,n.jsx)(j.A,{size:"small",onClick:e=>ev(e.currentTarget),color:"none"!==eg?"primary":"default",sx:{border:"1px solid ".concat(eM.palette.divider),backgroundColor:eM.palette.background.default},title:s("mcp.server.groupCards"),"aria-label":s("mcp.server.groupCards"),children:(0,n.jsx)(rL.A,{fontSize:"small"})}),(0,n.jsx)(j.A,{size:"small",onClick:e=>{eh(e.currentTarget)},"aria-label":s("mcp.server.sort"),sx:{border:"1px solid ".concat(eM.palette.divider),backgroundColor:eM.palette.background.default},children:(0,n.jsx)(rW.A,{fontSize:"small"})})]})]})}),(0,n.jsxs)(a.default,{sx:{display:"flex",justifyContent:"space-between",mb:2,px:3},children:[(0,n.jsxs)(c.A,{variant:"body2",color:"textSecondary",children:[o("mcp.server.count",p.length,{shown:i(eH.length),total:i(p.length)}),es&&s("mcp.server.matching",{search:es}),"all"!==ed&&s("mcp.server.filtered",{filter:(e=>{switch(e){case"connected":return s("mcp.status.connected");case"disconnected":return s("mcp.status.disconnected");case"error":return s("mcp.status.error");case"enabled":return s("mcp.server.enable");case"disabled":return s("mcp.server.disable");case"stdio":return s("mcp.server.transport.stdio");case"websocket":return s("mcp.server.transport.websocket");case"sse":return s("mcp.server.transport.sse");case"streamable":return s("mcp.server.transport.streamable");default:return e}})(ed)})]}),(0,n.jsx)(c.A,{variant:"body2",color:"textSecondary",children:s("mcp.server.sortedBy",{sort:eG(ei)})})]}),(0,n.jsx)(a.default,{ref:eB,sx:{px:2,flex:1,overflow:"auto"},children:"none"===eg||u||g||0===eH.length?e0(eH):eq.map(e=>(0,n.jsx)(rq.A,{label:e.label,count:e.items.length,expanded:!ej.has(e.key),onToggle:()=>(e=>{ey(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])})(e.key),showFolderIcon:"folder"===eg,children:e0(e.items)},e.key))}),(0,n.jsxs)(rR.A,{anchorEl:ef,open:!!ef,onClose:()=>ev(null),anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:[(0,n.jsxs)(e4.A,{selected:"none"===eg,onClick:()=>eV("none"),children:[(0,n.jsx)(tQ.A,{children:(0,n.jsx)(rJ.A,{fontSize:"small"})}),(0,n.jsx)(t0.A,{primary:s("mcp.server.group.none")})]}),(0,n.jsxs)(e4.A,{selected:"folder"===eg,onClick:()=>eV("folder"),children:[(0,n.jsx)(tQ.A,{children:(0,n.jsx)(r$.A,{fontSize:"small"})}),(0,n.jsx)(t0.A,{primary:s("mcp.server.group.folder")})]}),(0,n.jsxs)(e4.A,{selected:"sort"===eg,onClick:()=>eV("sort"),children:[(0,n.jsx)(tQ.A,{children:(0,n.jsx)(rL.A,{fontSize:"small"})}),(0,n.jsx)(t0.A,{primary:s("mcp.server.group.sort")})]})]}),(0,n.jsxs)(rR.A,{anchorEl:em,open:!!em,onClose:eZ,anchorOrigin:{vertical:"bottom",horizontal:"right"},transformOrigin:{vertical:"top",horizontal:"right"},children:[(0,n.jsxs)(e4.A,{onClick:()=>eQ("name-asc"),children:[(0,n.jsx)(tQ.A,{children:(0,n.jsx)(r_.A,{fontSize:"small"})}),(0,n.jsx)(t0.A,{primary:eG("name-asc")})]}),(0,n.jsxs)(e4.A,{onClick:()=>eQ("name-desc"),children:[(0,n.jsx)(tQ.A,{children:(0,n.jsx)(r_.A,{fontSize:"small",sx:{transform:"scaleX(-1)"}})}),(0,n.jsx)(t0.A,{primary:eG("name-desc")})]}),(0,n.jsx)(rl.A,{}),(0,n.jsxs)(e4.A,{onClick:()=>eQ("status-connected"),children:[(0,n.jsx)(tQ.A,{children:(0,n.jsx)(rD.A,{fontSize:"small"})}),(0,n.jsx)(t0.A,{primary:eG("status-connected")})]}),(0,n.jsxs)(e4.A,{onClick:()=>eQ("status-disconnected"),children:[(0,n.jsx)(tQ.A,{children:(0,n.jsx)(ez.A,{fontSize:"small"})}),(0,n.jsx)(t0.A,{primary:eG("status-disconnected")})]}),(0,n.jsx)(rl.A,{}),(0,n.jsxs)(e4.A,{onClick:()=>eQ("transport"),children:[(0,n.jsx)(tQ.A,{children:(0,n.jsx)(t3.A,{fontSize:"small"})}),(0,n.jsx)(t0.A,{primary:eG("transport")})]})]}),(0,n.jsxs)(tV.A,{open:eP.open,onClose:()=>eT({open:!1,action:null}),children:[(0,n.jsx)(tK.A,{children:"enable"===eP.action?s("mcp.server.enableTitle"):s("mcp.server.disableTitle")}),(0,n.jsxs)(tX.A,{children:[(0,n.jsx)(rN.A,{children:"enable"===eP.action?o("mcp.server.confirmEnable",ek.size):o("mcp.server.confirmDisable",ek.size)}),(0,n.jsx)(a.default,{sx:{mt:2},children:Array.from(ek).map(e=>(0,n.jsxs)(c.A,{variant:"body2",sx:{ml:2},children:["• ",e]},e))})]}),(0,n.jsxs)(t1.A,{children:[(0,n.jsx)(b.A,{onClick:()=>eT({open:!1,action:null}),children:s("mcp.server.cancel")}),(0,n.jsx)(b.A,{onClick:"enable"===eP.action?eK:eX,variant:"contained",color:"enable"===eP.action?"success":"error",children:"enable"===eP.action?s("mcp.server.enable"):s("mcp.server.disable")})]})]}),(0,n.jsxs)(tV.A,{open:R,onClose:eU,maxWidth:"md",fullWidth:!0,children:[(0,n.jsx)(tK.A,{children:s("mcp.server.importTitle",{format:(0,rI.Kt)(H).label})}),(0,n.jsxs)(tX.A,{children:[(0,n.jsx)(rN.A,{sx:{mb:2},children:s("mcp.server.importHelp",{format:(0,rI.Kt)(H).label,example:'{ "mcpServers": { ... } }'})}),(0,n.jsx)(v.A,{multiline:!0,minRows:10,maxRows:20,fullWidth:!0,value:F,onChange:e=>{O(e.target.value),W&&_(null)},placeholder:'{\n "mcpServers": {\n "my-server": {\n "command": "npx",\n "args": ["-y", "my-mcp-server"],\n "env": { "API_KEY": "..." }\n }\n }\n}',variant:"outlined",spellCheck:!1,InputProps:{sx:{fontFamily:"monospace",fontSize:"0.85rem"}},disabled:D}),W&&(0,n.jsx)(rN.A,{component:"pre",sx:{mt:2,color:"error.main",whiteSpace:"pre-wrap",fontSize:"0.85rem"},children:W})]}),(0,n.jsxs)(t1.A,{children:[(0,n.jsx)(b.A,{onClick:eU,disabled:D,children:s("mcp.server.cancel")}),(0,n.jsx)(b.A,{onClick:eD,variant:"contained",color:"primary",disabled:D||""===F.trim(),startIcon:(0,n.jsx)(rF,{}),children:D?s("mcp.server.importing"):s("mcp.server.import")})]})]}),(0,n.jsx)(ri,{isOpen:P,onAdd:eO,onClose:()=>{T(!1),I(null),null==t||t(!1)},initialConfig:M,onUpdate:eW,onRestartAfterUpdate:eR,onSaveAndAuthenticate:e_}),(0,n.jsx)(rw,{server:el?{name:el.name,status:el.status,env:el.env}:null,onClose:()=>{V(null),X(void 0),q&&A(q)},onSaveEnv:z,onServerRestart:ea,toolPrefill:K}),(0,n.jsx)(rP,{open:Y,onClose:()=>Z(!1),onOpenToolTester:(e,t)=>{Z(!1),X({toolName:t,arguments:{}}),V(e)}}),(0,n.jsx)(rQ.A,{show:eL,onClick:eJ})]})},r2=()=>(0,n.jsx)(a.default,{sx:{height:"100%",display:"flex",flexDirection:"column"},children:(0,n.jsx)(r1,{})}),r5=(0,i.h)("app/mcp/page");function r4(){return r5.debug("Rendering MCPPage"),(0,n.jsx)(a.default,{sx:{height:"100%",display:"flex",flexDirection:"column"},children:(0,n.jsx)(r2,{})})}},94885:(e,t,r)=>{"use strict";r.d(t,{A:()=>l});var n=r(15485),a=r(95155);let l=(0,n.A)((0,a.jsx)("path",{d:"m11.99 18.54-7.37-5.73L3 14.07l9 7 9-7-1.63-1.27zM12 16l7.36-5.73L21 9l-9-7-9 7 1.63 1.27z"}),"Layers")}},e=>{e.O(0,[1137,7926,4754,7758,3392,2678,981,1983,1871,5954,9562,3816,3272,155,4123,8598,9611,3303,2005,6547,4122,8620,2141,4483,5148,1161,4814,3969,3731,5417,8441,1255,7358],()=>e(e.s=1717)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9034],{27879:(e,r,s)=>{"use strict";s.r(r),s.d(r,{default:()=>h});var t=s(95155),n=s(94049),o=s(25635),l=s(91871),i=s(12115),a=s(73288),c=s(36773);let d=(0,a.h)("app/models/error");function h(e){let{error:r,reset:s}=e,{t:a}=(0,c.s9)();return(0,i.useEffect)(()=>{d.error("Error in models page:",{error:r.message,digest:r.digest})},[r]),(0,t.jsxs)(n.default,{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",height:"100%",p:4,children:[(0,t.jsx)(o.A,{variant:"h6",color:"error",gutterBottom:!0,children:a("models.error.title")}),(0,t.jsx)(o.A,{color:"text.secondary",sx:{mb:2},children:r.message||a("models.error.description")}),(0,t.jsx)(n.default,{sx:{display:"flex",gap:2},children:(0,t.jsx)(l.A,{variant:"contained",onClick:s,children:a("common.tryAgain")})})]})}},44090:(e,r,s)=>{Promise.resolve().then(s.bind(s,27879))}},e=>{e.O(0,[4754,7758,2678,1871,7260,5148,8441,1255,7358],()=>e(e.s=44090)),_N_E=e.O()}]);