flujo-ai 3.33.0 → 3.34.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 (298) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +240 -240
  3. package/.next/app-path-routes-manifest.json +14 -14
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +21 -21
  6. package/.next/react-loadable-manifest.json +3 -3
  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 +2 -2
  10. package/.next/server/app/api/approvals/[id]/route.js.nft.json +1 -1
  11. package/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/approvals/route.js.nft.json +1 -1
  13. package/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/backup/route.js.nft.json +1 -1
  15. package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/bugs/enhance/route.js.nft.json +1 -1
  18. package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/encryption/secure/route.js +1 -1
  21. package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
  22. package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
  25. package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js.nft.json +1 -1
  27. package/.next/server/app/api/flow/[id]/versions/[versionId]/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/flow/[id]/versions/route.js.nft.json +1 -1
  29. package/.next/server/app/api/flow/[id]/versions/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/flow/compile/route.js +1 -1
  31. package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
  32. package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/flow/generate/route.js +1 -1
  34. package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
  35. package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/flow/generator/route.js +25 -4
  37. package/.next/server/app/api/flow/generator/route.js.nft.json +1 -1
  38. package/.next/server/app/api/flow/generator/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/flow/improve/route.js +1 -1
  40. package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
  41. package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
  43. package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
  45. package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/flow/repair/route.js +1 -1
  47. package/.next/server/app/api/flow/repair/route.js.nft.json +1 -1
  48. package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/flow/route.js.nft.json +1 -1
  50. package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/init/route.js +1 -1
  53. package/.next/server/app/api/init/route.js.nft.json +1 -1
  54. package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/mcp/app-sandbox/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
  60. package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/mcp/oauth-capability/route.js.nft.json +1 -1
  62. package/.next/server/app/api/mcp/oauth-capability/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
  64. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
  66. package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
  68. package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
  70. package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
  72. package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
  74. package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
  76. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
  78. package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
  80. package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
  82. package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
  84. package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
  86. package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
  89. package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
  91. package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/model/route.js.nft.json +1 -1
  93. package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/model/test/route.js.nft.json +1 -1
  95. package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
  99. package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/packages/build/route.js +1 -1
  101. package/.next/server/app/api/packages/build/route.js.nft.json +1 -1
  102. package/.next/server/app/api/packages/build/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/packages/derive-secrets/route.js.nft.json +1 -1
  104. package/.next/server/app/api/packages/derive-secrets/route_client-reference-manifest.js +1 -1
  105. package/.next/server/app/api/packages/install/route.js.nft.json +1 -1
  106. package/.next/server/app/api/packages/install/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/packages/install/status/route.js.nft.json +1 -1
  108. package/.next/server/app/api/packages/install/status/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/packages/installed/route.js.nft.json +1 -1
  110. package/.next/server/app/api/packages/installed/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/packages/resolve/route.js +1 -1
  112. package/.next/server/app/api/packages/resolve/route.js.nft.json +1 -1
  113. package/.next/server/app/api/packages/resolve/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/packages/scan-targets/route.js.nft.json +1 -1
  115. package/.next/server/app/api/packages/scan-targets/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/api/packages/search/route_client-reference-manifest.js +1 -1
  117. package/.next/server/app/api/packages/uninstall/route.js.nft.json +1 -1
  118. package/.next/server/app/api/packages/uninstall/route_client-reference-manifest.js +1 -1
  119. package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
  120. package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
  122. package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
  123. package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
  124. package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
  126. package/.next/server/app/api/planned-executions/reconcile/route.js +1 -1
  127. package/.next/server/app/api/planned-executions/reconcile/route.js.nft.json +1 -1
  128. package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
  129. package/.next/server/app/api/planned-executions/route.js +1 -1
  130. package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
  131. package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
  132. package/.next/server/app/api/registry/auth/resend/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/registry/auth/reset/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/registry/auth/route_client-reference-manifest.js +1 -1
  135. package/.next/server/app/api/registry/feedback/route.js +1 -1
  136. package/.next/server/app/api/registry/feedback/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/registry/oauth/callback/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/registry/oauth/initiate/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/registry/packages/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/registry/publish/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/api/registry/settings/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/restore/route.js.nft.json +1 -1
  143. package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
  144. package/.next/server/app/api/runs/active/route.js.nft.json +1 -1
  145. package/.next/server/app/api/runs/active/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
  147. package/.next/server/app/api/telemetry/daily-active/route.js +1 -1
  148. package/.next/server/app/api/telemetry/daily-active/route_client-reference-manifest.js +1 -1
  149. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  150. package/.next/server/app/api/waves/route.js +1 -1
  151. package/.next/server/app/api/waves/route.js.nft.json +1 -1
  152. package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
  153. package/.next/server/app/api/webhooks/[id]/route.js +1 -1
  154. package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
  155. package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/chat/page.js +1 -1
  157. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  158. package/.next/server/app/chat.html +1 -1
  159. package/.next/server/app/chat.rsc +3 -3
  160. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  161. package/.next/server/app/docs.html +1 -1
  162. package/.next/server/app/docs.rsc +2 -2
  163. package/.next/server/app/executions/page.js +2 -2
  164. package/.next/server/app/executions/page.js.nft.json +1 -1
  165. package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
  166. package/.next/server/app/executions.html +1 -1
  167. package/.next/server/app/executions.rsc +3 -3
  168. package/.next/server/app/flows/page.js +3 -3
  169. package/.next/server/app/flows/page.js.nft.json +1 -1
  170. package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  171. package/.next/server/app/flows.html +1 -1
  172. package/.next/server/app/flows.rsc +3 -3
  173. package/.next/server/app/index.html +1 -1
  174. package/.next/server/app/index.rsc +3 -3
  175. package/.next/server/app/mcp/page.js +1 -1
  176. package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
  177. package/.next/server/app/mcp-flows/route.js +1 -1
  178. package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
  179. package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
  181. package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
  182. package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
  183. package/.next/server/app/mcp.html +1 -1
  184. package/.next/server/app/mcp.rsc +3 -3
  185. package/.next/server/app/models/page.js +1 -1
  186. package/.next/server/app/models/page.js.nft.json +1 -1
  187. package/.next/server/app/models/page_client-reference-manifest.js +1 -1
  188. package/.next/server/app/packages/page.js +1 -1
  189. package/.next/server/app/packages/page_client-reference-manifest.js +1 -1
  190. package/.next/server/app/packages.html +1 -1
  191. package/.next/server/app/packages.rsc +3 -3
  192. package/.next/server/app/page.js +4 -2
  193. package/.next/server/app/page_client-reference-manifest.js +1 -1
  194. package/.next/server/app/settings/page.js +1 -1
  195. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  196. package/.next/server/app/settings.html +1 -1
  197. package/.next/server/app/settings.rsc +3 -3
  198. package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
  199. package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
  200. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
  201. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
  202. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
  203. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
  205. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
  206. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
  207. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
  208. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
  209. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
  211. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
  212. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js.nft.json +1 -1
  213. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route_client-reference-manifest.js +1 -1
  215. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
  216. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
  218. package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  219. package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
  220. package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
  221. package/.next/server/app/v1/chat/events/route.js.nft.json +1 -1
  222. package/.next/server/app/v1/chat/events/route_client-reference-manifest.js +1 -1
  223. package/.next/server/app/v1/models/route.js.nft.json +1 -1
  224. package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
  225. package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
  226. package/.next/server/app/waves.html +1 -1
  227. package/.next/server/app/waves.rsc +2 -2
  228. package/.next/server/app-paths-manifest.json +14 -14
  229. package/.next/server/chunks/1114.js +1 -1
  230. package/.next/server/chunks/1226.js +1 -1
  231. package/.next/server/chunks/1227.js +1 -1
  232. package/.next/server/chunks/166.js +5 -5
  233. package/.next/server/chunks/1664.js +1 -1
  234. package/.next/server/chunks/227.js +1 -1
  235. package/.next/server/chunks/2273.js +1 -1
  236. package/.next/server/chunks/3717.js +1 -0
  237. package/.next/server/chunks/4466.js +1 -1
  238. package/.next/server/chunks/4551.js +1 -1
  239. package/.next/server/chunks/4771.js +1 -1
  240. package/.next/server/chunks/519.js +2 -0
  241. package/.next/server/chunks/5285.js +1 -0
  242. package/.next/server/chunks/5309.js +78 -0
  243. package/.next/server/chunks/544.js +4 -4
  244. package/.next/server/chunks/5463.js +1 -1
  245. package/.next/server/chunks/5544.js +4 -4
  246. package/.next/server/chunks/{5708.js → 6041.js} +1 -1
  247. package/.next/server/chunks/6747.js +42 -13
  248. package/.next/server/chunks/7628.js +1 -1
  249. package/.next/server/chunks/7630.js +11 -0
  250. package/.next/server/chunks/8284.js +42 -0
  251. package/.next/server/chunks/8645.js +1 -1
  252. package/.next/server/chunks/9235.js +25 -4
  253. package/.next/server/instrumentation.js.nft.json +1 -1
  254. package/.next/server/middleware-build-manifest.js +1 -1
  255. package/.next/server/middleware-manifest.json +1 -1
  256. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  257. package/.next/server/pages/404.html +1 -1
  258. package/.next/server/pages/500.html +1 -1
  259. package/.next/server/server-reference-manifest.js +1 -1
  260. package/.next/server/server-reference-manifest.json +1 -1
  261. package/.next/static/chunks/2005.4eea65c00d9a29cd.js +1 -0
  262. package/.next/static/chunks/3429-34fb1a84aed96703.js +1 -0
  263. package/.next/static/chunks/{2005-f9d38c39f10c321f.js → 4386-e9621d3c94969a68.js} +1 -1
  264. package/.next/static/chunks/4919-6c8a48e3cc642349.js +1 -0
  265. package/.next/static/chunks/7561-2b366ddcbc3cc0ec.js +1 -0
  266. package/.next/static/chunks/8404-5aa8ea49197b98b8.js +1 -0
  267. package/.next/static/chunks/{8650-41c2afc0eba37fb8.js → 8650-5294c6ed1173b014.js} +1 -1
  268. package/.next/static/chunks/app/chat/{page-1d100e5d974c919e.js → page-bc7807593b8b7394.js} +1 -1
  269. package/.next/static/chunks/app/executions/page-8296fd69c439ccee.js +1 -0
  270. package/.next/static/chunks/app/flows/page-87fb466e491fc068.js +1 -0
  271. package/.next/static/chunks/app/{layout-38b88f3b057f4852.js → layout-abed1f211e03152f.js} +1 -1
  272. package/.next/static/chunks/app/mcp/page-1648e6fde0c41461.js +1 -0
  273. package/.next/static/chunks/app/models/{page-808c0568ebc5e2c7.js → page-a5e2437356b06db8.js} +1 -1
  274. package/.next/static/chunks/app/packages/page-fba5696f33d9cdfb.js +1 -0
  275. package/.next/static/chunks/app/page-2f9da78a4891731a.js +1 -0
  276. package/.next/static/chunks/app/settings/page-2fc3a70bfd25c48b.js +1 -0
  277. package/.next/static/chunks/{webpack-dccb4f149ebdedcc.js → webpack-d5d737ff6a86674f.js} +1 -1
  278. package/.next/trace +10 -10
  279. package/README.md +16 -15
  280. package/package.json +5 -5
  281. package/.next/server/chunks/2985.js +0 -1
  282. package/.next/server/chunks/4366.js +0 -2
  283. package/.next/server/chunks/5040.js +0 -48
  284. package/.next/server/chunks/8187.js +0 -78
  285. package/.next/server/chunks/8851.js +0 -1
  286. package/.next/static/chunks/289-98f50bfcf833d661.js +0 -1
  287. package/.next/static/chunks/3089.df88f3b16898aad7.js +0 -1
  288. package/.next/static/chunks/8041-05830e887c133085.js +0 -1
  289. package/.next/static/chunks/8404-bfa9203e4296f3fb.js +0 -1
  290. package/.next/static/chunks/95-b9691d3cb15556dc.js +0 -1
  291. package/.next/static/chunks/app/executions/page-10ec7d58c7fbdd6f.js +0 -1
  292. package/.next/static/chunks/app/flows/page-9a78a2915268b2f8.js +0 -1
  293. package/.next/static/chunks/app/mcp/page-56b43b2f8752e9a5.js +0 -1
  294. package/.next/static/chunks/app/packages/page-af6ec89522915206.js +0 -1
  295. package/.next/static/chunks/app/page-30bf4293efa47a47.js +0 -1
  296. package/.next/static/chunks/app/settings/page-59ae1b658838f0bc.js +0 -1
  297. /package/.next/static/{jfb1GsjSGMjBmwfa3kM26 → Zz_Vh59XdtLIPcf-PxCpo}/_buildManifest.js +0 -0
  298. /package/.next/static/{jfb1GsjSGMjBmwfa3kM26 → Zz_Vh59XdtLIPcf-PxCpo}/_ssgManifest.js +0 -0
@@ -1,4 +1,4 @@
1
- (()=>{var a={};a.id=313,a.ids=[313],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},1708:a=>{"use strict";a.exports=require("node:process")},2173:(a,b,c)=>{"use strict";c.d(b,{A:()=>r});var d=c(21124),e=c(38301),f=c(81637),g=c(79515),h=c(53773),i=c(37674),j=c(43312),k=c(44079),l=c(68730),m=c(47902),n=c(91034),o=c(30717),p=c(46410),q=c(32720);let r=({roots:a,onChange:b})=>{let c=Array.isArray(a)?a:[],[r,s]=(0,e.useState)(null),t=(a,d)=>{b(c.map((b,c)=>c===a?d:b))};return(0,d.jsxs)(f.default,{children:[(0,d.jsxs)(f.default,{sx:{display:"flex",alignItems:"center",mb:.5},children:[(0,d.jsx)(o.A,{fontSize:"small",sx:{mr:1,color:"text.secondary"}}),(0,d.jsx)(g.default,{variant:"subtitle1",children:"Workspace folders"})]}),(0,d.jsxs)(g.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:1.5},children:["Limit which folders this server may work in. Advisory only — the server is told these paths via MCP roots; it is not a hard sandbox. Leave empty to default to the server's own root dir. Supports ",(0,d.jsx)("code",{children:"${global:VAR}"}),"."]}),(0,d.jsx)(h.A,{spacing:1,children:c.map((a,e)=>(0,d.jsxs)(f.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,d.jsx)(i.A,{size:"small",fullWidth:!0,placeholder:"/path/to/folder or file:///path",value:a,onChange:a=>t(e,a.target.value)}),(0,d.jsx)(j.A,{title:"Browse folders (on the FLUJO machine)",children:(0,d.jsx)(k.A,{size:"small",onClick:()=>s(e),"aria-label":"browse for folder",children:(0,d.jsx)(p.A,{fontSize:"small"})})}),(0,d.jsx)(j.A,{title:"Remove",children:(0,d.jsx)(k.A,{size:"small",onClick:()=>b(c.filter((a,b)=>b!==e)),"aria-label":"remove workspace folder",children:(0,d.jsx)(n.A,{fontSize:"small"})})})]},e))}),(0,d.jsx)(l.A,{size:"small",startIcon:(0,d.jsx)(m.A,{}),onClick:()=>b([...c,""]),sx:{mt:1},children:"Add folder"}),(0,d.jsx)(q.A,{open:null!==r,title:"Choose a workspace folder",initialPath:null!==r&&c[r]||void 0,onClose:()=>s(null),onSelect:a=>{null!==r&&t(r,a)}})]})}},2560:(a,b,c)=>{"use strict";c.d(b,{Aq:()=>e,Xk:()=>g,vi:()=>f});var d=c(38301);function e(a,b){return b}function f(a,b){}function g(a,b){let[c,e]=(0,d.useState)(()=>b);return[c,(0,d.useCallback)(b=>{e(c=>{let d="function"==typeof b?b(c):b;return f(a,d),d})},[a])]}},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},7329:(a,b,c)=>{"use strict";c.d(b,{Az:()=>e,FM:()=>d,Je:()=>g,po:()=>f,yF:()=>h});let d="folder";function e(a,b){let c=[],d=new Map;for(let e of a){let{key:a,label:f}=b(e),g=d.get(a);g||(g={key:a,label:f,items:[]},d.set(a,g),c.push(g)),g.items.push(e)}return c}function f(a){let b=(a??"").trim().charAt(0).toUpperCase();return b>="A"&&b<="Z"?{key:`letter:${b}`,label:b}:{key:"letter:#",label:"#"}}function g(a,b,c="Ungrouped"){let d=new Map,e=[];for(let c of a){let a=b(c)?.trim();if(a){let b=d.get(a);b?b.push(c):d.set(a,[c])}else e.push(c)}let f=Array.from(d.keys()).sort((a,b)=>a.localeCompare(b)).map(a=>({key:`folder:${a}`,label:a,items:d.get(a)}));return e.length>0&&f.push({key:"folder:__ungrouped__",label:c,items:e}),f}function h(a,b){let c=new Set;for(let d of a){let a=b(d)?.trim();a&&c.add(a)}return Array.from(c).sort((a,b)=>a.localeCompare(b))}},9863:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.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")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11402:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.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")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},21820:a=>{"use strict";a.exports=require("os")},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},27409:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown")},28354:a=>{"use strict";a.exports=require("util")},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},32939:(a,b,c)=>{Promise.resolve().then(c.bind(c,35352))},33253:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M5 20h14v-2H5zM19 9h-4V3H9v6H5l7 7z"}),"Download")},33873:a=>{"use strict";a.exports=require("path")},35352:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>cR});var d=c(21124),e=c(81637),f=c(38301),g=c.n(f),h=c(35070),i=c(61615),j=c(19815),k=c(79515),l=c(54573),m=c(82666);let n=(0,j.h)("frontend/components/mcp/MCPServerManager/ServerList"),o=({servers:a,isLoading:b,loadError:c,onServerSelect:f,onServerToggle:g,onServerRetry:j,onServerDelete:o,onServerEdit:p,selectionMode:q=!1,selectedServers:r=new Set,onServerSelectionChange:s,updates:t,onServerUpdated:u,folders:v=[],onServerSetFolder:w,onServerToggleFavorite:x})=>(n.debug("Rendering ServerList",{serverCount:a.length,isLoading:b,hasError:!!c}),b)?(n.debug("Servers are loading"),(0,d.jsxs)(e.default,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",p:4},children:[(0,d.jsx)(i.default,{size:"large",color:"primary"}),(0,d.jsx)(k.default,{sx:{mt:2,color:"text.secondary"},children:"Loading servers..."})]})):c?(n.warn("Error loading servers:",c),(0,d.jsx)(l.A,{sx:{p:3,bgcolor:"error.light",color:"error.contrastText",borderRadius:1},children:(0,d.jsx)(k.default,{color:"error",children:c})})):0===a.length?(0,d.jsx)(l.A,{sx:{p:3,textAlign:"center",borderRadius:1},children:(0,d.jsx)(k.default,{color:"text.secondary",children:'No servers configured. Click "Add Server" to get started.'})}):(0,d.jsx)(m.Ay,{container:!0,spacing:2,children:a.map(a=>{let b="streamable"===a.transport&&void 0!==a.oauthTokens;return(0,d.jsx)(m.Ay,{item:!0,xs:12,md:6,lg:4,children:(0,d.jsx)(h.A,{name:a.name,status:a.status,path:a.rootPath,enabled:!a.disabled,transport:a.transport,onToggle:b=>g(a.name,b),onRetry:()=>j(a.name),onDelete:()=>o(a.name),onClick:()=>f(a.name),onEdit:()=>p(a),error:a.error,stderrOutput:a.stderrOutput,exposeAsMcpServer:a.exposeAsMcpServer,enableMcpApps:a.enableMcpApps,selectionMode:q,selected:r.has(a.name),onSelect:s&&!a.builtIn?b=>s(a.name,b):void 0,hasOAuthTokens:b,updateInfo:a.rootPath?t?.[a.rootPath]:void 0,installCommand:a._installCommand,buildCommand:a._buildCommand,onUpdated:u?()=>u(a.name,a.rootPath):void 0,folder:a.folder,folders:v,onSetFolder:w&&!a.builtIn?b=>w(a.name,b):void 0,favorite:a.favorite,onToggleFavorite:x&&!a.builtIn?()=>x(a.name,!a.favorite):void 0,builtIn:a.builtIn,serverConfig:a})},a.name)})});var p=c(88745),q=c(30717),r=c(53773),s=c(37674),t=c(68730),u=c(67101),v=c(44079),w=c(48748);let x=({githubUrl:a,setGithubUrl:b,savePath:c,setSavePath:g,repoInfo:h,isValidating:i,parseCompleted:j,onValidate:l})=>{let[m,n]=(0,f.useState)(""),{getThemeColor:o}=(0,w.Ic)();return(0,f.useEffect)(()=>{(async()=>{try{let a=await fetch("/api/cwd"),b=await a.json();b.success&&b.mcpServersDir?n(b.mcpServersDir):console.error("Failed to get mcp-servers directory path:",b.error)}catch(a){console.error("Error fetching current working directory:",a)}})()},[]),(0,d.jsxs)(r.A,{spacing:3,children:[(0,d.jsxs)(e.default,{children:[(0,d.jsx)(k.default,{variant:"subtitle2",gutterBottom:!0,children:"GitHub Repository URL"}),(0,d.jsx)(s.A,{fullWidth:!0,value:a,onChange:a=>b(a.target.value),placeholder:"GitHub repository URL",helperText:"Paste a GitHub repository URL",variant:"outlined",size:"small"}),(0,d.jsx)(e.default,{sx:{display:"flex",justifyContent:"flex-end",mt:1},children:(0,d.jsx)(t.A,{variant:"contained",color:j?"success":"primary",onClick:l,disabled:i,children:i?"Validating...":"1) Parse"})})]}),h?.valid&&(0,d.jsxs)(e.default,{children:[(0,d.jsx)(k.default,{variant:"subtitle2",gutterBottom:!0,children:"Where to save the repository?"}),(0,d.jsx)(s.A,{fullWidth:!0,value:c,onChange:a=>g(a.target.value),variant:"outlined",size:"small",InputProps:{endAdornment:(0,d.jsx)(u.A,{position:"end",children:(0,d.jsx)(v.A,{onClick:async()=>{try{let a=await window.showDirectoryPicker(),b=(m?`${m}/${a.name}`:`${a.name}`).replace(/\\/g,"/");g(b)}catch(a){console.error("Failed to select folder:",a)}},edge:"end",children:(0,d.jsx)(q.A,{})})})}})]})]})},y=({showCloneButton:a,isCloning:b,cloneCompleted:c,repoInfo:f,repoExists:g,onClone:h})=>a?(0,d.jsxs)(e.default,{sx:{display:"flex",justifyContent:"flex-end",gap:2},children:[g&&(0,d.jsx)(t.A,{variant:"outlined",color:"warning",onClick:()=>{h(!0)},disabled:b||!f,children:b?"Processing...":"Re-clone (Force)"}),(0,d.jsx)(t.A,{variant:"contained",color:c?"success":"primary",onClick:()=>{h(!1)},disabled:b||!f,children:b?"Processing...":g?"Use Existing":"2) Clone Repository"})]}):null,z=async a=>{try{let b,c,d=new URL(a);if("github.com"!==d.hostname)throw Error("Not a GitHub URL");let e=a.match(/^https:\/\/github\.com\/([^\/]+)\/([^\/]+)\/(?:blob|tree)\/.*$/);if(e)b=e[1],c=e[2];else{let a=d.pathname.split("/").filter(Boolean);if(a.length>=2)b=a[0],c=a[1];else throw Error("Invalid repository path")}let f=await fetch(`https://api.github.com/repos/${b}/${c}`);if(!f.ok)throw Error("Repository not found or not accessible");await f.json();let g=await fetch(`https://api.github.com/repos/${b}/${c}/contents`);if(!g.ok)throw Error("Could not fetch repository contents");let h=await g.json();return{repoInfo:{owner:b,repo:c,valid:!0,contents:h},message:{type:"success",text:`Valid repository: ${b}/${c}`},showCloneButton:!0}}catch(a){return console.error("GitHub parsing error:",a),{repoInfo:null,message:{type:"error",text:a.message||"Invalid GitHub URL. Please enter a valid repository URL."},showCloneButton:!1}}},A=async(a,b,c,d=!1)=>{try{let b=a,e=b.match(/^(https:\/\/github\.com\/[^\/]+\/[^\/]+)\/(?:blob|tree)\/.*$/);e&&(b=e[1]);let f=b.endsWith(".git")?b:`${b.replace(/\/$/,"")}.git`,g=c.replace(/\\/g,"/"),h=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"clone",repoUrl:f,savePath:g,branch:void 0,forceClone:d})}),i=await h.json();if(!h.ok&&!("exists"in i))throw Error(i.error||"Failed to clone repository");let j=i.relativePath.replace(/\\/g,"/");return{success:!0,message:{type:"success",text:"Repository cloned successfully."},clonedRepoPath:j,envExample:i.envExample}}catch(b){console.error("Error cloning repository:",b);let a=b.message||"";if(a.includes("directory already exist")){let b=a.match(/directory already exist: (.+?)(,|\.|$)/);return{success:!0,message:{type:"warning",text:a},clonedRepoPath:(b?b[1]:c).replace(/\\/g,"/"),envExample:void 0}}return{success:!1,message:{type:"error",text:a||"Error cloning repository. Please try again or configure manually."},envExample:void 0}}},B=(0,j.h)("utils/mcp/processPathLikeArgument");function C(a,b=!0,c){console.log("parseServerConfig: Starting with text length:",a.length);try{let d,e,f;console.log("parseServerConfig: Unescaping markdown characters");let g=a.replace(/\\#/g,"#").replace(/\\\[/g,"[").replace(/\\\]/g,"]").replace(/\\`\\`\\`/g,"```").replace(/\\`/g,"`");console.log("parseServerConfig: Unescaped text length:",g.length),console.log("parseServerConfig: Setting up command patterns"),console.log("parseServerConfig: Extracting code blocks");let h=[...g.matchAll(/```(?:bash|sh|cmd|powershell|batch)?\s*([\s\S]*?)```/gm)].map(a=>a[1]);console.log("parseServerConfig: Found",h.length,"code blocks");let i=[];console.log("parseServerConfig: Looking for build/install commands in main text");let j=g.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);j&&(d=j[0].trim(),console.log("parseServerConfig: Found build command in main text:",d));let k=g.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);k&&(e=k[0].trim(),console.log("parseServerConfig: Found install command in main text:",e)),console.log("parseServerConfig: Checking code blocks for commands");for(let a=0;a<h.length;a++){let b=h[a];console.log(`parseServerConfig: Processing code block ${a+1}/${h.length}, length: ${b.length}`);let c=b.split("\n");console.log(`parseServerConfig: Code block has ${c.length} lines`);for(let a=0;a<c.length;a++){let b=c[a];if(console.log(`parseServerConfig: Processing line ${a+1}: "${b}"`),!d){let a=b.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]*$/);a&&(d=a[1].trim(),console.log(`parseServerConfig: Found build command in code block: ${d}`))}if(!e){let a=b.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]*$/);a&&(e=a[1].trim(),console.log(`parseServerConfig: Found install command in code block: ${e}`))}console.log(`parseServerConfig: Checking for run command in line: "${b}"`);let g=b.match(/(run\.bat|\.\/run\.bat|run\.sh|\.\/run\.sh|npm start|yarn start|pnpm start|python|node|vite)(?:\s+(.+))?/);if(g&&(console.log(`parseServerConfig: Found potential run command: ${g[0]}`),!f)&&(f=g[1].trim(),console.log(`parseServerConfig: Set extracted command to: ${f}`),g[2])){let a=g[2].trim().split(/\s+/);console.log(`parseServerConfig: Extracted args: ${a.join(", ")}`),i=a}}}console.log("parseServerConfig: Cleaning text for JSON parsing");let l=a.replace(/\/\/.*$/gm,""),m="",n="",o=!1,p="";console.log("parseServerConfig: Attempting to extract server config"),console.log("parseServerConfig: Trying to match mcpServers structure");let q=l.match(/"mcpServers"\s*:\s*{\s*"([^"]+)"\s*:\s*({[^}]+})/);if(q)[,m,n]=q,o=!0,p="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 a=l.match(/"([^"]+)"\s*:\s*({[^{]*"command"\s*:[^{]*"args"\s*:[^}]*})/);a?([,m,n]=a,o=!0,p="direct structure",console.log("parseServerConfig: Found direct server configuration for:",m)):(console.log("parseServerConfig: No valid configuration found in either structure"),n=l,console.log("parseServerConfig: Will attempt to extract any available information"),o=!1,p="extracted information")}console.log("parseServerConfig: Extracting command and args from config");let r=n.match(/"command"\s*:\s*"([^"]+)"/),s=r?r[1]:"";console.log("parseServerConfig: Extracted command:",s);let t=n.match(/"args"\s*:\s*\[([\s\S]*?)\]/),u=t?t[1].split(",").map(a=>a.trim()).map(a=>a.replace(/^"(.*)"$/,"$1")).filter(a=>a.length>0):[];console.log("parseServerConfig: Extracted args:",u),console.log("parseServerConfig: Extracting disabled and autoApprove settings");let v=n.match(/"disabled"\s*:\s*(true|false)/),w=!!v&&"true"===v[1];console.log("parseServerConfig: Extracted disabled:",w);let x=n.match(/"autoApprove"\s*:\s*\[([\s\S]*?)\]/),y=x?x[1].split(",").map(a=>a.trim()).map(a=>a.replace(/^"(.*)"$/,"$1")).filter(a=>a.length>0):[];console.log("parseServerConfig: Extracted autoApprove:",y);let z={};if(console.log("parseServerConfig: Parsing environment variables, parseEnvVars =",b),b){for(let a of(console.log("parseServerConfig: Extracting env vars with standard pattern"),g.matchAll(/^\ *(\w+)=["']?([^"'\r\n#]*)["']?(?:\s*#[^\r\n]*)?(?=\r?\n|$)/gm))){let b=a[1],c=a[2].trim();b&&void 0!==c&&(z[b]=c,console.log(`parseServerConfig: Found env var (standard): ${b}=${c}`))}for(let a of(console.log("parseServerConfig: Extracting env vars with README pattern"),g.matchAll(/(?:^|\n)[-*]?\s*`?(\w+)`?(?:\s*:|=)\s*[`"']?([^`"'\r\n#]*)(?:[`"'])?(?:\s*#[^\r\n]*)?(?=\r?\n|$)/gm))){let b=a[1],c=a[2].trim();b&&void 0!==c&&!z[b]&&(z[b]=c,console.log(`parseServerConfig: Found env var (README): ${b}=${c}`))}}console.log("parseServerConfig: Building final config object");let A=s||f||"";console.log("parseServerConfig: Final command:",A);let C=s&&u.length>0?u:f&&i.length>0?i:u,D=c||m,E=C.map(a=>(function(a,b){if(B.debug("processPathLikeArgument: Entering method",{arg:a,serverName:b}),!a||"string"!=typeof a||!a.includes("/")&&!a.includes("\\"))return a;if(/^@[^/\s]+\/[^/\s@]+(?:@[^/\s]+)?$/.test(a))return B.debug(`processPathLikeArgument: Detected scoped npm package, leaving unchanged: ${a}`),a;B.debug(`processPathLikeArgument: Processing argument: ${a}`);let c=a;for(let a of["/path/to","PATH_TO","path/to","PATH/TO","/PATH/TO","/PATH_TO","path_to"]){let b=c.indexOf(a);if(-1!==b){c=c.substring(b+a.length),B.debug(`processPathLikeArgument: Stripped path pattern "${a}": ${c}`);break}}if(b&&c.includes(b)){let a=RegExp(`(^|[\\/\\\\])${b}([\\/\\\\]|$)`);a.test(c)&&(c=c.replace(a,"$1$2"),B.debug(`processPathLikeArgument: Removed server name "${b}": ${c}`),c=c.replace(/\/\//g,"/"))}return(c.startsWith("/")||c.startsWith("\\"))&&(c=c.substring(1),B.debug(`processPathLikeArgument: Removed leading slash: ${c}`)),c||(c=".",B.debug('processPathLikeArgument: Empty result, replaced with "."')),B.debug(`processPathLikeArgument: Final result: ${c}`),c})(a,D));console.log("parseServerConfig: Final args (after path processing):",E);let F={name:m||"",command:A,args:E,env:z,disabled:w,autoApprove:y,_buildCommand:d,_installCommand:e};if(console.log("parseServerConfig: Config object created:",JSON.stringify(F,null,2)),console.log("parseServerConfig: Preparing return message"),o)return console.log(`parseServerConfig: Returning success - config found in ${p}`),{config:F,foundExplicitConfig:!0,message:{type:"success",text:`Configuration for "${m}" extracted successfully from ${p}.`}};{let a=[];if(s&&a.push("command"),u.length>0&&a.push("arguments"),Object.keys(z).length>0&&a.push("environment variables"),a.length>0)return console.log(`parseServerConfig: Returning warning - partial data extracted: ${a.join(", ")}`),{config:F,foundExplicitConfig:!1,message:{type:"warning",text:`No complete server configuration found, but extracted: ${a.join(", ")}.`}};return console.log("parseServerConfig: Returning error - no data found"),{config:F,foundExplicitConfig:!1,message:{type:"error",text:"No server configuration data found."}}}}catch(a){return console.error("parseServerConfig: Exception occurred:",a),{config:{},foundExplicitConfig:!1,message:{type:"error",text:"Failed to extract server configuration. Please check the content format."}}}}(0,j.h)("utils/mcp/parseServerConfigFromClipboard");let D=(0,j.h)("utils/mcp/configparse/utils");async function E(a,b,c=!1){try{D.debug(`Checking if file exists: ${a}/${b}`);let d=a.endsWith("/")||a.endsWith("\\")?`${a}${b}`:`${a}/${b}`;D.debug(`Constructed full path: ${d}`);let e=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"readFile",savePath:d})});if(!e.ok)return D.debug(`File does not exist: ${a}/${b}`),{exists:!1};let f=await e.json();if(!f.content&&c)return D.debug(`File exists but is empty: ${a}/${b}`),{exists:!0,content:""};return D.debug(`File exists: ${a}/${b}`),{exists:!0,content:c?f.content:void 0}}catch(c){return D.error(`Error checking if file exists: ${a}/${b}`,c),{exists:!1}}}async function F(a,b){try{let c=await E(a,b,!0);return c.exists&&c.content?c.content:null}catch(c){return D.error(`Error reading file: ${a}/${b}`,c),null}}let G=(0,j.h)("utils/mcp/configparse/typescript");async function H(a){let{repoPath:b,repoName:c}=a;G.debug(`Parsing TypeScript configuration for ${b}`);let d=await E(b,"package.json",!0);if(!d.exists||!d.content)return G.debug(`No package.json found in ${b}`),{detected:!1,language:"typescript",message:{type:"warning",text:"No package.json found in the repository."}};try{let a=JSON.parse(d.content);G.debug(`Successfully parsed package.json for ${b}`);let e=function(a){if(a.packageManager){if(a.packageManager.startsWith("yarn"))return"yarn install";else if(a.packageManager.startsWith("pnpm"))return"pnpm install"}return"npm install --include=dev"}(a),f=function(a){let b=a.scripts||{};return b.build?"npm run build":b.compile?"npm run compile":b.dist?"npm run dist":b.prepare&&b.prepare.includes("build")?"npm run prepare":""}(a),g="node",h=await I(a,b),i=await J(b),j=((await E(b,"tsconfig.json")).exists,"typescript");return{detected:!0,language:j,installCommand:e,buildCommand:f,runCommand:g,args:h,env:i,message:{type:"success",text:"TypeScript/JavaScript configuration detected successfully."},config:{name:c,transport:"stdio",command:g,args:h,env:i,_buildCommand:f,_installCommand:e}}}catch(a){return G.error(`Error parsing package.json for ${b}:`,a),{detected:!1,language:"typescript",message:{type:"error",text:`Error parsing package.json: ${a instanceof Error?a.message:"Unknown error"}`}}}}async function I(a,b){let c=a.scripts||{},d=a.main||"",e=[],f="dist";if(c.build){let a=c.build,b=a.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]+)["']?/);b&&b[1]&&(f=b[1],G.debug(`Extracted output directory from build script: ${f}`));let d=a.match(/(?:webpack|rollup|vite).*(?:--output\s+|--output=|--output\s*=\s*|-o\s+|-o=|-o\s*=\s*)["']?([^"'\s]+)["']?/);d&&d[1]&&(f=d[1],G.debug(`Extracted output directory from webpack/rollup/vite build script: ${f}`)),(a.includes("build/")||a.includes("build\\"))&&(f="build",G.debug("Found 'build' directory reference in build script"))}if(c.start){let a=c.start,b=a.match(/node\s+(?:--[^\s]+=?[^\s]*\s+)*([^\s]+)/);if(b&&b[1])return G.debug(`Extracted entry point from start script: ${b[1]}`),e.push(b[1]),e;let d=a.match(/\b((?:\.\/)?(?:[\w\-\.\/]+)\.js)\b/);if(d&&d[1])return G.debug(`Found .js file in start script: ${d[1]}`),e.push(d[1]),e;let g=a.match(/ts-node\s+([^\s]+)/);if(g&&g[1]){let a=g[1].replace(/\.ts$/,".js").replace(/^src\//,`${f}/`);return e.push(a),e}}if(d&&!d.endsWith(".ts"))return e.push(d),e;let g=`${f}/index.js`;if((await E(b,g)).exists)return e.push(g),e;for(let a of["dist/index.js","build/index.js","lib/index.js","out/index.js"])if((await E(b,a)).exists)return e.push(a),e;return e.push(`${f}/index.js`),e}async function J(a){let b=await F(a,".env.example");if(!b)return{};let c={};for(let a of b.split("\n")){let b=a.trim();if(b.startsWith("#")||""===b)continue;let d=b.match(/^([^=]+)=(.*)$/);if(d){let a=d[1].trim(),b=d[2].trim().replace(/^["'](.*)["']$/,"$1");c[a]=b}}return c}let K=(0,j.h)("utils/mcp/configparse/python");async function L(a){var b;let{repoPath:c,repoName:d}=a;K.debug(`Parsing Python configuration for ${c}`);let e=await E(c,"requirements.txt"),f=await E(c,"pyproject.toml",!0),g=await E(c,"setup.py",!0);if(!e.exists&&!f.exists&&!g.exists)return K.debug(`No Python project files found in ${c}`),{detected:!1,language:"python",message:{type:"warning",text:"No Python project files found in the repository."}};let h=(b=e.exists,f.exists?"uv sync":b?"uv venv && uv pip install -r requirements.txt":"uv venv && uv pip install -e ."),{runCommand:i,args:j}=await M(c,f.content,g.content),k=await N(c);return{detected:!0,language:"python",installCommand:h,buildCommand:"",runCommand:i,args:j,env:k,message:{type:"success",text:"Python configuration detected successfully."},config:{name:d,transport:"stdio",command:i,args:j,env:k,_buildCommand:"",_installCommand:h}}}async function M(a,b,c){let d=["run","python"];for(let b 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 E(a,b)).exists)return d.push(b),{runCommand:"uv",args:d};if(b)try{let a=b.match(/\[tool\.poetry\.scripts\]([\s\S]*?)(\[|$)/);if(a){let b=a[1].match(/(\w+)\s*=\s*["']([^"']+)['"]/);if(b){let a=b[2].split(":")[0];return d.push("-m"),d.push(a),{runCommand:"uv",args:d}}}let c=b.match(/\[project\][\s\S]*?name\s*=\s*["']([^"']+)['"]/);if(c){let a=c[1].replace(/-/g,"_");return d.push("-m"),d.push(a),{runCommand:"uv",args:d}}}catch(a){K.error("Error parsing pyproject.toml:",a)}if(c)try{let a=c.match(/name\s*=\s*["']([^"']+)['"]/);if(a){let b=a[1].replace(/-/g,"_");return d.push("-m"),d.push(b),{runCommand:"uv",args:d}}}catch(a){K.error("Error parsing setup.py:",a)}return 2===d.length&&d.push("main.py"),{runCommand:"uv",args:d}}async function N(a){let b=await F(a,".env.example");if(!b)return{};let c={};for(let a of b.split("\n")){let b=a.trim();if(b.startsWith("#")||""===b)continue;let d=b.match(/^([^=]+)=(.*)$/);if(d){let a=d[1].trim(),b=d[2].trim().replace(/^["'](.*)["']$/,"$1");c[a]=b}}return c}let O=(0,j.h)("utils/mcp/configparse/java");async function P(a){var b,c,d,e,f,g,h,i;let{repoPath:j,repoName:k}=a;O.debug(`Parsing Java configuration for ${j}`);let l=await E(j,"pom.xml",!0),m=await E(j,"build.gradle",!0),n=await E(j,"gradlew"),o=await E(j,"mvnw");if(!l.exists&&!m.exists)return O.debug(`No Java project files found in ${j}`),{detected:!1,language:"java",message:{type:"warning",text:"No Java project files found in the repository."}};let p=l.exists,q=m.exists,r=n.exists,s=o.exists,t=(b=p,c=q,d=s,e=r,b?d?"./mvnw install -DskipTests":"mvn install -DskipTests":c?e?"./gradlew dependencies":"gradle dependencies":""),u=(f=p,g=q,h=s,i=r,f?h?"./mvnw package -DskipTests":"mvn package -DskipTests":g?i?"./gradlew build":"gradle build":""),{runCommand:v,args:w}=await Q(j,p,q,l.content,m.content),x=await R(j);return{detected:!0,language:"java",installCommand:t,buildCommand:u,runCommand:v,args:w,env:x,message:{type:"success",text:"Java configuration detected successfully."},config:{name:k,transport:"stdio",command:v,args:w,env:x,_buildCommand:u,_installCommand:t}}}async function Q(a,b,c,d,e){let f="java",g=[];if(g.push("-jar"),b)try{if(d){let a=d.match(/<artifactId>([^<]+)<\/artifactId>/);if(a){let b=a[1],c=`target/${b}*.jar`;return g.push(c),{runCommand:f,args:g}}}return g.push("target/*.jar"),{runCommand:f,args:g}}catch(a){O.error("Error determining Maven JAR path:",a)}else if(c)try{let b="build/libs/*-all.jar";if((await E(a,b)).exists)return g.push(b),{runCommand:f,args:g};let c="build/libs/*-fat.jar";if((await E(a,c)).exists)return g.push(c),{runCommand:f,args:g};return g.push("build/libs/*.jar"),{runCommand:f,args:g}}catch(a){O.error("Error determining Gradle JAR path:",a)}if(1===g.length){for(let b of["target/*.jar","build/libs/*.jar","out/artifacts/*/*.jar"])if((await E(a,b)).exists)return g.push(b),{runCommand:f,args:g};g.push("target/*.jar")}return{runCommand:f,args:g}}async function R(a){let b=await F(a,".env.example");if(!b)return{};let c={};for(let a of b.split("\n")){let b=a.trim();if(b.startsWith("#")||""===b)continue;let d=b.match(/^([^=]+)=(.*)$/);if(d){let a=d[1].trim(),b=d[2].trim().replace(/^["'](.*)["']$/,"$1");c[a]=b}}return c}let S=(0,j.h)("utils/mcp/configparse/kotlin");async function T(a){var b,c,d,e,f,g;let{repoPath:h,repoName:i}=a;S.debug(`Parsing Kotlin configuration for ${h}`);let j=await E(h,"build.gradle.kts",!0),k=await E(h,"build.gradle",!0),l=await E(h,"gradlew"),m=await U(h);if(!j.exists&&!m){if(!k.exists)return S.debug(`No Kotlin project files found in ${h}`),{detected:!1,language:"kotlin",message:{type:"warning",text:"No Kotlin project files found in the repository."}};else if(!(k.content&&(k.content.includes("kotlin")||k.content.includes("org.jetbrains.kotlin"))))return S.debug(`No Kotlin project files found in ${h}`),{detected:!1,language:"kotlin",message:{type:"warning",text:"No Kotlin project files found in the repository."}}}let n=j.exists,o=k.exists,p=l.exists,q=(b=n,c=o,d=p,b||c?d?"./gradlew dependencies":"gradle dependencies":""),r=(e=n,f=o,g=p,e||f?g?"./gradlew build":"gradle build":""),{runCommand:s,args:t}=await V(h,n,o,j.content,k.content),u=await W(h);return{detected:!0,language:"kotlin",installCommand:q,buildCommand:r,runCommand:s,args:t,env:u,message:{type:"success",text:"Kotlin configuration detected successfully."},config:{name:i,transport:"stdio",command:s,args:t,env:u,_buildCommand:r,_installCommand:q}}}async function U(a){for(let b of["src/main/kotlin","src/test/kotlin","src"])if((await E(a,b)).exists)return!0;return!1}async function V(a,b,c,d,e){let f="java",g=[];g.push("-jar");try{let h="build/libs/*-all.jar";if((await E(a,h)).exists)return g.push(h),{runCommand:f,args:g};let i="build/libs/*-fat.jar";if((await E(a,i)).exists)return g.push(i),{runCommand:f,args:g};let j="build/libs/*-with-dependencies.jar";if((await E(a,j)).exists)return g.push(j),{runCommand:f,args:g};let k="";if(b&&d){let a=d.match(/mainClass\.set\(["']([^"']+)["']\)/);a&&(k=a[1])}else if(c&&e){let a=e.match(/mainClassName\s*=\s*['"]([^'"]+)['"]/);a&&(k=a[1])}if(k){let b=k.split("."),c=b[b.length-1].toLowerCase(),d=`build/libs/*${c}*.jar`;if((await E(a,d)).exists)return g.push(d),{runCommand:f,args:g}}return g.push("build/libs/*.jar"),{runCommand:f,args:g}}catch(a){S.error("Error determining Kotlin JAR path:",a)}if(1===g.length){for(let b of["build/libs/*.jar","out/artifacts/*/*.jar"])if((await E(a,b)).exists)return g.push(b),{runCommand:f,args:g};g.push("build/libs/*.jar")}return{runCommand:f,args:g}}async function W(a){let b=await F(a,".env.example");if(!b)return{};let c={};for(let a of b.split("\n")){let b=a.trim();if(b.startsWith("#")||""===b)continue;let d=b.match(/^([^=]+)=(.*)$/);if(d){let a=d[1].trim(),b=d[2].trim().replace(/^["'](.*)["']$/,"$1");c[a]=b}}return c}let X=(0,j.h)("utils/mcp/configparse/index");async function Y(a){let{repoPath:b,repoName:c}=a;X.debug(`Parsing repository configuration for ${b}`);let d=await Z(b,c);if(d.detected&&d.foundExplicitConfig&&d.runCommand)return X.debug(`Explicit configuration found in README for ${b}`),d;X.debug(`Trying TypeScript/JavaScript parser for ${b}`);let e=await H(a);if(e.detected)return X.debug(`TypeScript/JavaScript configuration detected for ${b}`),e;X.debug(`Trying Python parser for ${b}`);let f=await L(a);if(f.detected)return X.debug(`Python configuration detected for ${b}`),f;X.debug(`Trying Java parser for ${b}`);let g=await P(a);if(g.detected)return X.debug(`Java configuration detected for ${b}`),g;X.debug(`Trying Kotlin parser for ${b}`);let h=await T(a);return h.detected?(X.debug(`Kotlin configuration detected for ${b}`),h):d.detected?(X.debug(`Configuration extracted from README for ${b}`),d):(X.debug(`No configuration detected for ${b}, returning default configuration`),{detected:!1,language:"unknown",message:{type:"error",text:"Could not detect repository configuration. Please configure manually."},config:{name:c,transport:"stdio",command:"",args:[],env:{},_buildCommand:"",_installCommand:""}})}async function Z(a,b){try{let c=`${a}/README.md`,d=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"readFile",savePath:c})});if(!d.ok)return X.debug(`Failed to read README file from ${a}`),{detected:!1,language:"unknown",message:{type:"warning",text:"No README file found in the repository."}};let e=await d.json();if(!e.content)return X.debug(`README file is empty in ${a}`),{detected:!1,language:"unknown",message:{type:"warning",text:"README file is empty."}};let f=await _(e.content,{name:b,transport:"stdio",command:"",args:[],env:{},disabled:!1,autoApprove:[],rootPath:a,_buildCommand:"",_installCommand:""},b);if(f.config&&("stdio"===f.config.transport&&f.config.command||f.config._buildCommand||f.config._installCommand))return{detected:!0,language:"unknown",foundExplicitConfig:f.foundExplicitConfig,installCommand:f.config._installCommand||"",buildCommand:f.config._buildCommand||"",runCommand:"stdio"===f.config.transport&&f.config.command||"",args:"stdio"===f.config.transport&&f.config.args||[],env:f.config.env?Object.fromEntries(Object.entries(f.config.env).map(([a,b])=>[a,"string"==typeof b?b:b.value])):{},message:f.message||{type:"success",text:"Configuration extracted from README."},config:f.config};return{detected:!1,language:"unknown",message:{type:"warning",text:"No configuration found in README."}}}catch(b){return X.error(`Error parsing README from ${a}:`,b),{detected:!1,language:"unknown",message:{type:"error",text:`Error parsing README: ${b instanceof Error?b.message:"Unknown error"}`}}}}function $(a){return"stdio"===a.transport}let _=async(a,b,c)=>{try{let d=c||b.name,e=C(a,!1,d);if(!e.config||!(Object.keys(e.config).length>0))return{config:b,foundExplicitConfig:!1,message:{type:"warning",text:"No server configuration found in README."}};{let a={...b,...e.config,name:b.name,env:{...b.env,...e.config.env}},c="command"in e.config;return{config:$(a)||c?{...a,command:c&&e.config.command||"",transport:a.transport||"stdio"}:{...a,transport:a.transport||"websocket",websocketUrl:a.websocketUrl||""},foundExplicitConfig:e.foundExplicitConfig,message:{type:"success",text:"Server configuration extracted from README."}}}}catch(a){return console.error("Error parsing README:",a),{config:b,message:{type:"error",text:`Error parsing README: ${a.message||"Unknown error"}`}}}},aa=async(a,b)=>{try{let c=b||a.name,d=await window.navigator.clipboard.readText().then(a=>C(a,!1,c));if(!d.config||!(Object.keys(d.config).length>0))return{config:a,message:d.message||{type:"warning",text:"No valid configuration found in clipboard."}};{let b={...a,...d.config,name:a.name,env:{...a.env,...d.config.env}},c="command"in d.config;return{config:$(b)||c?{...b,command:c&&d.config.command||"",transport:b.transport||"stdio"}:{...b,transport:b.transport||"websocket",websocketUrl:b.websocketUrl||""},message:d.message||{type:"success",text:"Configuration parsed from clipboard."}}}}catch(b){return console.error("Error parsing clipboard:",b),{config:a,message:{type:"error",text:`Error parsing clipboard: ${b.message||"Unknown error"}`}}}},ab=(0,j.h)("frontend/components/mcp/MCPServerManager/Modals/ServerModal/utils/configDetection");async function ac(a,b,c){try{ab.debug(`Detecting configuration for repository: ${a}`);let d=await Y({repoPath:a,repoName:b,owner:c});if(d.detected&&d.config)return ab.debug(`Configuration detected for ${a}`,{language:d.language}),{config:d.config,message:d.message||{type:"success",text:"Configuration detected successfully."},success:!0,language:d.language};return ab.debug(`No configuration detected for ${a}`),{config:{name:b,transport:"stdio",command:"",args:[],env:{},disabled:!1,autoApprove:[],rootPath:a,_buildCommand:"",_installCommand:""},message:d.message||{type:"warning",text:"Could not detect repository configuration. Please configure manually."},success:!1,language:d.language}}catch(c){return ab.error(`Error detecting configuration for ${a}:`,c),{config:{name:b,transport:"stdio",command:"",args:[],env:{},disabled:!1,autoApprove:[],rootPath:a,_buildCommand:"",_installCommand:""},message:{type:"error",text:`Error detecting configuration: ${c instanceof Error?c.message:"Unknown error"}`},success:!1}}}(0,j.h)("frontend/components/mcp/MCPServerManager/Modals/ServerModal/utils/errorHandling");var ad=c(33873),ae=c.n(ad);let af=({initialConfig:a,onAdd:b,onUpdate:c,onClose:g,setActiveTab:h,initialGitHubUrl:i})=>{let[j,m]=(0,f.useState)(i||""),[n,o]=(0,f.useState)(null),[q,s]=(0,f.useState)(""),[t,u]=(0,f.useState)(!1),[v,w]=(0,f.useState)(!1),[B,D]=(0,f.useState)(!1),[E,F]=(0,f.useState)(!1),[G,H]=(0,f.useState)(!1),[I,J]=(0,f.useState)(null),[K,L]=(0,f.useState)(""),[M,N]=(0,f.useState)(null),[O,P]=(0,f.useState)(""),[Q,R]=(0,f.useState)(!1);(0,f.useEffect)(()=>{(async()=>{try{let a=await fetch("/api/cwd"),b=await a.json();b.success&&b.mcpServersDir?P(b.mcpServersDir):console.error("Failed to get mcp-servers directory:",b.error)}catch(a){console.error("Error fetching cwd information:",a)}})()},[]);let S=async()=>{w(!0),J(null),R(!1);let a=await z(j);if(o(a.repoInfo),J(a.message),u(a.showCloneButton),a.repoInfo){if(O){let b=ae().join(O,a.repoInfo.repo);s(b),await T(b)}else try{let b=await fetch("/api/cwd"),c=await b.json();if(c.success&&c.mcpServersDir){P(c.mcpServersDir);let b=ae().join(c.mcpServersDir,a.repoInfo.repo);s(b),await T(b)}else console.error("Failed to get mcp-servers directory:",c.error),s(`./mcp-servers/${a.repoInfo.repo}`)}catch(b){console.error("Error fetching cwd information:",b),s(`./mcp-servers/${a.repoInfo.repo}`)}F(!0)}w(!1)},T=async a=>{try{let b=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"exists",savePath:a})}),c=await b.json();c.success&&c.exists?(R(!0),J({type:"warning",text:`Repository already exists at ${a}. You can re-clone to get the latest version.`})):R(!1)}catch(a){console.error("Error checking if repository exists:",a),R(!1)}},U=async(a=!1)=>{if(n){D(!0),J({type:"success",text:a?"Re-cloning repository...":"Cloning repository..."});try{let b=await A(j,n,q,a);if(!b.success||!b.clonedRepoPath){J(b.message),D(!1);return}let d=b.clonedRepoPath;L(d);let e={};b.envExample&&"string"==typeof b.envExample&&(e=(a=>{try{return a.split("\n").filter(a=>""!==a.trim()).reduce((a,b)=>{let[c,d]=b.split("=").map(a=>a.trim());return c&&d&&(a[c]=d),a},{})}catch(a){return console.error("Failed to parse env variables:",a),{}}})(b.envExample),console.log("Parsed environment variables from .env.example:",e));let f=await ac(d,n.repo,n.owner);J(f.message);let g={},i=f.message;if(f.success&&f.config)console.log("GitHubTab: Initial detection successful. Merging config."),g={...f.config,rootPath:d,env:{...f.config.env||{},...e}},i=f.message;else{console.log("GitHubTab: Initial detection failed. Attempting README parsing fallback.");let a={name:n.repo,transport:"stdio",command:"",args:[],env:e,disabled:!1,autoApprove:[],rootPath:d,_buildCommand:"",_installCommand:""};try{let b=ae().join(n.repo,"README.md");console.log(`GitHubTab: Reading README.md from relative path: ${b}`);let c=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"readFile",savePath:b})}),h=await c.json();if(h.success&&h.content){console.log("GitHubTab: README.md read successfully. Parsing content.");let b=C(h.content,!0,n.repo);console.log("GitHubTab: README parse result:",b),g={...a,...b.config,rootPath:d,env:{...a.env||{},...b.config?.env||{},...e},_buildCommand:b.config?._buildCommand||a._buildCommand,_installCommand:b.config?._installCommand||a._installCommand},i=b.message||{type:"warning",text:"Configuration partially extracted from README.md. Please review."}}else console.log("GitHubTab: Failed to read or parse README.md. Using default config."),g=a,i=function(a){let b=a?` for ${a}`:"";return{type:"warning",text:`No configuration detected${b}. Please configure manually.`}}(f.language)}catch(b){console.error("GitHubTab: Error reading or parsing README.md:",b),g=a,i={type:"error",text:`Error processing README.md: ${b instanceof Error?b.message:"Unknown error"}`}}}g={...g,source:{type:"github",repositoryUrl:j}},N(g),J(i),c&&g.name&&c(g),h&&h("local"),H(!0)}catch(a){console.error("Error during repository cloning or configuration detection:",a),J({type:"error",text:`Error processing repository: ${a instanceof Error?a.message:"Unknown error"}`})}finally{D(!1)}}};return(0,d.jsx)(l.A,{elevation:0,sx:{p:0},children:(0,d.jsxs)(r.A,{spacing:3,children:[(0,d.jsx)(k.default,{variant:"h6",gutterBottom:!0,children:"Import from GitHub or MCP Platform"}),(0,d.jsx)(x,{githubUrl:j,setGithubUrl:m,savePath:q,setSavePath:s,repoInfo:n,isValidating:v,parseCompleted:E,onValidate:S}),(0,d.jsx)(y,{showCloneButton:t,isCloning:B,cloneCompleted:G,repoInfo:n,repoExists:Q,onClone:U}),I&&(0,d.jsx)(e.default,{children:(0,d.jsx)(p.A,{severity:I.type,children:I.text})})]})})};var ag=c(22813),ah=c(92812),ai=c(60839);let aj=({output:a,isVisible:b,toggleVisibility:c,title:f="Command Output"})=>{let g=(0,ai.A)();return(0,d.jsxs)(l.A,{variant:"outlined",sx:{p:2,height:"100%",display:"flex",flexDirection:"column"},children:[(0,d.jsxs)(e.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2},children:[(0,d.jsx)(k.default,{variant:"h6",children:f}),(0,d.jsx)(v.A,{onClick:c,size:"small",title:b?"Hide console":"Show console",color:"inherit",sx:{color:"text.secondary"},children:b?(0,d.jsx)(ah.A,{}):(0,d.jsx)(ag.A,{})})]}),(0,d.jsx)(e.default,{sx:{fontFamily:"monospace",p:2,borderRadius:1,bgcolor:"dark"===g.palette.mode?"#121212":"#1a1a1a",color:"#4ade80",flex:1,overflow:"auto"},children:a?(0,d.jsx)(e.default,{component:"pre",sx:{whiteSpace:"pre-wrap",m:0},children:a}):(0,d.jsx)(k.default,{variant:"body2",sx:{fontStyle:"italic",color:"text.secondary"},children:"No output to display"})})]})},ak=()=>{let[a,b]=(0,f.useState)(""),[c,d]=(0,f.useState)(!1),[e,g]=(0,f.useState)("Command Output");return{consoleOutput:a,isConsoleVisible:c,consoleTitle:e,setConsoleTitle:g,toggleConsoleVisibility:()=>{d(a=>!a)},setIsConsoleVisible:d,appendToConsole:a=>{b(b=>b+a)},clearConsole:()=>{b("")},updateConsole:a=>{b(a)}}},al=({name:a,setName:b,rootPath:c,setRootPath:f,onRootPathSelect:g})=>(0,d.jsxs)(r.A,{spacing:3,children:[(0,d.jsxs)(e.default,{children:[(0,d.jsx)(k.default,{variant:"subtitle2",gutterBottom:!0,children:"Server Name"}),(0,d.jsx)(s.A,{fullWidth:!0,size:"small",value:a,onChange:a=>b(a.target.value),placeholder:"my-mcp-server",variant:"outlined",required:!0})]}),(0,d.jsxs)(e.default,{children:[(0,d.jsx)(k.default,{variant:"subtitle2",gutterBottom:!0,children:"MCP Server Root Path"}),(0,d.jsx)(s.A,{fullWidth:!0,size:"small",value:c,onChange:a=>f(a.target.value),placeholder:"/path/to/server/root",variant:"outlined",InputProps:{endAdornment:(0,d.jsx)(u.A,{position:"end",children:(0,d.jsx)(v.A,{onClick:g,edge:"end",children:(0,d.jsx)(q.A,{})})})}})]})]});var am=c(8521);let an=({installCommand:a,setinstallCommand:b,buildCommand:c,setBuildCommand:g,onInstall:h,onBuild:i,isInstalling:j,isBuilding:m,installCompleted:n,buildCompleted:o,buildMessage:q})=>{let u=["Still working on it...","Don't close this window!","This can take some time...","Backend is processing your request...","Almost there, please wait...","Processing in progress..."],v=[...u,"Installing dependencies...","NPM install in progress...","Fetching packages from registry..."],w=[...u,"Building server...","Compiling source code...","Bundling files..."],[x,y]=(0,f.useState)(0),[z,A]=(0,f.useState)(0);return(0,f.useEffect)(()=>{let a;return j&&(a=setInterval(()=>{y(a=>(a+1)%v.length)},3e3)),()=>{a&&clearInterval(a)}},[j,v.length]),(0,f.useEffect)(()=>{let a;return m&&(a=setInterval(()=>{A(a=>(a+1)%w.length)},3e3)),()=>{a&&clearInterval(a)}},[m,w.length]),(0,d.jsxs)(r.A,{spacing:3,children:[q&&"error"===q.type&&(0,d.jsx)(p.A,{severity:"error",sx:{mb:2},children:q.text}),(0,d.jsxs)(e.default,{children:[(0,d.jsx)(k.default,{variant:"subtitle2",gutterBottom:!0,children:"Install Script"}),(0,d.jsx)(s.A,{fullWidth:!0,size:"small",value:a,onChange:a=>b(a.target.value),variant:"outlined"}),(0,d.jsxs)(e.default,{sx:{display:"flex",flexDirection:"column",alignItems:"flex-end",mt:1},children:[j&&(0,d.jsxs)(l.A,{elevation:3,sx:{p:2,mb:2,width:"100%",bgcolor:"info.lighter",display:"flex",alignItems:"center",gap:2},children:[(0,d.jsx)(am.default,{size:20,color:"info"}),(0,d.jsx)(k.default,{variant:"body2",color:"info.dark",fontWeight:"medium",children:v[x]})]}),(0,d.jsx)(t.A,{variant:"contained",color:n?"success":"primary",onClick:h,disabled:j,children:j?"Installing...":"1) Install Dependencies"})]})]}),(0,d.jsxs)(e.default,{children:[(0,d.jsx)(k.default,{variant:"subtitle2",gutterBottom:!0,children:"Build Command"}),(0,d.jsx)(s.A,{fullWidth:!0,size:"small",value:c,onChange:a=>g(a.target.value),variant:"outlined"}),(0,d.jsxs)(e.default,{sx:{display:"flex",flexDirection:"column",alignItems:"flex-end",mt:1},children:[m&&(0,d.jsxs)(l.A,{elevation:3,sx:{p:2,mb:2,width:"100%",bgcolor:"info.lighter",display:"flex",alignItems:"center",gap:2},children:[(0,d.jsx)(am.default,{size:20,color:"info"}),(0,d.jsx)(k.default,{variant:"body2",color:"info.dark",fontWeight:"medium",children:w[z]})]}),(0,d.jsx)(t.A,{variant:"contained",color:o?"success":"primary",onClick:i,disabled:m,children:m?"Building...":"2) Build Server"})]})]})]})};var ao=c(38296),ap=c(41893),aq=c(95587),ar=c(77028),as=c(43312),at=c(6537),au=c(47902),av=c(91034),aw=c(85557),ax=c(93083),ay=c(49938),az=c(82571),aA=c(92173);let aB=/^\$\{global:([^}]+)\}$/,aC=a=>Object.entries(a||{}).map(([a,b])=>{let c=null!==b&&"object"==typeof b&&"value"in b,d=c?b.value??"":b??"",e=c?!!b.metadata?.isSecret:(0,az.Hm)(a),f=d.match(aB);if(f)return{key:a,value:d,isSecret:e,isBound:!0,boundTo:f[1]};let g=d===aA.RJ||d===aA.gF;return{key:a,value:d,isSecret:e,isMasked:g}}),aD=a=>{let b={};return a.forEach(({key:a,value:c,isSecret:d,isBound:e,boundTo:f})=>{let g=a.trim();g&&(e&&f?b[g]={value:"${global:"+f+"}",metadata:{isSecret:!!d}}:b[g]={value:c,metadata:{isSecret:!!d}})}),b},aE=({headers:a,onChange:b})=>{let{globalEnvVars:c}=(0,ay.rX)(),[f,h]=g().useState(()=>aC(a)),[i,j]=g().useState(!1),[l,m]=g().useState(null),n=JSON.stringify(a||{}),o=g().useRef(n);g().useEffect(()=>{o.current!==n&&n!==JSON.stringify(aD(f))&&(h(aC(a)),o.current=n)},[n]);let p=a=>{h(a);let c=aD(a);o.current=JSON.stringify(c),b(c)};return(0,d.jsxs)(e.default,{children:[(0,d.jsx)(k.default,{variant:"subtitle2",gutterBottom:!0,children:"Custom HTTP Headers"}),(0,d.jsxs)(k.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:1.5},children:["Sent on every request to the server (e.g. an ",(0,d.jsx)("code",{children:"Authorization"})," header or any custom headers the server requires). Values can be marked ",(0,d.jsx)("strong",{children:"secret"})," (masked in the UI, encrypted at rest) or bound to a global variable."]}),(0,d.jsxs)(r.A,{spacing:1.5,children:[0===f.length&&(0,d.jsx)(k.default,{variant:"body2",color:"text.secondary",children:"No custom headers configured."}),f.map((a,b)=>(0,d.jsxs)(r.A,{direction:"row",spacing:1,alignItems:"flex-start",children:[(0,d.jsx)(s.A,{size:"small",label:"Header",placeholder:"Authorization",value:a.key,onChange:a=>((a,b)=>{p(f.map((c,d)=>{if(d!==a)return c;let e=c.isSecret||(0,az.Hm)(b);return{...c,key:b,isSecret:e}}))})(b,a.target.value),sx:{flex:"0 0 32%"}}),(0,d.jsx)(s.A,{size:"small",label:"Value",type:a.isSecret&&!a.isBound?"password":"text",placeholder:a.showWarning?"Re-enter value":a.isMasked?"(unchanged)":"Basic dXNlcjpwYXNz",value:a.isBound?"":a.value,onChange:a=>{var c;return c=a.target.value,void p(f.map((a,d)=>d===b?{...a,value:c,isMasked:!1,showWarning:!1}:a))},error:a.showWarning,helperText:a.showWarning?'Re-enter the value after turning off "Secret".':a.isMasked?"A secret is stored. Type to replace it, or bind to a global variable.":"",InputProps:{readOnly:a.isBound,endAdornment:a.isBound?(0,d.jsx)(u.A,{position:"end",children:(0,d.jsx)(ap.A,{size:"small",label:`Bound: ${a.boundTo}`,color:"primary",variant:"outlined",onDelete:()=>{p(f.map((a,c)=>c===b?{...a,isBound:!1,boundTo:void 0,value:""}:a))},deleteIcon:(0,d.jsx)(ax.A,{fontSize:"small"})})}):null},sx:{flex:1}}),(0,d.jsx)(aq.A,{control:(0,d.jsx)(ar.A,{checked:a.isSecret,onChange:a=>((a,b)=>{p(f.map((c,d)=>d!==a?c:c.isSecret&&!b&&c.isMasked?{...c,isSecret:b,value:"",isMasked:!1,showWarning:!0}:{...c,isSecret:b}))})(b,a.target.checked),size:"small"}),label:"Secret",sx:{mr:0,mt:.25}}),!a.isBound&&(0,d.jsx)(as.A,{title:"Bind to a global variable",children:(0,d.jsx)(v.A,{"aria-label":"bind header to global variable",size:"small",color:"primary",onClick:()=>{m(b),j(!0)},sx:{mt:.25},children:(0,d.jsx)(aw.A,{fontSize:"small"})})}),(0,d.jsx)(as.A,{title:"Remove header",children:(0,d.jsx)(v.A,{"aria-label":"remove header",onClick:()=>{p(f.filter((a,c)=>c!==b))},size:"small",sx:{mt:.25},children:(0,d.jsx)(av.A,{fontSize:"small"})})})]},b)),(0,d.jsx)(e.default,{children:(0,d.jsx)(t.A,{startIcon:(0,d.jsx)(au.A,{}),onClick:()=>{h(a=>[...a,{key:"",value:"",isSecret:!1}])},size:"small",variant:"outlined",children:"Add Header"})})]}),(0,d.jsx)(at.A,{open:i,onClose:()=>{j(!1),m(null)},children:(0,d.jsxs)(e.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,d.jsx)(k.default,{variant:"h6",sx:{mb:2},children:"Bind Header to Global Variable"}),0===Object.keys(c).length?(0,d.jsx)(k.default,{color:"text.secondary",sx:{mb:2},children:"No global variables available. Add some in Settings first."}):(0,d.jsx)(e.default,{sx:{maxHeight:300,overflow:"auto",mb:2},children:Object.keys(c).map(a=>(0,d.jsx)(t.A,{fullWidth:!0,variant:"text",onClick:()=>(a=>{null!==l&&(p(f.map((b,c)=>c===l?{...b,isBound:!0,boundTo:a,value:"${global:"+a+"}",isMasked:!1,showWarning:!1}:b)),j(!1),m(null))})(a),sx:{justifyContent:"flex-start",textAlign:"left",mb:1,p:1,borderRadius:1},children:(0,d.jsx)(k.default,{variant:"body2",children:a})},a))}),(0,d.jsx)(e.default,{sx:{display:"flex",justifyContent:"flex-end"},children:(0,d.jsx)(t.A,{variant:"outlined",onClick:()=>{j(!1),m(null)},children:"Cancel"})})]})})]})};var aF=c(35406),aG=c(38941);let aH=/^\$\{global:([^}]+)\}$/,aI=({clientId:a,clientSecret:b,onClientIdChange:c,onClientSecretChange:g})=>{let{globalEnvVars:h}=(0,ay.rX)(),[i,j]=(0,f.useState)(!1),l=b.match(aH),m=!!l,n=l?.[1]??null,o="/api/oauth/callback";return(0,d.jsxs)(e.default,{sx:{position:"relative"},children:[(0,d.jsxs)(k.default,{variant:"subtitle2",gutterBottom:!0,children:["OAuth Client Credentials"," ",(0,d.jsx)(k.default,{component:"span",variant:"caption",color:"text.secondary",children:"(optional)"})]}),(0,d.jsxs)(k.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:1.5},children:["Leave blank for servers that support automatic registration — just click Authenticate. Only fill these in if the server requires a pre-registered app (it will report that dynamic client registration is not supported). See the"," ",(0,d.jsx)(aF.A,{href:"https://modelcontextprotocol.io/specification/draft/basic/authorization",target:"_blank",rel:"noopener",children:"MCP authorization spec"}),"."]}),(0,d.jsx)(s.A,{fullWidth:!0,size:"small",label:"Client ID",value:a,onChange:a=>c(a.target.value),placeholder:"e.g. 1234567890abcdef",variant:"outlined",sx:{mb:1.5}}),(0,d.jsx)(s.A,{fullWidth:!0,size:"small",label:"Client Secret",type:m?"text":"password",value:b,onChange:a=>g(a.target.value),placeholder:"Only if the server requires it",variant:"outlined",autoComplete:"off",InputProps:{readOnly:m,endAdornment:m?(0,d.jsx)(as.A,{title:"Unbind from global variable",children:(0,d.jsx)(v.A,{size:"small",onClick:()=>g(""),children:(0,d.jsx)(ax.A,{fontSize:"small"})})}):(0,d.jsx)(as.A,{title:"Bind to a global variable",children:(0,d.jsx)(v.A,{size:"small",onClick:()=>j(!0),children:(0,d.jsx)(aw.A,{fontSize:"small"})})})},helperText:m?`Bound to global variable "${n}"`:b===aA.RJ?"A secret is stored. Type a new one to replace it, or bind it to a global variable.":void 0}),(0,d.jsxs)(e.default,{sx:{mt:1.5,display:"flex",alignItems:"center",gap:.5},children:[(0,d.jsx)(k.default,{variant:"caption",color:"text.secondary",children:"Redirect URI to register in the provider's app:"}),(0,d.jsx)(k.default,{variant:"caption",sx:{fontFamily:"monospace"},children:o}),(0,d.jsx)(as.A,{title:"Copy redirect URI",children:(0,d.jsx)(v.A,{size:"small",onClick:()=>navigator.clipboard.writeText(o),children:(0,d.jsx)(aG.A,{sx:{fontSize:14}})})})]}),i&&(0,d.jsxs)(e.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,d.jsx)(k.default,{variant:"h6",component:"h2",sx:{mb:2},children:"Bind Client Secret to Global Variable"}),0===Object.keys(h).length?(0,d.jsx)(k.default,{sx:{mb:2},children:"No global variables available. Add some in Settings first."}):(0,d.jsx)(e.default,{sx:{maxHeight:300,overflow:"auto",mb:2},children:Object.keys(h).map(a=>(0,d.jsx)(t.A,{onClick:()=>{g(`\${global:${a}}`),j(!1)},fullWidth:!0,sx:{justifyContent:"flex-start",textAlign:"left",mb:1,p:1,"&:hover":{bgcolor:"action.hover"}},children:(0,d.jsx)(k.default,{children:a})},a))}),(0,d.jsx)(e.default,{sx:{display:"flex",justifyContent:"flex-end"},children:(0,d.jsx)(t.A,{onClick:()=>j(!1),children:"Cancel"})})]})]})};var aJ=c(22042),aK=c(34304),aL=c(38233),aM=c(64956);let aN=new Set(["npx","bunx","uvx","pipx","dlx"]),aO=new Set(["pnpm","yarn","bun","npm"]),aP=new Set(["dlx","exec","x"]);function aQ(a,b=[]){let c=((a||"").split(/[\\/]/).filter(Boolean).pop()||"").toLowerCase().replace(/\.(cmd|exe|bat|ps1)$/i,"");if(aN.has(c))return!0;if(aO.has(c)){let a=(b[0]||"").toLowerCase();return aP.has(a)}return!1}function aR(a){return"stdio"===a.transport&&aQ(a.command,a.args??[])}let aS=({command:a,setCommand:b,transport:c,setTransport:g,websocketUrl:h,setWebsocketUrl:i,serverUrl:j,setServerUrl:l,onRun:m,isRunning:n,runCompleted:o,env:q,onEnvChange:u,headers:v={},onHeadersChange:w,oauthClientId:x="",oauthClientSecret:y="",onOAuthClientIdChange:z,onOAuthClientSecretChange:A,serverName:B,consoleOutput:C,message:D,setMessage:E,oauthCapable:F=!1,onSaveAndAuthenticate:G,isAuthenticating:H=!1})=>{(0,f.useEffect)(()=>{C.includes("MODULE_NOT_FOUND")&&E({type:"error",text:"Module not found error detected. Please check the paths defined in the Arguments!"})},[C,E]);let I="websocket"!==c||(a=>{if(!a)return!1;try{let b=new URL(a);return"ws:"===b.protocol||"wss:"===b.protocol}catch(a){return!1}})(h),J="sse"!==c&&"streamable"!==c||(a=>{if(!a)return!1;try{let b=new URL(a);return"http:"===b.protocol||"https:"===b.protocol}catch(a){return!1}})(j),K="websocket"===c&&I&&(a=>{try{let b=new URL(a);return"ws:"===b.protocol&&!(a=>{let b=a.toLowerCase();return"localhost"===b||"127.0.0.1"===b||"::1"===b||"[::1]"===b||b.endsWith(".localhost")})(b.hostname)}catch(a){return!1}})(h),L=a.trim().split(/\s+/).filter(Boolean),M="stdio"===c&&L.length>0&&aQ(L[0],L.slice(1)),N=Math.round(90);return(0,d.jsxs)(r.A,{spacing:3,children:[D&&"error"===D.type&&(0,d.jsx)(p.A,{severity:"error",sx:{mb:2},children:D.text}),(0,d.jsxs)(e.default,{children:[(0,d.jsx)(k.default,{variant:"subtitle2",gutterBottom:!0,children:"Transport Type"}),(0,d.jsxs)(aJ.A,{value:c,onChange:(a,b)=>g(b),sx:{borderBottom:1,borderColor:"divider",mb:2},variant:"scrollable",scrollButtons:"auto",children:[(0,d.jsx)(aK.A,{label:"Standard IO",value:"stdio"}),(0,d.jsx)(aK.A,{label:"WebSocket",value:"websocket"}),(0,d.jsx)(aK.A,{label:"SSE",value:"sse"}),(0,d.jsx)(aK.A,{label:"Streamable HTTP",value:"streamable"})]})]}),"websocket"===c&&(0,d.jsxs)(e.default,{children:[(0,d.jsx)(k.default,{variant:"subtitle2",gutterBottom:!0,children:"WebSocket URL"}),(0,d.jsx)(s.A,{fullWidth:!0,size:"small",value:h,onChange:a=>i(a.target.value),placeholder:"ws://localhost:3000",variant:"outlined",required:!0,error:!I,helperText:!I&&"Please enter a valid WebSocket URL (starting with ws:// or wss://)"}),K&&(0,d.jsx)(p.A,{severity:"warning",sx:{mt:1},children:"This URL uses unencrypted ws:// to a non-localhost host. Consider using wss:// for remote servers so credentials and data are encrypted in transit."})]}),("sse"===c||"streamable"===c)&&(0,d.jsxs)(e.default,{children:[(0,d.jsx)(k.default,{variant:"subtitle2",gutterBottom:!0,children:"Server URL"}),(0,d.jsx)(s.A,{fullWidth:!0,size:"small",value:j,onChange:a=>l(a.target.value),placeholder:"https://localhost:3000",variant:"outlined",required:!0,error:!J,helperText:!J&&"Please enter a valid HTTP URL (starting with http:// or https://)"})]}),("sse"===c||"streamable"===c)&&(0,d.jsx)(e.default,{children:(0,d.jsx)(aE,{headers:v,onChange:w||(()=>{})})}),("sse"===c||"streamable"===c)&&(0,d.jsx)(e.default,{children:(0,d.jsx)(aI,{clientId:x,clientSecret:y,onClientIdChange:z||(()=>{}),onClientSecretChange:A||(()=>{})})}),"stdio"===c&&(0,d.jsxs)(e.default,{children:[(0,d.jsx)(k.default,{variant:"subtitle2",gutterBottom:!0,children:"Run Command"}),(0,d.jsx)(s.A,{fullWidth:!0,size:"small",value:a,onChange:a=>b(a.target.value),placeholder:"npm start",variant:"outlined",required:!0}),M&&(0,d.jsxs)(aL.A,{children:["npx/uvx may download the package on the first run — the Test Run waits up to ",N,"s before timing out."]})]}),(0,d.jsx)(e.default,{sx:{display:"flex",justifyContent:"flex-end",mt:1},children:(0,d.jsx)(t.A,{variant:"contained",color:o?"success":"primary",onClick:m,startIcon:n?(0,d.jsx)(am.default,{size:16,color:"inherit"}):void 0,disabled:n||"stdio"===c&&!a.trim()||"websocket"===c&&!I||("sse"===c||"streamable"===c)&&!J,title:"stdio"!==c||a.trim()?"websocket"!==c||I?"sse"!==c&&"streamable"!==c||J?"Test the run command":"Please enter a valid Server URL":"Please enter a valid WebSocket URL":"Please enter a run command first",children:n?"Running...":"3) Test Run"})}),F&&("sse"===c||"streamable"===c)&&G&&(0,d.jsx)(p.A,{severity:"info",action:(0,d.jsx)(t.A,{color:"inherit",size:"small",variant:"outlined",startIcon:H?(0,d.jsx)(am.default,{size:16,color:"inherit"}):(0,d.jsx)(aM.A,{}),onClick:()=>{G()},disabled:H||!J,children:H?"Authenticating…":"Save & Authenticate"}),children:"This server uses OAuth. Saving it and signing in will complete the connection."}),(0,d.jsx)(e.default,{children:(0,d.jsx)(ao.A,{serverName:B,initialEnv:q,onSave:async a=>(u(a),Promise.resolve())})})]})};var aT=c(95345);let aU=({args:a,onArgChange:b,onAddArg:c,onRemoveArg:f,onFolderSelect:g,onParseReadme:h,onParseClipboard:i,isParsingReadme:j})=>{let{getThemeColor:l}=(0,w.Ic)();return(0,d.jsxs)(e.default,{children:[(0,d.jsxs)(e.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:1},children:[(0,d.jsx)(k.default,{variant:"subtitle2",children:"Arguments"}),(0,d.jsxs)(r.A,{direction:"row",spacing:1,children:[(0,d.jsx)(t.A,{size:"small",startIcon:(0,d.jsx)(aT.A,{}),onClick:h,disabled:j,color:"inherit",sx:{color:"text.secondary"},children:"Parse README"}),(0,d.jsx)(t.A,{size:"small",startIcon:(0,d.jsx)(aT.A,{}),onClick:i,color:"inherit",sx:{color:"text.secondary"},children:"Parse from Clipboard"})]})]}),(0,d.jsxs)(r.A,{spacing:1,children:[a.map((a,c)=>(0,d.jsxs)(r.A,{direction:"row",spacing:1,children:[(0,d.jsx)(s.A,{fullWidth:!0,size:"small",value:a,onChange:a=>b(c,a.target.value),variant:"outlined"}),(0,d.jsx)(as.A,{title:"Select folder",children:(0,d.jsx)(v.A,{onClick:()=>g(c),size:"small",sx:{border:1,borderColor:"divider"},children:(0,d.jsx)(q.A,{})})}),(0,d.jsx)(as.A,{title:"Remove argument",children:(0,d.jsx)(v.A,{onClick:()=>f(c),size:"small",sx:{border:1,borderColor:"divider"},children:(0,d.jsx)(av.A,{})})})]},c)),(0,d.jsx)(t.A,{startIcon:(0,d.jsx)(au.A,{}),onClick:c,color:"primary",sx:{alignSelf:"flex-start",mt:1},children:"Add Argument"})]})]})};var aV=c(2173),aW=c(67191),aX=c(82605),aY=c(50062),aZ=c(7675),a$=c(94367),a_=c(11801);let a0=(0,a_.A)((0,d.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 a1=c(83434);let a2=(0,j.h)("frontend/components/mcp/.../SamplingManager"),a3=({policy:a,onChange:b})=>{let[c,g]=(0,f.useState)([]),h=!!a?.enabled;(0,f.useEffect)(()=>{let a=!1;return a1.N.loadModels().then(b=>{a||g(Array.isArray(b)?b:[])}).catch(a=>a2.warn("Failed to load models for sampling policy",a)),()=>{a=!0}},[]);let i=c=>{b({enabled:h,modelId:a?.modelId,maxCallsPerMinute:a?.maxCallsPerMinute,...c})};return(0,d.jsxs)(e.default,{children:[(0,d.jsx)(p.A,{severity:"warning",sx:{mb:2},children:"MCP sampling is deprecated in the 2026-07-28 spec. FLUJO's implementation (routing through your configured model) already matches the recommended replacement pattern — no action is required until server support is removed (estimated mid-2027)."}),(0,d.jsxs)(e.default,{sx:{display:"flex",alignItems:"center",mb:.5},children:[(0,d.jsx)(a0,{fontSize:"small",sx:{mr:1,color:"text.secondary"}}),(0,d.jsx)(k.default,{variant:"subtitle1",children:"Let this tool use your AI"}),(0,d.jsx)(aW.A,{checked:h,onChange:a=>i({enabled:a.target.checked}),size:"small",sx:{ml:1}})]}),(0,d.jsx)(k.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:1.5},children:"Allows this server to ask FLUJO to run AI calls on its behalf (MCP sampling). Off by default. When on, the server can spend the selected model's API budget — only enable it for servers you trust."}),h&&(0,d.jsxs)(e.default,{sx:{display:"flex",gap:2,flexWrap:"wrap",alignItems:"flex-start"},children:[(0,d.jsxs)(aX.A,{size:"small",sx:{minWidth:260},error:!a?.modelId,children:[(0,d.jsx)(aY.A,{id:"sampling-model-label",children:"Model"}),(0,d.jsxs)(aZ.A,{labelId:"sampling-model-label",label:"Model",value:c.some(b=>b.id===a?.modelId)?a?.modelId:"",onChange:a=>i({modelId:a.target.value||void 0}),children:[0===c.length&&(0,d.jsx)(a$.A,{value:"",disabled:!0,children:"No models configured"}),c.map(a=>(0,d.jsx)(a$.A,{value:a.id,children:a.displayName||a.name},a.id))]})]}),(0,d.jsx)(s.A,{size:"small",type:"number",label:"Max calls / minute",sx:{width:160},value:a?.maxCallsPerMinute??"",placeholder:"10",onChange:a=>{let b=parseInt(a.target.value,10);i({maxCallsPerMinute:Number.isFinite(b)&&b>0?b:void 0})},helperText:"Default 10"}),!a?.modelId&&(0,d.jsx)(p.A,{severity:"warning",sx:{width:"100%"},children:"Pick a model — sampling requests will be rejected until one is selected."})]})]})},a4=(0,a_.A)([(0,d.jsx)("path",{d:"M4 6H2v14c0 1.1.9 2 2 2h14v-2H4z"},"0"),(0,d.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"),a5=({policy:a,onChange:b})=>{let c=!!a?.enabled;return(0,d.jsxs)(e.default,{children:[(0,d.jsxs)(e.default,{sx:{display:"flex",alignItems:"center",mb:.5},children:[(0,d.jsx)(a4,{fontSize:"small",sx:{mr:1,color:"text.secondary"}}),(0,d.jsx)(k.default,{variant:"subtitle1",children:"Allow this tool to ask you questions"}),(0,d.jsx)(aW.A,{checked:c,onChange:a=>b({enabled:a.target.checked}),size:"small",sx:{ml:1}})]}),(0,d.jsx)(k.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:1},children:"Allows this server to request additional information from you mid-tool-call (MCP elicitation). Off by default. Only enable for servers you trust. Unattended (scheduled) runs auto-cancel elicitation requests. URL-mode is not yet supported."}),c&&(0,d.jsx)(p.A,{severity:"info",sx:{mt:.5},children:"When enabled, this server may pause execution and display a form asking for your input. You can cancel at any time."})]})};var a6=c(32720),a7=c(33799),a8=c(28055);let a9=(a,b,c,d,e)=>{let f;return{...f="websocket"===a.transport?{...a,transport:"websocket",websocketUrl:b,_buildCommand:d,_installCommand:e}:"sse"===a.transport?{...a,transport:"sse",serverUrl:c,_buildCommand:d,_installCommand:e}:"streamable"===a.transport?{...a,transport:"streamable",serverUrl:c,_buildCommand:d,_installCommand:e}:{...a,transport:"stdio",_buildCommand:d,_installCommand:e},source:f.source??{type:"local"}}},ba=async(a,b,c,d,e,f,g)=>{let h=await aa(a,a.name);h.message&&c(h.message),h.config&&(b("websocket"===h.config.transport?{...h.config,env:a.env,transport:"websocket",websocketUrl:h.config.websocketUrl||g}:{...h.config,env:a.env,transport:"stdio",command:h.config.command||"",args:h.config.args||[]}),h.config._buildCommand&&d(h.config._buildCommand),h.config._installCommand&&e(h.config._installCommand))},bb=async(a,b,c,d,e,f,g,h)=>{d(!0),c({type:"success",text:"Parsing README.md from repository root..."});try{if(!a.name)throw Error("Please specify a server name first");let d=a.name,i=`${d}/README.md`,j=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"readFile",savePath:i})});if(console.log("DEBUG - API response status:",j.status),!j.ok)throw Error("Failed to read README file from repository root");let k=await j.json();if(!k.content)throw Error("README file is empty");let l=await _(k.content,a,a.name);console.log("DEBUG - Parsing README content with repository root path:",a.name),l.message&&c(l.message),l.config&&("websocket"===l.config.transport?(b({...l.config,transport:"websocket",websocketUrl:l.config.websocketUrl||h}),l.config.websocketUrl&&g(l.config.websocketUrl)):b({...l.config,transport:"stdio",command:l.config.command||"",args:l.config.args||[]}),l.config._buildCommand&&e(l.config._buildCommand),l.config._installCommand&&f(l.config._installCommand))}catch(a){console.error("Error parsing README:",a),c({type:"error",text:`Error parsing README: ${a.message||"Unknown error"}`})}finally{d(!1)}},bc=async(a,b,c,d,e,f,g,h)=>{if(!a.name)return void d({type:"error",text:"Please specify a server name first"});c(!0),d({type:"success",text:"Installing dependencies..."}),e("Install Dependencies Output"),f(!0),g(`Executing: ${b}
1
+ (()=>{var a={};a.id=313,a.ids=[313],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},1708:a=>{"use strict";a.exports=require("node:process")},2173:(a,b,c)=>{"use strict";c.d(b,{A:()=>r});var d=c(21124),e=c(38301),f=c(81637),g=c(79515),h=c(53773),i=c(37674),j=c(43312),k=c(44079),l=c(68730),m=c(47902),n=c(91034),o=c(30717),p=c(46410),q=c(32720);let r=({roots:a,onChange:b})=>{let c=Array.isArray(a)?a:[],[r,s]=(0,e.useState)(null),t=(a,d)=>{b(c.map((b,c)=>c===a?d:b))};return(0,d.jsxs)(f.default,{children:[(0,d.jsxs)(f.default,{sx:{display:"flex",alignItems:"center",mb:.5},children:[(0,d.jsx)(o.A,{fontSize:"small",sx:{mr:1,color:"text.secondary"}}),(0,d.jsx)(g.default,{variant:"subtitle1",children:"Workspace folders"})]}),(0,d.jsxs)(g.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:1.5},children:["Limit which folders this server may work in. Advisory only — the server is told these paths via MCP roots; it is not a hard sandbox. Leave empty to default to the server's own root dir. Supports ",(0,d.jsx)("code",{children:"${global:VAR}"}),"."]}),(0,d.jsx)(h.A,{spacing:1,children:c.map((a,e)=>(0,d.jsxs)(f.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,d.jsx)(i.A,{size:"small",fullWidth:!0,placeholder:"/path/to/folder or file:///path",value:a,onChange:a=>t(e,a.target.value)}),(0,d.jsx)(j.A,{title:"Browse folders (on the FLUJO machine)",children:(0,d.jsx)(k.A,{size:"small",onClick:()=>s(e),"aria-label":"browse for folder",children:(0,d.jsx)(p.A,{fontSize:"small"})})}),(0,d.jsx)(j.A,{title:"Remove",children:(0,d.jsx)(k.A,{size:"small",onClick:()=>b(c.filter((a,b)=>b!==e)),"aria-label":"remove workspace folder",children:(0,d.jsx)(n.A,{fontSize:"small"})})})]},e))}),(0,d.jsx)(l.A,{size:"small",startIcon:(0,d.jsx)(m.A,{}),onClick:()=>b([...c,""]),sx:{mt:1},children:"Add folder"}),(0,d.jsx)(q.A,{open:null!==r,title:"Choose a workspace folder",initialPath:null!==r&&c[r]||void 0,onClose:()=>s(null),onSelect:a=>{null!==r&&t(r,a)}})]})}},2560:(a,b,c)=>{"use strict";c.d(b,{Aq:()=>e,Xk:()=>g,vi:()=>f});var d=c(38301);function e(a,b){return b}function f(a,b){}function g(a,b){let[c,e]=(0,d.useState)(()=>b);return[c,(0,d.useCallback)(b=>{e(c=>{let d="function"==typeof b?b(c):b;return f(a,d),d})},[a])]}},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},7329:(a,b,c)=>{"use strict";c.d(b,{Az:()=>e,FM:()=>d,Je:()=>g,po:()=>f,yF:()=>h});let d="folder";function e(a,b){let c=[],d=new Map;for(let e of a){let{key:a,label:f}=b(e),g=d.get(a);g||(g={key:a,label:f,items:[]},d.set(a,g),c.push(g)),g.items.push(e)}return c}function f(a){let b=(a??"").trim().charAt(0).toUpperCase();return b>="A"&&b<="Z"?{key:`letter:${b}`,label:b}:{key:"letter:#",label:"#"}}function g(a,b,c="Ungrouped"){let d=new Map,e=[];for(let c of a){let a=b(c)?.trim();if(a){let b=d.get(a);b?b.push(c):d.set(a,[c])}else e.push(c)}let f=Array.from(d.keys()).sort((a,b)=>a.localeCompare(b)).map(a=>({key:`folder:${a}`,label:a,items:d.get(a)}));return e.length>0&&f.push({key:"folder:__ungrouped__",label:c,items:e}),f}function h(a,b){let c=new Set;for(let d of a){let a=b(d)?.trim();a&&c.add(a)}return Array.from(c).sort((a,b)=>a.localeCompare(b))}},9863:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.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")},10846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11402:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.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")},19121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},21820:a=>{"use strict";a.exports=require("os")},26713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},27409:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"m7 10 5 5 5-5z"}),"ArrowDropDown")},28354:a=>{"use strict";a.exports=require("util")},29021:a=>{"use strict";a.exports=require("fs")},29294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},32939:(a,b,c)=>{Promise.resolve().then(c.bind(c,35352))},33253:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M5 20h14v-2H5zM19 9h-4V3H9v6H5l7 7z"}),"Download")},33873:a=>{"use strict";a.exports=require("path")},35352:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>cR});var d=c(21124),e=c(81637),f=c(38301),g=c.n(f),h=c(35070),i=c(61615),j=c(19815),k=c(79515),l=c(54573),m=c(82666);let n=(0,j.h)("frontend/components/mcp/MCPServerManager/ServerList"),o=({servers:a,isLoading:b,loadError:c,onServerSelect:f,onServerToggle:g,onServerRetry:j,onServerDelete:o,onServerEdit:p,selectionMode:q=!1,selectedServers:r=new Set,onServerSelectionChange:s,updates:t,onServerUpdated:u,folders:v=[],onServerSetFolder:w,onServerToggleFavorite:x})=>(n.debug("Rendering ServerList",{serverCount:a.length,isLoading:b,hasError:!!c}),b)?(n.debug("Servers are loading"),(0,d.jsxs)(e.default,{sx:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",p:4},children:[(0,d.jsx)(i.default,{size:"large",color:"primary"}),(0,d.jsx)(k.default,{sx:{mt:2,color:"text.secondary"},children:"Loading servers..."})]})):c?(n.warn("Error loading servers:",c),(0,d.jsx)(l.A,{sx:{p:3,bgcolor:"error.light",color:"error.contrastText",borderRadius:1},children:(0,d.jsx)(k.default,{color:"error",children:c})})):0===a.length?(0,d.jsx)(l.A,{sx:{p:3,textAlign:"center",borderRadius:1},children:(0,d.jsx)(k.default,{color:"text.secondary",children:'No servers configured. Click "Add Server" to get started.'})}):(0,d.jsx)(m.Ay,{container:!0,spacing:2,children:a.map(a=>{let b="streamable"===a.transport&&void 0!==a.oauthTokens;return(0,d.jsx)(m.Ay,{item:!0,xs:12,md:6,lg:4,children:(0,d.jsx)(h.A,{name:a.name,status:a.status,path:a.rootPath,enabled:!a.disabled,transport:a.transport,onToggle:b=>g(a.name,b),onRetry:()=>j(a.name),onDelete:()=>o(a.name),onClick:()=>f(a.name),onEdit:()=>p(a),error:a.error,stderrOutput:a.stderrOutput,exposeAsMcpServer:a.exposeAsMcpServer,enableMcpApps:a.enableMcpApps,selectionMode:q,selected:r.has(a.name),onSelect:s&&!a.builtIn?b=>s(a.name,b):void 0,hasOAuthTokens:b,updateInfo:a.rootPath?t?.[a.rootPath]:void 0,installCommand:a._installCommand,buildCommand:a._buildCommand,onUpdated:u?()=>u(a.name,a.rootPath):void 0,folder:a.folder,folders:v,onSetFolder:w&&!a.builtIn?b=>w(a.name,b):void 0,favorite:a.favorite,onToggleFavorite:x&&!a.builtIn?()=>x(a.name,!a.favorite):void 0,builtIn:a.builtIn,serverConfig:a})},a.name)})});var p=c(88745),q=c(30717),r=c(53773),s=c(37674),t=c(68730),u=c(67101),v=c(44079),w=c(48748);let x=({githubUrl:a,setGithubUrl:b,savePath:c,setSavePath:g,repoInfo:h,isValidating:i,parseCompleted:j,onValidate:l})=>{let[m,n]=(0,f.useState)(""),{getThemeColor:o}=(0,w.Ic)();return(0,f.useEffect)(()=>{(async()=>{try{let a=await fetch("/api/cwd"),b=await a.json();b.success&&b.mcpServersDir?n(b.mcpServersDir):console.error("Failed to get mcp-servers directory path:",b.error)}catch(a){console.error("Error fetching current working directory:",a)}})()},[]),(0,d.jsxs)(r.A,{spacing:3,children:[(0,d.jsxs)(e.default,{children:[(0,d.jsx)(k.default,{variant:"subtitle2",gutterBottom:!0,children:"GitHub Repository URL"}),(0,d.jsx)(s.A,{fullWidth:!0,value:a,onChange:a=>b(a.target.value),placeholder:"GitHub repository URL",helperText:"Paste a GitHub repository URL",variant:"outlined",size:"small"}),(0,d.jsx)(e.default,{sx:{display:"flex",justifyContent:"flex-end",mt:1},children:(0,d.jsx)(t.A,{variant:"contained",color:j?"success":"primary",onClick:l,disabled:i,children:i?"Validating...":"1) Parse"})})]}),h?.valid&&(0,d.jsxs)(e.default,{children:[(0,d.jsx)(k.default,{variant:"subtitle2",gutterBottom:!0,children:"Where to save the repository?"}),(0,d.jsx)(s.A,{fullWidth:!0,value:c,onChange:a=>g(a.target.value),variant:"outlined",size:"small",InputProps:{endAdornment:(0,d.jsx)(u.A,{position:"end",children:(0,d.jsx)(v.A,{onClick:async()=>{try{let a=await window.showDirectoryPicker(),b=(m?`${m}/${a.name}`:`${a.name}`).replace(/\\/g,"/");g(b)}catch(a){console.error("Failed to select folder:",a)}},edge:"end",children:(0,d.jsx)(q.A,{})})})}})]})]})},y=({showCloneButton:a,isCloning:b,cloneCompleted:c,repoInfo:f,repoExists:g,onClone:h})=>a?(0,d.jsxs)(e.default,{sx:{display:"flex",justifyContent:"flex-end",gap:2},children:[g&&(0,d.jsx)(t.A,{variant:"outlined",color:"warning",onClick:()=>{h(!0)},disabled:b||!f,children:b?"Processing...":"Re-clone (Force)"}),(0,d.jsx)(t.A,{variant:"contained",color:c?"success":"primary",onClick:()=>{h(!1)},disabled:b||!f,children:b?"Processing...":g?"Use Existing":"2) Clone Repository"})]}):null,z=async a=>{try{let b,c,d=new URL(a);if("github.com"!==d.hostname)throw Error("Not a GitHub URL");let e=a.match(/^https:\/\/github\.com\/([^\/]+)\/([^\/]+)\/(?:blob|tree)\/.*$/);if(e)b=e[1],c=e[2];else{let a=d.pathname.split("/").filter(Boolean);if(a.length>=2)b=a[0],c=a[1];else throw Error("Invalid repository path")}let f=await fetch(`https://api.github.com/repos/${b}/${c}`);if(!f.ok)throw Error("Repository not found or not accessible");await f.json();let g=await fetch(`https://api.github.com/repos/${b}/${c}/contents`);if(!g.ok)throw Error("Could not fetch repository contents");let h=await g.json();return{repoInfo:{owner:b,repo:c,valid:!0,contents:h},message:{type:"success",text:`Valid repository: ${b}/${c}`},showCloneButton:!0}}catch(a){return console.error("GitHub parsing error:",a),{repoInfo:null,message:{type:"error",text:a.message||"Invalid GitHub URL. Please enter a valid repository URL."},showCloneButton:!1}}},A=async(a,b,c,d=!1)=>{try{let b=a,e=b.match(/^(https:\/\/github\.com\/[^\/]+\/[^\/]+)\/(?:blob|tree)\/.*$/);e&&(b=e[1]);let f=b.endsWith(".git")?b:`${b.replace(/\/$/,"")}.git`,g=c.replace(/\\/g,"/"),h=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"clone",repoUrl:f,savePath:g,branch:void 0,forceClone:d})}),i=await h.json();if(!h.ok&&!("exists"in i))throw Error(i.error||"Failed to clone repository");let j=i.relativePath.replace(/\\/g,"/");return{success:!0,message:{type:"success",text:"Repository cloned successfully."},clonedRepoPath:j,envExample:i.envExample}}catch(b){console.error("Error cloning repository:",b);let a=b.message||"";if(a.includes("directory already exist")){let b=a.match(/directory already exist: (.+?)(,|\.|$)/);return{success:!0,message:{type:"warning",text:a},clonedRepoPath:(b?b[1]:c).replace(/\\/g,"/"),envExample:void 0}}return{success:!1,message:{type:"error",text:a||"Error cloning repository. Please try again or configure manually."},envExample:void 0}}},B=(0,j.h)("utils/mcp/processPathLikeArgument");function C(a,b=!0,c){console.log("parseServerConfig: Starting with text length:",a.length);try{let d,e,f;console.log("parseServerConfig: Unescaping markdown characters");let g=a.replace(/\\#/g,"#").replace(/\\\[/g,"[").replace(/\\\]/g,"]").replace(/\\`\\`\\`/g,"```").replace(/\\`/g,"`");console.log("parseServerConfig: Unescaped text length:",g.length),console.log("parseServerConfig: Setting up command patterns"),console.log("parseServerConfig: Extracting code blocks");let h=[...g.matchAll(/```(?:bash|sh|cmd|powershell|batch)?\s*([\s\S]*?)```/gm)].map(a=>a[1]);console.log("parseServerConfig: Found",h.length,"code blocks");let i=[];console.log("parseServerConfig: Looking for build/install commands in main text");let j=g.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);j&&(d=j[0].trim(),console.log("parseServerConfig: Found build command in main text:",d));let k=g.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);k&&(e=k[0].trim(),console.log("parseServerConfig: Found install command in main text:",e)),console.log("parseServerConfig: Checking code blocks for commands");for(let a=0;a<h.length;a++){let b=h[a];console.log(`parseServerConfig: Processing code block ${a+1}/${h.length}, length: ${b.length}`);let c=b.split("\n");console.log(`parseServerConfig: Code block has ${c.length} lines`);for(let a=0;a<c.length;a++){let b=c[a];if(console.log(`parseServerConfig: Processing line ${a+1}: "${b}"`),!d){let a=b.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]*$/);a&&(d=a[1].trim(),console.log(`parseServerConfig: Found build command in code block: ${d}`))}if(!e){let a=b.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]*$/);a&&(e=a[1].trim(),console.log(`parseServerConfig: Found install command in code block: ${e}`))}console.log(`parseServerConfig: Checking for run command in line: "${b}"`);let g=b.match(/(run\.bat|\.\/run\.bat|run\.sh|\.\/run\.sh|npm start|yarn start|pnpm start|python|node|vite)(?:\s+(.+))?/);if(g&&(console.log(`parseServerConfig: Found potential run command: ${g[0]}`),!f)&&(f=g[1].trim(),console.log(`parseServerConfig: Set extracted command to: ${f}`),g[2])){let a=g[2].trim().split(/\s+/);console.log(`parseServerConfig: Extracted args: ${a.join(", ")}`),i=a}}}console.log("parseServerConfig: Cleaning text for JSON parsing");let l=a.replace(/\/\/.*$/gm,""),m="",n="",o=!1,p="";console.log("parseServerConfig: Attempting to extract server config"),console.log("parseServerConfig: Trying to match mcpServers structure");let q=l.match(/"mcpServers"\s*:\s*{\s*"([^"]+)"\s*:\s*({[^}]+})/);if(q)[,m,n]=q,o=!0,p="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 a=l.match(/"([^"]+)"\s*:\s*({[^{]*"command"\s*:[^{]*"args"\s*:[^}]*})/);a?([,m,n]=a,o=!0,p="direct structure",console.log("parseServerConfig: Found direct server configuration for:",m)):(console.log("parseServerConfig: No valid configuration found in either structure"),n=l,console.log("parseServerConfig: Will attempt to extract any available information"),o=!1,p="extracted information")}console.log("parseServerConfig: Extracting command and args from config");let r=n.match(/"command"\s*:\s*"([^"]+)"/),s=r?r[1]:"";console.log("parseServerConfig: Extracted command:",s);let t=n.match(/"args"\s*:\s*\[([\s\S]*?)\]/),u=t?t[1].split(",").map(a=>a.trim()).map(a=>a.replace(/^"(.*)"$/,"$1")).filter(a=>a.length>0):[];console.log("parseServerConfig: Extracted args:",u),console.log("parseServerConfig: Extracting disabled and autoApprove settings");let v=n.match(/"disabled"\s*:\s*(true|false)/),w=!!v&&"true"===v[1];console.log("parseServerConfig: Extracted disabled:",w);let x=n.match(/"autoApprove"\s*:\s*\[([\s\S]*?)\]/),y=x?x[1].split(",").map(a=>a.trim()).map(a=>a.replace(/^"(.*)"$/,"$1")).filter(a=>a.length>0):[];console.log("parseServerConfig: Extracted autoApprove:",y);let z={};if(console.log("parseServerConfig: Parsing environment variables, parseEnvVars =",b),b){for(let a of(console.log("parseServerConfig: Extracting env vars with standard pattern"),g.matchAll(/^\ *(\w+)=["']?([^"'\r\n#]*)["']?(?:\s*#[^\r\n]*)?(?=\r?\n|$)/gm))){let b=a[1],c=a[2].trim();b&&void 0!==c&&(z[b]=c,console.log(`parseServerConfig: Found env var (standard): ${b}=${c}`))}for(let a of(console.log("parseServerConfig: Extracting env vars with README pattern"),g.matchAll(/(?:^|\n)[-*]?\s*`?(\w+)`?(?:\s*:|=)\s*[`"']?([^`"'\r\n#]*)(?:[`"'])?(?:\s*#[^\r\n]*)?(?=\r?\n|$)/gm))){let b=a[1],c=a[2].trim();b&&void 0!==c&&!z[b]&&(z[b]=c,console.log(`parseServerConfig: Found env var (README): ${b}=${c}`))}}console.log("parseServerConfig: Building final config object");let A=s||f||"";console.log("parseServerConfig: Final command:",A);let C=s&&u.length>0?u:f&&i.length>0?i:u,D=c||m,E=C.map(a=>(function(a,b){if(B.debug("processPathLikeArgument: Entering method",{arg:a,serverName:b}),!a||"string"!=typeof a||!a.includes("/")&&!a.includes("\\"))return a;if(/^@[^/\s]+\/[^/\s@]+(?:@[^/\s]+)?$/.test(a))return B.debug(`processPathLikeArgument: Detected scoped npm package, leaving unchanged: ${a}`),a;B.debug(`processPathLikeArgument: Processing argument: ${a}`);let c=a;for(let a of["/path/to","PATH_TO","path/to","PATH/TO","/PATH/TO","/PATH_TO","path_to"]){let b=c.indexOf(a);if(-1!==b){c=c.substring(b+a.length),B.debug(`processPathLikeArgument: Stripped path pattern "${a}": ${c}`);break}}if(b&&c.includes(b)){let a=RegExp(`(^|[\\/\\\\])${b}([\\/\\\\]|$)`);a.test(c)&&(c=c.replace(a,"$1$2"),B.debug(`processPathLikeArgument: Removed server name "${b}": ${c}`),c=c.replace(/\/\//g,"/"))}return(c.startsWith("/")||c.startsWith("\\"))&&(c=c.substring(1),B.debug(`processPathLikeArgument: Removed leading slash: ${c}`)),c||(c=".",B.debug('processPathLikeArgument: Empty result, replaced with "."')),B.debug(`processPathLikeArgument: Final result: ${c}`),c})(a,D));console.log("parseServerConfig: Final args (after path processing):",E);let F={name:m||"",command:A,args:E,env:z,disabled:w,autoApprove:y,_buildCommand:d,_installCommand:e};if(console.log("parseServerConfig: Config object created:",JSON.stringify(F,null,2)),console.log("parseServerConfig: Preparing return message"),o)return console.log(`parseServerConfig: Returning success - config found in ${p}`),{config:F,foundExplicitConfig:!0,message:{type:"success",text:`Configuration for "${m}" extracted successfully from ${p}.`}};{let a=[];if(s&&a.push("command"),u.length>0&&a.push("arguments"),Object.keys(z).length>0&&a.push("environment variables"),a.length>0)return console.log(`parseServerConfig: Returning warning - partial data extracted: ${a.join(", ")}`),{config:F,foundExplicitConfig:!1,message:{type:"warning",text:`No complete server configuration found, but extracted: ${a.join(", ")}.`}};return console.log("parseServerConfig: Returning error - no data found"),{config:F,foundExplicitConfig:!1,message:{type:"error",text:"No server configuration data found."}}}}catch(a){return console.error("parseServerConfig: Exception occurred:",a),{config:{},foundExplicitConfig:!1,message:{type:"error",text:"Failed to extract server configuration. Please check the content format."}}}}(0,j.h)("utils/mcp/parseServerConfigFromClipboard");let D=(0,j.h)("utils/mcp/configparse/utils");async function E(a,b,c=!1){try{D.debug(`Checking if file exists: ${a}/${b}`);let d=a.endsWith("/")||a.endsWith("\\")?`${a}${b}`:`${a}/${b}`;D.debug(`Constructed full path: ${d}`);let e=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"readFile",savePath:d})});if(!e.ok)return D.debug(`File does not exist: ${a}/${b}`),{exists:!1};let f=await e.json();if(!f.content&&c)return D.debug(`File exists but is empty: ${a}/${b}`),{exists:!0,content:""};return D.debug(`File exists: ${a}/${b}`),{exists:!0,content:c?f.content:void 0}}catch(c){return D.error(`Error checking if file exists: ${a}/${b}`,c),{exists:!1}}}async function F(a,b){try{let c=await E(a,b,!0);return c.exists&&c.content?c.content:null}catch(c){return D.error(`Error reading file: ${a}/${b}`,c),null}}let G=(0,j.h)("utils/mcp/configparse/typescript");async function H(a){let{repoPath:b,repoName:c}=a;G.debug(`Parsing TypeScript configuration for ${b}`);let d=await E(b,"package.json",!0);if(!d.exists||!d.content)return G.debug(`No package.json found in ${b}`),{detected:!1,language:"typescript",message:{type:"warning",text:"No package.json found in the repository."}};try{let a=JSON.parse(d.content);G.debug(`Successfully parsed package.json for ${b}`);let e=function(a){if(a.packageManager){if(a.packageManager.startsWith("yarn"))return"yarn install";else if(a.packageManager.startsWith("pnpm"))return"pnpm install"}return"npm install --include=dev"}(a),f=function(a){let b=a.scripts||{};return b.build?"npm run build":b.compile?"npm run compile":b.dist?"npm run dist":b.prepare&&b.prepare.includes("build")?"npm run prepare":""}(a),g="node",h=await I(a,b),i=await J(b),j=((await E(b,"tsconfig.json")).exists,"typescript");return{detected:!0,language:j,installCommand:e,buildCommand:f,runCommand:g,args:h,env:i,message:{type:"success",text:"TypeScript/JavaScript configuration detected successfully."},config:{name:c,transport:"stdio",command:g,args:h,env:i,_buildCommand:f,_installCommand:e}}}catch(a){return G.error(`Error parsing package.json for ${b}:`,a),{detected:!1,language:"typescript",message:{type:"error",text:`Error parsing package.json: ${a instanceof Error?a.message:"Unknown error"}`}}}}async function I(a,b){let c=a.scripts||{},d=a.main||"",e=[],f="dist";if(c.build){let a=c.build,b=a.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]+)["']?/);b&&b[1]&&(f=b[1],G.debug(`Extracted output directory from build script: ${f}`));let d=a.match(/(?:webpack|rollup|vite).*(?:--output\s+|--output=|--output\s*=\s*|-o\s+|-o=|-o\s*=\s*)["']?([^"'\s]+)["']?/);d&&d[1]&&(f=d[1],G.debug(`Extracted output directory from webpack/rollup/vite build script: ${f}`)),(a.includes("build/")||a.includes("build\\"))&&(f="build",G.debug("Found 'build' directory reference in build script"))}if(c.start){let a=c.start,b=a.match(/node\s+(?:--[^\s]+=?[^\s]*\s+)*([^\s]+)/);if(b&&b[1])return G.debug(`Extracted entry point from start script: ${b[1]}`),e.push(b[1]),e;let d=a.match(/\b((?:\.\/)?(?:[\w\-\.\/]+)\.js)\b/);if(d&&d[1])return G.debug(`Found .js file in start script: ${d[1]}`),e.push(d[1]),e;let g=a.match(/ts-node\s+([^\s]+)/);if(g&&g[1]){let a=g[1].replace(/\.ts$/,".js").replace(/^src\//,`${f}/`);return e.push(a),e}}if(d&&!d.endsWith(".ts"))return e.push(d),e;let g=`${f}/index.js`;if((await E(b,g)).exists)return e.push(g),e;for(let a of["dist/index.js","build/index.js","lib/index.js","out/index.js"])if((await E(b,a)).exists)return e.push(a),e;return e.push(`${f}/index.js`),e}async function J(a){let b=await F(a,".env.example");if(!b)return{};let c={};for(let a of b.split("\n")){let b=a.trim();if(b.startsWith("#")||""===b)continue;let d=b.match(/^([^=]+)=(.*)$/);if(d){let a=d[1].trim(),b=d[2].trim().replace(/^["'](.*)["']$/,"$1");c[a]=b}}return c}let K=(0,j.h)("utils/mcp/configparse/python");async function L(a){var b;let{repoPath:c,repoName:d}=a;K.debug(`Parsing Python configuration for ${c}`);let e=await E(c,"requirements.txt"),f=await E(c,"pyproject.toml",!0),g=await E(c,"setup.py",!0);if(!e.exists&&!f.exists&&!g.exists)return K.debug(`No Python project files found in ${c}`),{detected:!1,language:"python",message:{type:"warning",text:"No Python project files found in the repository."}};let h=(b=e.exists,f.exists?"uv sync":b?"uv venv && uv pip install -r requirements.txt":"uv venv && uv pip install -e ."),{runCommand:i,args:j}=await M(c,f.content,g.content),k=await N(c);return{detected:!0,language:"python",installCommand:h,buildCommand:"",runCommand:i,args:j,env:k,message:{type:"success",text:"Python configuration detected successfully."},config:{name:d,transport:"stdio",command:i,args:j,env:k,_buildCommand:"",_installCommand:h}}}async function M(a,b,c){let d=["run","python"];for(let b 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 E(a,b)).exists)return d.push(b),{runCommand:"uv",args:d};if(b)try{let a=b.match(/\[tool\.poetry\.scripts\]([\s\S]*?)(\[|$)/);if(a){let b=a[1].match(/(\w+)\s*=\s*["']([^"']+)['"]/);if(b){let a=b[2].split(":")[0];return d.push("-m"),d.push(a),{runCommand:"uv",args:d}}}let c=b.match(/\[project\][\s\S]*?name\s*=\s*["']([^"']+)['"]/);if(c){let a=c[1].replace(/-/g,"_");return d.push("-m"),d.push(a),{runCommand:"uv",args:d}}}catch(a){K.error("Error parsing pyproject.toml:",a)}if(c)try{let a=c.match(/name\s*=\s*["']([^"']+)['"]/);if(a){let b=a[1].replace(/-/g,"_");return d.push("-m"),d.push(b),{runCommand:"uv",args:d}}}catch(a){K.error("Error parsing setup.py:",a)}return 2===d.length&&d.push("main.py"),{runCommand:"uv",args:d}}async function N(a){let b=await F(a,".env.example");if(!b)return{};let c={};for(let a of b.split("\n")){let b=a.trim();if(b.startsWith("#")||""===b)continue;let d=b.match(/^([^=]+)=(.*)$/);if(d){let a=d[1].trim(),b=d[2].trim().replace(/^["'](.*)["']$/,"$1");c[a]=b}}return c}let O=(0,j.h)("utils/mcp/configparse/java");async function P(a){var b,c,d,e,f,g,h,i;let{repoPath:j,repoName:k}=a;O.debug(`Parsing Java configuration for ${j}`);let l=await E(j,"pom.xml",!0),m=await E(j,"build.gradle",!0),n=await E(j,"gradlew"),o=await E(j,"mvnw");if(!l.exists&&!m.exists)return O.debug(`No Java project files found in ${j}`),{detected:!1,language:"java",message:{type:"warning",text:"No Java project files found in the repository."}};let p=l.exists,q=m.exists,r=n.exists,s=o.exists,t=(b=p,c=q,d=s,e=r,b?d?"./mvnw install -DskipTests":"mvn install -DskipTests":c?e?"./gradlew dependencies":"gradle dependencies":""),u=(f=p,g=q,h=s,i=r,f?h?"./mvnw package -DskipTests":"mvn package -DskipTests":g?i?"./gradlew build":"gradle build":""),{runCommand:v,args:w}=await Q(j,p,q,l.content,m.content),x=await R(j);return{detected:!0,language:"java",installCommand:t,buildCommand:u,runCommand:v,args:w,env:x,message:{type:"success",text:"Java configuration detected successfully."},config:{name:k,transport:"stdio",command:v,args:w,env:x,_buildCommand:u,_installCommand:t}}}async function Q(a,b,c,d,e){let f="java",g=[];if(g.push("-jar"),b)try{if(d){let a=d.match(/<artifactId>([^<]+)<\/artifactId>/);if(a){let b=a[1],c=`target/${b}*.jar`;return g.push(c),{runCommand:f,args:g}}}return g.push("target/*.jar"),{runCommand:f,args:g}}catch(a){O.error("Error determining Maven JAR path:",a)}else if(c)try{let b="build/libs/*-all.jar";if((await E(a,b)).exists)return g.push(b),{runCommand:f,args:g};let c="build/libs/*-fat.jar";if((await E(a,c)).exists)return g.push(c),{runCommand:f,args:g};return g.push("build/libs/*.jar"),{runCommand:f,args:g}}catch(a){O.error("Error determining Gradle JAR path:",a)}if(1===g.length){for(let b of["target/*.jar","build/libs/*.jar","out/artifacts/*/*.jar"])if((await E(a,b)).exists)return g.push(b),{runCommand:f,args:g};g.push("target/*.jar")}return{runCommand:f,args:g}}async function R(a){let b=await F(a,".env.example");if(!b)return{};let c={};for(let a of b.split("\n")){let b=a.trim();if(b.startsWith("#")||""===b)continue;let d=b.match(/^([^=]+)=(.*)$/);if(d){let a=d[1].trim(),b=d[2].trim().replace(/^["'](.*)["']$/,"$1");c[a]=b}}return c}let S=(0,j.h)("utils/mcp/configparse/kotlin");async function T(a){var b,c,d,e,f,g;let{repoPath:h,repoName:i}=a;S.debug(`Parsing Kotlin configuration for ${h}`);let j=await E(h,"build.gradle.kts",!0),k=await E(h,"build.gradle",!0),l=await E(h,"gradlew"),m=await U(h);if(!j.exists&&!m){if(!k.exists)return S.debug(`No Kotlin project files found in ${h}`),{detected:!1,language:"kotlin",message:{type:"warning",text:"No Kotlin project files found in the repository."}};else if(!(k.content&&(k.content.includes("kotlin")||k.content.includes("org.jetbrains.kotlin"))))return S.debug(`No Kotlin project files found in ${h}`),{detected:!1,language:"kotlin",message:{type:"warning",text:"No Kotlin project files found in the repository."}}}let n=j.exists,o=k.exists,p=l.exists,q=(b=n,c=o,d=p,b||c?d?"./gradlew dependencies":"gradle dependencies":""),r=(e=n,f=o,g=p,e||f?g?"./gradlew build":"gradle build":""),{runCommand:s,args:t}=await V(h,n,o,j.content,k.content),u=await W(h);return{detected:!0,language:"kotlin",installCommand:q,buildCommand:r,runCommand:s,args:t,env:u,message:{type:"success",text:"Kotlin configuration detected successfully."},config:{name:i,transport:"stdio",command:s,args:t,env:u,_buildCommand:r,_installCommand:q}}}async function U(a){for(let b of["src/main/kotlin","src/test/kotlin","src"])if((await E(a,b)).exists)return!0;return!1}async function V(a,b,c,d,e){let f="java",g=[];g.push("-jar");try{let h="build/libs/*-all.jar";if((await E(a,h)).exists)return g.push(h),{runCommand:f,args:g};let i="build/libs/*-fat.jar";if((await E(a,i)).exists)return g.push(i),{runCommand:f,args:g};let j="build/libs/*-with-dependencies.jar";if((await E(a,j)).exists)return g.push(j),{runCommand:f,args:g};let k="";if(b&&d){let a=d.match(/mainClass\.set\(["']([^"']+)["']\)/);a&&(k=a[1])}else if(c&&e){let a=e.match(/mainClassName\s*=\s*['"]([^'"]+)['"]/);a&&(k=a[1])}if(k){let b=k.split("."),c=b[b.length-1].toLowerCase(),d=`build/libs/*${c}*.jar`;if((await E(a,d)).exists)return g.push(d),{runCommand:f,args:g}}return g.push("build/libs/*.jar"),{runCommand:f,args:g}}catch(a){S.error("Error determining Kotlin JAR path:",a)}if(1===g.length){for(let b of["build/libs/*.jar","out/artifacts/*/*.jar"])if((await E(a,b)).exists)return g.push(b),{runCommand:f,args:g};g.push("build/libs/*.jar")}return{runCommand:f,args:g}}async function W(a){let b=await F(a,".env.example");if(!b)return{};let c={};for(let a of b.split("\n")){let b=a.trim();if(b.startsWith("#")||""===b)continue;let d=b.match(/^([^=]+)=(.*)$/);if(d){let a=d[1].trim(),b=d[2].trim().replace(/^["'](.*)["']$/,"$1");c[a]=b}}return c}let X=(0,j.h)("utils/mcp/configparse/index");async function Y(a){let{repoPath:b,repoName:c}=a;X.debug(`Parsing repository configuration for ${b}`);let d=await Z(b,c);if(d.detected&&d.foundExplicitConfig&&d.runCommand)return X.debug(`Explicit configuration found in README for ${b}`),d;X.debug(`Trying TypeScript/JavaScript parser for ${b}`);let e=await H(a);if(e.detected)return X.debug(`TypeScript/JavaScript configuration detected for ${b}`),e;X.debug(`Trying Python parser for ${b}`);let f=await L(a);if(f.detected)return X.debug(`Python configuration detected for ${b}`),f;X.debug(`Trying Java parser for ${b}`);let g=await P(a);if(g.detected)return X.debug(`Java configuration detected for ${b}`),g;X.debug(`Trying Kotlin parser for ${b}`);let h=await T(a);return h.detected?(X.debug(`Kotlin configuration detected for ${b}`),h):d.detected?(X.debug(`Configuration extracted from README for ${b}`),d):(X.debug(`No configuration detected for ${b}, returning default configuration`),{detected:!1,language:"unknown",message:{type:"error",text:"Could not detect repository configuration. Please configure manually."},config:{name:c,transport:"stdio",command:"",args:[],env:{},_buildCommand:"",_installCommand:""}})}async function Z(a,b){try{let c=`${a}/README.md`,d=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"readFile",savePath:c})});if(!d.ok)return X.debug(`Failed to read README file from ${a}`),{detected:!1,language:"unknown",message:{type:"warning",text:"No README file found in the repository."}};let e=await d.json();if(!e.content)return X.debug(`README file is empty in ${a}`),{detected:!1,language:"unknown",message:{type:"warning",text:"README file is empty."}};let f=await _(e.content,{name:b,transport:"stdio",command:"",args:[],env:{},disabled:!1,autoApprove:[],rootPath:a,_buildCommand:"",_installCommand:""},b);if(f.config&&("stdio"===f.config.transport&&f.config.command||f.config._buildCommand||f.config._installCommand))return{detected:!0,language:"unknown",foundExplicitConfig:f.foundExplicitConfig,installCommand:f.config._installCommand||"",buildCommand:f.config._buildCommand||"",runCommand:"stdio"===f.config.transport&&f.config.command||"",args:"stdio"===f.config.transport&&f.config.args||[],env:f.config.env?Object.fromEntries(Object.entries(f.config.env).map(([a,b])=>[a,"string"==typeof b?b:b.value])):{},message:f.message||{type:"success",text:"Configuration extracted from README."},config:f.config};return{detected:!1,language:"unknown",message:{type:"warning",text:"No configuration found in README."}}}catch(b){return X.error(`Error parsing README from ${a}:`,b),{detected:!1,language:"unknown",message:{type:"error",text:`Error parsing README: ${b instanceof Error?b.message:"Unknown error"}`}}}}function $(a){return"stdio"===a.transport}let _=async(a,b,c)=>{try{let d=c||b.name,e=C(a,!1,d);if(!e.config||!(Object.keys(e.config).length>0))return{config:b,foundExplicitConfig:!1,message:{type:"warning",text:"No server configuration found in README."}};{let a={...b,...e.config,name:b.name,env:{...b.env,...e.config.env}},c="command"in e.config;return{config:$(a)||c?{...a,command:c&&e.config.command||"",transport:a.transport||"stdio"}:{...a,transport:a.transport||"websocket",websocketUrl:a.websocketUrl||""},foundExplicitConfig:e.foundExplicitConfig,message:{type:"success",text:"Server configuration extracted from README."}}}}catch(a){return console.error("Error parsing README:",a),{config:b,message:{type:"error",text:`Error parsing README: ${a.message||"Unknown error"}`}}}},aa=async(a,b)=>{try{let c=b||a.name,d=await window.navigator.clipboard.readText().then(a=>C(a,!1,c));if(!d.config||!(Object.keys(d.config).length>0))return{config:a,message:d.message||{type:"warning",text:"No valid configuration found in clipboard."}};{let b={...a,...d.config,name:a.name,env:{...a.env,...d.config.env}},c="command"in d.config;return{config:$(b)||c?{...b,command:c&&d.config.command||"",transport:b.transport||"stdio"}:{...b,transport:b.transport||"websocket",websocketUrl:b.websocketUrl||""},message:d.message||{type:"success",text:"Configuration parsed from clipboard."}}}}catch(b){return console.error("Error parsing clipboard:",b),{config:a,message:{type:"error",text:`Error parsing clipboard: ${b.message||"Unknown error"}`}}}},ab=(0,j.h)("frontend/components/mcp/MCPServerManager/Modals/ServerModal/utils/configDetection");async function ac(a,b,c){try{ab.debug(`Detecting configuration for repository: ${a}`);let d=await Y({repoPath:a,repoName:b,owner:c});if(d.detected&&d.config)return ab.debug(`Configuration detected for ${a}`,{language:d.language}),{config:d.config,message:d.message||{type:"success",text:"Configuration detected successfully."},success:!0,language:d.language};return ab.debug(`No configuration detected for ${a}`),{config:{name:b,transport:"stdio",command:"",args:[],env:{},disabled:!1,autoApprove:[],rootPath:a,_buildCommand:"",_installCommand:""},message:d.message||{type:"warning",text:"Could not detect repository configuration. Please configure manually."},success:!1,language:d.language}}catch(c){return ab.error(`Error detecting configuration for ${a}:`,c),{config:{name:b,transport:"stdio",command:"",args:[],env:{},disabled:!1,autoApprove:[],rootPath:a,_buildCommand:"",_installCommand:""},message:{type:"error",text:`Error detecting configuration: ${c instanceof Error?c.message:"Unknown error"}`},success:!1}}}(0,j.h)("frontend/components/mcp/MCPServerManager/Modals/ServerModal/utils/errorHandling");var ad=c(33873),ae=c.n(ad);let af=({initialConfig:a,onAdd:b,onUpdate:c,onClose:g,setActiveTab:h,initialGitHubUrl:i})=>{let[j,m]=(0,f.useState)(i||""),[n,o]=(0,f.useState)(null),[q,s]=(0,f.useState)(""),[t,u]=(0,f.useState)(!1),[v,w]=(0,f.useState)(!1),[B,D]=(0,f.useState)(!1),[E,F]=(0,f.useState)(!1),[G,H]=(0,f.useState)(!1),[I,J]=(0,f.useState)(null),[K,L]=(0,f.useState)(""),[M,N]=(0,f.useState)(null),[O,P]=(0,f.useState)(""),[Q,R]=(0,f.useState)(!1);(0,f.useEffect)(()=>{(async()=>{try{let a=await fetch("/api/cwd"),b=await a.json();b.success&&b.mcpServersDir?P(b.mcpServersDir):console.error("Failed to get mcp-servers directory:",b.error)}catch(a){console.error("Error fetching cwd information:",a)}})()},[]);let S=async()=>{w(!0),J(null),R(!1);let a=await z(j);if(o(a.repoInfo),J(a.message),u(a.showCloneButton),a.repoInfo){if(O){let b=ae().join(O,a.repoInfo.repo);s(b),await T(b)}else try{let b=await fetch("/api/cwd"),c=await b.json();if(c.success&&c.mcpServersDir){P(c.mcpServersDir);let b=ae().join(c.mcpServersDir,a.repoInfo.repo);s(b),await T(b)}else console.error("Failed to get mcp-servers directory:",c.error),s(`./mcp-servers/${a.repoInfo.repo}`)}catch(b){console.error("Error fetching cwd information:",b),s(`./mcp-servers/${a.repoInfo.repo}`)}F(!0)}w(!1)},T=async a=>{try{let b=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"exists",savePath:a})}),c=await b.json();c.success&&c.exists?(R(!0),J({type:"warning",text:`Repository already exists at ${a}. You can re-clone to get the latest version.`})):R(!1)}catch(a){console.error("Error checking if repository exists:",a),R(!1)}},U=async(a=!1)=>{if(n){D(!0),J({type:"success",text:a?"Re-cloning repository...":"Cloning repository..."});try{let b=await A(j,n,q,a);if(!b.success||!b.clonedRepoPath){J(b.message),D(!1);return}let d=b.clonedRepoPath;L(d);let e={};b.envExample&&"string"==typeof b.envExample&&(e=(a=>{try{return a.split("\n").filter(a=>""!==a.trim()).reduce((a,b)=>{let[c,d]=b.split("=").map(a=>a.trim());return c&&d&&(a[c]=d),a},{})}catch(a){return console.error("Failed to parse env variables:",a),{}}})(b.envExample),console.log("Parsed environment variables from .env.example:",e));let f=await ac(d,n.repo,n.owner);J(f.message);let g={},i=f.message;if(f.success&&f.config)console.log("GitHubTab: Initial detection successful. Merging config."),g={...f.config,rootPath:d,env:{...f.config.env||{},...e}},i=f.message;else{console.log("GitHubTab: Initial detection failed. Attempting README parsing fallback.");let a={name:n.repo,transport:"stdio",command:"",args:[],env:e,disabled:!1,autoApprove:[],rootPath:d,_buildCommand:"",_installCommand:""};try{let b=ae().join(n.repo,"README.md");console.log(`GitHubTab: Reading README.md from relative path: ${b}`);let c=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"readFile",savePath:b})}),h=await c.json();if(h.success&&h.content){console.log("GitHubTab: README.md read successfully. Parsing content.");let b=C(h.content,!0,n.repo);console.log("GitHubTab: README parse result:",b),g={...a,...b.config,rootPath:d,env:{...a.env||{},...b.config?.env||{},...e},_buildCommand:b.config?._buildCommand||a._buildCommand,_installCommand:b.config?._installCommand||a._installCommand},i=b.message||{type:"warning",text:"Configuration partially extracted from README.md. Please review."}}else console.log("GitHubTab: Failed to read or parse README.md. Using default config."),g=a,i=function(a){let b=a?` for ${a}`:"";return{type:"warning",text:`No configuration detected${b}. Please configure manually.`}}(f.language)}catch(b){console.error("GitHubTab: Error reading or parsing README.md:",b),g=a,i={type:"error",text:`Error processing README.md: ${b instanceof Error?b.message:"Unknown error"}`}}}g={...g,source:{type:"github",repositoryUrl:j}},N(g),J(i),c&&g.name&&c(g),h&&h("local"),H(!0)}catch(a){console.error("Error during repository cloning or configuration detection:",a),J({type:"error",text:`Error processing repository: ${a instanceof Error?a.message:"Unknown error"}`})}finally{D(!1)}}};return(0,d.jsx)(l.A,{elevation:0,sx:{p:0},children:(0,d.jsxs)(r.A,{spacing:3,children:[(0,d.jsx)(k.default,{variant:"h6",gutterBottom:!0,children:"Import from GitHub or MCP Platform"}),(0,d.jsx)(x,{githubUrl:j,setGithubUrl:m,savePath:q,setSavePath:s,repoInfo:n,isValidating:v,parseCompleted:E,onValidate:S}),(0,d.jsx)(y,{showCloneButton:t,isCloning:B,cloneCompleted:G,repoInfo:n,repoExists:Q,onClone:U}),I&&(0,d.jsx)(e.default,{children:(0,d.jsx)(p.A,{severity:I.type,children:I.text})})]})})};var ag=c(22813),ah=c(92812),ai=c(60839);let aj=({output:a,isVisible:b,toggleVisibility:c,title:f="Command Output"})=>{let g=(0,ai.A)();return(0,d.jsxs)(l.A,{variant:"outlined",sx:{p:2,height:"100%",display:"flex",flexDirection:"column"},children:[(0,d.jsxs)(e.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:2},children:[(0,d.jsx)(k.default,{variant:"h6",children:f}),(0,d.jsx)(v.A,{onClick:c,size:"small",title:b?"Hide console":"Show console",color:"inherit",sx:{color:"text.secondary"},children:b?(0,d.jsx)(ah.A,{}):(0,d.jsx)(ag.A,{})})]}),(0,d.jsx)(e.default,{sx:{fontFamily:"monospace",p:2,borderRadius:1,bgcolor:"dark"===g.palette.mode?"#121212":"#1a1a1a",color:"#4ade80",flex:1,overflow:"auto"},children:a?(0,d.jsx)(e.default,{component:"pre",sx:{whiteSpace:"pre-wrap",m:0},children:a}):(0,d.jsx)(k.default,{variant:"body2",sx:{fontStyle:"italic",color:"text.secondary"},children:"No output to display"})})]})},ak=()=>{let[a,b]=(0,f.useState)(""),[c,d]=(0,f.useState)(!1),[e,g]=(0,f.useState)("Command Output");return{consoleOutput:a,isConsoleVisible:c,consoleTitle:e,setConsoleTitle:g,toggleConsoleVisibility:()=>{d(a=>!a)},setIsConsoleVisible:d,appendToConsole:a=>{b(b=>b+a)},clearConsole:()=>{b("")},updateConsole:a=>{b(a)}}},al=({name:a,setName:b,rootPath:c,setRootPath:f,onRootPathSelect:g})=>(0,d.jsxs)(r.A,{spacing:3,children:[(0,d.jsxs)(e.default,{children:[(0,d.jsx)(k.default,{variant:"subtitle2",gutterBottom:!0,children:"Server Name"}),(0,d.jsx)(s.A,{fullWidth:!0,size:"small",value:a,onChange:a=>b(a.target.value),placeholder:"my-mcp-server",variant:"outlined",required:!0})]}),(0,d.jsxs)(e.default,{children:[(0,d.jsx)(k.default,{variant:"subtitle2",gutterBottom:!0,children:"MCP Server Root Path"}),(0,d.jsx)(s.A,{fullWidth:!0,size:"small",value:c,onChange:a=>f(a.target.value),placeholder:"/path/to/server/root",variant:"outlined",InputProps:{endAdornment:(0,d.jsx)(u.A,{position:"end",children:(0,d.jsx)(v.A,{onClick:g,edge:"end",children:(0,d.jsx)(q.A,{})})})}})]})]});var am=c(8521);let an=({installCommand:a,setinstallCommand:b,buildCommand:c,setBuildCommand:g,onInstall:h,onBuild:i,isInstalling:j,isBuilding:m,installCompleted:n,buildCompleted:o,buildMessage:q})=>{let u=["Still working on it...","Don't close this window!","This can take some time...","Backend is processing your request...","Almost there, please wait...","Processing in progress..."],v=[...u,"Installing dependencies...","NPM install in progress...","Fetching packages from registry..."],w=[...u,"Building server...","Compiling source code...","Bundling files..."],[x,y]=(0,f.useState)(0),[z,A]=(0,f.useState)(0);return(0,f.useEffect)(()=>{let a;return j&&(a=setInterval(()=>{y(a=>(a+1)%v.length)},3e3)),()=>{a&&clearInterval(a)}},[j,v.length]),(0,f.useEffect)(()=>{let a;return m&&(a=setInterval(()=>{A(a=>(a+1)%w.length)},3e3)),()=>{a&&clearInterval(a)}},[m,w.length]),(0,d.jsxs)(r.A,{spacing:3,children:[q&&"error"===q.type&&(0,d.jsx)(p.A,{severity:"error",sx:{mb:2},children:q.text}),(0,d.jsxs)(e.default,{children:[(0,d.jsx)(k.default,{variant:"subtitle2",gutterBottom:!0,children:"Install Script"}),(0,d.jsx)(s.A,{fullWidth:!0,size:"small",value:a,onChange:a=>b(a.target.value),variant:"outlined"}),(0,d.jsxs)(e.default,{sx:{display:"flex",flexDirection:"column",alignItems:"flex-end",mt:1},children:[j&&(0,d.jsxs)(l.A,{elevation:3,sx:{p:2,mb:2,width:"100%",bgcolor:"info.lighter",display:"flex",alignItems:"center",gap:2},children:[(0,d.jsx)(am.default,{size:20,color:"info"}),(0,d.jsx)(k.default,{variant:"body2",color:"info.dark",fontWeight:"medium",children:v[x]})]}),(0,d.jsx)(t.A,{variant:"contained",color:n?"success":"primary",onClick:h,disabled:j,children:j?"Installing...":"1) Install Dependencies"})]})]}),(0,d.jsxs)(e.default,{children:[(0,d.jsx)(k.default,{variant:"subtitle2",gutterBottom:!0,children:"Build Command"}),(0,d.jsx)(s.A,{fullWidth:!0,size:"small",value:c,onChange:a=>g(a.target.value),variant:"outlined"}),(0,d.jsxs)(e.default,{sx:{display:"flex",flexDirection:"column",alignItems:"flex-end",mt:1},children:[m&&(0,d.jsxs)(l.A,{elevation:3,sx:{p:2,mb:2,width:"100%",bgcolor:"info.lighter",display:"flex",alignItems:"center",gap:2},children:[(0,d.jsx)(am.default,{size:20,color:"info"}),(0,d.jsx)(k.default,{variant:"body2",color:"info.dark",fontWeight:"medium",children:w[z]})]}),(0,d.jsx)(t.A,{variant:"contained",color:o?"success":"primary",onClick:i,disabled:m,children:m?"Building...":"2) Build Server"})]})]})]})};var ao=c(38296),ap=c(41893),aq=c(95587),ar=c(77028),as=c(43312),at=c(6537),au=c(47902),av=c(91034),aw=c(85557),ax=c(93083),ay=c(49938),az=c(82571),aA=c(92173);let aB=/^\$\{global:([A-Za-z0-9_.-]+)\}$/,aC=a=>Object.entries(a||{}).map(([a,b])=>{let c=null!==b&&"object"==typeof b&&"value"in b,d=c?b.value??"":b??"",e=c?!!b.metadata?.isSecret:(0,az.Hm)(a),f=d.match(aB);if(f)return{key:a,value:d,isSecret:e,isBound:!0,boundTo:f[1]};let g=d===aA.RJ||d===aA.gF;return{key:a,value:d,isSecret:e,isMasked:g}}),aD=a=>{let b={};return a.forEach(({key:a,value:c,isSecret:d,isBound:e,boundTo:f})=>{let g=a.trim();g&&(e&&f?b[g]={value:"${global:"+f+"}",metadata:{isSecret:!!d}}:b[g]={value:c,metadata:{isSecret:!!d}})}),b},aE=({headers:a,onChange:b})=>{let{globalEnvVars:c}=(0,ay.rX)(),[f,h]=g().useState(()=>aC(a)),[i,j]=g().useState(!1),[l,m]=g().useState(null),n=JSON.stringify(a||{}),o=g().useRef(n);g().useEffect(()=>{o.current!==n&&n!==JSON.stringify(aD(f))&&(h(aC(a)),o.current=n)},[n]);let p=a=>{h(a);let c=aD(a);o.current=JSON.stringify(c),b(c)};return(0,d.jsxs)(e.default,{children:[(0,d.jsx)(k.default,{variant:"subtitle2",gutterBottom:!0,children:"Custom HTTP Headers"}),(0,d.jsxs)(k.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:1.5},children:["Sent on every request to the server (e.g. an ",(0,d.jsx)("code",{children:"Authorization"})," header or any custom headers the server requires). Values can be marked ",(0,d.jsx)("strong",{children:"secret"})," (masked in the UI, encrypted at rest) or bound to a global variable."]}),(0,d.jsxs)(r.A,{spacing:1.5,children:[0===f.length&&(0,d.jsx)(k.default,{variant:"body2",color:"text.secondary",children:"No custom headers configured."}),f.map((a,b)=>(0,d.jsxs)(r.A,{direction:"row",spacing:1,alignItems:"flex-start",children:[(0,d.jsx)(s.A,{size:"small",label:"Header",placeholder:"Authorization",value:a.key,onChange:a=>((a,b)=>{p(f.map((c,d)=>{if(d!==a)return c;let e=c.isSecret||(0,az.Hm)(b);return{...c,key:b,isSecret:e}}))})(b,a.target.value),sx:{flex:"0 0 32%"}}),(0,d.jsx)(s.A,{size:"small",label:"Value",type:a.isSecret&&!a.isBound?"password":"text",placeholder:a.showWarning?"Re-enter value":a.isMasked?"(unchanged)":"Basic dXNlcjpwYXNz",value:a.isBound?"":a.value,onChange:a=>((a,b)=>{let c=b.match(aB);p(f.map((d,e)=>e===a?{...d,value:b,isBound:!!c,boundTo:c?.[1],isMasked:!1,showWarning:!1}:d))})(b,a.target.value),error:a.showWarning,helperText:a.showWarning?'Re-enter the value after turning off "Secret".':a.isMasked?"A secret is stored. Type to replace it, or bind to a global variable.":"",InputProps:{readOnly:a.isBound,endAdornment:a.isBound?(0,d.jsx)(u.A,{position:"end",children:(0,d.jsx)(ap.A,{size:"small",label:`Bound: ${a.boundTo}`,color:"primary",variant:"outlined",onDelete:()=>{p(f.map((a,c)=>c===b?{...a,isBound:!1,boundTo:void 0,value:""}:a))},deleteIcon:(0,d.jsx)(ax.A,{fontSize:"small"})})}):null},sx:{flex:1}}),(0,d.jsx)(aq.A,{control:(0,d.jsx)(ar.A,{checked:a.isSecret,onChange:a=>((a,b)=>{p(f.map((c,d)=>d!==a?c:c.isSecret&&!b&&c.isMasked?{...c,isSecret:b,value:"",isMasked:!1,showWarning:!0}:{...c,isSecret:b}))})(b,a.target.checked),size:"small"}),label:"Secret",sx:{mr:0,mt:.25}}),!a.isBound&&(0,d.jsx)(as.A,{title:"Bind to a global variable",children:(0,d.jsx)(v.A,{"aria-label":"bind header to global variable",size:"small",color:"primary",onClick:()=>{m(b),j(!0)},sx:{mt:.25},children:(0,d.jsx)(aw.A,{fontSize:"small"})})}),(0,d.jsx)(as.A,{title:"Remove header",children:(0,d.jsx)(v.A,{"aria-label":"remove header",onClick:()=>{p(f.filter((a,c)=>c!==b))},size:"small",sx:{mt:.25},children:(0,d.jsx)(av.A,{fontSize:"small"})})})]},b)),(0,d.jsx)(e.default,{children:(0,d.jsx)(t.A,{startIcon:(0,d.jsx)(au.A,{}),onClick:()=>{h(a=>[...a,{key:"",value:"",isSecret:!1}])},size:"small",variant:"outlined",children:"Add Header"})})]}),(0,d.jsx)(at.A,{open:i,onClose:()=>{j(!1),m(null)},children:(0,d.jsxs)(e.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,d.jsx)(k.default,{variant:"h6",sx:{mb:2},children:"Bind Header to Global Variable"}),0===Object.keys(c).length?(0,d.jsx)(k.default,{color:"text.secondary",sx:{mb:2},children:"No global variables available. Add some in Settings first."}):(0,d.jsx)(e.default,{sx:{maxHeight:300,overflow:"auto",mb:2},children:Object.keys(c).map(a=>(0,d.jsx)(t.A,{fullWidth:!0,variant:"text",onClick:()=>(a=>{null!==l&&(p(f.map((b,c)=>c===l?{...b,isBound:!0,boundTo:a,value:"${global:"+a+"}",isMasked:!1,showWarning:!1}:b)),j(!1),m(null))})(a),sx:{justifyContent:"flex-start",textAlign:"left",mb:1,p:1,borderRadius:1},children:(0,d.jsx)(k.default,{variant:"body2",children:a})},a))}),(0,d.jsx)(e.default,{sx:{display:"flex",justifyContent:"flex-end"},children:(0,d.jsx)(t.A,{variant:"outlined",onClick:()=>{j(!1),m(null)},children:"Cancel"})})]})})]})};var aF=c(35406),aG=c(38941);let aH=/^\$\{global:([^}]+)\}$/,aI=({clientId:a,clientSecret:b,onClientIdChange:c,onClientSecretChange:g})=>{let{globalEnvVars:h}=(0,ay.rX)(),[i,j]=(0,f.useState)(!1),l=b.match(aH),m=!!l,n=l?.[1]??null,o="/api/oauth/callback";return(0,d.jsxs)(e.default,{sx:{position:"relative"},children:[(0,d.jsxs)(k.default,{variant:"subtitle2",gutterBottom:!0,children:["OAuth Client Credentials"," ",(0,d.jsx)(k.default,{component:"span",variant:"caption",color:"text.secondary",children:"(optional)"})]}),(0,d.jsxs)(k.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:1.5},children:["Leave blank for servers that support automatic registration — just click Authenticate. Only fill these in if the server requires a pre-registered app (it will report that dynamic client registration is not supported). See the"," ",(0,d.jsx)(aF.A,{href:"https://modelcontextprotocol.io/specification/draft/basic/authorization",target:"_blank",rel:"noopener",children:"MCP authorization spec"}),"."]}),(0,d.jsx)(s.A,{fullWidth:!0,size:"small",label:"Client ID",value:a,onChange:a=>c(a.target.value),placeholder:"e.g. 1234567890abcdef",variant:"outlined",sx:{mb:1.5}}),(0,d.jsx)(s.A,{fullWidth:!0,size:"small",label:"Client Secret",type:m?"text":"password",value:b,onChange:a=>g(a.target.value),placeholder:"Only if the server requires it",variant:"outlined",autoComplete:"off",InputProps:{readOnly:m,endAdornment:m?(0,d.jsx)(as.A,{title:"Unbind from global variable",children:(0,d.jsx)(v.A,{size:"small",onClick:()=>g(""),children:(0,d.jsx)(ax.A,{fontSize:"small"})})}):(0,d.jsx)(as.A,{title:"Bind to a global variable",children:(0,d.jsx)(v.A,{size:"small",onClick:()=>j(!0),children:(0,d.jsx)(aw.A,{fontSize:"small"})})})},helperText:m?`Bound to global variable "${n}"`:b===aA.RJ?"A secret is stored. Type a new one to replace it, or bind it to a global variable.":void 0}),(0,d.jsxs)(e.default,{sx:{mt:1.5,display:"flex",alignItems:"center",gap:.5},children:[(0,d.jsx)(k.default,{variant:"caption",color:"text.secondary",children:"Redirect URI to register in the provider's app:"}),(0,d.jsx)(k.default,{variant:"caption",sx:{fontFamily:"monospace"},children:o}),(0,d.jsx)(as.A,{title:"Copy redirect URI",children:(0,d.jsx)(v.A,{size:"small",onClick:()=>navigator.clipboard.writeText(o),children:(0,d.jsx)(aG.A,{sx:{fontSize:14}})})})]}),i&&(0,d.jsxs)(e.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,d.jsx)(k.default,{variant:"h6",component:"h2",sx:{mb:2},children:"Bind Client Secret to Global Variable"}),0===Object.keys(h).length?(0,d.jsx)(k.default,{sx:{mb:2},children:"No global variables available. Add some in Settings first."}):(0,d.jsx)(e.default,{sx:{maxHeight:300,overflow:"auto",mb:2},children:Object.keys(h).map(a=>(0,d.jsx)(t.A,{onClick:()=>{g(`\${global:${a}}`),j(!1)},fullWidth:!0,sx:{justifyContent:"flex-start",textAlign:"left",mb:1,p:1,"&:hover":{bgcolor:"action.hover"}},children:(0,d.jsx)(k.default,{children:a})},a))}),(0,d.jsx)(e.default,{sx:{display:"flex",justifyContent:"flex-end"},children:(0,d.jsx)(t.A,{onClick:()=>j(!1),children:"Cancel"})})]})]})};var aJ=c(22042),aK=c(34304),aL=c(38233),aM=c(64956);let aN=new Set(["npx","bunx","uvx","pipx","dlx"]),aO=new Set(["pnpm","yarn","bun","npm"]),aP=new Set(["dlx","exec","x"]);function aQ(a,b=[]){let c=((a||"").split(/[\\/]/).filter(Boolean).pop()||"").toLowerCase().replace(/\.(cmd|exe|bat|ps1)$/i,"");if(aN.has(c))return!0;if(aO.has(c)){let a=(b[0]||"").toLowerCase();return aP.has(a)}return!1}function aR(a){return"stdio"===a.transport&&aQ(a.command,a.args??[])}let aS=({command:a,setCommand:b,transport:c,setTransport:g,websocketUrl:h,setWebsocketUrl:i,serverUrl:j,setServerUrl:l,onRun:m,isRunning:n,runCompleted:o,env:q,onEnvChange:u,headers:v={},onHeadersChange:w,oauthClientId:x="",oauthClientSecret:y="",onOAuthClientIdChange:z,onOAuthClientSecretChange:A,serverName:B,consoleOutput:C,message:D,setMessage:E,oauthCapable:F=!1,onSaveAndAuthenticate:G,isAuthenticating:H=!1})=>{(0,f.useEffect)(()=>{C.includes("MODULE_NOT_FOUND")&&E({type:"error",text:"Module not found error detected. Please check the paths defined in the Arguments!"})},[C,E]);let I="websocket"!==c||(a=>{if(!a)return!1;try{let b=new URL(a);return"ws:"===b.protocol||"wss:"===b.protocol}catch(a){return!1}})(h),J="sse"!==c&&"streamable"!==c||(a=>{if(!a)return!1;try{let b=new URL(a);return"http:"===b.protocol||"https:"===b.protocol}catch(a){return!1}})(j),K="websocket"===c&&I&&(a=>{try{let b=new URL(a);return"ws:"===b.protocol&&!(a=>{let b=a.toLowerCase();return"localhost"===b||"127.0.0.1"===b||"::1"===b||"[::1]"===b||b.endsWith(".localhost")})(b.hostname)}catch(a){return!1}})(h),L=a.trim().split(/\s+/).filter(Boolean),M="stdio"===c&&L.length>0&&aQ(L[0],L.slice(1)),N=Math.round(90);return(0,d.jsxs)(r.A,{spacing:3,children:[D&&"error"===D.type&&(0,d.jsx)(p.A,{severity:"error",sx:{mb:2},children:D.text}),(0,d.jsxs)(e.default,{children:[(0,d.jsx)(k.default,{variant:"subtitle2",gutterBottom:!0,children:"Transport Type"}),(0,d.jsxs)(aJ.A,{value:c,onChange:(a,b)=>g(b),sx:{borderBottom:1,borderColor:"divider",mb:2},variant:"scrollable",scrollButtons:"auto",children:[(0,d.jsx)(aK.A,{label:"Standard IO",value:"stdio"}),(0,d.jsx)(aK.A,{label:"WebSocket",value:"websocket"}),(0,d.jsx)(aK.A,{label:"SSE",value:"sse"}),(0,d.jsx)(aK.A,{label:"Streamable HTTP",value:"streamable"})]})]}),"websocket"===c&&(0,d.jsxs)(e.default,{children:[(0,d.jsx)(k.default,{variant:"subtitle2",gutterBottom:!0,children:"WebSocket URL"}),(0,d.jsx)(s.A,{fullWidth:!0,size:"small",value:h,onChange:a=>i(a.target.value),placeholder:"ws://localhost:3000",variant:"outlined",required:!0,error:!I,helperText:!I&&"Please enter a valid WebSocket URL (starting with ws:// or wss://)"}),K&&(0,d.jsx)(p.A,{severity:"warning",sx:{mt:1},children:"This URL uses unencrypted ws:// to a non-localhost host. Consider using wss:// for remote servers so credentials and data are encrypted in transit."})]}),("sse"===c||"streamable"===c)&&(0,d.jsxs)(e.default,{children:[(0,d.jsx)(k.default,{variant:"subtitle2",gutterBottom:!0,children:"Server URL"}),(0,d.jsx)(s.A,{fullWidth:!0,size:"small",value:j,onChange:a=>l(a.target.value),placeholder:"https://localhost:3000",variant:"outlined",required:!0,error:!J,helperText:!J&&"Please enter a valid HTTP URL (starting with http:// or https://)"})]}),("sse"===c||"streamable"===c)&&(0,d.jsx)(e.default,{children:(0,d.jsx)(aE,{headers:v,onChange:w||(()=>{})})}),("sse"===c||"streamable"===c)&&(0,d.jsx)(e.default,{children:(0,d.jsx)(aI,{clientId:x,clientSecret:y,onClientIdChange:z||(()=>{}),onClientSecretChange:A||(()=>{})})}),"stdio"===c&&(0,d.jsxs)(e.default,{children:[(0,d.jsx)(k.default,{variant:"subtitle2",gutterBottom:!0,children:"Run Command"}),(0,d.jsx)(s.A,{fullWidth:!0,size:"small",value:a,onChange:a=>b(a.target.value),placeholder:"npm start",variant:"outlined",required:!0}),M&&(0,d.jsxs)(aL.A,{children:["npx/uvx may download the package on the first run — the Test Run waits up to ",N,"s before timing out."]})]}),(0,d.jsx)(e.default,{sx:{display:"flex",justifyContent:"flex-end",mt:1},children:(0,d.jsx)(t.A,{variant:"contained",color:o?"success":"primary",onClick:m,startIcon:n?(0,d.jsx)(am.default,{size:16,color:"inherit"}):void 0,disabled:n||"stdio"===c&&!a.trim()||"websocket"===c&&!I||("sse"===c||"streamable"===c)&&!J,title:"stdio"!==c||a.trim()?"websocket"!==c||I?"sse"!==c&&"streamable"!==c||J?"Test the run command":"Please enter a valid Server URL":"Please enter a valid WebSocket URL":"Please enter a run command first",children:n?"Running...":"3) Test Run"})}),F&&("sse"===c||"streamable"===c)&&G&&(0,d.jsx)(p.A,{severity:"info",action:(0,d.jsx)(t.A,{color:"inherit",size:"small",variant:"outlined",startIcon:H?(0,d.jsx)(am.default,{size:16,color:"inherit"}):(0,d.jsx)(aM.A,{}),onClick:()=>{G()},disabled:H||!J,children:H?"Authenticating…":"Save & Authenticate"}),children:"This server uses OAuth. Saving it and signing in will complete the connection."}),(0,d.jsx)(e.default,{children:(0,d.jsx)(ao.A,{serverName:B,initialEnv:q,onSave:async a=>(u(a),Promise.resolve())})})]})};var aT=c(95345);let aU=({args:a,onArgChange:b,onAddArg:c,onRemoveArg:f,onFolderSelect:g,onParseReadme:h,onParseClipboard:i,isParsingReadme:j})=>{let{getThemeColor:l}=(0,w.Ic)();return(0,d.jsxs)(e.default,{children:[(0,d.jsxs)(e.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:1},children:[(0,d.jsx)(k.default,{variant:"subtitle2",children:"Arguments"}),(0,d.jsxs)(r.A,{direction:"row",spacing:1,children:[(0,d.jsx)(t.A,{size:"small",startIcon:(0,d.jsx)(aT.A,{}),onClick:h,disabled:j,color:"inherit",sx:{color:"text.secondary"},children:"Parse README"}),(0,d.jsx)(t.A,{size:"small",startIcon:(0,d.jsx)(aT.A,{}),onClick:i,color:"inherit",sx:{color:"text.secondary"},children:"Parse from Clipboard"})]})]}),(0,d.jsxs)(r.A,{spacing:1,children:[a.map((a,c)=>(0,d.jsxs)(r.A,{direction:"row",spacing:1,children:[(0,d.jsx)(s.A,{fullWidth:!0,size:"small",value:a,onChange:a=>b(c,a.target.value),variant:"outlined"}),(0,d.jsx)(as.A,{title:"Select folder",children:(0,d.jsx)(v.A,{onClick:()=>g(c),size:"small",sx:{border:1,borderColor:"divider"},children:(0,d.jsx)(q.A,{})})}),(0,d.jsx)(as.A,{title:"Remove argument",children:(0,d.jsx)(v.A,{onClick:()=>f(c),size:"small",sx:{border:1,borderColor:"divider"},children:(0,d.jsx)(av.A,{})})})]},c)),(0,d.jsx)(t.A,{startIcon:(0,d.jsx)(au.A,{}),onClick:c,color:"primary",sx:{alignSelf:"flex-start",mt:1},children:"Add Argument"})]})]})};var aV=c(2173),aW=c(67191),aX=c(82605),aY=c(50062),aZ=c(7675),a$=c(94367),a_=c(11801);let a0=(0,a_.A)((0,d.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 a1=c(83434);let a2=(0,j.h)("frontend/components/mcp/.../SamplingManager"),a3=({policy:a,onChange:b})=>{let[c,g]=(0,f.useState)([]),h=!!a?.enabled;(0,f.useEffect)(()=>{let a=!1;return a1.N.loadModels().then(b=>{a||g(Array.isArray(b)?b:[])}).catch(a=>a2.warn("Failed to load models for sampling policy",a)),()=>{a=!0}},[]);let i=c=>{b({enabled:h,modelId:a?.modelId,maxCallsPerMinute:a?.maxCallsPerMinute,...c})};return(0,d.jsxs)(e.default,{children:[(0,d.jsx)(p.A,{severity:"warning",sx:{mb:2},children:"MCP sampling is deprecated in the 2026-07-28 spec. FLUJO's implementation (routing through your configured model) already matches the recommended replacement pattern — no action is required until server support is removed (estimated mid-2027)."}),(0,d.jsxs)(e.default,{sx:{display:"flex",alignItems:"center",mb:.5},children:[(0,d.jsx)(a0,{fontSize:"small",sx:{mr:1,color:"text.secondary"}}),(0,d.jsx)(k.default,{variant:"subtitle1",children:"Let this tool use your AI"}),(0,d.jsx)(aW.A,{checked:h,onChange:a=>i({enabled:a.target.checked}),size:"small",sx:{ml:1}})]}),(0,d.jsx)(k.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:1.5},children:"Allows this server to ask FLUJO to run AI calls on its behalf (MCP sampling). Off by default. When on, the server can spend the selected model's API budget — only enable it for servers you trust."}),h&&(0,d.jsxs)(e.default,{sx:{display:"flex",gap:2,flexWrap:"wrap",alignItems:"flex-start"},children:[(0,d.jsxs)(aX.A,{size:"small",sx:{minWidth:260},error:!a?.modelId,children:[(0,d.jsx)(aY.A,{id:"sampling-model-label",children:"Model"}),(0,d.jsxs)(aZ.A,{labelId:"sampling-model-label",label:"Model",value:c.some(b=>b.id===a?.modelId)?a?.modelId:"",onChange:a=>i({modelId:a.target.value||void 0}),children:[0===c.length&&(0,d.jsx)(a$.A,{value:"",disabled:!0,children:"No models configured"}),c.map(a=>(0,d.jsx)(a$.A,{value:a.id,children:a.displayName||a.name},a.id))]})]}),(0,d.jsx)(s.A,{size:"small",type:"number",label:"Max calls / minute",sx:{width:160},value:a?.maxCallsPerMinute??"",placeholder:"10",onChange:a=>{let b=parseInt(a.target.value,10);i({maxCallsPerMinute:Number.isFinite(b)&&b>0?b:void 0})},helperText:"Default 10"}),!a?.modelId&&(0,d.jsx)(p.A,{severity:"warning",sx:{width:"100%"},children:"Pick a model — sampling requests will be rejected until one is selected."})]})]})},a4=(0,a_.A)([(0,d.jsx)("path",{d:"M4 6H2v14c0 1.1.9 2 2 2h14v-2H4z"},"0"),(0,d.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"),a5=({policy:a,onChange:b})=>{let c=!!a?.enabled;return(0,d.jsxs)(e.default,{children:[(0,d.jsxs)(e.default,{sx:{display:"flex",alignItems:"center",mb:.5},children:[(0,d.jsx)(a4,{fontSize:"small",sx:{mr:1,color:"text.secondary"}}),(0,d.jsx)(k.default,{variant:"subtitle1",children:"Allow this tool to ask you questions"}),(0,d.jsx)(aW.A,{checked:c,onChange:a=>b({enabled:a.target.checked}),size:"small",sx:{ml:1}})]}),(0,d.jsx)(k.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:1},children:"Allows this server to request additional information from you mid-tool-call (MCP elicitation). Off by default. Only enable for servers you trust. Unattended (scheduled) runs auto-cancel elicitation requests. URL-mode is not yet supported."}),c&&(0,d.jsx)(p.A,{severity:"info",sx:{mt:.5},children:"When enabled, this server may pause execution and display a form asking for your input. You can cancel at any time."})]})};var a6=c(32720),a7=c(33799),a8=c(28055);let a9=(a,b,c,d,e)=>{let f;return{...f="websocket"===a.transport?{...a,transport:"websocket",websocketUrl:b,_buildCommand:d,_installCommand:e}:"sse"===a.transport?{...a,transport:"sse",serverUrl:c,_buildCommand:d,_installCommand:e}:"streamable"===a.transport?{...a,transport:"streamable",serverUrl:c,_buildCommand:d,_installCommand:e}:{...a,transport:"stdio",_buildCommand:d,_installCommand:e},source:f.source??{type:"local"}}},ba=async(a,b,c,d,e,f,g)=>{let h=await aa(a,a.name);h.message&&c(h.message),h.config&&(b("websocket"===h.config.transport?{...h.config,env:a.env,transport:"websocket",websocketUrl:h.config.websocketUrl||g}:{...h.config,env:a.env,transport:"stdio",command:h.config.command||"",args:h.config.args||[]}),h.config._buildCommand&&d(h.config._buildCommand),h.config._installCommand&&e(h.config._installCommand))},bb=async(a,b,c,d,e,f,g,h)=>{d(!0),c({type:"success",text:"Parsing README.md from repository root..."});try{if(!a.name)throw Error("Please specify a server name first");let d=a.name,i=`${d}/README.md`,j=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"readFile",savePath:i})});if(console.log("DEBUG - API response status:",j.status),!j.ok)throw Error("Failed to read README file from repository root");let k=await j.json();if(!k.content)throw Error("README file is empty");let l=await _(k.content,a,a.name);console.log("DEBUG - Parsing README content with repository root path:",a.name),l.message&&c(l.message),l.config&&("websocket"===l.config.transport?(b({...l.config,transport:"websocket",websocketUrl:l.config.websocketUrl||h}),l.config.websocketUrl&&g(l.config.websocketUrl)):b({...l.config,transport:"stdio",command:l.config.command||"",args:l.config.args||[]}),l.config._buildCommand&&e(l.config._buildCommand),l.config._installCommand&&f(l.config._installCommand))}catch(a){console.error("Error parsing README:",a),c({type:"error",text:`Error parsing README: ${a.message||"Unknown error"}`})}finally{d(!1)}},bc=async(a,b,c,d,e,f,g,h)=>{if(!a.name)return void d({type:"error",text:"Please specify a server name first"});c(!0),d({type:"success",text:"Installing dependencies..."}),e("Install Dependencies Output"),f(!0),g(`Executing: ${b}
2
2
 
3
3
  `),console.log("DEBUG - Installing dependencies for server:",a.name);let i=a.rootPath||`mcp-servers/${a.name}`,j=!1,k=await (0,a7.b)(i,b,a=>{j=!0,g(b=>b+a)});j||g(a=>a+(k.output||"Command completed successfully, but no output was returned.")),k.success?(h(!0),d({type:"success",text:"Dependencies installed successfully. Check the console for more information."})):d({type:"error",text:"Failed to install dependencies. Check the console for more information."}),c(!1)},bd=async(a,b,c,d,e,f,g,h)=>{if(!a.name)return void d({type:"error",text:"Please specify a server name first"});c(!0),d({type:"success",text:"Building server..."}),e("Build Server Output"),f(!0),g(`Executing: ${b}
4
4
 
@@ -1 +1 @@
1
- globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/mcp/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"4474":{"*":{"id":"8521","name":"*","chunks":[],"async":false}},"4969":{"*":{"id":"94978","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"55145","name":"*","chunks":[],"async":false}},"12818":{"*":{"id":"53025","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"78922","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"68495","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"34644","name":"*","chunks":[],"async":false}},"24437":{"*":{"id":"24207","name":"*","chunks":[],"async":false}},"25635":{"*":{"id":"79515","name":"*","chunks":[],"async":false}},"27879":{"*":{"id":"92093","name":"*","chunks":[],"async":false}},"36388":{"*":{"id":"35352","name":"*","chunks":[],"async":false}},"36552":{"*":{"id":"52402","name":"*","chunks":[],"async":false}},"36982":{"*":{"id":"20150","name":"*","chunks":[],"async":false}},"43856":{"*":{"id":"96014","name":"*","chunks":[],"async":false}},"47113":{"*":{"id":"43416","name":"*","chunks":[],"async":false}},"57150":{"*":{"id":"54160","name":"*","chunks":[],"async":false}},"63886":{"*":{"id":"75170","name":"*","chunks":[],"async":false}},"69645":{"*":{"id":"60325","name":"*","chunks":[],"async":false}},"70479":{"*":{"id":"77531","name":"*","chunks":[],"async":false}},"71113":{"*":{"id":"63904","name":"*","chunks":[],"async":false}},"72403":{"*":{"id":"49428","name":"*","chunks":[],"async":false}},"72853":{"*":{"id":"95513","name":"*","chunks":[],"async":false}},"80622":{"*":{"id":"82146","name":"*","chunks":[],"async":false}},"81959":{"*":{"id":"31603","name":"*","chunks":[],"async":false}},"88495":{"*":{"id":"87158","name":"*","chunks":[],"async":false}},"94049":{"*":{"id":"81637","name":"*","chunks":[],"async":false}},"94929":{"*":{"id":"61615","name":"*","chunks":[],"async":false}},"98924":{"*":{"id":"29234","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\builtin\\global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\builtin\\global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\http-access-fallback\\error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\http-access-fallback\\error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\metadata\\async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\metadata\\async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\lib\\framework\\boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\lib\\framework\\boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\lib\\metadata\\generate\\icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\lib\\metadata\\generate\\icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\font\\google\\target.css?{\"path\":\"src\\\\app\\\\layout.tsx\",\"import\":\"Geist\",\"arguments\":[{\"variable\":\"--font-geist-sans\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistSans\"}":{"id":59742,"name":"*","chunks":["7177","static/chunks/app/layout-38b88f3b057f4852.js"],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\font\\google\\target.css?{\"path\":\"src\\\\app\\\\layout.tsx\",\"import\":\"Geist_Mono\",\"arguments\":[{\"variable\":\"--font-geist-mono\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistMono\"}":{"id":3946,"name":"*","chunks":["7177","static/chunks/app/layout-38b88f3b057f4852.js"],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\globals.css":{"id":13673,"name":"*","chunks":["7177","static/chunks/app/layout-38b88f3b057f4852.js"],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\frontend\\components\\AppWrapper.tsx":{"id":72403,"name":"*","chunks":["7177","static/chunks/app/layout-38b88f3b057f4852.js"],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\chat\\page.tsx":{"id":69645,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\docs\\page.tsx":{"id":71113,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\executions\\page.tsx":{"id":47113,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\flows\\page.tsx":{"id":72853,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\mcp\\page.tsx":{"id":36388,"name":"*","chunks":["2678","static/chunks/2678-c88052addfb0478a.js","4754","static/chunks/4754-5c62bb61142f82d1.js","9244","static/chunks/9244-3281f7fd02003a2c.js","3392","static/chunks/3392-6dd9ad3be66a7ce9.js","1871","static/chunks/1871-14c3e63ca865d85e.js","981","static/chunks/981-dd289e60d81da0d1.js","2003","static/chunks/2003-f826c607d609d1fa.js","9562","static/chunks/9562-f8371be653010627.js","488","static/chunks/488-7ab54d8ae2b4b550.js","3272","static/chunks/3272-fd8d59523f61da96.js","3077","static/chunks/3077-565833c67440a7fa.js","8470","static/chunks/8470-72cf748472d4d501.js","9581","static/chunks/9581-6d2523fd68a5e3c4.js","3659","static/chunks/3659-0ab9580d5ee5deea.js","8598","static/chunks/8598-1b627b3d682b364a.js","7328","static/chunks/7328-c8a51bb8c7470d77.js","6404","static/chunks/6404-86615a5f5ce5c00f.js","8551","static/chunks/8551-a28272acfda62ac9.js","6428","static/chunks/6428-951188daa6f74b86.js","4555","static/chunks/4555-c9070f8c79bccfad.js","7264","static/chunks/7264-91d1fa99abcd91ad.js","422","static/chunks/422-61b173ba64cf0c94.js","2005","static/chunks/2005-f9d38c39f10c321f.js","639","static/chunks/639-90ed75d402dc872b.js","3772","static/chunks/3772-20197853c04a6993.js","9203","static/chunks/9203-786f457ecf60b49c.js","8650","static/chunks/8650-41c2afc0eba37fb8.js","313","static/chunks/app/mcp/page-56b43b2f8752e9a5.js"],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\packages\\page.tsx":{"id":70479,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\page.tsx":{"id":4969,"name":"*","chunks":["2678","static/chunks/2678-c88052addfb0478a.js","4754","static/chunks/4754-5c62bb61142f82d1.js","9244","static/chunks/9244-3281f7fd02003a2c.js","3392","static/chunks/3392-6dd9ad3be66a7ce9.js","1871","static/chunks/1871-14c3e63ca865d85e.js","981","static/chunks/981-dd289e60d81da0d1.js","2003","static/chunks/2003-f826c607d609d1fa.js","9562","static/chunks/9562-f8371be653010627.js","3077","static/chunks/3077-565833c67440a7fa.js","1675","static/chunks/1675-773454288de4309d.js","4523","static/chunks/4523-a540747aa2ed34e8.js","4929","static/chunks/4929-150b03595474c9d8.js","9164","static/chunks/9164-de1d167d87614a6d.js","8974","static/chunks/app/page-30bf4293efa47a47.js"],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\settings\\page.tsx":{"id":88495,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\waves\\page.tsx":{"id":12818,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\models\\error.tsx":{"id":27879,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\@mui\\material\\Box\\Box.js":{"id":94049,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\@mui\\material\\CircularProgress\\CircularProgress.js":{"id":4474,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\@mui\\material\\Typography\\Typography.js":{"id":25635,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\shared\\lib\\lazy-dynamic\\dynamic-bailout-to-csr.js":{"id":24437,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\shared\\lib\\lazy-dynamic\\dynamic-bailout-to-csr.js":{"id":24437,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\shared\\lib\\lazy-dynamic\\preload-chunks.js":{"id":36552,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\shared\\lib\\lazy-dynamic\\preload-chunks.js":{"id":36552,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\models\\ModelClient.tsx":{"id":43856,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\frontend\\components\\shared\\ScrollArea.tsx":{"id":36982,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\frontend\\components\\shared\\Spinner.tsx":{"id":94929,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\":[],"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\layout":[{"inlined":false,"path":"static/css/b496025c9cd768cc.css"},{"inlined":false,"path":"static/css/599369d853c61df7.css"},{"inlined":false,"path":"static/css/30253fcfa8035221.css"}],"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\page":[],"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\mcp\\page":[]},"rscModuleMapping":{"4474":{"*":{"id":"65251","name":"*","chunks":[],"async":false}},"4969":{"*":{"id":"60967","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"6060","name":"*","chunks":[],"async":false}},"12818":{"*":{"id":"71494","name":"*","chunks":[],"async":false}},"13673":{"*":{"id":"61135","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"7184","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"36893","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"73041","name":"*","chunks":[],"async":false}},"24437":{"*":{"id":"69389","name":"*","chunks":[],"async":false}},"25635":{"*":{"id":"16825","name":"*","chunks":[],"async":false}},"27879":{"*":{"id":"14867","name":"*","chunks":[],"async":false}},"36388":{"*":{"id":"51016","name":"*","chunks":[],"async":false}},"36552":{"*":{"id":"63112","name":"*","chunks":[],"async":false}},"36982":{"*":{"id":"24676","name":"*","chunks":[],"async":false}},"43856":{"*":{"id":"2671","name":"*","chunks":[],"async":false}},"47113":{"*":{"id":"42389","name":"*","chunks":[],"async":false}},"57150":{"*":{"id":"81170","name":"*","chunks":[],"async":false}},"63886":{"*":{"id":"89748","name":"*","chunks":[],"async":false}},"69645":{"*":{"id":"22516","name":"*","chunks":[],"async":false}},"70479":{"*":{"id":"60399","name":"*","chunks":[],"async":false}},"71113":{"*":{"id":"65793","name":"*","chunks":[],"async":false}},"72403":{"*":{"id":"41306","name":"*","chunks":[],"async":false}},"72853":{"*":{"id":"10057","name":"*","chunks":[],"async":false}},"80622":{"*":{"id":"51384","name":"*","chunks":[],"async":false}},"81959":{"*":{"id":"23597","name":"*","chunks":[],"async":false}},"88495":{"*":{"id":"85431","name":"*","chunks":[],"async":false}},"94049":{"*":{"id":"73737","name":"*","chunks":[],"async":false}},"94929":{"*":{"id":"37997","name":"*","chunks":[],"async":false}},"98924":{"*":{"id":"69576","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
1
+ globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/mcp/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"4474":{"*":{"id":"8521","name":"*","chunks":[],"async":false}},"4969":{"*":{"id":"9396","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"55145","name":"*","chunks":[],"async":false}},"12818":{"*":{"id":"53025","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"78922","name":"*","chunks":[],"async":false}},"17711":{"*":{"id":"11824","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"68495","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"34644","name":"*","chunks":[],"async":false}},"24437":{"*":{"id":"24207","name":"*","chunks":[],"async":false}},"25635":{"*":{"id":"79515","name":"*","chunks":[],"async":false}},"27879":{"*":{"id":"92093","name":"*","chunks":[],"async":false}},"36388":{"*":{"id":"35352","name":"*","chunks":[],"async":false}},"36552":{"*":{"id":"52402","name":"*","chunks":[],"async":false}},"36982":{"*":{"id":"20150","name":"*","chunks":[],"async":false}},"43856":{"*":{"id":"96014","name":"*","chunks":[],"async":false}},"57150":{"*":{"id":"54160","name":"*","chunks":[],"async":false}},"63886":{"*":{"id":"75170","name":"*","chunks":[],"async":false}},"69645":{"*":{"id":"60325","name":"*","chunks":[],"async":false}},"70479":{"*":{"id":"77531","name":"*","chunks":[],"async":false}},"71113":{"*":{"id":"63904","name":"*","chunks":[],"async":false}},"72403":{"*":{"id":"49428","name":"*","chunks":[],"async":false}},"72853":{"*":{"id":"24909","name":"*","chunks":[],"async":false}},"80622":{"*":{"id":"82146","name":"*","chunks":[],"async":false}},"81959":{"*":{"id":"31603","name":"*","chunks":[],"async":false}},"88495":{"*":{"id":"87158","name":"*","chunks":[],"async":false}},"94049":{"*":{"id":"81637","name":"*","chunks":[],"async":false}},"94929":{"*":{"id":"61615","name":"*","chunks":[],"async":false}},"98924":{"*":{"id":"29234","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\builtin\\global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\builtin\\global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\http-access-fallback\\error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\http-access-fallback\\error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\metadata\\async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\metadata\\async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\lib\\framework\\boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\lib\\framework\\boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\lib\\metadata\\generate\\icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\lib\\metadata\\generate\\icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\font\\google\\target.css?{\"path\":\"src\\\\app\\\\layout.tsx\",\"import\":\"Geist\",\"arguments\":[{\"variable\":\"--font-geist-sans\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistSans\"}":{"id":59742,"name":"*","chunks":["7177","static/chunks/app/layout-abed1f211e03152f.js"],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\font\\google\\target.css?{\"path\":\"src\\\\app\\\\layout.tsx\",\"import\":\"Geist_Mono\",\"arguments\":[{\"variable\":\"--font-geist-mono\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistMono\"}":{"id":3946,"name":"*","chunks":["7177","static/chunks/app/layout-abed1f211e03152f.js"],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\globals.css":{"id":13673,"name":"*","chunks":["7177","static/chunks/app/layout-abed1f211e03152f.js"],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\frontend\\components\\AppWrapper.tsx":{"id":72403,"name":"*","chunks":["7177","static/chunks/app/layout-abed1f211e03152f.js"],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\docs\\page.tsx":{"id":71113,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\executions\\page.tsx":{"id":17711,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\chat\\page.tsx":{"id":69645,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\flows\\page.tsx":{"id":72853,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\page.tsx":{"id":4969,"name":"*","chunks":["2678","static/chunks/2678-c88052addfb0478a.js","4754","static/chunks/4754-5c62bb61142f82d1.js","9244","static/chunks/9244-3281f7fd02003a2c.js","3392","static/chunks/3392-6dd9ad3be66a7ce9.js","1871","static/chunks/1871-14c3e63ca865d85e.js","981","static/chunks/981-dd289e60d81da0d1.js","2003","static/chunks/2003-f826c607d609d1fa.js","9562","static/chunks/9562-f8371be653010627.js","3077","static/chunks/3077-565833c67440a7fa.js","1675","static/chunks/1675-773454288de4309d.js","4523","static/chunks/4523-a540747aa2ed34e8.js","4929","static/chunks/4929-150b03595474c9d8.js","9164","static/chunks/9164-de1d167d87614a6d.js","8974","static/chunks/app/page-2f9da78a4891731a.js"],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\settings\\page.tsx":{"id":88495,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\mcp\\page.tsx":{"id":36388,"name":"*","chunks":["2678","static/chunks/2678-c88052addfb0478a.js","4754","static/chunks/4754-5c62bb61142f82d1.js","9244","static/chunks/9244-3281f7fd02003a2c.js","3392","static/chunks/3392-6dd9ad3be66a7ce9.js","1871","static/chunks/1871-14c3e63ca865d85e.js","981","static/chunks/981-dd289e60d81da0d1.js","2003","static/chunks/2003-f826c607d609d1fa.js","9562","static/chunks/9562-f8371be653010627.js","488","static/chunks/488-7ab54d8ae2b4b550.js","3272","static/chunks/3272-fd8d59523f61da96.js","3077","static/chunks/3077-565833c67440a7fa.js","8470","static/chunks/8470-72cf748472d4d501.js","9581","static/chunks/9581-6d2523fd68a5e3c4.js","3659","static/chunks/3659-0ab9580d5ee5deea.js","8598","static/chunks/8598-1b627b3d682b364a.js","7328","static/chunks/7328-c8a51bb8c7470d77.js","6404","static/chunks/6404-86615a5f5ce5c00f.js","8551","static/chunks/8551-a28272acfda62ac9.js","6428","static/chunks/6428-951188daa6f74b86.js","4555","static/chunks/4555-c9070f8c79bccfad.js","7264","static/chunks/7264-91d1fa99abcd91ad.js","422","static/chunks/422-61b173ba64cf0c94.js","4386","static/chunks/4386-e9621d3c94969a68.js","639","static/chunks/639-90ed75d402dc872b.js","3772","static/chunks/3772-20197853c04a6993.js","9203","static/chunks/9203-786f457ecf60b49c.js","8650","static/chunks/8650-5294c6ed1173b014.js","313","static/chunks/app/mcp/page-1648e6fde0c41461.js"],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\waves\\page.tsx":{"id":12818,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\packages\\page.tsx":{"id":70479,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\models\\error.tsx":{"id":27879,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\@mui\\material\\Box\\Box.js":{"id":94049,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\@mui\\material\\CircularProgress\\CircularProgress.js":{"id":4474,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\@mui\\material\\Typography\\Typography.js":{"id":25635,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\shared\\lib\\lazy-dynamic\\dynamic-bailout-to-csr.js":{"id":24437,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\shared\\lib\\lazy-dynamic\\dynamic-bailout-to-csr.js":{"id":24437,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\shared\\lib\\lazy-dynamic\\preload-chunks.js":{"id":36552,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\shared\\lib\\lazy-dynamic\\preload-chunks.js":{"id":36552,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\models\\ModelClient.tsx":{"id":43856,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\frontend\\components\\shared\\ScrollArea.tsx":{"id":36982,"name":"*","chunks":[],"async":false},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\frontend\\components\\shared\\Spinner.tsx":{"id":94929,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\":[],"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\layout":[{"inlined":false,"path":"static/css/b496025c9cd768cc.css"},{"inlined":false,"path":"static/css/599369d853c61df7.css"},{"inlined":false,"path":"static/css/30253fcfa8035221.css"}],"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\page":[],"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\mcp\\page":[]},"rscModuleMapping":{"4474":{"*":{"id":"65251","name":"*","chunks":[],"async":false}},"4969":{"*":{"id":"60967","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"6060","name":"*","chunks":[],"async":false}},"12818":{"*":{"id":"71494","name":"*","chunks":[],"async":false}},"13673":{"*":{"id":"61135","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"7184","name":"*","chunks":[],"async":false}},"17711":{"*":{"id":"42389","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"36893","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"73041","name":"*","chunks":[],"async":false}},"24437":{"*":{"id":"69389","name":"*","chunks":[],"async":false}},"25635":{"*":{"id":"16825","name":"*","chunks":[],"async":false}},"27879":{"*":{"id":"14867","name":"*","chunks":[],"async":false}},"36388":{"*":{"id":"51016","name":"*","chunks":[],"async":false}},"36552":{"*":{"id":"63112","name":"*","chunks":[],"async":false}},"36982":{"*":{"id":"24676","name":"*","chunks":[],"async":false}},"43856":{"*":{"id":"2671","name":"*","chunks":[],"async":false}},"57150":{"*":{"id":"81170","name":"*","chunks":[],"async":false}},"63886":{"*":{"id":"89748","name":"*","chunks":[],"async":false}},"69645":{"*":{"id":"22516","name":"*","chunks":[],"async":false}},"70479":{"*":{"id":"60399","name":"*","chunks":[],"async":false}},"71113":{"*":{"id":"65793","name":"*","chunks":[],"async":false}},"72403":{"*":{"id":"41306","name":"*","chunks":[],"async":false}},"72853":{"*":{"id":"10057","name":"*","chunks":[],"async":false}},"80622":{"*":{"id":"51384","name":"*","chunks":[],"async":false}},"81959":{"*":{"id":"23597","name":"*","chunks":[],"async":false}},"88495":{"*":{"id":"85431","name":"*","chunks":[],"async":false}},"94049":{"*":{"id":"73737","name":"*","chunks":[],"async":false}},"94929":{"*":{"id":"37997","name":"*","chunks":[],"async":false}},"98924":{"*":{"id":"69576","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
@@ -1 +1 @@
1
- "use strict";(()=>{var a={};a.id=8563,a.ids=[8563],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},1708:a=>{a.exports=require("node:process")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4573:a=>{a.exports=require("node:buffer")},4984:a=>{a.exports=require("readline")},8086:a=>{a.exports=require("module")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11723:a=>{a.exports=require("querystring")},11997:a=>{a.exports=require("punycode")},12412:a=>{a.exports=require("assert")},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},19771:a=>{a.exports=require("process")},21372:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>U,patchFetch:()=>T,routeModule:()=>P,serverHooks:()=>S,workAsyncStorage:()=>Q,workUnitAsyncStorage:()=>R});var d={};c.r(d),c.d(d,{DELETE:()=>O,GET:()=>N,POST:()=>M,runtime:()=>I});var e=c(95736),f=c(9117),g=c(4044),h=c(39326),i=c(32324),j=c(261),k=c(54290),l=c(85328),m=c(38928),n=c(46595),o=c(3421),p=c(17679),q=c(41681),r=c(63446),s=c(86439),t=c(51356),u=c(85853),v=c(37464),w=c(68780),x=c(90672),y=c(42398),z=c(50846),A=c(87821);function B(a){let b=new Set,c=new Map;for(let d of a){if(c.has(d.id))continue;let a=function(a){let b=(a&&a.trim()||"flow").toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/_+/g,"_").replace(/^_+|_+$/g,"");return b.length>56&&(b=b.slice(0,56).replace(/_+$/g,"")),b||"flow"}(d.name),e=a;if(b.has(e)){let c=2;for(;b.has(`${a}_${c}`);)c++;e=`${a}_${c}`}b.add(e),c.set(d.id,e)}return c}var C=c(35205),D=c(16226);let E=(0,z.h)("backend/services/mcp/flowTools");async function F(){let a=await A.flowService.loadFlows(),b=B(a.map(a=>({id:a.id,name:a.name}))),c=[];for(let d of a){let a,e=b.get(d.id);if(e){try{a=await (0,C.t)(d)}catch(b){E.warn("Failed to build flow tool description; using minimal fallback",{flow:d.name,err:b}),a=`Runs the FLUJO flow "${d.name}".`}c.push({name:e,description:a,inputSchema:{type:"object",properties:{input:{type:"string",description:"The message / prompt to send to the flow as the user turn."}},required:["input"]}})}}return E.debug("Listed flow tools",{count:c.length}),{tools:c}}async function G(a,b){let c;for(let[b,d]of B((await A.flowService.loadFlows()).map(a=>({id:a.id,name:a.name}))).entries())if(d===a){c=b;break}if(!c)return E.warn("tools/call for unknown flow tool",{toolName:a}),{content:[{type:"text",text:`Error: no flow is exposed as tool '${a}'.`}],isError:!0};let d=function(a){let b=a?.input;return"string"==typeof b?b:null!=b?String(b):""}(b);try{let a=await (0,D.runFlow)({flowId:c,prompt:d,mode:"ephemeral",flujo:!0,requireApproval:!1});if(a.flowNotFound)return{content:[{type:"text",text:`Error: flow not found: ${a.flowNotFound.name}`}],isError:!0};if("error"===a.status){let b=a.error?.message??"Unknown error during flow execution.";return{content:[{type:"text",text:`Error: ${b}`}],isError:!0}}return{content:[{type:"text",text:a.outputText??""}]}}catch(b){return E.error("flowToolsCallTool failed",{toolName:a,flowId:c,err:b}),{content:[{type:"text",text:`Error running flow: ${b instanceof Error?b.message:String(b)}`}],isError:!0}}}var H=c(30227);let I="nodejs",J=(0,z.h)("app/mcp-flows/route");function K(a,b){return new Response(JSON.stringify({error:b}),{status:a,headers:{"content-type":"application/json"}})}async function L(a){if(!(0,y.v5)(a.headers.get("host"),a.headers.get("origin")))return J.warn("Rejected non-local request",{host:a.headers.get("host")}),K(403,"Forbidden: this endpoint only accepts local requests.");let b=function(){let a=new u.g({name:"flujo-flows",version:"3.33.0"},{capabilities:{tools:{}}});return a.setRequestHandler(w.gW,async()=>{let a=(0,H.cI)(),{tools:b}=await F();return{tools:[...a,...b.filter(a=>!(0,H.yM)(a.name)||(J.warn(`Flow tool '${a.name}' collides with a reserved authoring tool name; shadowed`,{}),!1))]}}),a.setRequestHandler(w.FT,a=>{let b=a.params.arguments??{};return(0,H.yM)(a.params.name)?(0,H.oV)(a.params.name,b):G(a.params.name,b)}),a}(),c=new v.D({sessionIdGenerator:void 0,enableJsonResponse:!0}),{req:d,res:e}=(0,x.UG)(a);try{return await b.connect(c),await c.handleRequest(d,e),await (0,x.ze)(e)}catch(a){return J.error("Flows MCP request failed",{error:a}),K(500,"Internal MCP server error.")}finally{try{await c.close()}catch{}try{await b.close()}catch{}}}async function M(a){return L(a)}async function N(a){return L(a)}async function O(a){return L(a)}let P=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/mcp-flows/route",pathname:"/mcp-flows",filename:"route",bundlePath:"app/mcp-flows/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\mcp-flows\\route.ts",nextConfigOutput:"",userland:d}),{workAsyncStorage:Q,workUnitAsyncStorage:R,serverHooks:S}=P;function T(){return(0,g.patchFetch)({workAsyncStorage:Q,workUnitAsyncStorage:R})}async function U(a,b,c){var d;let e="/mcp-flows/route";"/index"===e&&(e="/");let g=await P.prepare(a,b,{srcPage:e,multiZoneDraftMode:!1});if(!g)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:u,params:v,nextConfig:w,isDraftMode:x,prerenderManifest:y,routerServerContext:z,isOnDemandRevalidate:A,revalidateOnlyGenerated:B,resolvedPathname:C}=g,D=(0,j.normalizeAppPath)(e),E=!!(y.dynamicRoutes[D]||y.routes[C]);if(E&&!x){let a=!!y.routes[C],b=y.dynamicRoutes[D];if(b&&!1===b.fallback&&!a)throw new s.NoFallbackError}let F=null;!E||P.isDev||x||(F="/index"===(F=C)?"/":F);let G=!0===P.isDev||!E,H=E&&!G,I=a.method||"GET",J=(0,i.getTracer)(),K=J.getActiveScopeSpan(),L={params:v,prerenderManifest:y,renderOpts:{experimental:{cacheComponents:!!w.experimental.cacheComponents,authInterrupts:!!w.experimental.authInterrupts},supportsDynamicResponse:G,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:null==(d=w.experimental)?void 0:d.cacheLife,isRevalidate:H,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d)=>P.onRequestError(a,b,d,z)},sharedContext:{buildId:u}},M=new k.NodeNextRequest(a),N=new k.NodeNextResponse(b),O=l.NextRequestAdapter.fromNodeNextRequest(M,(0,l.signalFromNodeResponse)(b));try{let d=async c=>P.handle(O,L).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let d=J.getRootSpanAttributes();if(!d)return;if(d.get("next.span_type")!==m.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${d.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=d.get("next.route");if(e){let a=`${I} ${e}`;c.setAttributes({"next.route":e,"http.route":e,"next.span_name":a}),c.updateName(a)}else c.updateName(`${I} ${a.url}`)}),g=async g=>{var i,j;let k=async({previousCacheEntry:f})=>{try{if(!(0,h.getRequestMeta)(a,"minimalMode")&&A&&B&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let e=await d(g);a.fetchMetrics=L.renderOpts.fetchMetrics;let i=L.renderOpts.pendingWaitUntil;i&&c.waitUntil&&(c.waitUntil(i),i=void 0);let j=L.renderOpts.collectedTags;if(!E)return await (0,o.I)(M,N,e,L.renderOpts.pendingWaitUntil),null;{let a=await e.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(e.headers);j&&(b[r.NEXT_CACHE_TAGS_HEADER]=j),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,d=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=r.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:t.CachedRouteKind.APP_ROUTE,status:e.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:d}}}}catch(b){throw(null==f?void 0:f.isStale)&&await P.onRequestError(a,b,{routerKind:"App Router",routePath:e,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:H,isOnDemandRevalidate:A})},z),b}},l=await P.handleResponse({req:a,nextConfig:w,cacheKey:F,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:y,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:B,responseGenerator:k,waitUntil:c.waitUntil});if(!E)return null;if((null==l||null==(i=l.value)?void 0:i.kind)!==t.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(j=l.value)?void 0:j.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});(0,h.getRequestMeta)(a,"minimalMode")||b.setHeader("x-nextjs-cache",A?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),x&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let m=(0,p.fromNodeOutgoingHttpHeaders)(l.value.headers);return(0,h.getRequestMeta)(a,"minimalMode")&&E||m.delete(r.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||b.getHeader("Cache-Control")||m.get("Cache-Control")||m.set("Cache-Control",(0,q.getCacheControlHeader)(l.cacheControl)),await (0,o.I)(M,N,new Response(l.value.body,{headers:m,status:l.value.status||200})),null};K?await g(K):await J.withPropagatedContext(a.headers,()=>J.trace(m.BaseServerSpan.handleRequest,{spanName:`${I} ${a.url}`,kind:i.SpanKind.SERVER,attributes:{"http.method":I,"http.target":a.url}},g))}catch(b){if(b instanceof s.NoFallbackError||await P.onRequestError(a,b,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:H,isOnDemandRevalidate:A})}),E)throw b;return await (0,o.I)(M,N,new Response(null,{status:500})),null}}},21820:a=>{a.exports=require("os")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},34631:a=>{a.exports=require("tls")},37067:a=>{a.exports=require("node:http")},37830:a=>{a.exports=require("node:stream/web")},38522:a=>{a.exports=require("node:zlib")},44708:a=>{a.exports=require("node:https")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46466:a=>{a.exports=require("node:stream/promises")},48161:a=>{a.exports=require("node:os")},51455:a=>{a.exports=require("node:fs/promises")},55511:a=>{a.exports=require("crypto")},55591:a=>{a.exports=require("https")},57075:a=>{a.exports=require("node:stream")},57975:a=>{a.exports=require("node:util")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},73024:a=>{a.exports=require("node:fs")},73136:a=>{a.exports=require("node:url")},73496:a=>{a.exports=require("http2")},73566:a=>{a.exports=require("worker_threads")},74075:a=>{a.exports=require("zlib")},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},78474:a=>{a.exports=require("node:events")},79428:a=>{a.exports=require("buffer")},79551:a=>{a.exports=require("url")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},80481:a=>{a.exports=require("node:readline")},81630:a=>{a.exports=require("http")},83997:a=>{a.exports=require("tty")},84297:a=>{a.exports=require("async_hooks")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},91645:a=>{a.exports=require("net")},94735:a=>{a.exports=require("events")},98995:a=>{a.exports=require("node:module")}};var b=require("../../webpack-runtime.js");b.C(a);var c=b.X(0,[5873,9957,1692,8298,3128,4322,5067,6034,7634,2372,8739,7821,5096,544,6826,1226,4671,4265,6226,5708,227,4822],()=>b(b.s=21372));module.exports=c})();
1
+ "use strict";(()=>{var a={};a.id=8563,a.ids=[8563],a.modules={261:a=>{a.exports=require("next/dist/shared/lib/router/utils/app-paths")},1708:a=>{a.exports=require("node:process")},3295:a=>{a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},4573:a=>{a.exports=require("node:buffer")},4984:a=>{a.exports=require("readline")},8086:a=>{a.exports=require("module")},10846:a=>{a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},11723:a=>{a.exports=require("querystring")},11997:a=>{a.exports=require("punycode")},12412:a=>{a.exports=require("assert")},19121:a=>{a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},19771:a=>{a.exports=require("process")},21372:(a,b,c)=>{c.r(b),c.d(b,{handler:()=>U,patchFetch:()=>T,routeModule:()=>P,serverHooks:()=>S,workAsyncStorage:()=>Q,workUnitAsyncStorage:()=>R});var d={};c.r(d),c.d(d,{DELETE:()=>O,GET:()=>N,POST:()=>M,runtime:()=>I});var e=c(95736),f=c(9117),g=c(4044),h=c(39326),i=c(32324),j=c(261),k=c(54290),l=c(85328),m=c(38928),n=c(46595),o=c(3421),p=c(17679),q=c(41681),r=c(63446),s=c(86439),t=c(51356),u=c(85853),v=c(37464),w=c(68780),x=c(90672),y=c(42398),z=c(50846),A=c(87821);function B(a){let b=new Set,c=new Map;for(let d of a){if(c.has(d.id))continue;let a=function(a){let b=(a&&a.trim()||"flow").toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/_+/g,"_").replace(/^_+|_+$/g,"");return b.length>56&&(b=b.slice(0,56).replace(/_+$/g,"")),b||"flow"}(d.name),e=a;if(b.has(e)){let c=2;for(;b.has(`${a}_${c}`);)c++;e=`${a}_${c}`}b.add(e),c.set(d.id,e)}return c}var C=c(35205),D=c(16226);let E=(0,z.h)("backend/services/mcp/flowTools");async function F(){let a=await A.flowService.loadFlows(),b=B(a.map(a=>({id:a.id,name:a.name}))),c=[];for(let d of a){let a,e=b.get(d.id);if(e){try{a=await (0,C.t)(d)}catch(b){E.warn("Failed to build flow tool description; using minimal fallback",{flow:d.name,err:b}),a=`Runs the FLUJO flow "${d.name}".`}c.push({name:e,description:a,inputSchema:{type:"object",properties:{input:{type:"string",description:"The message / prompt to send to the flow as the user turn."}},required:["input"]}})}}return E.debug("Listed flow tools",{count:c.length}),{tools:c}}async function G(a,b){let c;for(let[b,d]of B((await A.flowService.loadFlows()).map(a=>({id:a.id,name:a.name}))).entries())if(d===a){c=b;break}if(!c)return E.warn("tools/call for unknown flow tool",{toolName:a}),{content:[{type:"text",text:`Error: no flow is exposed as tool '${a}'.`}],isError:!0};let d=function(a){let b=a?.input;return"string"==typeof b?b:null!=b?String(b):""}(b);try{let a=await (0,D.runFlow)({flowId:c,prompt:d,mode:"ephemeral",flujo:!0,requireApproval:!1});if(a.flowNotFound)return{content:[{type:"text",text:`Error: flow not found: ${a.flowNotFound.name}`}],isError:!0};if("error"===a.status){let b=a.error?.message??"Unknown error during flow execution.";return{content:[{type:"text",text:`Error: ${b}`}],isError:!0}}return{content:[{type:"text",text:a.outputText??""}]}}catch(b){return E.error("flowToolsCallTool failed",{toolName:a,flowId:c,err:b}),{content:[{type:"text",text:`Error running flow: ${b instanceof Error?b.message:String(b)}`}],isError:!0}}}var H=c(30227);let I="nodejs",J=(0,z.h)("app/mcp-flows/route");function K(a,b){return new Response(JSON.stringify({error:b}),{status:a,headers:{"content-type":"application/json"}})}async function L(a){if(!(0,y.v5)(a.headers.get("host"),a.headers.get("origin")))return J.warn("Rejected non-local request",{host:a.headers.get("host")}),K(403,"Forbidden: this endpoint only accepts local requests.");let b=function(){let a=new u.g({name:"flujo-flows",version:"3.34.0"},{capabilities:{tools:{}}});return a.setRequestHandler(w.gW,async()=>{let a=(0,H.cI)(),{tools:b}=await F();return{tools:[...a,...b.filter(a=>!(0,H.yM)(a.name)||(J.warn(`Flow tool '${a.name}' collides with a reserved authoring tool name; shadowed`,{}),!1))]}}),a.setRequestHandler(w.FT,a=>{let b=a.params.arguments??{};return(0,H.yM)(a.params.name)?(0,H.oV)(a.params.name,b):G(a.params.name,b)}),a}(),c=new v.D({sessionIdGenerator:void 0,enableJsonResponse:!0}),{req:d,res:e}=(0,x.UG)(a);try{return await b.connect(c),await c.handleRequest(d,e),await (0,x.ze)(e)}catch(a){return J.error("Flows MCP request failed",{error:a}),K(500,"Internal MCP server error.")}finally{try{await c.close()}catch{}try{await b.close()}catch{}}}async function M(a){return L(a)}async function N(a){return L(a)}async function O(a){return L(a)}let P=new e.AppRouteRouteModule({definition:{kind:f.RouteKind.APP_ROUTE,page:"/mcp-flows/route",pathname:"/mcp-flows",filename:"route",bundlePath:"app/mcp-flows/route"},distDir:".next",relativeProjectDir:"",resolvedPagePath:"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\app\\mcp-flows\\route.ts",nextConfigOutput:"",userland:d}),{workAsyncStorage:Q,workUnitAsyncStorage:R,serverHooks:S}=P;function T(){return(0,g.patchFetch)({workAsyncStorage:Q,workUnitAsyncStorage:R})}async function U(a,b,c){var d;let e="/mcp-flows/route";"/index"===e&&(e="/");let g=await P.prepare(a,b,{srcPage:e,multiZoneDraftMode:!1});if(!g)return b.statusCode=400,b.end("Bad Request"),null==c.waitUntil||c.waitUntil.call(c,Promise.resolve()),null;let{buildId:u,params:v,nextConfig:w,isDraftMode:x,prerenderManifest:y,routerServerContext:z,isOnDemandRevalidate:A,revalidateOnlyGenerated:B,resolvedPathname:C}=g,D=(0,j.normalizeAppPath)(e),E=!!(y.dynamicRoutes[D]||y.routes[C]);if(E&&!x){let a=!!y.routes[C],b=y.dynamicRoutes[D];if(b&&!1===b.fallback&&!a)throw new s.NoFallbackError}let F=null;!E||P.isDev||x||(F="/index"===(F=C)?"/":F);let G=!0===P.isDev||!E,H=E&&!G,I=a.method||"GET",J=(0,i.getTracer)(),K=J.getActiveScopeSpan(),L={params:v,prerenderManifest:y,renderOpts:{experimental:{cacheComponents:!!w.experimental.cacheComponents,authInterrupts:!!w.experimental.authInterrupts},supportsDynamicResponse:G,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:null==(d=w.experimental)?void 0:d.cacheLife,isRevalidate:H,waitUntil:c.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:void 0,onInstrumentationRequestError:(b,c,d)=>P.onRequestError(a,b,d,z)},sharedContext:{buildId:u}},M=new k.NodeNextRequest(a),N=new k.NodeNextResponse(b),O=l.NextRequestAdapter.fromNodeNextRequest(M,(0,l.signalFromNodeResponse)(b));try{let d=async c=>P.handle(O,L).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let d=J.getRootSpanAttributes();if(!d)return;if(d.get("next.span_type")!==m.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${d.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=d.get("next.route");if(e){let a=`${I} ${e}`;c.setAttributes({"next.route":e,"http.route":e,"next.span_name":a}),c.updateName(a)}else c.updateName(`${I} ${a.url}`)}),g=async g=>{var i,j;let k=async({previousCacheEntry:f})=>{try{if(!(0,h.getRequestMeta)(a,"minimalMode")&&A&&B&&!f)return b.statusCode=404,b.setHeader("x-nextjs-cache","REVALIDATED"),b.end("This page could not be found"),null;let e=await d(g);a.fetchMetrics=L.renderOpts.fetchMetrics;let i=L.renderOpts.pendingWaitUntil;i&&c.waitUntil&&(c.waitUntil(i),i=void 0);let j=L.renderOpts.collectedTags;if(!E)return await (0,o.I)(M,N,e,L.renderOpts.pendingWaitUntil),null;{let a=await e.blob(),b=(0,p.toNodeOutgoingHttpHeaders)(e.headers);j&&(b[r.NEXT_CACHE_TAGS_HEADER]=j),!b["content-type"]&&a.type&&(b["content-type"]=a.type);let c=void 0!==L.renderOpts.collectedRevalidate&&!(L.renderOpts.collectedRevalidate>=r.INFINITE_CACHE)&&L.renderOpts.collectedRevalidate,d=void 0===L.renderOpts.collectedExpire||L.renderOpts.collectedExpire>=r.INFINITE_CACHE?void 0:L.renderOpts.collectedExpire;return{value:{kind:t.CachedRouteKind.APP_ROUTE,status:e.status,body:Buffer.from(await a.arrayBuffer()),headers:b},cacheControl:{revalidate:c,expire:d}}}}catch(b){throw(null==f?void 0:f.isStale)&&await P.onRequestError(a,b,{routerKind:"App Router",routePath:e,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:H,isOnDemandRevalidate:A})},z),b}},l=await P.handleResponse({req:a,nextConfig:w,cacheKey:F,routeKind:f.RouteKind.APP_ROUTE,isFallback:!1,prerenderManifest:y,isRoutePPREnabled:!1,isOnDemandRevalidate:A,revalidateOnlyGenerated:B,responseGenerator:k,waitUntil:c.waitUntil});if(!E)return null;if((null==l||null==(i=l.value)?void 0:i.kind)!==t.CachedRouteKind.APP_ROUTE)throw Object.defineProperty(Error(`Invariant: app-route received invalid cache entry ${null==l||null==(j=l.value)?void 0:j.kind}`),"__NEXT_ERROR_CODE",{value:"E701",enumerable:!1,configurable:!0});(0,h.getRequestMeta)(a,"minimalMode")||b.setHeader("x-nextjs-cache",A?"REVALIDATED":l.isMiss?"MISS":l.isStale?"STALE":"HIT"),x&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate");let m=(0,p.fromNodeOutgoingHttpHeaders)(l.value.headers);return(0,h.getRequestMeta)(a,"minimalMode")&&E||m.delete(r.NEXT_CACHE_TAGS_HEADER),!l.cacheControl||b.getHeader("Cache-Control")||m.get("Cache-Control")||m.set("Cache-Control",(0,q.getCacheControlHeader)(l.cacheControl)),await (0,o.I)(M,N,new Response(l.value.body,{headers:m,status:l.value.status||200})),null};K?await g(K):await J.withPropagatedContext(a.headers,()=>J.trace(m.BaseServerSpan.handleRequest,{spanName:`${I} ${a.url}`,kind:i.SpanKind.SERVER,attributes:{"http.method":I,"http.target":a.url}},g))}catch(b){if(b instanceof s.NoFallbackError||await P.onRequestError(a,b,{routerKind:"App Router",routePath:D,routeType:"route",revalidateReason:(0,n.c)({isRevalidate:H,isOnDemandRevalidate:A})}),E)throw b;return await (0,o.I)(M,N,new Response(null,{status:500})),null}}},21820:a=>{a.exports=require("os")},27910:a=>{a.exports=require("stream")},28354:a=>{a.exports=require("util")},29021:a=>{a.exports=require("fs")},29294:a=>{a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},31421:a=>{a.exports=require("node:child_process")},33873:a=>{a.exports=require("path")},34631:a=>{a.exports=require("tls")},37067:a=>{a.exports=require("node:http")},37830:a=>{a.exports=require("node:stream/web")},38522:a=>{a.exports=require("node:zlib")},44708:a=>{a.exports=require("node:https")},44870:a=>{a.exports=require("next/dist/compiled/next-server/app-route.runtime.prod.js")},46466:a=>{a.exports=require("node:stream/promises")},48161:a=>{a.exports=require("node:os")},51455:a=>{a.exports=require("node:fs/promises")},55511:a=>{a.exports=require("crypto")},55591:a=>{a.exports=require("https")},57075:a=>{a.exports=require("node:stream")},57975:a=>{a.exports=require("node:util")},63033:a=>{a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},73024:a=>{a.exports=require("node:fs")},73136:a=>{a.exports=require("node:url")},73496:a=>{a.exports=require("http2")},73566:a=>{a.exports=require("worker_threads")},74075:a=>{a.exports=require("zlib")},76760:a=>{a.exports=require("node:path")},77030:a=>{a.exports=require("node:net")},77598:a=>{a.exports=require("node:crypto")},78474:a=>{a.exports=require("node:events")},79428:a=>{a.exports=require("buffer")},79551:a=>{a.exports=require("url")},79646:a=>{a.exports=require("child_process")},79748:a=>{a.exports=require("fs/promises")},80481:a=>{a.exports=require("node:readline")},81630:a=>{a.exports=require("http")},83997:a=>{a.exports=require("tty")},84297:a=>{a.exports=require("async_hooks")},86439:a=>{a.exports=require("next/dist/shared/lib/no-fallback-error.external")},91645:a=>{a.exports=require("net")},94735:a=>{a.exports=require("events")},98995:a=>{a.exports=require("node:module")}};var b=require("../../webpack-runtime.js");b.C(a);var c=b.X(0,[5873,9957,1692,8298,3128,4322,5067,6034,7634,2372,8739,7821,5096,544,4671,6826,1226,7630,4265,6226,6041,227,4822],()=>b(b.s=21372));module.exports=c})();
@@ -1 +1 @@
1
- {"version":1,"files":["../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/lib/cache-handlers/default.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../../node_modules/next/dist/shared/lib/segment.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../../../package.json","../../../../src/backend/services/mcp/internal/confinement.ts","../../../../src/backend/services/mcp/internal/dispatch.ts","../../../../src/backend/services/mcp/internal/filesystemResources.ts","../../../../src/backend/services/mcp/internalResources.ts","../../../package.json","../../chunks/1226.js","../../chunks/1692.js","../../chunks/1925.js","../../chunks/22.js","../../chunks/227.js","../../chunks/2372.js","../../chunks/2471.js","../../chunks/2695.js","../../chunks/2859.js","../../chunks/3128.js","../../chunks/3629.js","../../chunks/3736.js","../../chunks/4265.js","../../chunks/4306.js","../../chunks/4322.js","../../chunks/4671.js","../../chunks/4753.js","../../chunks/4771.js","../../chunks/4822.js","../../chunks/5067.js","../../chunks/5096.js","../../chunks/544.js","../../chunks/5463.js","../../chunks/5544.js","../../chunks/5708.js","../../chunks/5873.js","../../chunks/6034.js","../../chunks/6226.js","../../chunks/6496.js","../../chunks/6826.js","../../chunks/688.js","../../chunks/7506.js","../../chunks/7634.js","../../chunks/7821.js","../../chunks/793.js","../../chunks/7969.js","../../chunks/8001.js","../../chunks/8298.js","../../chunks/8321.js","../../chunks/8387.js","../../chunks/8693.js","../../chunks/8739.js","../../chunks/9285.js","../../chunks/9343.js","../../chunks/9794.js","../../chunks/9957.js","../../webpack-runtime.js","route_client-reference-manifest.js"]}
1
+ {"version":1,"files":["../../../../node_modules/next/dist/client/components/app-router-headers.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/index.js","../../../../node_modules/next/dist/compiled/@opentelemetry/api/package.json","../../../../node_modules/next/dist/compiled/jsonwebtoken/index.js","../../../../node_modules/next/dist/compiled/jsonwebtoken/package.json","../../../../node_modules/next/dist/compiled/next-server/app-page.runtime.prod.js","../../../../node_modules/next/dist/compiled/next-server/app-route.runtime.prod.js","../../../../node_modules/next/dist/lib/client-and-server-references.js","../../../../node_modules/next/dist/lib/constants.js","../../../../node_modules/next/dist/lib/interop-default.js","../../../../node_modules/next/dist/lib/is-error.js","../../../../node_modules/next/dist/lib/semver-noop.js","../../../../node_modules/next/dist/server/app-render/action-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/action-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/after-task-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/async-local-storage.js","../../../../node_modules/next/dist/server/app-render/cache-signal.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/dynamic-access-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.external.js","../../../../node_modules/next/dist/server/app-render/module-loading/track-module-loading.instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-async-storage.external.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js","../../../../node_modules/next/dist/server/app-render/work-unit-async-storage.external.js","../../../../node_modules/next/dist/server/lib/cache-handlers/default.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/shared-cache-controls.external.js","../../../../node_modules/next/dist/server/lib/incremental-cache/tags-manifest.external.js","../../../../node_modules/next/dist/server/lib/lru-cache.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-globals.external.js","../../../../node_modules/next/dist/server/lib/router-utils/instrumentation-node-extensions.js","../../../../node_modules/next/dist/server/lib/trace/constants.js","../../../../node_modules/next/dist/server/lib/trace/tracer.js","../../../../node_modules/next/dist/server/load-manifest.external.js","../../../../node_modules/next/dist/server/response-cache/types.js","../../../../node_modules/next/dist/shared/lib/deep-freeze.js","../../../../node_modules/next/dist/shared/lib/invariant-error.js","../../../../node_modules/next/dist/shared/lib/is-plain-object.js","../../../../node_modules/next/dist/shared/lib/is-thenable.js","../../../../node_modules/next/dist/shared/lib/no-fallback-error.external.js","../../../../node_modules/next/dist/shared/lib/page-path/ensure-leading-slash.js","../../../../node_modules/next/dist/shared/lib/router/utils/app-paths.js","../../../../node_modules/next/dist/shared/lib/segment.js","../../../../node_modules/next/dist/shared/lib/server-reference-info.js","../../../../node_modules/next/package.json","../../../../package.json","../../../../src/backend/services/mcp/internal/confinement.ts","../../../../src/backend/services/mcp/internal/dispatch.ts","../../../../src/backend/services/mcp/internal/filesystemResources.ts","../../../../src/backend/services/mcp/internalResources.ts","../../../package.json","../../chunks/1226.js","../../chunks/1692.js","../../chunks/1925.js","../../chunks/22.js","../../chunks/227.js","../../chunks/2372.js","../../chunks/2471.js","../../chunks/2695.js","../../chunks/2859.js","../../chunks/3128.js","../../chunks/3629.js","../../chunks/3736.js","../../chunks/4265.js","../../chunks/4306.js","../../chunks/4322.js","../../chunks/4671.js","../../chunks/4753.js","../../chunks/4771.js","../../chunks/4822.js","../../chunks/5067.js","../../chunks/5096.js","../../chunks/544.js","../../chunks/5463.js","../../chunks/5544.js","../../chunks/5873.js","../../chunks/6034.js","../../chunks/6041.js","../../chunks/6226.js","../../chunks/6496.js","../../chunks/6826.js","../../chunks/688.js","../../chunks/7506.js","../../chunks/7630.js","../../chunks/7634.js","../../chunks/7821.js","../../chunks/793.js","../../chunks/7969.js","../../chunks/8001.js","../../chunks/8298.js","../../chunks/8321.js","../../chunks/8387.js","../../chunks/8693.js","../../chunks/8739.js","../../chunks/9285.js","../../chunks/9343.js","../../chunks/9794.js","../../chunks/9957.js","../../webpack-runtime.js","route_client-reference-manifest.js"]}