flujo-ai 3.28.0 → 3.30.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 (848) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +481 -464
  3. package/.next/app-path-routes-manifest.json +20 -17
  4. package/.next/build-manifest.json +6 -6
  5. package/.next/prerender-manifest.json +30 -30
  6. package/.next/react-loadable-manifest.json +7 -6
  7. package/.next/required-server-files.json +4 -4
  8. package/.next/routes-manifest.json +8 -0
  9. package/.next/server/app/_not-found/page.js +4 -4
  10. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  11. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  12. package/.next/server/app/_not-found.html +1 -1
  13. package/.next/server/app/_not-found.rsc +3 -3
  14. package/.next/server/app/api/approvals/[id]/route.js +1 -1
  15. package/.next/server/app/api/approvals/[id]/route.js.nft.json +1 -1
  16. package/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/approvals/route.js +2 -2
  18. package/.next/server/app/api/approvals/route.js.nft.json +1 -1
  19. package/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/backup/route.js +1 -1
  21. package/.next/server/app/api/backup/route.js.nft.json +1 -1
  22. package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/browse/route.js +1 -1
  24. package/.next/server/app/api/browse/route.js.nft.json +1 -1
  25. package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/bugs/enhance/route.js +3 -3
  27. package/.next/server/app/api/bugs/enhance/route.js.nft.json +1 -1
  28. package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/cwd/route.js +1 -1
  30. package/.next/server/app/api/cwd/route.js.nft.json +1 -1
  31. package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/encryption/secure/route.js +1 -1
  33. package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
  34. package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/env/route.js +2 -2
  36. package/.next/server/app/api/env/route.js.nft.json +1 -1
  37. package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/flow/[id]/route.js +1 -1
  39. package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
  40. package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js +1 -1
  42. package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js.nft.json +1 -1
  43. package/.next/server/app/api/flow/[id]/versions/[versionId]/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/flow/[id]/versions/route.js +1 -1
  45. package/.next/server/app/api/flow/[id]/versions/route.js.nft.json +1 -1
  46. package/.next/server/app/api/flow/[id]/versions/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/flow/compile/route.js +1 -1
  48. package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
  49. package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/flow/generate/route.js +1 -1
  51. package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
  52. package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/flow/improve/route.js +1 -1
  54. package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
  55. package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/flow/prompt-renderer/route.js +2 -2
  57. package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
  58. package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/flow/quick-chat/route.js +1 -1
  60. package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
  61. package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/flow/repair/route.js +1 -1
  63. package/.next/server/app/api/flow/repair/route.js.nft.json +1 -1
  64. package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/flow/route.js +1 -1
  66. package/.next/server/app/api/flow/route.js.nft.json +1 -1
  67. package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/git/route.js +2 -2
  69. package/.next/server/app/api/git/route.js.nft.json +1 -1
  70. package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/init/route.js +1 -1
  72. package/.next/server/app/api/init/route.js.nft.json +1 -1
  73. package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/local-models/capability/route.js +2 -1
  75. package/.next/server/app/api/local-models/capability/route.js.nft.json +1 -1
  76. package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/local-models/pull/route.js +2 -1
  78. package/.next/server/app/api/local-models/pull/route.js.nft.json +1 -1
  79. package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/local-models/suggest/route.js +2 -2
  81. package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/mcp/app-sandbox/route.js +1 -1
  83. package/.next/server/app/api/mcp/app-sandbox/route.js.nft.json +1 -1
  84. package/.next/server/app/api/mcp/app-sandbox/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/mcp/cancel/route.js +2 -2
  86. package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
  87. package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/mcp/oauth-capability/route.js +1 -1
  89. package/.next/server/app/api/mcp/oauth-capability/route.js.nft.json +1 -1
  90. package/.next/server/app/api/mcp/oauth-capability/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
  92. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
  93. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
  95. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
  96. package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
  98. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
  99. package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
  101. package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
  102. package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
  104. package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
  105. package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
  107. package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
  108. package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
  110. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
  111. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
  112. package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
  113. package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
  114. package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/mcp/servers/route.js +1 -1
  116. package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
  117. package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/api/mcp/test-connection/route.js +1 -1
  119. package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
  120. package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
  121. package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
  122. package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
  123. package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/mcp-registry/route.js +2 -2
  125. package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
  126. package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
  127. package/.next/server/app/api/mcp-registry/spotlight/route.js +1 -1
  128. package/.next/server/app/api/mcp-registry/spotlight/route.js.nft.json +1 -1
  129. package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
  130. package/.next/server/app/api/model/[id]/route.js +1 -1
  131. package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
  132. package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
  133. package/.next/server/app/api/model/provider/route.js +2 -2
  134. package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
  135. package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/api/model/route.js +1 -1
  137. package/.next/server/app/api/model/route.js.nft.json +1 -1
  138. package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
  139. package/.next/server/app/api/model/test/route.js +2 -2
  140. package/.next/server/app/api/model/test/route.js.nft.json +1 -1
  141. package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
  142. package/.next/server/app/api/oauth/callback/route.js +2 -2
  143. package/.next/server/app/api/oauth/callback/route.js.nft.json +1 -1
  144. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
  145. package/.next/server/app/api/oauth/initiate/route.js +2 -2
  146. package/.next/server/app/api/oauth/initiate/route.js.nft.json +1 -1
  147. package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
  148. package/.next/server/app/api/oauth/reset/route.js +2 -2
  149. package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
  150. package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
  151. package/.next/server/app/api/packages/build/route.js +1 -1
  152. package/.next/server/app/api/packages/build/route.js.nft.json +1 -1
  153. package/.next/server/app/api/packages/build/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/api/packages/derive-secrets/route.js +1 -1
  155. package/.next/server/app/api/packages/derive-secrets/route.js.nft.json +1 -1
  156. package/.next/server/app/api/packages/derive-secrets/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/api/packages/install/route.js +1 -1
  158. package/.next/server/app/api/packages/install/route.js.nft.json +1 -1
  159. package/.next/server/app/api/packages/install/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/api/packages/install/status/route.js +1 -1
  161. package/.next/server/app/api/packages/install/status/route.js.nft.json +1 -1
  162. package/.next/server/app/api/packages/install/status/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/api/packages/installed/route.js +1 -1
  164. package/.next/server/app/api/packages/installed/route.js.nft.json +1 -1
  165. package/.next/server/app/api/packages/installed/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/api/packages/resolve/route.js +1 -1
  167. package/.next/server/app/api/packages/resolve/route.js.nft.json +1 -1
  168. package/.next/server/app/api/packages/resolve/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/api/packages/scan-targets/route.js +1 -0
  170. package/.next/server/app/api/packages/scan-targets/route.js.nft.json +1 -0
  171. package/.next/server/app/api/packages/scan-targets/route_client-reference-manifest.js +1 -0
  172. package/.next/server/app/api/packages/search/route.js +1 -0
  173. package/.next/server/app/api/packages/search/route.js.nft.json +1 -0
  174. package/.next/server/app/api/packages/search/route_client-reference-manifest.js +1 -0
  175. package/.next/server/app/api/packages/uninstall/route.js +1 -1
  176. package/.next/server/app/api/packages/uninstall/route.js.nft.json +1 -1
  177. package/.next/server/app/api/packages/uninstall/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/api/planned-executions/[id]/route.js +2 -2
  179. package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
  180. package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
  181. package/.next/server/app/api/planned-executions/[id]/run/route.js +2 -2
  182. package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
  183. package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
  184. package/.next/server/app/api/planned-executions/[id]/runs/route.js +2 -2
  185. package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
  186. package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
  187. package/.next/server/app/api/planned-executions/preview-schedule/route.js +1 -1
  188. package/.next/server/app/api/planned-executions/preview-schedule/route.js.nft.json +1 -1
  189. package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
  190. package/.next/server/app/api/planned-executions/reconcile/route.js +1 -1
  191. package/.next/server/app/api/planned-executions/reconcile/route.js.nft.json +1 -1
  192. package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
  193. package/.next/server/app/api/planned-executions/route.js +1 -1
  194. package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
  195. package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
  196. package/.next/server/app/api/registry/auth/resend/route.js +1 -1
  197. package/.next/server/app/api/registry/auth/resend/route.js.nft.json +1 -1
  198. package/.next/server/app/api/registry/auth/resend/route_client-reference-manifest.js +1 -1
  199. package/.next/server/app/api/registry/auth/reset/route.js +1 -1
  200. package/.next/server/app/api/registry/auth/reset/route.js.nft.json +1 -1
  201. package/.next/server/app/api/registry/auth/reset/route_client-reference-manifest.js +1 -1
  202. package/.next/server/app/api/registry/auth/route.js +1 -1
  203. package/.next/server/app/api/registry/auth/route.js.nft.json +1 -1
  204. package/.next/server/app/api/registry/auth/route_client-reference-manifest.js +1 -1
  205. package/.next/server/app/api/registry/oauth/callback/route.js +1 -1
  206. package/.next/server/app/api/registry/oauth/callback/route.js.nft.json +1 -1
  207. package/.next/server/app/api/registry/oauth/callback/route_client-reference-manifest.js +1 -1
  208. package/.next/server/app/api/registry/oauth/initiate/route.js +1 -1
  209. package/.next/server/app/api/registry/oauth/initiate/route.js.nft.json +1 -1
  210. package/.next/server/app/api/registry/oauth/initiate/route_client-reference-manifest.js +1 -1
  211. package/.next/server/app/api/registry/publish/route.js +1 -1
  212. package/.next/server/app/api/registry/publish/route.js.nft.json +1 -1
  213. package/.next/server/app/api/registry/publish/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/api/registry/settings/route.js +1 -1
  215. package/.next/server/app/api/registry/settings/route.js.nft.json +1 -1
  216. package/.next/server/app/api/registry/settings/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/api/restore/route.js +1 -1
  218. package/.next/server/app/api/restore/route.js.nft.json +1 -1
  219. package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
  220. package/.next/server/app/api/runs/active/route.js +2 -2
  221. package/.next/server/app/api/runs/active/route.js.nft.json +1 -1
  222. package/.next/server/app/api/runs/active/route_client-reference-manifest.js +1 -1
  223. package/.next/server/app/api/storage/route.js +1 -1
  224. package/.next/server/app/api/storage/route.js.nft.json +1 -1
  225. package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
  226. package/.next/server/app/api/update/route.js +1 -1
  227. package/.next/server/app/api/update/route.js.nft.json +1 -1
  228. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  229. package/.next/server/app/api/waves/route.js +1 -1
  230. package/.next/server/app/api/waves/route.js.nft.json +1 -1
  231. package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
  232. package/.next/server/app/api/webhooks/[id]/route.js +1 -1
  233. package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
  234. package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
  235. package/.next/server/app/chat/page.js +9 -9
  236. package/.next/server/app/chat/page.js.nft.json +1 -1
  237. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  238. package/.next/server/app/chat.html +1 -1
  239. package/.next/server/app/chat.rsc +4 -4
  240. package/.next/server/app/docs/page.js +5 -5
  241. package/.next/server/app/docs/page.js.nft.json +1 -1
  242. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  243. package/.next/server/app/docs.html +1 -1
  244. package/.next/server/app/docs.rsc +4 -4
  245. package/.next/server/app/executions/page.js +2 -39
  246. package/.next/server/app/executions/page.js.nft.json +1 -1
  247. package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
  248. package/.next/server/app/executions.html +1 -1
  249. package/.next/server/app/executions.rsc +4 -4
  250. package/.next/server/app/flows/page.js +3 -3
  251. package/.next/server/app/flows/page.js.nft.json +1 -1
  252. package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  253. package/.next/server/app/flows.html +1 -1
  254. package/.next/server/app/flows.rsc +4 -4
  255. package/.next/server/app/index.html +1 -1
  256. package/.next/server/app/index.rsc +4 -4
  257. package/.next/server/app/mcp/page.js +11 -11
  258. package/.next/server/app/mcp/page.js.nft.json +1 -1
  259. package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
  260. package/.next/server/app/mcp-flows/route.js +1 -1
  261. package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
  262. package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
  263. package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
  264. package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
  265. package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
  266. package/.next/server/app/mcp.html +1 -1
  267. package/.next/server/app/mcp.rsc +4 -4
  268. package/.next/server/app/models/page.js +2 -2
  269. package/.next/server/app/models/page.js.nft.json +1 -1
  270. package/.next/server/app/models/page_client-reference-manifest.js +1 -1
  271. package/.next/server/app/packages/page.js +2 -2
  272. package/.next/server/app/packages/page.js.nft.json +1 -1
  273. package/.next/server/app/packages/page_client-reference-manifest.js +1 -1
  274. package/.next/server/app/packages.html +1 -1
  275. package/.next/server/app/packages.rsc +4 -4
  276. package/.next/server/app/page.js +3 -3
  277. package/.next/server/app/page.js.nft.json +1 -1
  278. package/.next/server/app/page_client-reference-manifest.js +1 -1
  279. package/.next/server/app/settings/page.js +2 -2
  280. package/.next/server/app/settings/page.js.nft.json +1 -1
  281. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  282. package/.next/server/app/settings.html +1 -1
  283. package/.next/server/app/settings.rsc +4 -4
  284. package/.next/server/app/v1/chat/completions/route.js +1 -1
  285. package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
  286. package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
  287. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +2 -2
  288. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
  289. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
  290. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
  291. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
  292. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
  293. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
  294. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
  295. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
  296. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
  297. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
  298. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
  299. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +2 -2
  300. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
  301. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
  302. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +4 -4
  303. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
  304. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
  305. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js +2 -0
  306. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js.nft.json +1 -0
  307. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route_client-reference-manifest.js +1 -0
  308. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route.js +1 -1
  309. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route.js.nft.json +1 -1
  310. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route_client-reference-manifest.js +1 -1
  311. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
  312. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
  313. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
  314. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -2
  315. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
  316. package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  317. package/.next/server/app/v1/chat/conversations/route.js +2 -2
  318. package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
  319. package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
  320. package/.next/server/app/v1/chat/events/route.js +3 -3
  321. package/.next/server/app/v1/chat/events/route.js.nft.json +1 -1
  322. package/.next/server/app/v1/chat/events/route_client-reference-manifest.js +1 -1
  323. package/.next/server/app/v1/models/route.js +2 -2
  324. package/.next/server/app/v1/models/route.js.nft.json +1 -1
  325. package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
  326. package/.next/server/app/waves/page.js +4 -4
  327. package/.next/server/app/waves/page.js.nft.json +1 -1
  328. package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
  329. package/.next/server/app/waves.html +1 -1
  330. package/.next/server/app/waves.rsc +4 -4
  331. package/.next/server/app-paths-manifest.json +20 -17
  332. package/.next/server/chunks/1114.js +1 -1
  333. package/.next/server/chunks/1226.js +1 -1
  334. package/.next/server/chunks/1314.js +1 -1
  335. package/.next/server/chunks/{6529.js → 1578.js} +2 -2
  336. package/.next/server/chunks/1634.js +1 -0
  337. package/.next/server/chunks/166.js +5 -5
  338. package/.next/server/chunks/1690.js +1 -0
  339. package/.next/server/chunks/2180.js +1 -0
  340. package/.next/server/chunks/227.js +2 -2
  341. package/.next/server/chunks/2273.js +2 -0
  342. package/.next/server/chunks/237.js +1 -0
  343. package/.next/server/chunks/2695.js +2 -2
  344. package/.next/server/chunks/2859.js +1 -1
  345. package/.next/server/chunks/2866.js +2 -0
  346. package/.next/server/chunks/{7674.js → 3030.js} +1 -1
  347. package/.next/server/chunks/3128.js +4 -4
  348. package/.next/server/chunks/{8730.js → 3489.js} +1 -1
  349. package/.next/server/chunks/3570.js +228 -105
  350. package/.next/server/chunks/3629.js +1 -1
  351. package/.next/server/chunks/3912.js +2 -0
  352. package/.next/server/chunks/3984.js +4 -4
  353. package/.next/server/chunks/4265.js +1 -1
  354. package/.next/server/chunks/4366.js +2 -0
  355. package/.next/server/chunks/4551.js +6 -0
  356. package/.next/server/chunks/4566.js +6 -0
  357. package/.next/server/chunks/4671.js +1 -1
  358. package/.next/server/chunks/4681.js +1 -1
  359. package/.next/server/chunks/4685.js +1 -0
  360. package/.next/server/chunks/4771.js +2 -2
  361. package/.next/server/chunks/4961.js +2 -0
  362. package/.next/server/chunks/5040.js +53 -0
  363. package/.next/server/chunks/5067.js +1 -1
  364. package/.next/server/chunks/544.js +135 -0
  365. package/.next/server/chunks/5463.js +1 -1
  366. package/.next/server/chunks/5544.js +5 -5
  367. package/.next/server/chunks/5548.js +62 -0
  368. package/.next/server/chunks/5561.js +1 -0
  369. package/.next/server/chunks/5705.js +1 -0
  370. package/.next/server/chunks/5708.js +1 -1
  371. package/.next/server/chunks/5829.js +1 -0
  372. package/.next/server/chunks/5863.js +37 -0
  373. package/.next/server/chunks/5880.js +1 -1
  374. package/.next/server/chunks/6034.js +77 -0
  375. package/.next/server/chunks/6226.js +6 -0
  376. package/.next/server/chunks/6404.js +2 -0
  377. package/.next/server/chunks/6432.js +1 -0
  378. package/.next/server/chunks/6496.js +1 -0
  379. package/.next/server/chunks/6793.js +1 -0
  380. package/.next/server/chunks/694.js +3 -0
  381. package/.next/server/chunks/701.js +1 -1
  382. package/.next/server/chunks/7506.js +1 -1
  383. package/.next/server/chunks/7579.js +4 -4
  384. package/.next/server/chunks/7634.js +4 -0
  385. package/.next/server/chunks/7724.js +1 -0
  386. package/.next/server/chunks/7821.js +1 -1
  387. package/.next/server/chunks/793.js +15 -5
  388. package/.next/server/chunks/7969.js +1 -0
  389. package/.next/server/chunks/{6537.js → 8001.js} +1 -1
  390. package/.next/server/chunks/8034.js +1 -0
  391. package/.next/server/chunks/8092.js +1 -0
  392. package/.next/server/chunks/{8568.js → 8192.js} +1 -1
  393. package/.next/server/chunks/826.js +2 -0
  394. package/.next/server/chunks/8298.js +1 -0
  395. package/.next/server/chunks/8321.js +1 -0
  396. package/.next/server/chunks/8356.js +1 -0
  397. package/.next/server/chunks/8366.js +90 -0
  398. package/.next/server/chunks/8387.js +1 -1
  399. package/.next/server/chunks/848.js +39 -0
  400. package/.next/server/chunks/8615.js +1 -0
  401. package/.next/server/chunks/8645.js +2 -0
  402. package/.next/server/chunks/8739.js +1 -1
  403. package/.next/server/chunks/8851.js +1 -0
  404. package/.next/server/chunks/9174.js +1 -0
  405. package/.next/server/chunks/9313.js +1 -0
  406. package/.next/server/chunks/94.js +1 -1
  407. package/.next/server/chunks/9406.js +2 -2
  408. package/.next/server/chunks/9509.js +2 -2
  409. package/.next/server/chunks/9537.js +39 -0
  410. package/.next/server/chunks/9576.js +2 -0
  411. package/.next/server/chunks/9671.js +1 -1
  412. package/.next/server/chunks/9724.js +16 -6
  413. package/.next/server/chunks/9857.js +1 -0
  414. package/.next/server/chunks/{3298.js → 9868.js} +2 -2
  415. package/.next/server/chunks/9957.js +1 -0
  416. package/.next/server/chunks/9983.js +2 -0
  417. package/.next/server/edge-instrumentation.js.map +1 -1
  418. package/.next/server/functions-config-manifest.json +2 -2
  419. package/.next/server/instrumentation.js.nft.json +1 -1
  420. package/.next/server/middleware-build-manifest.js +1 -1
  421. package/.next/server/middleware-manifest.json +5 -5
  422. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  423. package/.next/server/pages/404.html +1 -1
  424. package/.next/server/pages/500.html +1 -1
  425. package/.next/server/server-reference-manifest.js +1 -1
  426. package/.next/server/server-reference-manifest.json +1 -1
  427. package/.next/server/src/middleware.js +2 -2
  428. package/.next/server/src/middleware.js.map +1 -1
  429. package/.next/static/A9jP2ydtYbqx-IayWP2Sg/_buildManifest.js +1 -0
  430. package/.next/static/chunks/1496-d478bce7d7c85080.js +1 -0
  431. package/.next/static/chunks/1572-b663a83bba28a0a1.js +8 -0
  432. package/.next/static/chunks/1641-e5ff8f112da0a335.js +1 -0
  433. package/.next/static/chunks/1988-bd73f26184e930c1.js +1 -0
  434. package/.next/static/chunks/2266-d812473724cc6643.js +1 -0
  435. package/.next/static/chunks/{8345.bc5534ec13abc9ee.js → 2969.eb9ff8cd2a5034b0.js} +1 -1
  436. package/.next/static/chunks/3089.a0856f8093b90939.js +1 -0
  437. package/.next/static/chunks/{2005-f9d38c39f10c321f.js → 3189-fa8ec6d719d5e72b.js} +1 -1
  438. package/.next/static/chunks/3452-a639f121f2953f50.js +62 -0
  439. package/.next/static/chunks/3560-5bdceef09b50e1c3.js +1 -0
  440. package/.next/static/chunks/3659-0ab9580d5ee5deea.js +1 -0
  441. package/.next/static/chunks/3672-cd86ace43288da79.js +1 -0
  442. package/.next/static/chunks/3711-0050bb4d345c2c9c.js +1 -0
  443. package/.next/static/chunks/4147-20897d83b3cd3978.js +39 -0
  444. package/.next/static/chunks/435-17c79f3b9f8dd38d.js +1 -0
  445. package/.next/static/chunks/454.5fc2f8eef98483e3.js +1 -0
  446. package/.next/static/chunks/469-1f043fe082d9f475.js +1 -0
  447. package/.next/static/chunks/4740-62814d07b2b7f760.js +1 -0
  448. package/.next/static/chunks/5418-45aa7e646ad024be.js +1 -0
  449. package/.next/static/chunks/5441-cb0c31de8bce65c3.js +1 -0
  450. package/.next/static/chunks/6404-86615a5f5ce5c00f.js +1 -0
  451. package/.next/static/chunks/7445-d8a8be6e451c522e.js +1 -0
  452. package/.next/static/chunks/{3827-9e9a6e11ef808d90.js → 8041-05830e887c133085.js} +1 -1
  453. package/.next/static/chunks/812-dfe7ba07ddb7a565.js +1 -0
  454. package/.next/static/chunks/8404-14ef0345dc401ac5.js +1 -0
  455. package/.next/static/chunks/8678-c6c6be2672f337f6.js +1 -0
  456. package/.next/static/chunks/8855-f802599c4af81cca.js +1 -0
  457. package/.next/static/chunks/9562-5494feecd8c6f7a3.js +1 -0
  458. package/.next/static/chunks/9581-6d2523fd68a5e3c4.js +1 -0
  459. package/.next/static/chunks/app/_not-found/page-26055690a2426e22.js +1 -0
  460. package/.next/static/chunks/app/api/approvals/[id]/route-1a4c9e7a416ccbcf.js +1 -0
  461. package/.next/static/chunks/app/api/approvals/route-1a4c9e7a416ccbcf.js +1 -0
  462. package/.next/static/chunks/app/api/backup/route-1a4c9e7a416ccbcf.js +1 -0
  463. package/.next/static/chunks/app/api/browse/route-1a4c9e7a416ccbcf.js +1 -0
  464. package/.next/static/chunks/app/api/bugs/enhance/route-1a4c9e7a416ccbcf.js +1 -0
  465. package/.next/static/chunks/app/api/cwd/route-1a4c9e7a416ccbcf.js +1 -0
  466. package/.next/static/chunks/app/api/encryption/secure/route-1a4c9e7a416ccbcf.js +1 -0
  467. package/.next/static/chunks/app/api/env/route-1a4c9e7a416ccbcf.js +1 -0
  468. package/.next/static/chunks/app/api/flow/[id]/route-1a4c9e7a416ccbcf.js +1 -0
  469. package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-1a4c9e7a416ccbcf.js +1 -0
  470. package/.next/static/chunks/app/api/flow/[id]/versions/route-1a4c9e7a416ccbcf.js +1 -0
  471. package/.next/static/chunks/app/api/flow/compile/route-1a4c9e7a416ccbcf.js +1 -0
  472. package/.next/static/chunks/app/api/flow/generate/route-1a4c9e7a416ccbcf.js +1 -0
  473. package/.next/static/chunks/app/api/flow/improve/route-1a4c9e7a416ccbcf.js +1 -0
  474. package/.next/static/chunks/app/api/flow/prompt-renderer/route-1a4c9e7a416ccbcf.js +1 -0
  475. package/.next/static/chunks/app/api/flow/quick-chat/route-1a4c9e7a416ccbcf.js +1 -0
  476. package/.next/static/chunks/app/api/flow/repair/route-1a4c9e7a416ccbcf.js +1 -0
  477. package/.next/static/chunks/app/api/flow/route-1a4c9e7a416ccbcf.js +1 -0
  478. package/.next/static/chunks/app/api/git/route-1a4c9e7a416ccbcf.js +1 -0
  479. package/.next/static/chunks/app/api/init/route-1a4c9e7a416ccbcf.js +1 -0
  480. package/.next/static/chunks/app/api/local-models/capability/route-1a4c9e7a416ccbcf.js +1 -0
  481. package/.next/static/chunks/app/api/local-models/pull/route-1a4c9e7a416ccbcf.js +1 -0
  482. package/.next/static/chunks/app/api/local-models/suggest/route-1a4c9e7a416ccbcf.js +1 -0
  483. package/.next/static/chunks/app/api/mcp/app-sandbox/route-1a4c9e7a416ccbcf.js +1 -0
  484. package/.next/static/chunks/app/api/mcp/cancel/route-1a4c9e7a416ccbcf.js +1 -0
  485. package/.next/static/chunks/app/api/mcp/oauth-capability/route-1a4c9e7a416ccbcf.js +1 -0
  486. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-1a4c9e7a416ccbcf.js +1 -0
  487. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-1a4c9e7a416ccbcf.js +1 -0
  488. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-1a4c9e7a416ccbcf.js +1 -0
  489. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-1a4c9e7a416ccbcf.js +1 -0
  490. package/.next/static/chunks/app/api/mcp/servers/[name]/route-1a4c9e7a416ccbcf.js +1 -0
  491. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-1a4c9e7a416ccbcf.js +1 -0
  492. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-1a4c9e7a416ccbcf.js +1 -0
  493. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-1a4c9e7a416ccbcf.js +1 -0
  494. package/.next/static/chunks/app/api/mcp/servers/route-1a4c9e7a416ccbcf.js +1 -0
  495. package/.next/static/chunks/app/api/mcp/test-connection/route-1a4c9e7a416ccbcf.js +1 -0
  496. package/.next/static/chunks/app/api/mcp/test-connection/stream/route-1a4c9e7a416ccbcf.js +1 -0
  497. package/.next/static/chunks/app/api/mcp-registry/route-1a4c9e7a416ccbcf.js +1 -0
  498. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-1a4c9e7a416ccbcf.js +1 -0
  499. package/.next/static/chunks/app/api/model/[id]/route-1a4c9e7a416ccbcf.js +1 -0
  500. package/.next/static/chunks/app/api/model/provider/route-1a4c9e7a416ccbcf.js +1 -0
  501. package/.next/static/chunks/app/api/model/route-1a4c9e7a416ccbcf.js +1 -0
  502. package/.next/static/chunks/app/api/model/test/route-1a4c9e7a416ccbcf.js +1 -0
  503. package/.next/static/chunks/app/api/oauth/callback/route-1a4c9e7a416ccbcf.js +1 -0
  504. package/.next/static/chunks/app/api/oauth/initiate/route-1a4c9e7a416ccbcf.js +1 -0
  505. package/.next/static/chunks/app/api/oauth/reset/route-1a4c9e7a416ccbcf.js +1 -0
  506. package/.next/static/chunks/app/api/packages/build/route-1a4c9e7a416ccbcf.js +1 -0
  507. package/.next/static/chunks/app/api/packages/derive-secrets/route-1a4c9e7a416ccbcf.js +1 -0
  508. package/.next/static/chunks/app/api/packages/install/route-1a4c9e7a416ccbcf.js +1 -0
  509. package/.next/static/chunks/app/api/packages/install/status/route-1a4c9e7a416ccbcf.js +1 -0
  510. package/.next/static/chunks/app/api/packages/installed/route-1a4c9e7a416ccbcf.js +1 -0
  511. package/.next/static/chunks/app/api/packages/resolve/route-1a4c9e7a416ccbcf.js +1 -0
  512. package/.next/static/chunks/app/api/packages/scan-targets/route-1a4c9e7a416ccbcf.js +1 -0
  513. package/.next/static/chunks/app/api/packages/search/route-1a4c9e7a416ccbcf.js +1 -0
  514. package/.next/static/chunks/app/api/packages/uninstall/route-1a4c9e7a416ccbcf.js +1 -0
  515. package/.next/static/chunks/app/api/planned-executions/[id]/route-1a4c9e7a416ccbcf.js +1 -0
  516. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-1a4c9e7a416ccbcf.js +1 -0
  517. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-1a4c9e7a416ccbcf.js +1 -0
  518. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-1a4c9e7a416ccbcf.js +1 -0
  519. package/.next/static/chunks/app/api/planned-executions/reconcile/route-1a4c9e7a416ccbcf.js +1 -0
  520. package/.next/static/chunks/app/api/planned-executions/route-1a4c9e7a416ccbcf.js +1 -0
  521. package/.next/static/chunks/app/api/registry/auth/resend/route-1a4c9e7a416ccbcf.js +1 -0
  522. package/.next/static/chunks/app/api/registry/auth/reset/route-1a4c9e7a416ccbcf.js +1 -0
  523. package/.next/static/chunks/app/api/registry/auth/route-1a4c9e7a416ccbcf.js +1 -0
  524. package/.next/static/chunks/app/api/registry/oauth/callback/route-1a4c9e7a416ccbcf.js +1 -0
  525. package/.next/static/chunks/app/api/registry/oauth/initiate/route-1a4c9e7a416ccbcf.js +1 -0
  526. package/.next/static/chunks/app/api/registry/publish/route-1a4c9e7a416ccbcf.js +1 -0
  527. package/.next/static/chunks/app/api/registry/settings/route-1a4c9e7a416ccbcf.js +1 -0
  528. package/.next/static/chunks/app/api/restore/route-1a4c9e7a416ccbcf.js +1 -0
  529. package/.next/static/chunks/app/api/runs/active/route-1a4c9e7a416ccbcf.js +1 -0
  530. package/.next/static/chunks/app/api/storage/route-1a4c9e7a416ccbcf.js +1 -0
  531. package/.next/static/chunks/app/api/update/route-1a4c9e7a416ccbcf.js +1 -0
  532. package/.next/static/chunks/app/api/waves/route-1a4c9e7a416ccbcf.js +1 -0
  533. package/.next/static/chunks/app/api/webhooks/[id]/route-1a4c9e7a416ccbcf.js +1 -0
  534. package/.next/static/chunks/app/chat/page-558edb21321a32d0.js +1 -0
  535. package/.next/static/chunks/app/docs/{page-250523af44e96120.js → page-fc30f613607b8a26.js} +1 -1
  536. package/.next/static/chunks/app/executions/page-e71689c7256af1e8.js +1 -0
  537. package/.next/static/chunks/app/flows/page-e90e8d7b4c1bd1c8.js +1 -0
  538. package/.next/static/chunks/app/layout-038b35b382eef11d.js +1 -0
  539. package/.next/static/chunks/app/mcp/page-6041156fc67ef361.js +1 -0
  540. package/.next/static/chunks/app/mcp-flows/route-1a4c9e7a416ccbcf.js +1 -0
  541. package/.next/static/chunks/app/mcp-proxy/[server]/route-1a4c9e7a416ccbcf.js +1 -0
  542. package/.next/static/chunks/app/models/{error-5732fbb053e182c5.js → error-1718b538d6967e56.js} +1 -1
  543. package/.next/static/chunks/app/models/{loading-57d1c02d0817fc47.js → loading-1687ae86584f5b1b.js} +1 -1
  544. package/.next/static/chunks/app/models/page-d16f2721e7a93b43.js +1 -0
  545. package/.next/static/chunks/app/packages/page-c6b0e7aa95bc1064.js +1 -0
  546. package/.next/static/chunks/app/page-5c7fccd019942d46.js +1 -0
  547. package/.next/static/chunks/app/settings/page-fb336bb049bab72a.js +1 -0
  548. package/.next/static/chunks/app/v1/chat/completions/route-1a4c9e7a416ccbcf.js +1 -0
  549. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-1a4c9e7a416ccbcf.js +1 -0
  550. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-1a4c9e7a416ccbcf.js +1 -0
  551. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-1a4c9e7a416ccbcf.js +1 -0
  552. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-1a4c9e7a416ccbcf.js +1 -0
  553. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-1a4c9e7a416ccbcf.js +1 -0
  554. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-1a4c9e7a416ccbcf.js +1 -0
  555. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/inject/route-1a4c9e7a416ccbcf.js +1 -0
  556. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-1a4c9e7a416ccbcf.js +1 -0
  557. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-1a4c9e7a416ccbcf.js +1 -0
  558. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-1a4c9e7a416ccbcf.js +1 -0
  559. package/.next/static/chunks/app/v1/chat/conversations/route-1a4c9e7a416ccbcf.js +1 -0
  560. package/.next/static/chunks/app/v1/chat/events/route-1a4c9e7a416ccbcf.js +1 -0
  561. package/.next/static/chunks/app/v1/models/route-1a4c9e7a416ccbcf.js +1 -0
  562. package/.next/static/chunks/app/waves/page-3cf4b47b12662196.js +1 -0
  563. package/.next/static/chunks/{main-app-faff38c77cb00119.js → main-app-2de821d2899bb841.js} +1 -1
  564. package/.next/static/chunks/webpack-2d8e0c13c0b865fe.js +1 -0
  565. package/.next/static/css/30253fcfa8035221.css +1 -0
  566. package/.next/trace +10 -10
  567. package/.next/types/app/api/approvals/[id]/route.ts +1 -1
  568. package/.next/types/app/api/approvals/route.ts +1 -1
  569. package/.next/types/app/api/backup/route.ts +1 -1
  570. package/.next/types/app/api/browse/route.ts +1 -1
  571. package/.next/types/app/api/bugs/enhance/route.ts +1 -1
  572. package/.next/types/app/api/cwd/route.ts +1 -1
  573. package/.next/types/app/api/encryption/secure/route.ts +1 -1
  574. package/.next/types/app/api/env/route.ts +1 -1
  575. package/.next/types/app/api/flow/[id]/route.ts +1 -1
  576. package/.next/types/app/api/flow/[id]/versions/[versionId]/route.ts +1 -1
  577. package/.next/types/app/api/flow/[id]/versions/route.ts +1 -1
  578. package/.next/types/app/api/flow/compile/route.ts +1 -1
  579. package/.next/types/app/api/flow/generate/route.ts +1 -1
  580. package/.next/types/app/api/flow/improve/route.ts +1 -1
  581. package/.next/types/app/api/flow/prompt-renderer/route.ts +1 -1
  582. package/.next/types/app/api/flow/quick-chat/route.ts +1 -1
  583. package/.next/types/app/api/flow/repair/route.ts +1 -1
  584. package/.next/types/app/api/flow/route.ts +1 -1
  585. package/.next/types/app/api/git/route.ts +1 -1
  586. package/.next/types/app/api/init/route.ts +1 -1
  587. package/.next/types/app/api/local-models/capability/route.ts +1 -1
  588. package/.next/types/app/api/local-models/pull/route.ts +1 -1
  589. package/.next/types/app/api/local-models/suggest/route.ts +1 -1
  590. package/.next/types/app/api/mcp/app-sandbox/route.ts +1 -1
  591. package/.next/types/app/api/mcp/cancel/route.ts +1 -1
  592. package/.next/types/app/api/mcp/oauth-capability/route.ts +1 -1
  593. package/.next/types/app/api/mcp/servers/[name]/prompts/get/route.ts +1 -1
  594. package/.next/types/app/api/mcp/servers/[name]/prompts/route.ts +1 -1
  595. package/.next/types/app/api/mcp/servers/[name]/resources/read/route.ts +1 -1
  596. package/.next/types/app/api/mcp/servers/[name]/resources/route.ts +1 -1
  597. package/.next/types/app/api/mcp/servers/[name]/route.ts +1 -1
  598. package/.next/types/app/api/mcp/servers/[name]/status/route.ts +1 -1
  599. package/.next/types/app/api/mcp/servers/[name]/tools/[toolName]/route.ts +1 -1
  600. package/.next/types/app/api/mcp/servers/[name]/tools/route.ts +1 -1
  601. package/.next/types/app/api/mcp/servers/route.ts +1 -1
  602. package/.next/types/app/api/mcp/test-connection/route.ts +1 -1
  603. package/.next/types/app/api/mcp/test-connection/stream/route.ts +1 -1
  604. package/.next/types/app/api/mcp-registry/route.ts +1 -1
  605. package/.next/types/app/api/mcp-registry/spotlight/route.ts +1 -1
  606. package/.next/types/app/api/model/[id]/route.ts +1 -1
  607. package/.next/types/app/api/model/provider/route.ts +1 -1
  608. package/.next/types/app/api/model/route.ts +1 -1
  609. package/.next/types/app/api/model/test/route.ts +1 -1
  610. package/.next/types/app/api/oauth/callback/route.ts +1 -1
  611. package/.next/types/app/api/oauth/initiate/route.ts +1 -1
  612. package/.next/types/app/api/oauth/reset/route.ts +1 -1
  613. package/.next/types/app/api/packages/build/route.ts +1 -1
  614. package/.next/types/app/api/packages/derive-secrets/route.ts +1 -1
  615. package/.next/types/app/api/packages/install/route.ts +1 -1
  616. package/.next/types/app/api/packages/install/status/route.ts +1 -1
  617. package/.next/types/app/api/packages/installed/route.ts +1 -1
  618. package/.next/types/app/api/packages/resolve/route.ts +1 -1
  619. package/.next/types/app/api/packages/scan-targets/route.ts +347 -0
  620. package/.next/types/app/api/packages/search/route.ts +347 -0
  621. package/.next/types/app/api/packages/uninstall/route.ts +1 -1
  622. package/.next/types/app/api/planned-executions/[id]/route.ts +1 -1
  623. package/.next/types/app/api/planned-executions/[id]/run/route.ts +1 -1
  624. package/.next/types/app/api/planned-executions/[id]/runs/route.ts +1 -1
  625. package/.next/types/app/api/planned-executions/preview-schedule/route.ts +1 -1
  626. package/.next/types/app/api/planned-executions/reconcile/route.ts +1 -1
  627. package/.next/types/app/api/planned-executions/route.ts +1 -1
  628. package/.next/types/app/api/registry/auth/resend/route.ts +1 -1
  629. package/.next/types/app/api/registry/auth/reset/route.ts +1 -1
  630. package/.next/types/app/api/registry/auth/route.ts +1 -1
  631. package/.next/types/app/api/registry/oauth/callback/route.ts +1 -1
  632. package/.next/types/app/api/registry/oauth/initiate/route.ts +1 -1
  633. package/.next/types/app/api/registry/publish/route.ts +1 -1
  634. package/.next/types/app/api/registry/settings/route.ts +1 -1
  635. package/.next/types/app/api/restore/route.ts +1 -1
  636. package/.next/types/app/api/runs/active/route.ts +1 -1
  637. package/.next/types/app/api/storage/route.ts +1 -1
  638. package/.next/types/app/api/update/route.ts +1 -1
  639. package/.next/types/app/api/waves/route.ts +1 -1
  640. package/.next/types/app/api/webhooks/[id]/route.ts +1 -1
  641. package/.next/types/app/chat/page.ts +1 -1
  642. package/.next/types/app/docs/page.ts +1 -1
  643. package/.next/types/app/executions/page.ts +1 -1
  644. package/.next/types/app/flows/page.ts +1 -1
  645. package/.next/types/app/layout.ts +1 -1
  646. package/.next/types/app/mcp/page.ts +1 -1
  647. package/.next/types/app/mcp-flows/route.ts +1 -1
  648. package/.next/types/app/mcp-proxy/[server]/route.ts +1 -1
  649. package/.next/types/app/models/page.ts +1 -1
  650. package/.next/types/app/packages/page.ts +1 -1
  651. package/.next/types/app/page.ts +1 -1
  652. package/.next/types/app/settings/page.ts +1 -1
  653. package/.next/types/app/v1/chat/completions/route.ts +1 -1
  654. package/.next/types/app/v1/chat/conversations/[conversationId]/breakpoints/route.ts +1 -1
  655. package/.next/types/app/v1/chat/conversations/[conversationId]/cancel/route.ts +1 -1
  656. package/.next/types/app/v1/chat/conversations/[conversationId]/debug/continue/route.ts +1 -1
  657. package/.next/types/app/v1/chat/conversations/[conversationId]/debug/step/route.ts +1 -1
  658. package/.next/types/app/v1/chat/conversations/[conversationId]/edit-state/route.ts +1 -1
  659. package/.next/types/app/v1/chat/conversations/[conversationId]/events/route.ts +1 -1
  660. package/.next/types/app/v1/chat/conversations/[conversationId]/inject/route.ts +347 -0
  661. package/.next/types/app/v1/chat/conversations/[conversationId]/resources/route.ts +1 -1
  662. package/.next/types/app/v1/chat/conversations/[conversationId]/respond/route.ts +1 -1
  663. package/.next/types/app/v1/chat/conversations/[conversationId]/route.ts +1 -1
  664. package/.next/types/app/v1/chat/conversations/route.ts +1 -1
  665. package/.next/types/app/v1/chat/events/route.ts +1 -1
  666. package/.next/types/app/v1/models/route.ts +1 -1
  667. package/.next/types/app/waves/page.ts +1 -1
  668. package/.next/types/routes.d.ts +4 -1
  669. package/.next/types/validator.ts +27 -0
  670. package/README.md +6 -1
  671. package/bin/flujo.mjs +120 -120
  672. package/next.config.mjs +139 -139
  673. package/package.json +2 -1
  674. package/scripts/launch-next.mjs +112 -112
  675. package/.next/server/chunks/1083.js +0 -2
  676. package/.next/server/chunks/1197.js +0 -2
  677. package/.next/server/chunks/1373.js +0 -1
  678. package/.next/server/chunks/1604.js +0 -70
  679. package/.next/server/chunks/1659.js +0 -1
  680. package/.next/server/chunks/1819.js +0 -2
  681. package/.next/server/chunks/2434.js +0 -2
  682. package/.next/server/chunks/2666.js +0 -1
  683. package/.next/server/chunks/2940.js +0 -46
  684. package/.next/server/chunks/2985.js +0 -1
  685. package/.next/server/chunks/3273.js +0 -1
  686. package/.next/server/chunks/3304.js +0 -1
  687. package/.next/server/chunks/346.js +0 -1
  688. package/.next/server/chunks/3648.js +0 -1
  689. package/.next/server/chunks/38.js +0 -2
  690. package/.next/server/chunks/3951.js +0 -151
  691. package/.next/server/chunks/4042.js +0 -1
  692. package/.next/server/chunks/4239.js +0 -1
  693. package/.next/server/chunks/4426.js +0 -6
  694. package/.next/server/chunks/4661.js +0 -1
  695. package/.next/server/chunks/4765.js +0 -1
  696. package/.next/server/chunks/5148.js +0 -1
  697. package/.next/server/chunks/5471.js +0 -1
  698. package/.next/server/chunks/5958.js +0 -2
  699. package/.next/server/chunks/6005.js +0 -1
  700. package/.next/server/chunks/6126.js +0 -53
  701. package/.next/server/chunks/6849.js +0 -66
  702. package/.next/server/chunks/7214.js +0 -6
  703. package/.next/server/chunks/724.js +0 -27
  704. package/.next/server/chunks/7463.js +0 -6
  705. package/.next/server/chunks/7538.js +0 -21
  706. package/.next/server/chunks/8339.js +0 -1
  707. package/.next/server/chunks/8522.js +0 -2
  708. package/.next/server/chunks/8572.js +0 -1
  709. package/.next/server/chunks/8667.js +0 -1
  710. package/.next/server/chunks/869.js +0 -2
  711. package/.next/server/chunks/8979.js +0 -37
  712. package/.next/server/chunks/8994.js +0 -2
  713. package/.next/server/chunks/9165.js +0 -1
  714. package/.next/server/chunks/9387.js +0 -15
  715. package/.next/server/chunks/9400.js +0 -2
  716. package/.next/server/chunks/9472.js +0 -2
  717. package/.next/server/chunks/9583.js +0 -1
  718. package/.next/server/chunks/991.js +0 -2
  719. package/.next/static/Q6ITx_bZyoEOnKdZu_C7j/_buildManifest.js +0 -1
  720. package/.next/static/chunks/1594-309fa6363f215d76.js +0 -1
  721. package/.next/static/chunks/1809-e56cf3c476261e34.js +0 -1
  722. package/.next/static/chunks/1937-6bbdcdc660db562c.js +0 -1
  723. package/.next/static/chunks/1988-1b651d581fc44a36.js +0 -1
  724. package/.next/static/chunks/2164-7d6451e88a447de7.js +0 -1
  725. package/.next/static/chunks/218-6cbe09820faa3272.js +0 -1
  726. package/.next/static/chunks/2566-60acd5838abd9f3f.js +0 -1
  727. package/.next/static/chunks/2800-4fa29a3eeb693593.js +0 -1
  728. package/.next/static/chunks/289-98f50bfcf833d661.js +0 -1
  729. package/.next/static/chunks/3089.9e15df4ffd0fe4e8.js +0 -1
  730. package/.next/static/chunks/3418-a2f5d0c4f29ee2fb.js +0 -1
  731. package/.next/static/chunks/3556-b9855146c7506696.js +0 -1
  732. package/.next/static/chunks/3948-1cb8fc7a64805254.js +0 -1
  733. package/.next/static/chunks/3958-5641a828b320f2fe.js +0 -100
  734. package/.next/static/chunks/5328-4e556503b70e72b4.js +0 -1
  735. package/.next/static/chunks/5512.682bef7fd3a7c286.js +0 -1
  736. package/.next/static/chunks/6195-8c4c57628e9013d5.js +0 -1
  737. package/.next/static/chunks/6669-a949326b30ea1d39.js +0 -1
  738. package/.next/static/chunks/6777-4b0d05731a089de4.js +0 -1
  739. package/.next/static/chunks/6947-0ff3545efb53e959.js +0 -1
  740. package/.next/static/chunks/7304-e7cd725083617b81.js +0 -8
  741. package/.next/static/chunks/7445-2802e158c9093556.js +0 -1
  742. package/.next/static/chunks/795-704a0e742ecc2ef6.js +0 -1
  743. package/.next/static/chunks/812-3ceea0da38ad2891.js +0 -1
  744. package/.next/static/chunks/8551-a28272acfda62ac9.js +0 -1
  745. package/.next/static/chunks/8855-02889c9ab4bf0bcf.js +0 -1
  746. package/.next/static/chunks/9554-cb5bd72cb40e8dbe.js +0 -1
  747. package/.next/static/chunks/9562-ef0ddd4e6b9023cf.js +0 -1
  748. package/.next/static/chunks/app/_not-found/page-81dc485d60f94046.js +0 -1
  749. package/.next/static/chunks/app/api/approvals/[id]/route-c745e5b53b81491a.js +0 -1
  750. package/.next/static/chunks/app/api/approvals/route-c745e5b53b81491a.js +0 -1
  751. package/.next/static/chunks/app/api/backup/route-c745e5b53b81491a.js +0 -1
  752. package/.next/static/chunks/app/api/browse/route-c745e5b53b81491a.js +0 -1
  753. package/.next/static/chunks/app/api/bugs/enhance/route-c745e5b53b81491a.js +0 -1
  754. package/.next/static/chunks/app/api/cwd/route-c745e5b53b81491a.js +0 -1
  755. package/.next/static/chunks/app/api/encryption/secure/route-c745e5b53b81491a.js +0 -1
  756. package/.next/static/chunks/app/api/env/route-c745e5b53b81491a.js +0 -1
  757. package/.next/static/chunks/app/api/flow/[id]/route-c745e5b53b81491a.js +0 -1
  758. package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-c745e5b53b81491a.js +0 -1
  759. package/.next/static/chunks/app/api/flow/[id]/versions/route-c745e5b53b81491a.js +0 -1
  760. package/.next/static/chunks/app/api/flow/compile/route-c745e5b53b81491a.js +0 -1
  761. package/.next/static/chunks/app/api/flow/generate/route-c745e5b53b81491a.js +0 -1
  762. package/.next/static/chunks/app/api/flow/improve/route-c745e5b53b81491a.js +0 -1
  763. package/.next/static/chunks/app/api/flow/prompt-renderer/route-c745e5b53b81491a.js +0 -1
  764. package/.next/static/chunks/app/api/flow/quick-chat/route-c745e5b53b81491a.js +0 -1
  765. package/.next/static/chunks/app/api/flow/repair/route-c745e5b53b81491a.js +0 -1
  766. package/.next/static/chunks/app/api/flow/route-c745e5b53b81491a.js +0 -1
  767. package/.next/static/chunks/app/api/git/route-c745e5b53b81491a.js +0 -1
  768. package/.next/static/chunks/app/api/init/route-c745e5b53b81491a.js +0 -1
  769. package/.next/static/chunks/app/api/local-models/capability/route-c745e5b53b81491a.js +0 -1
  770. package/.next/static/chunks/app/api/local-models/pull/route-c745e5b53b81491a.js +0 -1
  771. package/.next/static/chunks/app/api/local-models/suggest/route-c745e5b53b81491a.js +0 -1
  772. package/.next/static/chunks/app/api/mcp/app-sandbox/route-c745e5b53b81491a.js +0 -1
  773. package/.next/static/chunks/app/api/mcp/cancel/route-c745e5b53b81491a.js +0 -1
  774. package/.next/static/chunks/app/api/mcp/oauth-capability/route-c745e5b53b81491a.js +0 -1
  775. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-c745e5b53b81491a.js +0 -1
  776. package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-c745e5b53b81491a.js +0 -1
  777. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-c745e5b53b81491a.js +0 -1
  778. package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-c745e5b53b81491a.js +0 -1
  779. package/.next/static/chunks/app/api/mcp/servers/[name]/route-c745e5b53b81491a.js +0 -1
  780. package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-c745e5b53b81491a.js +0 -1
  781. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-c745e5b53b81491a.js +0 -1
  782. package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-c745e5b53b81491a.js +0 -1
  783. package/.next/static/chunks/app/api/mcp/servers/route-c745e5b53b81491a.js +0 -1
  784. package/.next/static/chunks/app/api/mcp/test-connection/route-c745e5b53b81491a.js +0 -1
  785. package/.next/static/chunks/app/api/mcp/test-connection/stream/route-c745e5b53b81491a.js +0 -1
  786. package/.next/static/chunks/app/api/mcp-registry/route-c745e5b53b81491a.js +0 -1
  787. package/.next/static/chunks/app/api/mcp-registry/spotlight/route-c745e5b53b81491a.js +0 -1
  788. package/.next/static/chunks/app/api/model/[id]/route-c745e5b53b81491a.js +0 -1
  789. package/.next/static/chunks/app/api/model/provider/route-c745e5b53b81491a.js +0 -1
  790. package/.next/static/chunks/app/api/model/route-c745e5b53b81491a.js +0 -1
  791. package/.next/static/chunks/app/api/model/test/route-c745e5b53b81491a.js +0 -1
  792. package/.next/static/chunks/app/api/oauth/callback/route-c745e5b53b81491a.js +0 -1
  793. package/.next/static/chunks/app/api/oauth/initiate/route-c745e5b53b81491a.js +0 -1
  794. package/.next/static/chunks/app/api/oauth/reset/route-c745e5b53b81491a.js +0 -1
  795. package/.next/static/chunks/app/api/packages/build/route-c745e5b53b81491a.js +0 -1
  796. package/.next/static/chunks/app/api/packages/derive-secrets/route-c745e5b53b81491a.js +0 -1
  797. package/.next/static/chunks/app/api/packages/install/route-c745e5b53b81491a.js +0 -1
  798. package/.next/static/chunks/app/api/packages/install/status/route-c745e5b53b81491a.js +0 -1
  799. package/.next/static/chunks/app/api/packages/installed/route-c745e5b53b81491a.js +0 -1
  800. package/.next/static/chunks/app/api/packages/resolve/route-c745e5b53b81491a.js +0 -1
  801. package/.next/static/chunks/app/api/packages/uninstall/route-c745e5b53b81491a.js +0 -1
  802. package/.next/static/chunks/app/api/planned-executions/[id]/route-c745e5b53b81491a.js +0 -1
  803. package/.next/static/chunks/app/api/planned-executions/[id]/run/route-c745e5b53b81491a.js +0 -1
  804. package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-c745e5b53b81491a.js +0 -1
  805. package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-c745e5b53b81491a.js +0 -1
  806. package/.next/static/chunks/app/api/planned-executions/reconcile/route-c745e5b53b81491a.js +0 -1
  807. package/.next/static/chunks/app/api/planned-executions/route-c745e5b53b81491a.js +0 -1
  808. package/.next/static/chunks/app/api/registry/auth/resend/route-c745e5b53b81491a.js +0 -1
  809. package/.next/static/chunks/app/api/registry/auth/reset/route-c745e5b53b81491a.js +0 -1
  810. package/.next/static/chunks/app/api/registry/auth/route-c745e5b53b81491a.js +0 -1
  811. package/.next/static/chunks/app/api/registry/oauth/callback/route-c745e5b53b81491a.js +0 -1
  812. package/.next/static/chunks/app/api/registry/oauth/initiate/route-c745e5b53b81491a.js +0 -1
  813. package/.next/static/chunks/app/api/registry/publish/route-c745e5b53b81491a.js +0 -1
  814. package/.next/static/chunks/app/api/registry/settings/route-c745e5b53b81491a.js +0 -1
  815. package/.next/static/chunks/app/api/restore/route-c745e5b53b81491a.js +0 -1
  816. package/.next/static/chunks/app/api/runs/active/route-c745e5b53b81491a.js +0 -1
  817. package/.next/static/chunks/app/api/storage/route-c745e5b53b81491a.js +0 -1
  818. package/.next/static/chunks/app/api/update/route-c745e5b53b81491a.js +0 -1
  819. package/.next/static/chunks/app/api/waves/route-c745e5b53b81491a.js +0 -1
  820. package/.next/static/chunks/app/api/webhooks/[id]/route-c745e5b53b81491a.js +0 -1
  821. package/.next/static/chunks/app/chat/page-c39160ddf90bbae9.js +0 -1
  822. package/.next/static/chunks/app/executions/page-10d09f36de30939f.js +0 -1
  823. package/.next/static/chunks/app/flows/page-0d8fb471adfc2981.js +0 -1
  824. package/.next/static/chunks/app/layout-eea7078d7553c21a.js +0 -1
  825. package/.next/static/chunks/app/mcp/page-8ad71bf5801bfe5f.js +0 -1
  826. package/.next/static/chunks/app/mcp-flows/route-c745e5b53b81491a.js +0 -1
  827. package/.next/static/chunks/app/mcp-proxy/[server]/route-c745e5b53b81491a.js +0 -1
  828. package/.next/static/chunks/app/models/page-17e8e6668f92f58d.js +0 -1
  829. package/.next/static/chunks/app/packages/page-9f61751e98134f3d.js +0 -1
  830. package/.next/static/chunks/app/page-d3ea90b065b95d1e.js +0 -1
  831. package/.next/static/chunks/app/settings/page-afbf8790e99fecaf.js +0 -1
  832. package/.next/static/chunks/app/v1/chat/completions/route-c745e5b53b81491a.js +0 -1
  833. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-c745e5b53b81491a.js +0 -1
  834. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-c745e5b53b81491a.js +0 -1
  835. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-c745e5b53b81491a.js +0 -1
  836. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-c745e5b53b81491a.js +0 -1
  837. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-c745e5b53b81491a.js +0 -1
  838. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-c745e5b53b81491a.js +0 -1
  839. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-c745e5b53b81491a.js +0 -1
  840. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-c745e5b53b81491a.js +0 -1
  841. package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-c745e5b53b81491a.js +0 -1
  842. package/.next/static/chunks/app/v1/chat/conversations/route-c745e5b53b81491a.js +0 -1
  843. package/.next/static/chunks/app/v1/chat/events/route-c745e5b53b81491a.js +0 -1
  844. package/.next/static/chunks/app/v1/models/route-c745e5b53b81491a.js +0 -1
  845. package/.next/static/chunks/app/waves/page-97ad6b51c9cae4b3.js +0 -1
  846. package/.next/static/chunks/webpack-0d4a4e773990ac44.js +0 -1
  847. package/.next/static/css/40f9bef305b11bf5.css +0 -1
  848. /package/.next/static/{Q6ITx_bZyoEOnKdZu_C7j → A9jP2ydtYbqx-IayWP2Sg}/_ssgManifest.js +0 -0
@@ -1,5 +1,5 @@
1
- "use strict";exports.id=6529,exports.ids=[6529],exports.modules={32631:(a,b,c)=>{c.d(b,{D:()=>h}),c(21124);var d=c(38301),e=c(19815);c(48748),c(9718);let f=(0,e.h)("frontend/contexts/ThemeContext"),g=(0,d.createContext)(void 0),h=()=>{let a=(0,d.useContext)(g);if(!a)throw f.error("useTheme hook used outside of ThemeProvider"),Error("useTheme must be used within a ThemeProvider");return f.debug("useTheme hook accessed"),a}},32720:(a,b,c)=>{c.d(b,{A:()=>B});var d=c(21124),e=c(38301),f=c(40512),g=c(83899),h=c(52327),i=c(81637),j=c(43312),k=c(44079),l=c(37674),m=c(41893),n=c(88745),o=c(8521),p=c(79515),q=c(89490),r=c(75983),s=c(50553),t=c(84233),u=c(19925),v=c(68730),w=c(30717),x=c(98810),y=c(52399),z=c(91314);let A=(0,c(19815).h)("frontend/components/shared/FolderPickerDialog"),B=({open:a,title:b="Choose a folder",selectFiles:c=!1,initialPath:B,onClose:C,onSelect:D})=>{let[E,F]=(0,e.useState)(null),[G,H]=(0,e.useState)(""),[I,J]=(0,e.useState)(!1),[K,L]=(0,e.useState)(null),M=(0,e.useCallback)(async a=>{J(!0),L(null);try{let b=a?`?path=${encodeURIComponent(a)}`:"",c=await fetch(`/api/browse${b}`),d=await c.json();if(!c.ok||d.error)return void L(d.error||`HTTP ${c.status}`);F(d),H(d.path)}catch(a){A.warn("Browse failed",a),L("Could not reach the backend to browse folders.")}finally{J(!1)}},[]);(0,e.useEffect)(()=>{a?M(B||void 0):(F(null),L(null))},[a,B,M]);let N=a=>{D(a),C()};return(0,d.jsxs)(f.A,{open:a,onClose:C,maxWidth:"sm",fullWidth:!0,children:[(0,d.jsx)(g.A,{children:b}),(0,d.jsxs)(h.A,{dividers:!0,sx:{display:"flex",flexDirection:"column",gap:1.5},children:[(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,d.jsx)(j.A,{title:"Up one folder",children:(0,d.jsx)("span",{children:(0,d.jsx)(k.A,{size:"small",disabled:!E?.parent||I,onClick:()=>E?.parent&&void M(E.parent),children:(0,d.jsx)(y.A,{fontSize:"small"})})})}),(0,d.jsx)(j.A,{title:"Home folder",children:(0,d.jsx)("span",{children:(0,d.jsx)(k.A,{size:"small",disabled:I,onClick:()=>void M(),children:(0,d.jsx)(z.A,{fontSize:"small"})})})}),(0,d.jsx)(l.A,{fullWidth:!0,size:"small",value:G,onChange:a=>H(a.target.value),onKeyDown:a=>{"Enter"===a.key&&(a.preventDefault(),M(G))},placeholder:"Type a path and press Enter"})]}),E&&E.drives.length>0&&(0,d.jsx)(i.default,{sx:{display:"flex",gap:.75,flexWrap:"wrap"},children:E.drives.map(a=>(0,d.jsx)(m.A,{label:a,size:"small",variant:E.path.toLowerCase().startsWith(a.toLowerCase())?"filled":"outlined",onClick:()=>void M(a)},a))}),K&&(0,d.jsx)(n.A,{severity:"error",children:K}),(0,d.jsxs)(i.default,{sx:{minHeight:240,maxHeight:"45vh",overflow:"auto",border:1,borderColor:"divider",borderRadius:1},children:[I&&(0,d.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",py:4},children:(0,d.jsx)(o.default,{size:24})}),!I&&E&&0===E.entries.length&&(0,d.jsx)(p.default,{variant:"body2",color:"text.secondary",sx:{p:2},children:"This folder is empty."}),!I&&(0,d.jsx)(q.A,{dense:!0,disablePadding:!0,children:E?.entries.map(a=>(0,d.jsxs)(r.A,{disabled:!a.isDirectory&&!c,onClick:()=>a.isDirectory?void M(a.path):N(a.path),children:[(0,d.jsx)(s.A,{sx:{minWidth:34},children:a.isDirectory?(0,d.jsx)(w.A,{fontSize:"small",color:"primary"}):(0,d.jsx)(x.A,{fontSize:"small"})}),(0,d.jsx)(t.A,{primary:a.name,primaryTypographyProps:{noWrap:!0}})]},a.path))})]})]}),(0,d.jsxs)(u.A,{children:[(0,d.jsx)(v.A,{onClick:C,children:"Cancel"}),(0,d.jsx)(v.A,{variant:"contained",disabled:!E||I,onClick:()=>E&&N(E.path),children:"Select this folder"})]})]})}},33799:(a,b,c)=>{c.d(b,{b:()=>f,c:()=>g});var d=c(50648);async function e(a,b){try{let c=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!c.ok||!c.body)return null;let e=null;return await (0,d.z)(c,a=>{"stdout"===a.type||"stderr"===a.type?b(a.data):"result"===a.type&&(e={success:a.success,output:a.commandOutput??""})}),e}catch(a){return console.error("Error streaming git command:",a),null}}let f=async(a,b,c)=>{if(c){let d=await e({action:"installStream",savePath:a,installCommand:b},c);if(d)return{success:d.success,message:d.success?{type:"success",text:"Dependencies installed successfully. You can now build the server."}:{type:"error",text:"Error installing dependencies. You can still try to build the server."},output:d.output||"No output was returned from the installation process."}}try{let c=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"install",savePath:a,installCommand:b})}),d=await c.json();if(!c.ok)throw Error(d.error||"Failed to install dependencies");return{success:!0,message:{type:"success",text:"Dependencies installed successfully. You can now build the server."},output:d.commandOutput||"No output was returned from the installation process."}}catch(a){return console.error("Error installing dependencies:",a),{success:!1,message:{type:"error",text:`Error installing dependencies: ${a.message||"Unknown error"}. You can still try to build the server.`},output:a instanceof Response?await a.text():a?.message||"Unknown error"}}},g=async(a,b,c)=>{if(c){let d=await e({action:"buildStream",savePath:a,buildCommand:b},c);if(d)return{success:d.success,message:d.success?{type:"success",text:"Server built successfully."}:{type:"error",text:"Error building server."},output:d.output||"No output was returned from the build process."}}try{let c=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"build",savePath:a,buildCommand:b})}),d=await c.json();if(!c.ok)throw Error(d.error||"Failed to build repository");return{success:!0,message:{type:"success",text:"Server built successfully."},output:d.commandOutput||"No output was returned from the build process."}}catch(a){return console.error("Error building server:",a),{success:!1,message:{type:"error",text:`Error building server: ${a.message||"Unknown error"}.`},output:a instanceof Response?await a.text():a?.message||"Unknown error"}}}},35070:(a,b,c)=>{c.d(b,{A:()=>ao});var d=c(21124),e=c(38301),f=c(19815),g=c(48748),h=c(8165),i=c(93083),j=c(65343),k=c(53222),l=c(12033),m=c(91034),n=c(95786),o=c(64956),p=c(55641),q=c(29320),r=c(5748),s=c(38941),t=c(51694),u=c(1312),v=c(25750),w=c(5501),x=c(99587),y=c(61615),z=c(78352),A=c(28055),B=c(44920),C=c(46410),D=c(41893),E=c(56685),F=c(71756),G=c(91901),H=c(83013);let I=({transport:a,size:b="small"})=>{let{colors:c}=(0,g.Ic)(),e=c.domain.transport,f=(()=>{switch(a){case"stdio":return{label:"STDIO",icon:(0,d.jsx)(E.A,{fontSize:"small"}),color:e.stdio.fg,bgColor:e.stdio.bg};case"websocket":return{label:"WebSocket",icon:(0,d.jsx)(F.A,{fontSize:"small"}),color:e.websocket.fg,bgColor:e.websocket.bg};case"sse":return{label:"SSE",icon:(0,d.jsx)(G.A,{fontSize:"small"}),color:e.sse.fg,bgColor:e.sse.bg};case"streamable":return{label:"HTTP Stream",icon:(0,d.jsx)(H.A,{fontSize:"small"}),color:e.streamable.fg,bgColor:e.streamable.bg};default:return{label:"UNKNOWN",icon:(0,d.jsx)(E.A,{fontSize:"small"}),color:e.default.fg,bgColor:e.default.bg}}})();return(0,d.jsx)(D.A,{icon:f.icon,label:f.label,size:b,sx:{backgroundColor:f.bgColor,color:f.color,fontWeight:500,fontSize:"small"===b?"0.75rem":"0.875rem",height:"small"===b?24:32,"& .MuiChip-icon":{color:f.color}}})};var J=c(40512),K=c(83899),L=c(52327),M=c(19925),N=c(68730),O=c(81637),P=c(79515),Q=c(88745),R=c(95587),S=c(77028),T=c(89490),U=c(71439),V=c(50553),W=c(84233),X=c(72264),Y=c(53455),Z=c(33799);let $=(0,f.h)("frontend/components/mcp/MCPServerManager/ServerUpdateDialog"),_=({open:a,onClose:b,serverName:c,rootPath:f,installCommand:g,buildCommand:i,enabled:k,updateInfo:l,onToggle:m,onUpdated:n})=>{let[o,p]=(0,e.useState)(null),[q,r]=(0,e.useState)(!1),[s,t]=(0,e.useState)(!1),[u,w]=(0,e.useState)(!1),[x,z]=(0,e.useState)(null),[A,B]=(0,e.useState)({}),[C,E]=(0,e.useState)(""),F=!!(g&&g.trim()),G=!!(i&&i.trim()),H=[{key:"stop",label:"Stop server",active:k},{key:"pull",label:"Pull latest changes",active:!0},{key:"install",label:`Install dependencies (${g})`,active:F},{key:"build",label:`Build (${i})`,active:G},{key:"restart",label:"Restart server",active:k}];(0,e.useEffect)(()=>{a&&(r(!1),t(!1),w(!1),z(null),B({}),E(""))},[a,c]),(0,e.useEffect)(()=>{if(a&&l.remoteUrl&&l.localSha&&l.remoteSha){let a=!1;return(0,Y.Qz)(l.remoteUrl,l.localSha,l.remoteSha).then(b=>{a||p(b)}),()=>{a=!0}}p(null)},[a,l.remoteUrl,l.localSha,l.remoteSha]);let I=(0,e.useCallback)((a,b)=>{B(c=>({...c,[a]:b}))},[]),_=(0,e.useCallback)((a,b)=>{E(c=>c+(c?"\n":"")+`--- ${a} ---
1
+ "use strict";exports.id=1578,exports.ids=[1578],exports.modules={31411:(a,b,c)=>{c.d(b,{A:()=>o});var d=c(21124),e=c(38301),f=c(79515),g=c(81637),h=c(95587),i=c(67191),j=c(82605),k=c(50062),l=c(7675),m=c(94367),n=c(37674);let o=({schema:a,values:b,onChange:c,size:o="small"})=>{let[p,q]=(0,e.useState)({}),r=a?.properties??{},s=Array.isArray(a?.required)?a.required:[],t=Object.keys(r);if(0===t.length)return(0,d.jsx)(f.default,{variant:"body2",color:"text.secondary",children:"This tool takes no parameters."});let u=(a,d)=>{let e={...b};void 0===d?delete e[a]:e[a]=d,c(e)};return(0,d.jsx)(g.default,{sx:{display:"flex",flexDirection:"column",gap:2},children:t.map(a=>{let c=r[a]??{},e=s.includes(a)?`${a} *`:a,t="string"==typeof c.description?c.description:"";if("boolean"===c.type)return(0,d.jsx)(h.A,{control:(0,d.jsx)(i.A,{size:o,checked:!0===b[a],onChange:b=>u(a,b.target.checked)}),label:(0,d.jsxs)(g.default,{children:[(0,d.jsx)(f.default,{variant:"body2",children:e}),t&&(0,d.jsx)(f.default,{variant:"caption",color:"text.secondary",children:t})]})},a);if(Array.isArray(c.enum)&&c.enum.length>0){let g=b[a];return(0,d.jsxs)(j.A,{size:o,fullWidth:!0,children:[(0,d.jsx)(k.A,{id:`schema-param-${a}`,children:e}),(0,d.jsx)(l.A,{labelId:`schema-param-${a}`,label:e,value:c.enum.includes(g)?g:"",onChange:b=>u(a,b.target.value),children:c.enum.map(a=>(0,d.jsx)(m.A,{value:a,children:String(a)},String(a)))}),t&&(0,d.jsx)(f.default,{variant:"caption",color:"text.secondary",sx:{mt:.5,mx:1.75},children:t})]},a)}if("number"===c.type||"integer"===c.type)return(0,d.jsx)(n.A,{fullWidth:!0,size:o,type:"number",label:e,value:void 0!==b[a]?String(b[a]):"",onChange:b=>{let d=b.target.value;if(""===d)return void u(a,void 0);let e="integer"===c.type?parseInt(d,10):parseFloat(d);u(a,Number.isNaN(e)?void 0:e)},helperText:t},a);if("object"===c.type||"array"===c.type){let f=p[a]??(void 0!==b[a]?JSON.stringify(b[a],null,2):""),g=null;if(f.trim())try{JSON.parse(f)}catch{g="Not valid JSON yet"}return(0,d.jsx)(n.A,{fullWidth:!0,size:o,multiline:!0,minRows:2,label:`${e} (JSON ${c.type})`,value:f,error:!!g,helperText:g??t,onChange:b=>{let c=b.target.value;if(q(b=>({...b,[a]:c})),!c.trim())return void u(a,void 0);try{u(a,JSON.parse(c))}catch{}},slotProps:{input:{sx:{fontFamily:"monospace",fontSize:13}}}},a)}return(0,d.jsx)(n.A,{fullWidth:!0,size:o,label:e,value:void 0!==b[a]?String(b[a]):"",onChange:b=>u(a,""===b.target.value?void 0:b.target.value),helperText:t},a)})})}},32631:(a,b,c)=>{c.d(b,{D:()=>h}),c(21124);var d=c(38301),e=c(19815);c(48748),c(9718);let f=(0,e.h)("frontend/contexts/ThemeContext"),g=(0,d.createContext)(void 0),h=()=>{let a=(0,d.useContext)(g);if(!a)throw f.error("useTheme hook used outside of ThemeProvider"),Error("useTheme must be used within a ThemeProvider");return f.debug("useTheme hook accessed"),a}},32720:(a,b,c)=>{c.d(b,{A:()=>B});var d=c(21124),e=c(38301),f=c(40512),g=c(83899),h=c(52327),i=c(81637),j=c(43312),k=c(44079),l=c(37674),m=c(41893),n=c(88745),o=c(8521),p=c(79515),q=c(89490),r=c(75983),s=c(50553),t=c(84233),u=c(19925),v=c(68730),w=c(30717),x=c(98810),y=c(52399),z=c(91314);let A=(0,c(19815).h)("frontend/components/shared/FolderPickerDialog"),B=({open:a,title:b="Choose a folder",selectFiles:c=!1,initialPath:B,onClose:C,onSelect:D})=>{let[E,F]=(0,e.useState)(null),[G,H]=(0,e.useState)(""),[I,J]=(0,e.useState)(!1),[K,L]=(0,e.useState)(null),M=(0,e.useCallback)(async a=>{J(!0),L(null);try{let b=a?`?path=${encodeURIComponent(a)}`:"",c=await fetch(`/api/browse${b}`),d=await c.json();if(!c.ok||d.error)return void L(d.error||`HTTP ${c.status}`);F(d),H(d.path)}catch(a){A.warn("Browse failed",a),L("Could not reach the backend to browse folders.")}finally{J(!1)}},[]);(0,e.useEffect)(()=>{a?M(B||void 0):(F(null),L(null))},[a,B,M]);let N=a=>{D(a),C()};return(0,d.jsxs)(f.A,{open:a,onClose:C,maxWidth:"sm",fullWidth:!0,children:[(0,d.jsx)(g.A,{children:b}),(0,d.jsxs)(h.A,{dividers:!0,sx:{display:"flex",flexDirection:"column",gap:1.5},children:[(0,d.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,d.jsx)(j.A,{title:"Up one folder",children:(0,d.jsx)("span",{children:(0,d.jsx)(k.A,{size:"small",disabled:!E?.parent||I,onClick:()=>E?.parent&&void M(E.parent),children:(0,d.jsx)(y.A,{fontSize:"small"})})})}),(0,d.jsx)(j.A,{title:"Home folder",children:(0,d.jsx)("span",{children:(0,d.jsx)(k.A,{size:"small",disabled:I,onClick:()=>void M(),children:(0,d.jsx)(z.A,{fontSize:"small"})})})}),(0,d.jsx)(l.A,{fullWidth:!0,size:"small",value:G,onChange:a=>H(a.target.value),onKeyDown:a=>{"Enter"===a.key&&(a.preventDefault(),M(G))},placeholder:"Type a path and press Enter"})]}),E&&E.drives.length>0&&(0,d.jsx)(i.default,{sx:{display:"flex",gap:.75,flexWrap:"wrap"},children:E.drives.map(a=>(0,d.jsx)(m.A,{label:a,size:"small",variant:E.path.toLowerCase().startsWith(a.toLowerCase())?"filled":"outlined",onClick:()=>void M(a)},a))}),K&&(0,d.jsx)(n.A,{severity:"error",children:K}),(0,d.jsxs)(i.default,{sx:{minHeight:240,maxHeight:"45vh",overflow:"auto",border:1,borderColor:"divider",borderRadius:1},children:[I&&(0,d.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",py:4},children:(0,d.jsx)(o.default,{size:24})}),!I&&E&&0===E.entries.length&&(0,d.jsx)(p.default,{variant:"body2",color:"text.secondary",sx:{p:2},children:"This folder is empty."}),!I&&(0,d.jsx)(q.A,{dense:!0,disablePadding:!0,children:E?.entries.map(a=>(0,d.jsxs)(r.A,{disabled:!a.isDirectory&&!c,onClick:()=>a.isDirectory?void M(a.path):N(a.path),children:[(0,d.jsx)(s.A,{sx:{minWidth:34},children:a.isDirectory?(0,d.jsx)(w.A,{fontSize:"small",color:"primary"}):(0,d.jsx)(x.A,{fontSize:"small"})}),(0,d.jsx)(t.A,{primary:a.name,primaryTypographyProps:{noWrap:!0}})]},a.path))})]})]}),(0,d.jsxs)(u.A,{children:[(0,d.jsx)(v.A,{onClick:C,children:"Cancel"}),(0,d.jsx)(v.A,{variant:"contained",disabled:!E||I,onClick:()=>E&&N(E.path),children:"Select this folder"})]})]})}},33799:(a,b,c)=>{c.d(b,{b:()=>f,c:()=>g});var d=c(50648);async function e(a,b){try{let c=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!c.ok||!c.body)return null;let e=null;return await (0,d.z)(c,a=>{"stdout"===a.type||"stderr"===a.type?b(a.data):"result"===a.type&&(e={success:a.success,output:a.commandOutput??""})}),e}catch(a){return console.error("Error streaming git command:",a),null}}let f=async(a,b,c)=>{if(c){let d=await e({action:"installStream",savePath:a,installCommand:b},c);if(d)return{success:d.success,message:d.success?{type:"success",text:"Dependencies installed successfully. You can now build the server."}:{type:"error",text:"Error installing dependencies. You can still try to build the server."},output:d.output||"No output was returned from the installation process."}}try{let c=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"install",savePath:a,installCommand:b})}),d=await c.json();if(!c.ok)throw Error(d.error||"Failed to install dependencies");return{success:!0,message:{type:"success",text:"Dependencies installed successfully. You can now build the server."},output:d.commandOutput||"No output was returned from the installation process."}}catch(a){return console.error("Error installing dependencies:",a),{success:!1,message:{type:"error",text:`Error installing dependencies: ${a.message||"Unknown error"}. You can still try to build the server.`},output:a instanceof Response?await a.text():a?.message||"Unknown error"}}},g=async(a,b,c)=>{if(c){let d=await e({action:"buildStream",savePath:a,buildCommand:b},c);if(d)return{success:d.success,message:d.success?{type:"success",text:"Server built successfully."}:{type:"error",text:"Error building server."},output:d.output||"No output was returned from the build process."}}try{let c=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"build",savePath:a,buildCommand:b})}),d=await c.json();if(!c.ok)throw Error(d.error||"Failed to build repository");return{success:!0,message:{type:"success",text:"Server built successfully."},output:d.commandOutput||"No output was returned from the build process."}}catch(a){return console.error("Error building server:",a),{success:!1,message:{type:"error",text:`Error building server: ${a.message||"Unknown error"}.`},output:a instanceof Response?await a.text():a?.message||"Unknown error"}}}},35070:(a,b,c)=>{c.d(b,{A:()=>ao});var d=c(21124),e=c(38301),f=c(19815),g=c(48748),h=c(8165),i=c(93083),j=c(65343),k=c(53222),l=c(12033),m=c(91034),n=c(95786),o=c(64956),p=c(55641),q=c(29320),r=c(5748),s=c(38941),t=c(51694),u=c(1312),v=c(25750),w=c(5501),x=c(99587),y=c(61615),z=c(78352),A=c(28055),B=c(44920),C=c(46410),D=c(41893),E=c(56685),F=c(71756),G=c(91901),H=c(83013);let I=({transport:a,size:b="small"})=>{let{colors:c}=(0,g.Ic)(),e=c.domain.transport,f=(()=>{switch(a){case"stdio":return{label:"STDIO",icon:(0,d.jsx)(E.A,{fontSize:"small"}),color:e.stdio.fg,bgColor:e.stdio.bg};case"websocket":return{label:"WebSocket",icon:(0,d.jsx)(F.A,{fontSize:"small"}),color:e.websocket.fg,bgColor:e.websocket.bg};case"sse":return{label:"SSE",icon:(0,d.jsx)(G.A,{fontSize:"small"}),color:e.sse.fg,bgColor:e.sse.bg};case"streamable":return{label:"HTTP Stream",icon:(0,d.jsx)(H.A,{fontSize:"small"}),color:e.streamable.fg,bgColor:e.streamable.bg};default:return{label:"UNKNOWN",icon:(0,d.jsx)(E.A,{fontSize:"small"}),color:e.default.fg,bgColor:e.default.bg}}})();return(0,d.jsx)(D.A,{icon:f.icon,label:f.label,size:b,sx:{backgroundColor:f.bgColor,color:f.color,fontWeight:500,fontSize:"small"===b?"0.75rem":"0.875rem",height:"small"===b?24:32,"& .MuiChip-icon":{color:f.color}}})};var J=c(40512),K=c(83899),L=c(52327),M=c(19925),N=c(68730),O=c(81637),P=c(79515),Q=c(88745),R=c(95587),S=c(77028),T=c(89490),U=c(71439),V=c(50553),W=c(84233),X=c(72264),Y=c(53455),Z=c(33799);let $=(0,f.h)("frontend/components/mcp/MCPServerManager/ServerUpdateDialog"),_=({open:a,onClose:b,serverName:c,rootPath:f,installCommand:g,buildCommand:i,enabled:k,updateInfo:l,onToggle:m,onUpdated:n})=>{let[o,p]=(0,e.useState)(null),[q,r]=(0,e.useState)(!1),[s,t]=(0,e.useState)(!1),[u,w]=(0,e.useState)(!1),[x,z]=(0,e.useState)(null),[A,B]=(0,e.useState)({}),[C,E]=(0,e.useState)(""),F=!!(g&&g.trim()),G=!!(i&&i.trim()),H=[{key:"stop",label:"Stop server",active:k},{key:"pull",label:"Pull latest changes",active:!0},{key:"install",label:`Install dependencies (${g})`,active:F},{key:"build",label:`Build (${i})`,active:G},{key:"restart",label:"Restart server",active:k}];(0,e.useEffect)(()=>{a&&(r(!1),t(!1),w(!1),z(null),B({}),E(""))},[a,c]),(0,e.useEffect)(()=>{if(a&&l.remoteUrl&&l.localSha&&l.remoteSha){let a=!1;return(0,Y.Qz)(l.remoteUrl,l.localSha,l.remoteSha).then(b=>{a||p(b)}),()=>{a=!0}}p(null)},[a,l.remoteUrl,l.localSha,l.remoteSha]);let I=(0,e.useCallback)((a,b)=>{B(c=>({...c,[a]:b}))},[]),_=(0,e.useCallback)((a,b)=>{E(c=>c+(c?"\n":"")+`--- ${a} ---
2
2
  `+(b||"").trim()+"\n")},[]),aa=async()=>{t(!0),z(null),$.info(`Starting update for server ${c}`);let a=(a,b)=>{I(a,"error"),z(b),t(!1)};try{k&&(I("stop","running"),await Promise.resolve(m(!1)),I("stop","done")),I("pull","running");let b=await (0,Y.Qv)(f);if(!b.success)return void a("pull",b.error||"Failed to pull updates");if(_("Pull",`Updated ${(0,Y.Fu)(b.oldSha)} -> ${(0,Y.Fu)(b.newSha)}`),I("pull","done"),F){I("install","running");let b=await (0,Z.b)(f,g.trim());if(_("Install",b.output),!b.success)return void a("install",b.message.text);I("install","done")}if(G){I("build","running");let b=await (0,Z.c)(f,i.trim());if(_("Build",b.output),!b.success)return void a("build",b.message.text);I("build","done")}k&&(I("restart","running"),await Promise.resolve(m(!0)),I("restart","done")),$.info(`Update completed for server ${c}`),w(!0),t(!1),n?.()}catch(a){$.error(`Update failed for server ${c}`,a),z(a.message||"Update failed"),t(!1)}},ab=s||u||Object.keys(A).length>0,ac=l.hasLocalChanges&&!q;return(0,d.jsxs)(J.A,{open:a,onClose:s?void 0:b,maxWidth:"sm",fullWidth:!0,onClick:a=>a.stopPropagation(),children:[(0,d.jsxs)(K.A,{component:"div",sx:{display:"flex",alignItems:"center",gap:1},children:[(0,d.jsx)(v.A,{color:"primary"}),"Update ",c]}),(0,d.jsxs)(L.A,{children:[(0,d.jsxs)(O.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:1,flexWrap:"wrap"},children:[(0,d.jsx)(D.A,{size:"small",label:(0,Y.Fu)(l.localSha),sx:{fontFamily:"monospace"}}),(0,d.jsx)(P.default,{variant:"body2",color:"text.secondary",children:"→"}),(0,d.jsx)(D.A,{size:"small",color:"primary",label:(0,Y.Fu)(l.remoteSha),sx:{fontFamily:"monospace"}}),l.branch&&"HEAD"!==l.branch&&(0,d.jsxs)(P.default,{variant:"body2",color:"text.secondary",children:["on ",(0,d.jsx)("code",{children:l.branch})]}),o?.behindBy!=null&&(0,d.jsxs)(P.default,{variant:"body2",color:"text.secondary",children:["(",o.behindBy," commit",1===o.behindBy?"":"s"," behind)"]})]}),l.repoRoot&&l.repoRoot.replace(/\\/g,"/").replace(/\/+$/,"").toLowerCase()!==f.replace(/\\/g,"/").replace(/\/+$/,"").toLowerCase()&&(0,d.jsxs)(P.default,{variant:"body2",color:"text.secondary",sx:{mb:1},children:["This server lives inside a larger repository — the update pulls"," ",(0,d.jsx)("code",{children:l.repoRoot})," as a whole (other servers from the same repository are updated along with it)."]}),o&&o.commits.length>0&&!ab&&(0,d.jsx)(O.default,{sx:{mb:2,p:1,borderRadius:1,border:"1px solid",borderColor:"divider",maxHeight:160,overflow:"auto"},children:o.commits.map(a=>(0,d.jsxs)(P.default,{variant:"body2",sx:{fontSize:"0.8rem"},noWrap:!0,title:a.message,children:[(0,d.jsx)("code",{children:a.sha})," ",a.message]},a.sha))}),l.hasLocalChanges&&!ab&&(0,d.jsxs)(Q.A,{severity:"warning",sx:{mb:2},children:[(0,d.jsxs)(P.default,{variant:"body2",sx:{mb:1},children:["This repository has local changes to tracked files. Updating will ",(0,d.jsx)("strong",{children:"discard"})," them. Untracked files (e.g. a ",(0,d.jsx)("code",{children:".env"})," you created) and all FLUJO settings for this server are kept."]}),(0,d.jsx)(O.default,{component:"ul",sx:{m:0,pl:3,maxHeight:100,overflow:"auto"},children:l.dirtyFiles.map(a=>(0,d.jsx)("li",{children:(0,d.jsx)(P.default,{variant:"body2",component:"span",sx:{fontFamily:"monospace",fontSize:"0.8rem"},children:a})},a))}),(0,d.jsx)(R.A,{sx:{mt:1},control:(0,d.jsx)(S.A,{size:"small",checked:q,onChange:a=>r(a.target.checked)}),label:(0,d.jsx)(P.default,{variant:"body2",children:"Discard my local changes and update"})})]}),(0,d.jsx)(T.A,{dense:!0,disablePadding:!0,children:H.filter(a=>a.active).map(a=>(0,d.jsxs)(U.Ay,{disableGutters:!0,sx:{py:.25},children:[(0,d.jsx)(V.A,{sx:{minWidth:32},children:(a=>{switch(a){case"running":return(0,d.jsx)(y.default,{size:"small",color:"primary"});case"done":return(0,d.jsx)(h.A,{color:"success",fontSize:"small"});case"error":return(0,d.jsx)(j.A,{color:"error",fontSize:"small"});default:return(0,d.jsx)(X.A,{color:"disabled",fontSize:"small"})}})(A[a.key])}),(0,d.jsx)(W.A,{primary:a.label,primaryTypographyProps:{variant:"body2",noWrap:!0,title:a.label}})]},a.key))}),x&&(0,d.jsxs)(Q.A,{severity:"error",sx:{mt:2,whiteSpace:"pre-wrap"},children:[x,k&&(0,d.jsx)(P.default,{variant:"body2",sx:{mt:1},children:"The server was left stopped. Adjust the install/build commands via Edit, then re-enable it."})]}),u&&(0,d.jsxs)(Q.A,{severity:"success",sx:{mt:2},children:["Server updated successfully",k?" and restarted":"","."]}),C&&(0,d.jsx)(O.default,{sx:{mt:2,p:1,borderRadius:1,bgcolor:"background.paper",border:"1px solid",borderColor:"divider",fontFamily:"monospace",fontSize:"0.75rem",whiteSpace:"pre-wrap",overflow:"auto",maxHeight:200},children:C})]}),(0,d.jsxs)(M.A,{children:[(0,d.jsx)(N.A,{onClick:b,disabled:s,children:u?"Close":"Cancel"}),!u&&(0,d.jsx)(N.A,{variant:"contained",color:"primary",startIcon:(0,d.jsx)(v.A,{}),onClick:aa,disabled:s||ac,children:s?"Updating…":x?"Retry Update":"Update"})]})]})};var aa=c(37674),ab=c(44079),ac=c(47902);let ad=(0,f.h)("frontend/components/mcp/MCPServerManager/FilesystemRootsModal"),ae=({open:a,serverName:b,initialRoots:c,onClose:f,onSaved:g})=>{let[h,i]=(0,e.useState)([]),[j,k]=(0,e.useState)(""),[l,n]=(0,e.useState)(!1),[o,p]=(0,e.useState)(null),q="bash"===b;(0,e.useEffect)(()=>{a&&(i(Array.isArray(c)?[...c]:[]),k(""),p(null))},[a,c]);let r=()=>{let a=j.trim();if(a){if(h.includes(a))return void p("That root is already in the list.");i(b=>[...b,a]),k(""),p(null)}},s=async()=>{n(!0),p(null);try{let a=await A.S.updateServerConfig(b,{roots:h});if(a&&"error"in a&&a.error)return void p("string"==typeof a.error?a.error:"Failed to save roots.");ad.info(`Saved ${h.length} root(s) for ${b}`),g?.(h),f()}catch(a){ad.warn("Failed to save filesystem roots",a),p(a instanceof Error?a.message:"Failed to save roots.")}finally{n(!1)}};return(0,d.jsxs)(J.A,{open:a,onClose:f,maxWidth:"sm",fullWidth:!0,onClick:a=>a.stopPropagation(),children:[(0,d.jsxs)(K.A,{children:["Configure ",b," roots"]}),(0,d.jsxs)(L.A,{children:[(0,d.jsxs)(P.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:["Confine the built-in ",(0,d.jsx)("b",{children:b})," server to these folders. Leave the list empty for full host access (unless the ",(0,d.jsx)("code",{children:q?"FLUJO_BASH_ROOTS":"FLUJO_FS_ROOTS"})," environment variable is set, which always acts as a hard ceiling)."]}),q&&(0,d.jsxs)(Q.A,{severity:"info",sx:{mb:2},children:["The bash ",(0,d.jsx)("code",{children:"cwd"})," fence is best-effort: a shell can still ",(0,d.jsx)("code",{children:"cd"})," elsewhere or use absolute paths, so ",(0,d.jsx)("code",{children:"FLUJO_FS_ROOTS"}),"/",(0,d.jsx)("code",{children:"FLUJO_BASH_ROOTS"})," and OS permissions remain the real boundary."]}),o&&(0,d.jsx)(Q.A,{severity:"error",sx:{mb:2},onClose:()=>p(null),children:o}),(0,d.jsxs)(O.default,{sx:{display:"flex",gap:1,mb:1},children:[(0,d.jsx)(aa.A,{fullWidth:!0,size:"small",label:"Add a root folder (absolute path)",value:j,onChange:a=>k(a.target.value),onKeyDown:a=>{"Enter"===a.key&&(a.preventDefault(),r())},placeholder:"e.g. C:\\\\Users\\\\me\\\\project or /home/me/project"}),(0,d.jsx)(N.A,{variant:"outlined",startIcon:(0,d.jsx)(ac.A,{}),onClick:r,disabled:!j.trim(),children:"Add"})]}),0===h.length?(0,d.jsx)(P.default,{variant:"body2",color:"text.secondary",sx:{mt:1},children:"No roots configured — the server has full host access."}):(0,d.jsx)(T.A,{dense:!0,children:h.map((a,b)=>(0,d.jsx)(U.Ay,{secondaryAction:(0,d.jsx)(ab.A,{edge:"end","aria-label":"remove root",onClick:()=>{i(a=>a.filter((a,c)=>c!==b))},children:(0,d.jsx)(m.A,{fontSize:"small"})}),children:(0,d.jsx)(P.default,{variant:"body2",sx:{wordBreak:"break-all"},children:a})},`${a}-${b}`))})]}),(0,d.jsxs)(M.A,{children:[(0,d.jsx)(N.A,{onClick:f,disabled:l,children:"Cancel"}),(0,d.jsx)(N.A,{onClick:s,variant:"contained",disabled:l,children:l?"Saving…":"Save"})]})]})};var af=c(30873),ag=c(60839),ah=c(30818),ai=c(43312),aj=c(37489),ak=c(27114),al=c(67191),am=c(98463);let an=(0,f.h)("frontend/components/mcp/MCPServerManager/ServerCard"),ao=({name:a,status:b,path:f,enabled:E,transport:F,onToggle:G=()=>{},onRetry:H=()=>{},onDelete:R=()=>{},onClick:T,onEdit:U=()=>{},onAuthenticate:V,pickerMode:W=!1,error:X,stderrOutput:Z,authorizationUrl:$,selected:aa=!1,onSelect:ac,selectionMode:ad=!1,hasOAuthTokens:ao=!1,exposeAsMcpServer:ap=!1,enableMcpApps:aq=!1,updateInfo:ar,installCommand:as,buildCommand:at,onUpdated:au,folder:av,folders:aw=[],onSetFolder:ax,favorite:ay=!1,onToggleFavorite:az,builtIn:aA=!1,serverConfig:aB})=>{let[aC,aD]=(0,e.useState)(!1),[aE,aF]=(0,e.useState)(null),[aG,aH]=(0,e.useState)(!1),[aI,aJ]=(0,e.useState)(!1),[aK,aL]=(0,e.useState)(""),[aM,aN]=(0,e.useState)("success"),[aO,aP]=(0,e.useState)(!1),[aQ,aR]=(0,e.useState)(!1),[aS,aT]=(0,e.useState)(!1),[aU,aV]=(0,e.useState)(aB?.roots);(0,e.useEffect)(()=>{aV(aB?.roots)},[aB?.roots]);let[aW,aX]=(0,e.useState)(ap),[aY,aZ]=(0,e.useState)(aq),a$=(0,ag.A)();(0,e.useEffect)(()=>{aX(ap)},[ap]),(0,e.useEffect)(()=>{aZ(aq)},[aq]);let a_=async b=>{aX(b);let c=await A.S.updateServerConfig(a,{exposeAsMcpServer:b});"success"in c&&c.success?(aL(b?"Server is now exposed to external apps.":"Server is no longer exposed."),aN("success")):(aX(!b),aL("Failed to update exposure setting."),aN("error")),aJ(!0)},a0=async b=>{aZ(b);let c=await A.S.updateServerConfig(a,{enableMcpApps:b});"success"in c&&c.success?(aL(b?"This server may now render interactive apps in chat (sandboxed).":"Interactive apps disabled for this server."),aN("success")):(aZ(!b),aL("Failed to update the MCP Apps setting."),aN("error")),aJ(!0)},a1=()=>{navigator.clipboard.writeText(""),aL("Endpoint URL copied to clipboard."),aN("success"),aJ(!0)},a2=()=>{navigator.clipboard.writeText((0,B.CZ)(a,aB,"")),aL("Server JSON copied to clipboard."),aN("success"),aJ(!0)},a3={connected:"success.main",disconnected:"text.secondary",error:"error.main",connecting:"info.main",initialization:"info.main",requires_authentication:"warning.main"}[b];(0,e.useEffect)(()=>{if(("connecting"===b||"initialization"===b)&&E&&!W){aP(!0);let b=setTimeout(()=>{an.debug(`Polling status for server: ${a}`),H()},2e3);return()=>{clearTimeout(b),aP(!1)}}"connecting"!==b&&"initialization"!==b&&aP(!1)},[b,E,a,H]);let[a4,a5]=(0,e.useState)(null);(0,e.useEffect)(()=>()=>{a4&&clearTimeout(a4)},[a4]);let a6=async b=>{b.stopPropagation(),an.debug(`Reset OAuth tokens button clicked for server: ${a}`),aR(!0);try{let b=await fetch("/api/oauth/reset",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({serverName:a})});if(!b.ok){let a=await b.json();throw Error(a.error||"Failed to reset OAuth tokens")}let c=await b.json();an.info(`OAuth tokens reset successfully for ${a}`,c),aL("OAuth tokens reset successfully. Server will require re-authentication."),aN("success"),aJ(!0),setTimeout(()=>{H()},500)}catch(b){an.error(`Failed to reset OAuth tokens for ${a}`,b),aL(`Failed to reset OAuth tokens: ${b instanceof Error?b.message:"Unknown error"}`),aN("error"),aJ(!0)}finally{aR(!1)}},{getThemeValue:a7,getThemeColor:a8,colors:a9}=(0,g.Ic)(),ba=()=>{an.debug(`Server restart initiated for: ${a}`),G(!1),setTimeout(()=>{G(!0),an.info(`Server ${a} restarted`)},1e3)};return(0,d.jsxs)(ah.A,{role:W?"button":void 0,"aria-pressed":W?aa:void 0,sx:{cursor:"pointer",position:"relative",height:W?"100%":void 0,transition:"box-shadow 0.3s ease, border-color 0.12s ease",border:a=>W&&aa?`2px solid ${a.palette.primary.main}`:"2px solid transparent","&:hover":{boxShadow:3}},onClick:()=>{an.debug(`Server card clicked: ${a}`),T()},children:[az&&!aA&&(0,d.jsx)(ai.A,{title:ay?"Remove from favorites":"Add to favorites",arrow:!0,placement:"top",children:(0,d.jsx)(ab.A,{size:"small","aria-label":ay?"remove from favorites":"add to favorites",onClick:a=>{a.stopPropagation(),az()},sx:{position:"absolute",top:4,left:4,zIndex:2,color:ay?a$.palette.warning.main:a$.palette.text.secondary,backgroundColor:(0,aj.X4)(a$.palette.background.paper,.6),"&:hover":{backgroundColor:(0,aj.X4)(a$.palette.background.paper,.9)}},children:ay?(0,d.jsx)(w.A,{fontSize:"small"}):(0,d.jsx)(x.A,{fontSize:"small"})})}),(0,d.jsxs)(ak.A,{sx:{pb:1},children:[(0,d.jsxs)(O.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",mb:1},children:[(0,d.jsxs)(O.default,{sx:{display:"flex",alignItems:"center",flex:1},children:[ad&&ac&&(0,d.jsx)(S.A,{checked:aa,onClick:a=>a.stopPropagation(),onChange:a=>ac(a.target.checked),size:"small",sx:{mr:1,p:.5}}),(0,d.jsx)(P.default,{variant:"h6",component:"h3",sx:{flex:1},children:a})]}),(0,d.jsxs)(O.default,{sx:{display:"flex",flexDirection:"column",alignItems:"flex-end",gap:.5},children:[(0,d.jsxs)(O.default,{sx:{display:"flex",alignItems:"center",gap:.5},children:[ar?.updateAvailable&&(0,d.jsx)(ai.A,{title:`Update available: ${(0,Y.Fu)(ar.localSha)} → ${(0,Y.Fu)(ar.remoteSha)}. Click to update.`,children:(0,d.jsx)(D.A,{icon:(0,d.jsx)(v.A,{}),label:"Update",color:"warning",size:"small",onClick:b=>{b.stopPropagation(),an.debug(`Update badge clicked for server: ${a}`),aH(!0)}})}),aA?(0,d.jsx)(ai.A,{title:"FLUJO's built-in server — can be enabled or disabled below, but not edited or removed.",children:(0,d.jsx)(D.A,{label:"Built-in",color:"primary",size:"small"})}):(0,d.jsx)(I,{transport:F,size:"small"})]}),(0,d.jsxs)(O.default,{sx:{display:"flex",alignItems:"center"},children:["connected"===b&&(0,d.jsx)(h.A,{color:"success",sx:{mr:.5},fontSize:"small"}),"disconnected"===b&&(0,d.jsx)(i.A,{color:"action",sx:{mr:.5},fontSize:"small"}),"error"===b&&(0,d.jsx)(j.A,{color:"error",sx:{mr:.5},fontSize:"small"}),"requires_authentication"===b&&(0,d.jsx)(n.A,{color:"warning",sx:{mr:.5},fontSize:"small"}),("connecting"===b||"initialization"===b)&&(0,d.jsx)(y.default,{size:"small",color:"primary",sx:{mr:.5}}),(0,d.jsx)(P.default,{variant:"body2",color:a3,children:"requires_authentication"===b?"Requires Authentication":b})]})]})]}),(0,d.jsx)(P.default,{variant:"body2",color:"text.secondary",sx:{mb:1,fontSize:"0.875rem"},noWrap:!0,title:aA?void 0:f,children:aA?"FLUJO's own backend API — flow authoring, execution and server management as MCP tools.":f}),aA&&!W&&(0,d.jsxs)(O.default,{sx:{mt:1,mb:1,p:1,borderRadius:1,border:"1px solid",borderColor:"divider"},onClick:a=>a.stopPropagation(),children:[(0,d.jsxs)(O.default,{sx:{display:"flex",alignItems:"center"},children:[(0,d.jsx)(q.A,{fontSize:"small",sx:{mr:.5,color:"primary.main"}}),(0,d.jsx)(ai.A,{title:"External MCP clients (Claude Code, Claude Desktop, Cursor, …) can drive FLUJO through this local endpoint.",children:(0,d.jsx)(P.default,{variant:"body2",sx:{fontWeight:500},children:"Exposed to external apps"})})]}),(0,d.jsxs)(O.default,{sx:{display:"flex",alignItems:"center",mt:.5},children:[(0,d.jsx)(P.default,{variant:"caption",sx:{flex:1,fontFamily:"monospace",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:"",children:""}),(0,d.jsx)(ai.A,{title:"Copy endpoint URL",children:(0,d.jsx)(ab.A,{size:"small",onClick:a1,children:(0,d.jsx)(s.A,{fontSize:"small"})})}),(0,d.jsx)(ai.A,{title:"Copy MCP server JSON",children:(0,d.jsx)(ab.A,{size:"small",onClick:a2,children:(0,d.jsx)(t.A,{fontSize:"small"})})})]})]}),!aA&&!W&&(0,d.jsxs)(O.default,{sx:{mt:1,mb:1,p:1,borderRadius:1,border:"1px solid",borderColor:"divider"},onClick:a=>a.stopPropagation(),children:[(0,d.jsxs)(O.default,{sx:{display:"flex",alignItems:"center"},children:[(0,d.jsx)(q.A,{fontSize:"small",sx:{mr:.5,color:aW?"primary.main":"text.disabled"}}),(0,d.jsx)(al.A,{checked:aW,onChange:a=>a_(a.target.checked),size:"small"}),(0,d.jsx)(ai.A,{title:"Re-expose this server's tools to external MCP clients (Claude Desktop, Cursor, …) at a local URL.",children:(0,d.jsx)(P.default,{variant:"body2",sx:{fontWeight:500},children:"Expose to external apps"})})]}),aW&&(0,d.jsxs)(O.default,{sx:{display:"flex",alignItems:"center",mt:.5},children:[(0,d.jsx)(P.default,{variant:"caption",sx:{flex:1,fontFamily:"monospace",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:"",children:""}),(0,d.jsx)(ai.A,{title:"Copy endpoint URL",children:(0,d.jsx)(ab.A,{size:"small",onClick:a1,children:(0,d.jsx)(s.A,{fontSize:"small"})})}),(0,d.jsx)(ai.A,{title:"Copy MCP server JSON",children:(0,d.jsx)(ab.A,{size:"small",onClick:a2,children:(0,d.jsx)(t.A,{fontSize:"small"})})})]})]}),!aA&&!W&&(0,d.jsx)(O.default,{sx:{mt:1,mb:1,p:1,borderRadius:1,border:"1px solid",borderColor:"divider"},onClick:a=>a.stopPropagation(),children:(0,d.jsxs)(O.default,{sx:{display:"flex",alignItems:"center"},children:[(0,d.jsx)(r.A,{fontSize:"small",sx:{mr:.5,color:aY?"primary.main":"text.disabled"}}),(0,d.jsx)(al.A,{checked:aY,onChange:a=>a0(a.target.checked),size:"small"}),(0,d.jsx)(ai.A,{title:"Allow this server's tools to render interactive apps (MCP Apps / ui:// resources) in chat. Rendered read-only in a strict sandbox. Only enable for servers you trust.",children:(0,d.jsx)(P.default,{variant:"body2",sx:{fontWeight:500},children:"Render interactive apps"})})]})}),"error"===b&&(0,d.jsxs)(O.default,{sx:{mt:1,mb:1},children:[(0,d.jsxs)(O.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:.5},children:[(0,d.jsx)(P.default,{variant:"body2",fontWeight:"medium",color:"error",children:"Error:"}),(0,d.jsx)(N.A,{size:"small",color:"primary",onClick:b=>{b.stopPropagation(),an.debug(`View full error clicked for server: ${a}`),aD(!0)},children:"View Full Error"})]}),(0,d.jsx)(O.default,{sx:{maxHeight:"80px",overflow:"auto",p:1,borderRadius:1,bgcolor:a=>a8("error.background"),color:a=>a8("error.text"),border:"1px solid",borderColor:a=>a8("error.border"),fontSize:"0.75rem",fontWeight:500,whiteSpace:"pre-wrap"},children:X||"Unknown error"})]}),"requires_authentication"===b&&!W&&(0,d.jsxs)(O.default,{sx:{mt:1,mb:1},children:[(0,d.jsx)(O.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:1},children:(0,d.jsx)(P.default,{variant:"body2",fontWeight:"medium",color:"warning.main",children:"Authentication Required"})}),(0,d.jsxs)(N.A,{variant:"contained",color:"warning",size:"small",startIcon:(0,d.jsx)(o.A,{}),onClick:async b=>{if(b.stopPropagation(),an.debug(`Authenticate button clicked for server: ${a}`),V)V();else try{let b=await fetch("/api/oauth/initiate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({serverName:a})});if(!b.ok){let a=await b.json();throw Error(a.error||"Failed to initiate OAuth")}let{authorizationUrl:d,alreadyAuthorized:e}=await b.json();if(e||!d){an.info(`Server ${a} already authorized, no popup needed`),ba();return}let{openOAuthPopup:f}=await c.e(558).then(c.bind(c,60558));await f({url:d,windowName:`oauth_${a}`,onSuccess:b=>{an.info(`OAuth authentication successful for ${a}`,b),an.info(`Automatically restarting server ${a} after OAuth completion`),ba()},onError:b=>{an.error(`OAuth authentication failed for ${a}`,b),aL("OAuth authentication failed"),aN("error"),aJ(!0)}})}catch(b){an.error(`Failed to start OAuth authentication for ${a}`,b),aL("Failed to start OAuth authentication"),aN("error"),aJ(!0)}},sx:{width:"100%"},children:["Authenticate with ",a]})]})]}),aA&&!W&&G&&(0,d.jsx)(am.A,{sx:{justifyContent:"flex-start",px:2,py:1},onClick:a=>a.stopPropagation(),children:(0,d.jsxs)(O.default,{sx:{display:"flex",alignItems:"center"},children:[(0,d.jsx)(al.A,{checked:E,onClick:a=>a.stopPropagation(),onChange:b=>{an.debug(`Built-in server ${a} toggle changed to: ${b.target.checked}`),G(b.target.checked)},color:"primary",size:"small"}),(0,d.jsx)(P.default,{variant:"body2",sx:{ml:.5,fontWeight:500,color:E?"primary.main":"text.secondary"},children:E?"Enabled":"Disabled"}),("filesystem"===a||"bash"===a)&&(0,d.jsx)(ai.A,{title:`Configure ${a} roots`,children:(0,d.jsxs)(N.A,{size:"small",variant:"text",startIcon:(0,d.jsx)(C.A,{fontSize:"small"}),sx:{ml:1.5,textTransform:"none"},onClick:a=>{a.stopPropagation(),aT(!0)},children:["Configure roots",aU&&aU.length?` (${aU.length})`:""]})})]})}),("filesystem"===a||"bash"===a)&&(0,d.jsx)(ae,{open:aS,serverName:a,initialRoots:aU,onClose:()=>aT(!1),onSaved:a=>aV(a)}),!aA&&!W&&(0,d.jsxs)(am.A,{sx:{justifyContent:"space-between",px:2,py:1},children:[(0,d.jsxs)(O.default,{sx:{display:"flex",alignItems:"center"},children:[(0,d.jsx)(al.A,{checked:E,onClick:a=>a.stopPropagation(),onChange:b=>{an.debug(`Server ${a} toggle changed to: ${b.target.checked}`),G(b.target.checked)},color:"primary",size:"small"}),(0,d.jsx)(P.default,{variant:"body2",sx:{ml:.5,fontWeight:500,color:E?"primary.main":"text.secondary"},children:E?"Enabled":"Disabled"}),E&&(0,d.jsx)(ai.A,{title:"Restart server",children:(0,d.jsx)(ab.A,{size:"small",onClick:b=>{b.stopPropagation(),an.debug(`Restart button clicked for server: ${a}`),ba()},sx:{ml:1},children:(0,d.jsx)(k.A,{fontSize:"small"})})})]}),(0,d.jsxs)(O.default,{children:[(0,d.jsx)(ai.A,{title:"Retry connection",children:(0,d.jsx)(ab.A,{color:"primary",onClick:c=>{c.stopPropagation(),an.debug(`Retry button clicked for server: ${a}`),a4&&clearTimeout(a4),aP(!0),H();let d=setTimeout(()=>{"connecting"!==b&&"initialization"!==b&&aP(!1),a5(null)},1e4);a5(d)},disabled:aO,size:"small",children:aO?(0,d.jsx)(y.default,{size:"small",color:"primary"}):(0,d.jsx)(k.A,{})})}),"streamable"===F&&ao&&(0,d.jsx)(ai.A,{title:"Reset OAuth tokens",children:(0,d.jsx)(ab.A,{color:"warning",onClick:a6,disabled:aQ,size:"small",children:aQ?(0,d.jsx)(y.default,{size:"small",color:"primary"}):(0,d.jsx)(p.A,{})})}),ax&&(0,d.jsx)(ai.A,{title:av?`Folder: ${av}`:"Move to folder",children:(0,d.jsx)(ab.A,{color:av?"primary":"default",onClick:a=>{a.stopPropagation(),aF(a.currentTarget)},size:"small",children:(0,d.jsx)(u.A,{})})}),(0,d.jsx)(ai.A,{title:"Edit server",children:(0,d.jsx)(ab.A,{color:"primary",onClick:a=>{a.stopPropagation(),U()},size:"small",children:(0,d.jsx)(l.A,{})})}),(0,d.jsx)(ai.A,{title:"Delete server",children:(0,d.jsx)(ab.A,{color:"error",onClick:a=>{a.stopPropagation(),R()},size:"small",children:(0,d.jsx)(m.A,{})})})]})]}),ax&&(0,d.jsx)(z.A,{anchorEl:aE,open:!!aE,currentFolder:av,folders:aw,onClose:()=>aF(null),onAssign:a=>ax(a)}),(0,d.jsxs)(J.A,{open:aC,onClose:()=>{an.debug(`Error modal closed for server: ${a}`),aD(!1)},maxWidth:"md",fullWidth:!0,onClick:a=>a.stopPropagation(),children:[(0,d.jsxs)(K.A,{component:"div",children:["Error Details for ",a]}),(0,d.jsxs)(L.A,{children:[(0,d.jsx)(O.default,{sx:{p:2,borderRadius:1,bgcolor:a=>a8("error.background"),color:a=>a8("error.text"),border:"1px solid",borderColor:a=>a8("error.border"),fontFamily:"monospace",fontSize:"0.875rem",fontWeight:500,whiteSpace:"pre-wrap",overflow:"auto",maxHeight:"300px",mb:2},children:X||"Unknown error"}),Z&&(0,d.jsxs)(O.default,{sx:{mt:2},children:[(0,d.jsx)(P.default,{variant:"h6",gutterBottom:!0,children:"Stderr Output:"}),(0,d.jsx)(O.default,{sx:{p:2,borderRadius:1,bgcolor:"background.paper",border:"1px solid",borderColor:"divider",fontFamily:"monospace",fontSize:"0.875rem",whiteSpace:"pre-wrap",overflow:"auto",maxHeight:"300px"},children:Z})]})]}),(0,d.jsxs)(M.A,{children:[(0,d.jsx)(N.A,{onClick:()=>aD(!1),children:"Close"}),(0,d.jsx)(N.A,{onClick:()=>{let b=[X||"Unknown error",Z?`
3
3
 
4
4
  Stderr Output:
5
- ${Z}`:""].join("");navigator.clipboard.writeText(b),an.debug(`Error copied to clipboard for server: ${a}`),aL("Error message copied to clipboard"),aN("success"),aJ(!0)},color:"primary",children:"Copy to Clipboard"})]})]}),ar&&(0,d.jsx)(_,{open:aG,onClose:()=>aH(!1),serverName:a,rootPath:f,installCommand:as,buildCommand:at,enabled:E,updateInfo:ar,onToggle:G,onUpdated:au}),(0,d.jsx)(af.A,{open:aI,autoHideDuration:3e3,onClose:()=>aJ(!1),anchorOrigin:{vertical:"bottom",horizontal:"center"},children:(0,d.jsx)(Q.A,{onClose:()=>aJ(!1),severity:aM,sx:{width:"100%"},children:aK||"Error message copied to clipboard"})})]})}},44920:(a,b,c)=>{function d(a){let b={};if(!a)return b;for(let[c,d]of Object.entries(a))b[c]=d&&"object"==typeof d&&"value"in d?d.value:"string"==typeof d?d:"";return b}function e(a){let b,c=[],d=[];if("string"==typeof a)try{b=JSON.parse(a)}catch(a){return{servers:d,errors:[`Invalid JSON: ${a.message}`]}}else b=a;if(!b||"object"!=typeof b)return{servers:d,errors:["Expected a JSON object."]};let e=b,f=e.mcpServers&&"object"==typeof e.mcpServers?e.mcpServers:e;if(0===Object.keys(f).length)return{servers:d,errors:['No servers found. Expected an "mcpServers" object.']};for(let[a,b]of Object.entries(f)){if(!b||"object"!=typeof b){c.push(`"${a}": entry is not an object.`);continue}let e=function(a){let b=(a.transport||a.type||"").toString().toLowerCase().trim();if(!b)return"stdio";switch(b){case"stdio":return"stdio";case"http":case"streamable-http":case"streamable":case"streamablehttp":return"streamable";case"sse":return"sse";case"ws":case"websocket":return"websocket";default:return null}}(b);if(!e){c.push(`"${a}": unknown transport type "${b.type||b.transport}".`);continue}let f={};if(b.env&&"object"==typeof b.env)for(let[a,c]of Object.entries(b.env))f[a]="string"==typeof c?c:String(c??"");let g={name:a,env:f,disabled:b.disabled??!1,autoApprove:Array.isArray(b.autoApprove)?b.autoApprove:[],rootPath:"",_buildCommand:"",_installCommand:""};if("stdio"===e){if(!b.command||"string"!=typeof b.command){c.push(`"${a}": stdio server is missing a "command".`);continue}d.push({...g,transport:"stdio",command:b.command,args:Array.isArray(b.args)?b.args:[]})}else if("websocket"===e){let e=b.url||b.websocketUrl;if(!e){c.push(`"${a}": websocket server is missing a "url".`);continue}d.push({...g,transport:"websocket",websocketUrl:e})}else{let f=b.url||b.serverUrl;if(!f){c.push(`"${a}": ${e} server is missing a "url".`);continue}let h=b.headers&&"object"==typeof b.headers?b.headers:void 0;d.push({...g,transport:e,serverUrl:f,...h?{headers:h}:{}})}}return{servers:d,errors:c}}c.d(b,{_i:()=>f,CZ:()=>h,Kt:()=>g});let f=[{id:"claude",label:"Claude",fileName:"mcp_config.json",export:function(a,b={}){let c=(b.proxyBaseUrl||"").replace(/\/$/,""),e={};for(let b of a){if(b.exposeAsMcpServer){e[b.name]={type:"http",url:`${c}/mcp-proxy/${b.name}`};continue}let a={},f=d(b.env);switch(b.transport){case"stdio":a.command=b.command,a.args=b.args||[],Object.keys(f).length>0&&(a.env=f);break;case"streamable":a.type="http",a.url=b.serverUrl,b.headers&&Object.keys(b.headers).length>0&&(a.headers=d(b.headers)),Object.keys(f).length>0&&(a.env=f);break;case"sse":a.type="sse",a.url=b.serverUrl,b.headers&&Object.keys(b.headers).length>0&&(a.headers=d(b.headers)),Object.keys(f).length>0&&(a.env=f);break;case"websocket":a.type="ws",a.url=b.websocketUrl,Object.keys(f).length>0&&(a.env=f);break;default:Object.keys(f).length>0&&(a.env=f)}e[b.name]=a}return{mcpServers:e}},import:e},{id:"cline",label:"Cline",fileName:"cline_mcp_settings.json",export:function(a,b={}){let c=(b.proxyBaseUrl||"").replace(/\/$/,""),e={};for(let b of a){let a={disabled:b.disabled??!1,autoApprove:b.autoApprove??[],timeout:60};if(b.exposeAsMcpServer){e[b.name]={...a,type:"streamableHttp",url:`${c}/mcp-proxy/${b.name}`};continue}let f=d(b.env),g={...a};switch(b.transport){case"stdio":g.command=b.command,g.args=b.args||[],Object.keys(f).length>0&&(g.env=f);break;case"streamable":g.type="streamableHttp",g.url=b.serverUrl,b.headers&&Object.keys(b.headers).length>0&&(g.headers=d(b.headers));break;case"sse":g.type="sse",g.url=b.serverUrl,b.headers&&Object.keys(b.headers).length>0&&(g.headers=d(b.headers));break;case"websocket":g.type="ws",g.url=b.websocketUrl;break;default:Object.keys(f).length>0&&(g.env=f)}e[b.name]=g}return{mcpServers:e}},import:function(a){return e(a)}}];function g(a){return f.find(b=>b.id===a)??f[0]}function h(a,b,c,d="claude"){let e=(c||"").replace(/\/$/,"");return JSON.stringify(b?g(d).export([b],{proxyBaseUrl:e}):{mcpServers:{[a]:{type:"http",url:`${e}/mcp-proxy/${a}`}}},null,2)}},48748:(a,b,c)=>{c.d(b,{Ic:()=>h});var d=c(32631),e=c(19815);let f={light:{background:"#FFFFFF",foreground:"#2C3E50",surface:"#F5F6FA",surfaceRaised:"#FFFFFF",paperBackground:"#F5F6FA",textSecondary:"#7F8C8D",textDisabled:"#9CA3AF",border:"#e5e7eb",heading:"#111",text:"#333",secondaryText:"#666",error:{background:"#fef2f2",border:"#fecaca",text:"#dc2626"},domain:{resource:"#009688",resourceSoft:"#4DB6AC",signal:"#7E57C2",startNode:"#795548",codeBackground:"#f5f5f5",http:{get:"#2e7d32",post:"#1565c0",put:"#e65100",patch:"#6a1b9a",delete:"#c62828"},transport:{stdio:{fg:"#1976d2",bg:"#e3f2fd"},websocket:{fg:"#2e7d32",bg:"#e8f5e8"},sse:{fg:"#f57c00",bg:"#fff3e0"},streamable:{fg:"#00796b",bg:"#e0f2f1"},default:{fg:"#757575",bg:"#f5f5f5"}}}},dark:{background:"#0f1319",foreground:"#eef1f5",surface:"#1a212b",surfaceRaised:"#242d3a",paperBackground:"#1a212b",textSecondary:"#b4bdca",textDisabled:"#6b7280",border:"#37404e",heading:"#f5f7fa",text:"#eef1f5",secondaryText:"#b4bdca",error:{background:"#2a1618",border:"#5a2a2e",text:"#ff6b6b"},domain:{resource:"#26a69a",resourceSoft:"#4DB6AC",signal:"#9575CD",startNode:"#a1887f",codeBackground:"#242d3a",http:{get:"#66bb6a",post:"#5b9dff",put:"#ffa726",patch:"#ba68c8",delete:"#ef5350"},transport:{stdio:{fg:"#90caf9",bg:"#1e2a3a"},websocket:{fg:"#a5d6a7",bg:"#1e2e22"},sse:{fg:"#ffcc80",bg:"#33281a"},streamable:{fg:"#80cbc4",bg:"#17322e"},default:{fg:"#b4bdca",bg:"#242d3a"}}}}},g=(0,e.h)("frontend/utils/theme");function h(){let{isDarkMode:a}=(0,d.D)();return g.debug(`useThemeUtils called with isDarkMode: ${a}`),{getThemeValue:(b,c)=>a?c:b,getThemeColor:b=>{let c=b.split("."),d=f[a?"dark":"light"];for(let a of c)if(!d||"object"!=typeof d||!(a in d))return g.warn(`Theme color path not found: ${b}`),"";else d=d[a];return d},colors:a?f.dark:f.light,isDarkMode:a}}},53455:(a,b,c)=>{c.d(b,{Fu:()=>i,M8:()=>f,Qv:()=>g,Qz:()=>h});let d=(0,c(19815).h)("frontend/components/mcp/MCPServerManager/utils/serverUpdates"),e=new Map;async function f(a,b=!1){let c=Date.now(),g={},h=[];for(let d of new Set(a.filter(Boolean))){let a=e.get(d);!b&&a&&c-a.at<6e5?g[d]=a.info:h.push(d)}if(h.length>0)try{let a=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"checkUpdatesBatch",paths:h})}),b=await a.json();if(a.ok&&b.results)for(let[a,d]of Object.entries(b.results))e.set(a,{at:c,info:d}),g[a]=d;else d.warn("Batch update check failed",b.error)}catch(a){d.warn("Batch update check request failed",a)}return g}async function g(a){try{let b=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"pullUpdates",savePath:a})}),c=await b.json();if(!b.ok)return{success:!1,error:c.error||"Failed to pull updates"};return{success:!0,oldSha:c.oldSha,newSha:c.newSha,updated:c.updated}}catch(a){return{success:!1,error:a.message||"Failed to pull updates"}}}async function h(a,b,c){let e=a.match(/github\.com[:/]([^/]+)\/([^/]+?)(?:\.git)?\/?$/i);if(!e)return null;try{let a=await fetch(`https://api.github.com/repos/${e[1]}/${e[2]}/compare/${b}...${c}`);if(!a.ok)return null;let d=await a.json(),f=Array.isArray(d.commits)?d.commits:[];return{behindBy:"number"==typeof d.total_commits?d.total_commits:null,commits:f.slice(-10).reverse().map(a=>({sha:(a.sha||"").slice(0,7),message:(a.commit?.message||"").split("\n")[0]}))}}catch(a){return d.debug("GitHub compare preview failed (non-fatal)",a),null}}function i(a){return a?a.slice(0,7):""}}};
5
+ ${Z}`:""].join("");navigator.clipboard.writeText(b),an.debug(`Error copied to clipboard for server: ${a}`),aL("Error message copied to clipboard"),aN("success"),aJ(!0)},color:"primary",children:"Copy to Clipboard"})]})]}),ar&&(0,d.jsx)(_,{open:aG,onClose:()=>aH(!1),serverName:a,rootPath:f,installCommand:as,buildCommand:at,enabled:E,updateInfo:ar,onToggle:G,onUpdated:au}),(0,d.jsx)(af.A,{open:aI,autoHideDuration:3e3,onClose:()=>aJ(!1),anchorOrigin:{vertical:"bottom",horizontal:"center"},children:(0,d.jsx)(Q.A,{onClose:()=>aJ(!1),severity:aM,sx:{width:"100%"},children:aK||"Error message copied to clipboard"})})]})}},44920:(a,b,c)=>{function d(a){let b={};if(!a)return b;for(let[c,d]of Object.entries(a))b[c]=d&&"object"==typeof d&&"value"in d?d.value:"string"==typeof d?d:"";return b}function e(a){let b,c=[],d=[];if("string"==typeof a)try{b=JSON.parse(a)}catch(a){return{servers:d,errors:[`Invalid JSON: ${a.message}`]}}else b=a;if(!b||"object"!=typeof b)return{servers:d,errors:["Expected a JSON object."]};let e=b,f=e.mcpServers&&"object"==typeof e.mcpServers?e.mcpServers:e;if(0===Object.keys(f).length)return{servers:d,errors:['No servers found. Expected an "mcpServers" object.']};for(let[a,b]of Object.entries(f)){if(!b||"object"!=typeof b){c.push(`"${a}": entry is not an object.`);continue}let e=function(a){let b=(a.transport||a.type||"").toString().toLowerCase().trim();if(!b)return"stdio";switch(b){case"stdio":return"stdio";case"http":case"streamable-http":case"streamable":case"streamablehttp":return"streamable";case"sse":return"sse";case"ws":case"websocket":return"websocket";default:return null}}(b);if(!e){c.push(`"${a}": unknown transport type "${b.type||b.transport}".`);continue}let f={};if(b.env&&"object"==typeof b.env)for(let[a,c]of Object.entries(b.env))f[a]="string"==typeof c?c:String(c??"");let g={name:a,env:f,disabled:b.disabled??!1,autoApprove:Array.isArray(b.autoApprove)?b.autoApprove:[],rootPath:"",_buildCommand:"",_installCommand:""};if("stdio"===e){if(!b.command||"string"!=typeof b.command){c.push(`"${a}": stdio server is missing a "command".`);continue}d.push({...g,transport:"stdio",command:b.command,args:Array.isArray(b.args)?b.args:[]})}else if("websocket"===e){let e=b.url||b.websocketUrl;if(!e){c.push(`"${a}": websocket server is missing a "url".`);continue}d.push({...g,transport:"websocket",websocketUrl:e})}else{let f=b.url||b.serverUrl;if(!f){c.push(`"${a}": ${e} server is missing a "url".`);continue}let h=b.headers&&"object"==typeof b.headers?b.headers:void 0;d.push({...g,transport:e,serverUrl:f,...h?{headers:h}:{}})}}return{servers:d,errors:c}}c.d(b,{_i:()=>f,CZ:()=>h,Kt:()=>g});let f=[{id:"claude",label:"Claude",fileName:"mcp_config.json",export:function(a,b={}){let c=(b.proxyBaseUrl||"").replace(/\/$/,""),e={};for(let b of a){if(b.exposeAsMcpServer){e[b.name]={type:"http",url:`${c}/mcp-proxy/${b.name}`};continue}let a={},f=d(b.env);switch(b.transport){case"stdio":a.command=b.command,a.args=b.args||[],Object.keys(f).length>0&&(a.env=f);break;case"streamable":a.type="http",a.url=b.serverUrl,b.headers&&Object.keys(b.headers).length>0&&(a.headers=d(b.headers)),Object.keys(f).length>0&&(a.env=f);break;case"sse":a.type="sse",a.url=b.serverUrl,b.headers&&Object.keys(b.headers).length>0&&(a.headers=d(b.headers)),Object.keys(f).length>0&&(a.env=f);break;case"websocket":a.type="ws",a.url=b.websocketUrl,Object.keys(f).length>0&&(a.env=f);break;default:Object.keys(f).length>0&&(a.env=f)}e[b.name]=a}return{mcpServers:e}},import:e},{id:"cline",label:"Cline",fileName:"cline_mcp_settings.json",export:function(a,b={}){let c=(b.proxyBaseUrl||"").replace(/\/$/,""),e={};for(let b of a){let a={disabled:b.disabled??!1,autoApprove:b.autoApprove??[],timeout:60};if(b.exposeAsMcpServer){e[b.name]={...a,type:"streamableHttp",url:`${c}/mcp-proxy/${b.name}`};continue}let f=d(b.env),g={...a};switch(b.transport){case"stdio":g.command=b.command,g.args=b.args||[],Object.keys(f).length>0&&(g.env=f);break;case"streamable":g.type="streamableHttp",g.url=b.serverUrl,b.headers&&Object.keys(b.headers).length>0&&(g.headers=d(b.headers));break;case"sse":g.type="sse",g.url=b.serverUrl,b.headers&&Object.keys(b.headers).length>0&&(g.headers=d(b.headers));break;case"websocket":g.type="ws",g.url=b.websocketUrl;break;default:Object.keys(f).length>0&&(g.env=f)}e[b.name]=g}return{mcpServers:e}},import:function(a){return e(a)}}];function g(a){return f.find(b=>b.id===a)??f[0]}function h(a,b,c,d="claude"){let e=(c||"").replace(/\/$/,"");return JSON.stringify(b?g(d).export([b],{proxyBaseUrl:e}):{mcpServers:{[a]:{type:"http",url:`${e}/mcp-proxy/${a}`}}},null,2)}},48748:(a,b,c)=>{c.d(b,{Ic:()=>h});var d=c(32631),e=c(19815);let f={light:{background:"#FFFFFF",foreground:"#2C3E50",surface:"#F5F6FA",surfaceRaised:"#FFFFFF",paperBackground:"#F5F6FA",textSecondary:"#7F8C8D",textDisabled:"#9CA3AF",border:"#e5e7eb",heading:"#111",text:"#333",secondaryText:"#666",error:{background:"#fef2f2",border:"#fecaca",text:"#dc2626"},domain:{resource:"#009688",resourceSoft:"#4DB6AC",signal:"#7E57C2",startNode:"#795548",codeBackground:"#f5f5f5",http:{get:"#2e7d32",post:"#1565c0",put:"#e65100",patch:"#6a1b9a",delete:"#c62828"},transport:{stdio:{fg:"#1976d2",bg:"#e3f2fd"},websocket:{fg:"#2e7d32",bg:"#e8f5e8"},sse:{fg:"#f57c00",bg:"#fff3e0"},streamable:{fg:"#00796b",bg:"#e0f2f1"},default:{fg:"#757575",bg:"#f5f5f5"}}}},dark:{background:"#0f1319",foreground:"#eef1f5",surface:"#1a212b",surfaceRaised:"#242d3a",paperBackground:"#1a212b",textSecondary:"#b4bdca",textDisabled:"#6b7280",border:"#37404e",heading:"#f5f7fa",text:"#eef1f5",secondaryText:"#b4bdca",error:{background:"#2a1618",border:"#5a2a2e",text:"#ff6b6b"},domain:{resource:"#26a69a",resourceSoft:"#4DB6AC",signal:"#9575CD",startNode:"#a1887f",codeBackground:"#242d3a",http:{get:"#66bb6a",post:"#5b9dff",put:"#ffa726",patch:"#ba68c8",delete:"#ef5350"},transport:{stdio:{fg:"#90caf9",bg:"#1e2a3a"},websocket:{fg:"#a5d6a7",bg:"#1e2e22"},sse:{fg:"#ffcc80",bg:"#33281a"},streamable:{fg:"#80cbc4",bg:"#17322e"},default:{fg:"#b4bdca",bg:"#242d3a"}}}}},g=(0,e.h)("frontend/utils/theme");function h(){let{isDarkMode:a}=(0,d.D)();return g.debug(`useThemeUtils called with isDarkMode: ${a}`),{getThemeValue:(b,c)=>a?c:b,getThemeColor:b=>{let c=b.split("."),d=f[a?"dark":"light"];for(let a of c)if(!d||"object"!=typeof d||!(a in d))return g.warn(`Theme color path not found: ${b}`),"";else d=d[a];return d},colors:a?f.dark:f.light,isDarkMode:a}}},53455:(a,b,c)=>{c.d(b,{Fu:()=>i,M8:()=>f,Qv:()=>g,Qz:()=>h});let d=(0,c(19815).h)("frontend/components/mcp/MCPServerManager/utils/serverUpdates"),e=new Map;async function f(a,b=!1){let c=Date.now(),g={},h=[];for(let d of new Set(a.filter(Boolean))){let a=e.get(d);!b&&a&&c-a.at<6e5?g[d]=a.info:h.push(d)}if(h.length>0)try{let a=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"checkUpdatesBatch",paths:h})}),b=await a.json();if(a.ok&&b.results)for(let[a,d]of Object.entries(b.results))e.set(a,{at:c,info:d}),g[a]=d;else d.warn("Batch update check failed",b.error)}catch(a){d.warn("Batch update check request failed",a)}return g}async function g(a){try{let b=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"pullUpdates",savePath:a})}),c=await b.json();if(!b.ok)return{success:!1,error:c.error||"Failed to pull updates"};return{success:!0,oldSha:c.oldSha,newSha:c.newSha,updated:c.updated}}catch(a){return{success:!1,error:a.message||"Failed to pull updates"}}}async function h(a,b,c){let e=a.match(/github\.com[:/]([^/]+)\/([^/]+?)(?:\.git)?\/?$/i);if(!e)return null;try{let a=await fetch(`https://api.github.com/repos/${e[1]}/${e[2]}/compare/${b}...${c}`);if(!a.ok)return null;let d=await a.json(),f=Array.isArray(d.commits)?d.commits:[];return{behindBy:"number"==typeof d.total_commits?d.total_commits:null,commits:f.slice(-10).reverse().map(a=>({sha:(a.sha||"").slice(0,7),message:(a.commit?.message||"").split("\n")[0]}))}}catch(a){return d.debug("GitHub compare preview failed (non-fatal)",a),null}}function i(a){return a?a.slice(0,7):""}},61160:(a,b,c)=>{c.d(b,{mO:()=>f,oO:()=>g});var d=c(7329);let e=["stdio","websocket","sse","streamable"];function f(a,b){switch(b){case"name-asc":case"name-desc":return(0,d.po)(a.name);case"status-connected":case"status-disconnected":{let b=a.status;if("connected"===b)return{key:"status:connected",label:"Connected"};if("error"===b)return{key:"status:error",label:"Error"};if("requires_authentication"===b)return{key:"status:auth",label:"Requires authentication"};return{key:"status:disconnected",label:"Disconnected"}}case"transport":{let b=a.transport||"unknown";return{key:`transport:${b}`,label:({stdio:"Stdio",websocket:"WebSocket",sse:"SSE",streamable:"Streamable HTTP"})[b]||b}}default:return{key:"all",label:"All servers"}}}function g(a,b){let c=(a,c)=>{switch(b){case"name-asc":return a.name.localeCompare(c.name);case"name-desc":return c.name.localeCompare(a.name);case"status-connected":if("connected"===a.status&&"connected"!==c.status)return -1;if("connected"!==a.status&&"connected"===c.status)return 1;return a.name.localeCompare(c.name);case"status-disconnected":if("disconnected"===a.status&&"disconnected"!==c.status)return -1;if("disconnected"!==a.status&&"disconnected"===c.status)return 1;return a.name.localeCompare(c.name);case"transport":{let b=e.indexOf(a.transport??""),d=e.indexOf(c.transport??"");if(b!==d)return b-d;return a.name.localeCompare(c.name)}default:return 0}};return[...a].sort((a,b)=>{let d=Number(!!b.favorite)-Number(!!a.favorite);return 0!==d?d:c(a,b)})}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=1634,exports.ids=[1634],exports.modules={2560:(a,b,c)=>{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])]}},7329:(a,b,c)=>{function d(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 e(a){let b=(a??"").trim().charAt(0).toUpperCase();return b>="A"&&b<="Z"?{key:`letter:${b}`,label:b}:{key:"letter:#",label:"#"}}function f(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 g=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&&g.push({key:"folder:__ungrouped__",label:c,items:e}),g}function g(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))}c.d(b,{Az:()=>d,Je:()=>f,po:()=>e,yF:()=>g})},32640:(a,b,c)=>{c.d(b,{CR:()=>j,Lg:()=>g,eZ:()=>i,fC:()=>f});var d=c(76133),e=c(7329);let f={"name-asc":"Name (A-Z)","name-desc":"Name (Z-A)",provider:"Provider","context-desc":"Context (largest)","context-asc":"Context (smallest)"},g=a=>a.displayName||a.name||"",h=a=>(0,d.T_)(a.provider,a.adapter).label;function i(a,b){switch(b){case"provider":{let b=h(a);return{key:`provider:${b}`,label:b}}case"context-asc":case"context-desc":var c;return"number"!=typeof(c=a.contextWindow)||Number.isNaN(c)?{key:"ctx:unknown",label:"Unknown context"}:c<=8e3?{key:"ctx:<=8k",label:"≤ 8K tokens"}:c<=32e3?{key:"ctx:8k-32k",label:"8K–32K tokens"}:c<=128e3?{key:"ctx:32k-128k",label:"32K–128K tokens"}:c<=1e6?{key:"ctx:128k-1m",label:"128K–1M tokens"}:{key:"ctx:>1m",label:"> 1M tokens"};default:return(0,e.po)(g(a))}}function j(a,b){let c=(a,c)=>{switch(b){case"name-asc":return g(a).localeCompare(g(c));case"name-desc":return g(c).localeCompare(g(a));case"provider":return h(a).localeCompare(h(c))||g(a).localeCompare(g(c));case"context-desc":case"context-asc":{let d="number"!=typeof a.contextWindow||Number.isNaN(a.contextWindow)?void 0:a.contextWindow,e="number"!=typeof c.contextWindow||Number.isNaN(c.contextWindow)?void 0:c.contextWindow;if(void 0===d&&void 0===e)return g(a).localeCompare(g(c));if(void 0===d)return 1;if(void 0===e)return -1;let f="context-desc"===b?e-d:d-e;return 0!==f?f:g(a).localeCompare(g(c))}default:return 0}};return[...a].sort((a,b)=>{let d=Number(!!b.favorite)-Number(!!a.favorite);return 0!==d?d:c(a,b)})}},59737:(a,b,c)=>{c.d(b,{A:()=>m});var d=c(21124);c(38301);var e=c(60839),f=c(81637),g=c(44079),h=c(79515),i=c(41893),j=c(99561),k=c(17332),l=c(18467);let m=({label:a,count:b,expanded:c,onToggle:m,showFolderIcon:n=!1,children:o})=>{let p=(0,e.A)();return(0,d.jsxs)(f.default,{sx:{mb:1.5},children:[(0,d.jsxs)(f.default,{role:"button",tabIndex:0,"aria-expanded":c,onClick:m,onKeyDown:a=>{("Enter"===a.key||" "===a.key)&&(a.preventDefault(),m())},sx:{display:"flex",alignItems:"center",gap:1,px:1,py:.75,borderRadius:1,cursor:"pointer",userSelect:"none",backgroundColor:p.palette.background.default,border:`1px solid ${p.palette.divider}`,"&:hover":{backgroundColor:p.palette.action.hover}},children:[(0,d.jsx)(g.A,{size:"small","aria-label":c?"Collapse section":"Expand section",onClick:a=>{a.stopPropagation(),m()},sx:{transition:"transform 0.2s",transform:c?"rotate(0deg)":"rotate(-90deg)"},children:(0,d.jsx)(k.A,{fontSize:"small"})}),n&&(0,d.jsx)(l.A,{fontSize:"small",sx:{color:"text.secondary"}}),(0,d.jsx)(h.default,{variant:"subtitle2",sx:{fontWeight:600},children:a}),(0,d.jsx)(i.A,{label:b,size:"small",sx:{height:20,fontSize:"0.7rem"}})]}),(0,d.jsx)(j.A,{in:c,unmountOnExit:!0,children:(0,d.jsx)(f.default,{sx:{pt:1.5},children:o})})]})}},76133:(a,b,c)=>{c.d(b,{T_:()=>e,xx:()=>d});let d=[{id:"openai",label:"OpenAI",provider:"openai",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.openai.com/v1",showBaseUrl:!0},{id:"openai-responses",label:"OpenAI (Responses API)",provider:"openai",adapter:"openai-responses",sdkLabel:"OpenAI SDK (Responses)",baseUrl:"https://api.openai.com/v1",showBaseUrl:!0,defaultModels:["gpt-5","gpt-5-mini","o4-mini","o3"]},{id:"openrouter",label:"OpenRouter",provider:"openrouter",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://openrouter.ai/api/v1",showBaseUrl:!0},{id:"requesty",label:"Requesty",provider:"requesty",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://router.requesty.ai/v1",showBaseUrl:!0},{id:"xai",label:"X.ai",provider:"xai",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.x.ai/v1",showBaseUrl:!0},{id:"ollama",label:"Ollama",provider:"ollama",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"http://localhost:11434/v1",showBaseUrl:!0},{id:"litellm",label:"LiteLLM",provider:"litellm",adapter:"openai",sdkLabel:"OpenAI SDK (via LiteLLM Proxy)",baseUrl:"http://localhost:4000/v1",showBaseUrl:!0},{id:"gemini-openai",label:"Gemini (OpenAI Format)",provider:"gemini",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://generativelanguage.googleapis.com/v1beta/openai/",showBaseUrl:!0},{id:"gemini-native",label:"Gemini (Native)",provider:"gemini",adapter:"gemini",sdkLabel:"GenAI SDK",baseUrl:"",showBaseUrl:!1,defaultModels:["gemini-2.5-pro","gemini-2.5-flash","gemini-2.5-flash-lite","gemini-2.0-flash"]},{id:"anthropic-openai",label:"Anthropic (OpenAI Format)",provider:"anthropic",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.anthropic.com/v1/",showBaseUrl:!0},{id:"anthropic-native",label:"Anthropic (Native)",provider:"anthropic",adapter:"anthropic",sdkLabel:"Anthropic SDK",baseUrl:"",showBaseUrl:!1,defaultModels:["claude-opus-4-8","claude-sonnet-4-6","claude-haiku-4-5-20251001","claude-fable-5"]},{id:"claude-subscription",label:"Claude Subscription",provider:"claude-subscription",adapter:"claude-cli",sdkLabel:"Claude CLI",baseUrl:"",showBaseUrl:!1,defaultModels:["opus","sonnet","haiku","fable"]},{id:"codex",label:"Codex (OpenAI)",provider:"codex",adapter:"codex-cli",sdkLabel:"Codex SDK",baseUrl:"",showBaseUrl:!1,defaultModels:["gpt-5.6-sol","gpt-5.6-terra","gpt-5.6-luna","gpt-5.5","gpt-5.4","gpt-5.4-mini"]}];function e(a,b){let c=a||"openai",e=b||"openai";return d.find(a=>a.provider===c&&a.adapter===e)||d.find(a=>a.provider===c)||d[0]}},78352:(a,b,c)=>{c.d(b,{A:()=>u});var d=c(21124),e=c(38301),f=c(7118),g=c(94367),h=c(50553),i=c(84233),j=c(91059),k=c(40512),l=c(83899),m=c(52327),n=c(37674),o=c(19925),p=c(68730),q=c(36698),r=c(18467),s=c(31973),t=c(354);let u=({anchorEl:a,open:b,currentFolder:c,folders:u,onClose:v,onAssign:w})=>{let[x,y]=(0,e.useState)(!1),[z,A]=(0,e.useState)(""),B=a=>{w(a),v()},C=()=>{let a=z.trim();a&&(y(!1),B(a))};return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsxs)(f.A,{anchorEl:a,open:b,onClose:v,children:[u.length>0&&u.map(a=>(0,d.jsxs)(g.A,{onClick:()=>B(a),selected:a===c,children:[(0,d.jsx)(h.A,{children:a===c?(0,d.jsx)(q.A,{fontSize:"small"}):(0,d.jsx)(r.A,{fontSize:"small"})}),(0,d.jsx)(i.A,{primary:a})]},a)),u.length>0&&(0,d.jsx)(j.A,{}),(0,d.jsxs)(g.A,{onClick:()=>{A(""),y(!0)},children:[(0,d.jsx)(h.A,{children:(0,d.jsx)(s.A,{fontSize:"small"})}),(0,d.jsx)(i.A,{primary:"New folder…"})]}),c&&(0,d.jsxs)(g.A,{onClick:()=>B(void 0),children:[(0,d.jsx)(h.A,{children:(0,d.jsx)(t.A,{fontSize:"small"})}),(0,d.jsx)(i.A,{primary:"Remove from folder"})]})]}),(0,d.jsxs)(k.A,{open:x,onClose:()=>y(!1),maxWidth:"xs",fullWidth:!0,children:[(0,d.jsx)(l.A,{children:"New folder"}),(0,d.jsx)(m.A,{children:(0,d.jsx)(n.A,{autoFocus:!0,margin:"dense",label:"Folder name",fullWidth:!0,value:z,onChange:a=>A(a.target.value),onKeyDown:a=>{"Enter"===a.key&&(a.preventDefault(),C())}})}),(0,d.jsxs)(o.A,{children:[(0,d.jsx)(p.A,{onClick:()=>y(!1),children:"Cancel"}),(0,d.jsx)(p.A,{variant:"contained",disabled:!z.trim(),onClick:C,children:"Create"})]})]})]})}}};
@@ -1,5 +1,5 @@
1
- "use strict";exports.id=166,exports.ids=[166],exports.modules={40166:(a,b,c)=>{let d,e;c.d(b,{bashCallTool:()=>G,bashToolDefinitions:()=>A});var f=c(33873),g=c.n(f),h=c(29021),i=c.n(h),j=c(79646),k=c(18230);let l=(0,k.h)("utils/process/killProcessTree");function m(a,b=2e3){let c=a.pid;if(void 0===c)return()=>{};if("win32"===process.platform){try{(0,j.spawn)("taskkill",["/pid",String(c),"/T","/F"]).on("error",a=>l.debug(`taskkill failed for pid ${c}: ${a.message}`))}catch(a){l.debug(`taskkill spawn threw for pid ${c}: ${a instanceof Error?a.message:String(a)}`)}return()=>{}}try{process.kill(-c,"SIGTERM")}catch{}let d=setTimeout(()=>{try{process.kill(-c,"SIGKILL")}catch{}},b);return d.unref?.(),()=>clearTimeout(d)}var n=c(63129),o=c(94749),p=c(48092);let q=(0,k.h)("backend/services/mcp/internal/bashTools");function r(a){let b=(process.env.PATH??process.env.Path??"").split(g().delimiter).filter(Boolean),c="win32"===process.platform?(process.env.PATHEXT??".EXE;.CMD;.BAT;.COM").split(";").filter(Boolean):[""];for(let d of b)for(let b of c){let c=g().join(d,`${a}${b}`);try{if(i().statSync(c).isFile())return c}catch{}}return null}function s(){return global.__flujo_bash_sessions||(global.__flujo_bash_sessions=new Map),global.__flujo_bash_sessions}function t(a,b=!1){return{content:[{type:"text",text:"string"==typeof a?a:JSON.stringify(a,null,2)}],...b?{isError:!0}:{}}}let u=["FLUJO_BASH_ROOTS","FLUJO_FS_ROOTS"];function v(a,b){let c=(0,n.getDataDir)(),d="string"==typeof a?a.trim():"",e=d?g().isAbsolute(d)?g().resolve(d):g().resolve(c,d):c;if(0===b.length||!b.some(a=>(0,p.FK)(a,e)))throw Error(`cwd "${e}" is outside the configured bash roots.`);return e}let w=new Set(["PATH","Path","HOME","USERPROFILE","TMP","TEMP","TMPDIR","LANG","LC_ALL","SystemRoot","windir","ComSpec","PATHEXT","SystemDrive","NUMBER_OF_PROCESSORS","PROCESSOR_ARCHITECTURE"]);function x(a){return"pwsh"===a||"bash"===a?a:"default"}function y(a,b,c){let{file:f,args:h,useShell:k,effectiveShell:l,fallbackFrom:m}=function(a,b){if("pwsh"===b){let b=void 0!==e?e:e=r("pwsh");return b?{file:b,args:["-NoProfile","-NonInteractive","-Command",a],useShell:!1,effectiveShell:"pwsh"}:{file:a,args:[],useShell:!0,effectiveShell:"default",fallbackFrom:"pwsh"}}if("bash"===b){let b=function(){if(void 0!==d)return d;let a=r("bash");return a||"win32"!==process.platform||(a=[process.env.ProgramFiles,process.env["ProgramFiles(x86)"],process.env.LocalAppData].filter(a=>!!a).flatMap(a=>[g().join(a,"Git","bin","bash.exe"),g().join(a,"Git","usr","bin","bash.exe"),g().join(a,"Programs","Git","bin","bash.exe"),g().join(a,"Programs","Git","usr","bin","bash.exe")]).find(a=>{try{return i().statSync(a).isFile()}catch{return!1}})??null),d=a,a}();return b?{file:b,args:["-c",a],useShell:!1,effectiveShell:"bash"}:{file:a,args:[],useShell:!0,effectiveShell:"default",fallbackFrom:"bash"}}return{file:a,args:[],useShell:!0,effectiveShell:"default"}}(a,c),n="win32"!==process.platform;try{return{child:(0,j.spawn)(f,h,{cwd:b,shell:k,env:function(){var a;if("string"==typeof(a=process.env.FLUJO_BASH_INHERIT_ENV)&&/^(1|true|yes|on)$/i.test(a.trim()))return process.env;let b={};for(let a of Object.keys(process.env))(w.has(a)||/^LC_/.test(a))&&(b[a]=process.env[a]);return b}(),detached:n}),effectiveShell:l,fallbackFrom:m}}catch(a){return{child:void 0,startError:a instanceof Error?a.message:String(a),effectiveShell:l,fallbackFrom:m}}}function z(a,b){return c=>{let d=a();if(d.length>=1e5)return;let e=!1;(d+=c).length>1e5&&(d=d.slice(0,1e5)+"\n…[output truncated]",e=!0),b(d,e)}}function A(){let a={type:"string",enum:["default","pwsh","bash"],description:'Which shell to use: "default" (the OS shell), "pwsh" (PowerShell 7+), or "bash". Falls back to the default shell if the requested one is unavailable.'},b={type:"string",description:"Working directory. Relative paths resolve against the FLUJO data directory. Defaults to the data directory. When bash roots are configured (via the MCP manager, or the FLUJO_BASH_ROOTS / FLUJO_FS_ROOTS env hard ceiling) a cwd outside them is rejected."};return[{name:"run",description:"Run a shell command to completion and return combined stdout/stderr plus the exit code. Pipes and chained commands work. Killed if it exceeds the timeout; large output is truncated. Returns { exitCode, cwd, shell, output, timedOut }.",inputSchema:{type:"object",properties:{command:{type:"string",description:'The command line to execute, e.g. "grep -r foo ." or "curl -s https://…".'},cwd:b,shell:a,timeout:{type:"number",description:"Timeout in seconds (default 60, max 600)."},normalizeNewlines:{type:"boolean",description:"If true, CRLF/CR in the captured output are normalized to LF."}},required:["command"]}},{name:"start",description:"Start a command in the BACKGROUND and return immediately with a { sessionId }. Use status/wait to observe it, write_stdin to feed it input, and kill to stop it.",inputSchema:{type:"object",properties:{command:{type:"string",description:"The command line to execute in the background."},cwd:b,shell:a},required:["command"]}},{name:"status",description:"Return the current state of a background session: { sessionId, running, exitCode, output, truncated }.",inputSchema:{type:"object",properties:{sessionId:{type:"string",description:"The id returned by start."}},required:["sessionId"]}},{name:"wait",description:"Wait until a background session finishes (or the timeout elapses). Returns { sessionId, running, exitCode, output, truncated, timedOut }.",inputSchema:{type:"object",properties:{sessionId:{type:"string",description:"The id returned by start."},timeout:{type:"number",description:"Max seconds to wait (default 60, max 600)."}},required:["sessionId"]}},{name:"write_stdin",description:'Write a string to a running background session\'s stdin. Pass "newline": false to omit the trailing newline. Returns { sessionId, written }.',inputSchema:{type:"object",properties:{sessionId:{type:"string",description:"The id returned by start."},data:{type:"string",description:"Text to write to stdin."},newline:{type:"boolean",description:"Append a trailing newline (default true)."}},required:["sessionId","data"]}},{name:"kill",description:"Kill a background session (and its whole process tree). Returns { sessionId, killed }.",inputSchema:{type:"object",properties:{sessionId:{type:"string",description:"The id returned by start."}},required:["sessionId"]}},{name:"list_sessions",description:"List all known background sessions with their state. Returns { sessions: [{ sessionId, command, running, exitCode, startedAt, endedAt }] }.",inputSchema:{type:"object",properties:{}}}]}function B(a,b){return b?a.replace(/\r\n?/g,"\n"):a}async function C(a,b){let c=String(a?.command??"").trim();if(!c)return t({error:'Provide "command": a shell command line to run.'},!0);let d=v(a.cwd,b),e=x(a.shell),f=!0===a.normalizeNewlines,g=Math.min(1e3*("number"==typeof a.timeout&&a.timeout>0?a.timeout:60),6e5);return await new Promise(a=>{let b,h="",i=!1,j=!1,k=!1,l=z(()=>h,(a,b)=>{h=a,i=b||i}),{child:n,startError:o,effectiveShell:p,fallbackFrom:q}=y(c,d,e),r=q?{requestedShell:q,usedShell:p}:void 0;if(o||!n)return void a(t({error:`Failed to start command (${p}): ${o??"unknown error"}`,cwd:d,shell:p,shellFallback:r},!0));let s=setTimeout(()=>{k=!0,b=m(n)},g),u=c=>{j||(j=!0,clearTimeout(s),b?.(),a(c))};n.stdout?.on("data",a=>l(a.toString())),n.stderr?.on("data",a=>l(a.toString())),n.on("error",a=>{l(`
2
- ${a.message}`),u(t({error:`Command failed to start (${p}): ${a.message}`,cwd:d,shell:p,shellFallback:r,output:B(h,f)},!0))}),n.on("close",a=>{let b=B(h,f);if(k)return void u(t({timedOut:!0,cwd:d,shell:p,shellFallback:r,exitCode:a,truncated:i,output:`${b}
3
- [killed after ${g/1e3}s timeout]`},!0));u(t({exitCode:a,cwd:d,shell:p,shellFallback:r,truncated:i,output:b},0!==a))})})}function D(a){a.reapTimer=setTimeout(()=>{s().delete(a.id)},6e5),a.reapTimer.unref?.()}function E(a,b={}){return{sessionId:a.id,running:a.running,exitCode:a.exitCode,output:a.output,truncated:a.truncated,...b}}async function F(a){let b=String(a?.sessionId??""),c=s().get(b);if(!c)return t({error:`No background session with id "${b}".`},!0);if(!c.running)return t(E(c,{timedOut:!1}));let d=Math.min(1e3*("number"==typeof a.timeout&&a.timeout>0?a.timeout:60),6e5),e=await new Promise(a=>{let b=Date.now(),e=()=>c.running?Date.now()-b>=d?a(!0):void setTimeout(e,100):a(!1);e()});return t(E(c,{timedOut:e}))}async function G(a,b){try{switch(a){case"run":{let a=await (0,p.FN)(o.PA,u);return await C(b,a)}case"start":{let a=await (0,p.FN)(o.PA,u);return function(a,b){let c=String(a?.command??"").trim();if(!c)return t({error:'Provide "command": a shell command line to run.'},!0);let d=s();if(d.size>=25)for(let[a,b]of d)b.running||d.delete(a);if(d.size>=25)return t({error:"Too many active background sessions (max 25). Kill some first."},!0);!function(){if(global.__flujo_bash_cleanup_registered)return;global.__flujo_bash_cleanup_registered=!0;let a=()=>(function(){for(let a of s().values()){if(a.running)try{m(a.child)}catch{}a.reapTimer&&clearTimeout(a.reapTimer)}})();process.on("exit",a),process.on("SIGINT",a),process.on("SIGTERM",a)}();let e=v(a.cwd,b),{child:f,startError:g,effectiveShell:h,fallbackFrom:i}=y(c,e,x(a.shell)),j=i?{requestedShell:i,usedShell:h}:void 0;if(g||!f)return t({error:`Failed to start command (${h}): ${g??"unknown error"}`,cwd:e,shell:h,shellFallback:j},!0);let k=`bash-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,l={id:k,command:c,cwd:e,child:f,output:"",truncated:!1,running:!0,exitCode:null,startedAt:Date.now()};d.set(k,l);let n=z(()=>l.output,(a,b)=>{l.output=a,l.truncated=b||l.truncated});return f.stdout?.on("data",a=>n(a.toString())),f.stderr?.on("data",a=>n(a.toString())),f.on("error",a=>{n(`
4
- ${a.message}`),l.running=!1,l.endedAt=Date.now(),D(l)}),f.on("close",a=>{l.running=!1,l.exitCode=a,l.endedAt=Date.now(),D(l)}),t({sessionId:k,cwd:e,shell:h,shellFallback:j})}(b,a)}case"status":let c=String(b?.sessionId??""),d=s().get(c);return d?t(E(d)):t({error:`No background session with id "${c}".`},!0);case"wait":return await F(b);case"write_stdin":let e=String(b?.sessionId??""),f=s().get(e);if(!f)return t({error:`No background session with id "${e}".`},!0);if(!f.running)return t({error:`Session "${e}" has already exited.`},!0);let g="string"==typeof b.data?b.data:"",h=!1===b.newline?g:`${g}
5
- `;try{f.child.stdin?.write(h)}catch(a){return t({error:`Failed to write to stdin: ${a instanceof Error?a.message:String(a)}`},!0)}return t({sessionId:e,written:Buffer.byteLength(h,"utf8")});case"kill":let i=String(b?.sessionId??""),j=s().get(i);return j?(j.running&&(j.cancelEscalation=m(j.child)),t({sessionId:i,killed:!0})):t({error:`No background session with id "${i}".`},!0);case"list_sessions":return t({sessions:Array.from(s().values()).map(a=>({sessionId:a.id,command:a.command,running:a.running,exitCode:a.exitCode,startedAt:new Date(a.startedAt).toISOString(),endedAt:a.endedAt?new Date(a.endedAt).toISOString():void 0}))});default:return t({error:`Unknown tool on the built-in bash server: ${a}`},!0)}}catch(b){return q.warn("bashCallTool failed",{toolName:a,err:b}),t({error:`Tool failed: ${b instanceof Error?b.message:String(b)}`},!0)}}},48092:(a,b,c)=>{c.d(b,{FK:()=>j,FN:()=>l});var d=c(33873),e=c.n(d),f=c(79551),g=c(18230),h=c(94749);let i=(0,g.h)("backend/services/mcp/internal/confinement");function j(a,b){let c=e().relative(a,b);return""===c||!c.startsWith("..")&&!e().isAbsolute(c)}async function k(a,b){let{resolveGlobalVars:d}=await Promise.resolve().then(c.bind(c,87507)),g=(await d(a)).trim();if(!g)return null;if(g.startsWith("file://"))try{return e().resolve((0,f.fileURLToPath)(g))}catch(a){return i.warn(`resolveRootToPath: could not parse file URI "${g}"`,a),null}return e().isAbsolute(g)?e().resolve(g):e().resolve(b,g)}async function l(a,b){let{getDataDir:d}=await Promise.resolve().then(c.bind(c,63129)),f=d(),g=function(a){for(let b of Array.isArray(a)?a:[a]){let a=process.env[b];if(!a||!a.trim())continue;let c=a.split(e().delimiter).map(a=>a.trim()).filter(Boolean).map(a=>e().resolve(a));if(c.length)return c}return null}(b),l=[];try{for(let b of(await (0,h.AC)(a)))l.push(e().isAbsolute(b)?e().resolve(b):e().resolve(f,b))}catch(a){i.warn("loadEffectiveRoots: could not read persisted roots",a)}try{let{getNodeRoots:b}=await Promise.resolve().then(c.bind(c,28181));for(let c of b(a)){let a=await k(c,f);a&&l.push(a)}}catch(a){i.warn("loadEffectiveRoots: could not read node roots",a)}let m=Array.from(new Set(l));if(!g)return m;let n=m.filter(a=>g.some(b=>j(b,a)));return n.length?n:g}}};
1
+ "use strict";exports.id=166,exports.ids=[166,8092],exports.modules={40166:(a,b,c)=>{let d,e;c.d(b,{bashCallTool:()=>I,bashToolDefinitions:()=>C});var f=c(33873),g=c.n(f),h=c(29021),i=c.n(h),j=c(79646),k=c(18230);let l=(0,k.h)("utils/process/killProcessTree");function m(a,b=2e3){let c=a.pid;if(void 0===c)return()=>{};if("win32"===process.platform){try{(0,j.spawn)("taskkill",["/pid",String(c),"/T","/F"]).on("error",a=>l.debug(`taskkill failed for pid ${c}: ${a.message}`))}catch(a){l.debug(`taskkill spawn threw for pid ${c}: ${a instanceof Error?a.message:String(a)}`)}return()=>{}}try{process.kill(-c,"SIGTERM")}catch{}let d=setTimeout(()=>{try{process.kill(-c,"SIGKILL")}catch{}},b);return d.unref?.(),()=>clearTimeout(d)}var n=c(85510),o=c(94749),p=c(48092),q=c(65858);let r=(0,k.h)("backend/services/mcp/internal/bashTools");function s(a){let b=(process.env.PATH??process.env.Path??"").split(g().delimiter).filter(Boolean),c="win32"===process.platform?(process.env.PATHEXT??".EXE;.CMD;.BAT;.COM").split(";").filter(Boolean):[""];for(let d of b)for(let b of c){let c=g().join(d,`${a}${b}`);try{if(i().statSync(c).isFile())return c}catch{}}return null}function t(){return global.__flujo_bash_sessions||(global.__flujo_bash_sessions=new Map),global.__flujo_bash_sessions}function u(a,b=!1){return{content:[{type:"text",text:"string"==typeof a?a:JSON.stringify(a,null,2)}],...b?{isError:!0}:{}}}let v=["FLUJO_BASH_ROOTS","FLUJO_FS_ROOTS"];function w(a,b){let c=(0,n.getDataDir)(),d="string"==typeof a?a.trim():"",e=d?g().isAbsolute(d)?g().resolve(d):g().resolve(c,d):c,f=(0,q.bz)(e);if(f.denied)throw Error(`cwd "${e}" is within a protected location (${f.matchedRoot}) and is blocked by the FLUJO built-in server protected-path policy. Set ${q.wp}=1 to override (operator only).`);if(0===b.length||!b.some(a=>(0,p.F)(a,e)))throw Error(`cwd "${e}" is outside the configured bash roots.`);return e}function x(a,b,c){let d=[],e=new Set,f=a.match(/(?:[A-Za-z]:[\\/][^\s"']*|\\\\[^\s"']+|~\/[^\s"']*|(?<![\w.])\/[^\s"']+)/g)??[],h=(()=>{try{return(0,n.getHomeDir)()}catch{return""}})();for(let a of f){let f,i=a;i.startsWith("~/")&&h&&(i=g().join(h,i.slice(2)));try{f=g().isAbsolute(i)?g().resolve(i):g().resolve(b,i)}catch{continue}if(e.has(f))continue;e.add(f);let j=(0,q.bz)(f);j.denied?d.push(`Command references "${a}", which is inside a protected location (${j.matchedRoot}).`):c.length>0&&!c.some(a=>(0,p.F)(a,f))&&d.push(`Command references "${a}", which is outside the configured working roots.`)}return d}let y=new Set(["PATH","Path","HOME","USERPROFILE","TMP","TEMP","TMPDIR","LANG","LC_ALL","SystemRoot","windir","ComSpec","PATHEXT","SystemDrive","NUMBER_OF_PROCESSORS","PROCESSOR_ARCHITECTURE"]);function z(a){return"pwsh"===a||"bash"===a?a:"default"}function A(a,b,c){let{file:f,args:h,useShell:k,effectiveShell:l,fallbackFrom:m}=function(a,b){if("pwsh"===b){let b=void 0!==e?e:e=s("pwsh");return b?{file:b,args:["-NoProfile","-NonInteractive","-Command",a],useShell:!1,effectiveShell:"pwsh"}:{file:a,args:[],useShell:!0,effectiveShell:"default",fallbackFrom:"pwsh"}}if("bash"===b){let b=function(){if(void 0!==d)return d;let a=s("bash");return a||"win32"!==process.platform||(a=[process.env.ProgramFiles,process.env["ProgramFiles(x86)"],process.env.LocalAppData].filter(a=>!!a).flatMap(a=>[g().join(a,"Git","bin","bash.exe"),g().join(a,"Git","usr","bin","bash.exe"),g().join(a,"Programs","Git","bin","bash.exe"),g().join(a,"Programs","Git","usr","bin","bash.exe")]).find(a=>{try{return i().statSync(a).isFile()}catch{return!1}})??null),d=a,a}();return b?{file:b,args:["-c",a],useShell:!1,effectiveShell:"bash"}:{file:a,args:[],useShell:!0,effectiveShell:"default",fallbackFrom:"bash"}}return{file:a,args:[],useShell:!0,effectiveShell:"default"}}(a,c),n="win32"!==process.platform;try{return{child:(0,j.spawn)(f,h,{cwd:b,shell:k,env:function(){var a;if("string"==typeof(a=process.env.FLUJO_BASH_INHERIT_ENV)&&/^(1|true|yes|on)$/i.test(a.trim()))return process.env;let b={};for(let a of Object.keys(process.env))(y.has(a)||/^LC_/.test(a))&&(b[a]=process.env[a]);return b}(),detached:n}),effectiveShell:l,fallbackFrom:m}}catch(a){return{child:void 0,startError:a instanceof Error?a.message:String(a),effectiveShell:l,fallbackFrom:m}}}function B(a,b){return c=>{let d=a();if(d.length>=1e5)return;let e=!1;(d+=c).length>1e5&&(d=d.slice(0,1e5)+"\n…[output truncated]",e=!0),b(d,e)}}function C(){let a={type:"string",enum:["default","pwsh","bash"],description:'Which shell to use: "default" (the OS shell), "pwsh" (PowerShell 7+), or "bash". Falls back to the default shell if the requested one is unavailable.'},b={type:"string",description:"Working directory. Relative paths resolve against the FLUJO data directory. Defaults to the data directory. When bash roots are configured (via the MCP manager, or the FLUJO_BASH_ROOTS / FLUJO_FS_ROOTS env hard ceiling) a cwd outside them is rejected."};return[{name:"run",description:"Run a shell command to completion and return combined stdout/stderr plus the exit code. Pipes and chained commands work. Killed if it exceeds the timeout; large output is truncated. Returns { exitCode, cwd, shell, output, timedOut }.",inputSchema:{type:"object",properties:{command:{type:"string",description:'The command line to execute, e.g. "grep -r foo ." or "curl -s https://…".'},cwd:b,shell:a,timeout:{type:"number",description:"Timeout in seconds (default 60, max 600)."},normalizeNewlines:{type:"boolean",description:"If true, CRLF/CR in the captured output are normalized to LF."}},required:["command"]}},{name:"start",description:"Start a command in the BACKGROUND and return immediately with a { sessionId }. Use status/wait to observe it, write_stdin to feed it input, and kill to stop it.",inputSchema:{type:"object",properties:{command:{type:"string",description:"The command line to execute in the background."},cwd:b,shell:a},required:["command"]}},{name:"status",description:"Return the current state of a background session: { sessionId, running, exitCode, output, truncated }.",inputSchema:{type:"object",properties:{sessionId:{type:"string",description:"The id returned by start."}},required:["sessionId"]}},{name:"wait",description:"Wait until a background session finishes (or the timeout elapses). Returns { sessionId, running, exitCode, output, truncated, timedOut }.",inputSchema:{type:"object",properties:{sessionId:{type:"string",description:"The id returned by start."},timeout:{type:"number",description:"Max seconds to wait (default 60, max 600)."}},required:["sessionId"]}},{name:"write_stdin",description:'Write a string to a running background session\'s stdin. Pass "newline": false to omit the trailing newline. Returns { sessionId, written }.',inputSchema:{type:"object",properties:{sessionId:{type:"string",description:"The id returned by start."},data:{type:"string",description:"Text to write to stdin."},newline:{type:"boolean",description:"Append a trailing newline (default true)."}},required:["sessionId","data"]}},{name:"kill",description:"Kill a background session (and its whole process tree). Returns { sessionId, killed }.",inputSchema:{type:"object",properties:{sessionId:{type:"string",description:"The id returned by start."}},required:["sessionId"]}},{name:"list_sessions",description:"List all known background sessions with their state. Returns { sessions: [{ sessionId, command, running, exitCode, startedAt, endedAt }] }.",inputSchema:{type:"object",properties:{}}}]}function D(a,b){return b?a.replace(/\r\n?/g,"\n"):a}async function E(a,b){let c=String(a?.command??"").trim();if(!c)return u({error:'Provide "command": a shell command line to run.'},!0);let d=w(a.cwd,b),e=x(c,d,b),f=e.length?{warnings:e}:{},g=z(a.shell),h=!0===a.normalizeNewlines,i=Math.min(1e3*("number"==typeof a.timeout&&a.timeout>0?a.timeout:60),6e5);return await new Promise(a=>{let b,e="",j=!1,k=!1,l=!1,n=B(()=>e,(a,b)=>{e=a,j=b||j}),{child:o,startError:p,effectiveShell:q,fallbackFrom:r}=A(c,d,g),s=r?{requestedShell:r,usedShell:q}:void 0;if(p||!o)return void a(u({error:`Failed to start command (${q}): ${p??"unknown error"}`,cwd:d,shell:q,shellFallback:s},!0));let t=setTimeout(()=>{l=!0,b=m(o)},i),v=c=>{k||(k=!0,clearTimeout(t),b?.(),a(c))};o.stdout?.on("data",a=>n(a.toString())),o.stderr?.on("data",a=>n(a.toString())),o.on("error",a=>{n(`
2
+ ${a.message}`),v(u({error:`Command failed to start (${q}): ${a.message}`,cwd:d,shell:q,shellFallback:s,output:D(e,h)},!0))}),o.on("close",a=>{let b=D(e,h);if(l)return void v(u({timedOut:!0,cwd:d,shell:q,shellFallback:s,exitCode:a,truncated:j,output:`${b}
3
+ [killed after ${i/1e3}s timeout]`,...f},!0));v(u({exitCode:a,cwd:d,shell:q,shellFallback:s,truncated:j,output:b,...f},0!==a))})})}function F(a){a.reapTimer=setTimeout(()=>{t().delete(a.id)},6e5),a.reapTimer.unref?.()}function G(a,b={}){return{sessionId:a.id,running:a.running,exitCode:a.exitCode,output:a.output,truncated:a.truncated,...b}}async function H(a){let b=String(a?.sessionId??""),c=t().get(b);if(!c)return u({error:`No background session with id "${b}".`},!0);if(!c.running)return u(G(c,{timedOut:!1}));let d=Math.min(1e3*("number"==typeof a.timeout&&a.timeout>0?a.timeout:60),6e5),e=await new Promise(a=>{let b=Date.now(),e=()=>c.running?Date.now()-b>=d?a(!0):void setTimeout(e,100):a(!1);e()});return u(G(c,{timedOut:e}))}async function I(a,b,c){try{switch(a){case"run":{let a=await (0,p.loadEffectiveRoots)(o.PA,v,c);return await E(b,a)}case"start":{let a=await (0,p.loadEffectiveRoots)(o.PA,v,c);return function(a,b){let c=String(a?.command??"").trim();if(!c)return u({error:'Provide "command": a shell command line to run.'},!0);let d=t();if(d.size>=25)for(let[a,b]of d)b.running||d.delete(a);if(d.size>=25)return u({error:"Too many active background sessions (max 25). Kill some first."},!0);!function(){if(global.__flujo_bash_cleanup_registered)return;global.__flujo_bash_cleanup_registered=!0;let a=()=>(function(){for(let a of t().values()){if(a.running)try{m(a.child)}catch{}a.reapTimer&&clearTimeout(a.reapTimer)}})();process.on("exit",a),process.on("SIGINT",a),process.on("SIGTERM",a)}();let e=w(a.cwd,b),f=x(c,e,b),g=f.length?{warnings:f}:{},{child:h,startError:i,effectiveShell:j,fallbackFrom:k}=A(c,e,z(a.shell)),l=k?{requestedShell:k,usedShell:j}:void 0;if(i||!h)return u({error:`Failed to start command (${j}): ${i??"unknown error"}`,cwd:e,shell:j,shellFallback:l},!0);let n=`bash-${Date.now()}-${Math.random().toString(36).slice(2,8)}`,o={id:n,command:c,cwd:e,child:h,output:"",truncated:!1,running:!0,exitCode:null,startedAt:Date.now()};d.set(n,o);let p=B(()=>o.output,(a,b)=>{o.output=a,o.truncated=b||o.truncated});return h.stdout?.on("data",a=>p(a.toString())),h.stderr?.on("data",a=>p(a.toString())),h.on("error",a=>{p(`
4
+ ${a.message}`),o.running=!1,o.endedAt=Date.now(),F(o)}),h.on("close",a=>{o.running=!1,o.exitCode=a,o.endedAt=Date.now(),F(o)}),u({sessionId:n,cwd:e,shell:j,shellFallback:l,...g})}(b,a)}case"status":let d=String(b?.sessionId??""),e=t().get(d);return e?u(G(e)):u({error:`No background session with id "${d}".`},!0);case"wait":return await H(b);case"write_stdin":let f=String(b?.sessionId??""),g=t().get(f);if(!g)return u({error:`No background session with id "${f}".`},!0);if(!g.running)return u({error:`Session "${f}" has already exited.`},!0);let h="string"==typeof b.data?b.data:"",i=!1===b.newline?h:`${h}
5
+ `;try{g.child.stdin?.write(i)}catch(a){return u({error:`Failed to write to stdin: ${a instanceof Error?a.message:String(a)}`},!0)}return u({sessionId:f,written:Buffer.byteLength(i,"utf8")});case"kill":let j=String(b?.sessionId??""),k=t().get(j);return k?(k.running&&(k.cancelEscalation=m(k.child)),u({sessionId:j,killed:!0})):u({error:`No background session with id "${j}".`},!0);case"list_sessions":return u({sessions:Array.from(t().values()).map(a=>({sessionId:a.id,command:a.command,running:a.running,exitCode:a.exitCode,startedAt:new Date(a.startedAt).toISOString(),endedAt:a.endedAt?new Date(a.endedAt).toISOString():void 0}))});default:return u({error:`Unknown tool on the built-in bash server: ${a}`},!0)}}catch(b){return r.warn("bashCallTool failed",{toolName:a,err:b}),u({error:`Tool failed: ${b instanceof Error?b.message:String(b)}`},!0)}}},48092:(a,b,c)=>{c.d(b,{F:()=>j,loadEffectiveRoots:()=>l});var d=c(33873),e=c.n(d),f=c(79551),g=c(18230),h=c(94749);let i=(0,g.h)("backend/services/mcp/internal/confinement");function j(a,b){let c=e().relative(a,b);return""===c||!c.startsWith("..")&&!e().isAbsolute(c)}async function k(a,b){let{resolveGlobalVars:d}=await Promise.resolve().then(c.bind(c,87507)),g=(await d(a)).trim();if(!g)return null;if(g.startsWith("file://"))try{return e().resolve((0,f.fileURLToPath)(g))}catch(a){return i.warn(`resolveRootToPath: could not parse file URI "${g}"`,a),null}return e().isAbsolute(g)?e().resolve(g):e().resolve(b,g)}async function l(a,b,d){let{getDataDir:f}=await Promise.resolve().then(c.bind(c,85510)),g=f(),l=function(a){for(let b of Array.isArray(a)?a:[a]){let a=process.env[b];if(!a||!a.trim())continue;let c=a.split(e().delimiter).map(a=>a.trim()).filter(Boolean).map(a=>e().resolve(a));if(c.length)return c}return null}(b),m=[];try{for(let b of(await (0,h.AC)(a)))m.push(e().isAbsolute(b)?e().resolve(b):e().resolve(g,b))}catch(a){i.warn("loadEffectiveRoots: could not read persisted roots",a)}try{let{getNodeRoots:b,getNodeRootsForId:e}=await Promise.resolve().then(c.bind(c,28181));for(let c of void 0!==d?(()=>{let c=e(a,d);return c.length>0?c:b(a)})():b(a)){let a=await k(c,g);a&&m.push(a)}}catch(a){i.warn("loadEffectiveRoots: could not read node roots",a)}let n=Array.from(new Set(m));if(!l)return 0===n.length?[g]:n;let o=n.filter(a=>l.some(b=>j(b,a)));return o.length?o:l}},65858:(a,b,c)=>{c.d(b,{bz:()=>m,wp:()=>j});var d=c(33873),e=c.n(d),f=c(21820),g=c.n(f),h=c(85510),i=c(48092);let j="FLUJO_ALLOW_PROTECTED_PATHS",k=null;function l(a,...b){return e().resolve(a,...b)}function m(a){let b=e().resolve(a);if((function(){let a=[];try{a.push(e().resolve((0,h.getDataDir)()))}catch{}try{a.push(e().resolve(g().tmpdir()))}catch{}return a})().some(a=>(0,i.F)(a,b)))return{denied:!1};for(let a of function(){var a;let b="string"==typeof(a=process.env[j])&&/^(1|true|yes|on)$/i.test(a.trim()),c=(0,h.getHomeDir)(),d=`${b?"off":"on"}::${c}`;if(k&&k.key===d)return k.paths;let f=b?[]:function(a){let b=[];if("win32"===process.platform)for(let c of["AppData","Downloads","Desktop","Documents","Pictures","Music","Videos","OneDrive"])b.push(l(a,c));else if("darwin"===process.platform){for(let c of["Downloads","Desktop","Documents","Pictures","Music","Movies"])b.push(l(a,c));for(let c of["Library/Mail","Library/Messages","Library/Safari","Library/Cookies","Library/Calendars","Library/Application Support/AddressBook","Library/Application Support/com.apple.TCC","Library/PersonalizationPortrait","Library/Metadata/CoreSpotlight","Library/Suggestions"])b.push(l(a,c));for(let a of["/.Spotlight-V100","/.fseventsd","/.DocumentRevisions-V100"])b.push(e().resolve(a))}else for(let c of["Documents","Downloads","Desktop",".ssh",".gnupg",".aws",".config"])b.push(l(a,c));return Array.from(new Set(b))}(c);return k={key:d,paths:f},f}())if((0,i.F)(a,b))return{denied:!0,matchedRoot:a};return{denied:!1}}}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=1690,exports.ids=[1690],exports.modules={31716:(a,b,c)=>{Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{isRequestAPICallableInsideAfter:function(){return i},throwForSearchParamsAccessInUseCache:function(){return h},throwWithStaticGenerationBailoutError:function(){return f},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return g}});let d=c(11938),e=c(3295);function f(a,b){throw Object.defineProperty(new d.StaticGenBailoutError(`Route ${a} couldn't be rendered statically because it used ${b}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E576",enumerable:!1,configurable:!0})}function g(a,b){throw Object.defineProperty(new d.StaticGenBailoutError(`Route ${a} with \`dynamic = "error"\` couldn't be rendered statically because it used ${b}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function h(a,b){let c=Object.defineProperty(Error(`Route ${a.route} used "searchParams" inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await "searchParams" outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E779",enumerable:!1,configurable:!0});throw Error.captureStackTrace(c,b),a.invalidDynamicUsageError??=c,c}function i(){let a=e.afterTaskAsyncStorage.getStore();return(null==a?void 0:a.rootTaskSpawnPhase)==="action"}},67191:(a,b,c)=>{c.d(b,{A:()=>x});var d=c(38301),e=c(43249),f=c(2783),g=c(37489),h=c(6638),i=c(54716),j=c(99515),k=c(18168),l=c(68333),m=c(6636),n=c(29565),o=c(33105);function p(a){return(0,o.Ay)("MuiSwitch",a)}let q=(0,n.A)("MuiSwitch",["root","edgeStart","edgeEnd","switchBase","colorPrimary","colorSecondary","sizeSmall","sizeMedium","checked","disabled","input","thumb","track"]);var r=c(20385),s=c(21124);let t=(0,k.Ay)("span",{name:"MuiSwitch",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,c.edge&&b[`edge${(0,h.A)(c.edge)}`],b[`size${(0,h.A)(c.size)}`]]}})({display:"inline-flex",width:58,height:38,overflow:"hidden",padding:12,boxSizing:"border-box",position:"relative",flexShrink:0,zIndex:0,verticalAlign:"middle","@media print":{colorAdjust:"exact"},variants:[{props:{edge:"start"},style:{marginLeft:-8}},{props:{edge:"end"},style:{marginRight:-8}},{props:{size:"small"},style:{width:40,height:24,padding:7,[`& .${q.thumb}`]:{width:16,height:16},[`& .${q.switchBase}`]:{padding:4,[`&.${q.checked}`]:{transform:"translateX(16px)"}}}}]}),u=(0,k.Ay)(j.A,{name:"MuiSwitch",slot:"SwitchBase",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.switchBase,{[`& .${q.input}`]:b.input},"default"!==c.color&&b[`color${(0,h.A)(c.color)}`]]}})((0,l.A)(({theme:a})=>({position:"absolute",top:0,left:0,zIndex:1,color:a.vars?a.vars.palette.Switch.defaultColor:`${"light"===a.palette.mode?a.palette.common.white:a.palette.grey[300]}`,transition:a.transitions.create(["left","transform"],{duration:a.transitions.duration.shortest}),[`&.${q.checked}`]:{transform:"translateX(20px)"},[`&.${q.disabled}`]:{color:a.vars?a.vars.palette.Switch.defaultDisabledColor:`${"light"===a.palette.mode?a.palette.grey[100]:a.palette.grey[600]}`},[`&.${q.checked} + .${q.track}`]:{opacity:.5},[`&.${q.disabled} + .${q.track}`]:{opacity:a.vars?a.vars.opacity.switchTrackDisabled:`${"light"===a.palette.mode?.12:.2}`},[`& .${q.input}`]:{left:"-100%",width:"300%"}})),(0,l.A)(({theme:a})=>({"&:hover":{backgroundColor:a.vars?`rgba(${a.vars.palette.action.activeChannel} / ${a.vars.palette.action.hoverOpacity})`:(0,g.X4)(a.palette.action.active,a.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},variants:[...Object.entries(a.palette).filter((0,i.A)(["light"])).map(([b])=>({props:{color:b},style:{[`&.${q.checked}`]:{color:(a.vars||a).palette[b].main,"&:hover":{backgroundColor:a.vars?`rgba(${a.vars.palette[b].mainChannel} / ${a.vars.palette.action.hoverOpacity})`:(0,g.X4)(a.palette[b].main,a.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${q.disabled}`]:{color:a.vars?a.vars.palette.Switch[`${b}DisabledColor`]:`${"light"===a.palette.mode?(0,g.a)(a.palette[b].main,.62):(0,g.e$)(a.palette[b].main,.55)}`}},[`&.${q.checked} + .${q.track}`]:{backgroundColor:(a.vars||a).palette[b].main}}}))]}))),v=(0,k.Ay)("span",{name:"MuiSwitch",slot:"Track",overridesResolver:(a,b)=>b.track})((0,l.A)(({theme:a})=>({height:"100%",width:"100%",borderRadius:7,zIndex:-1,transition:a.transitions.create(["opacity","background-color"],{duration:a.transitions.duration.shortest}),backgroundColor:a.vars?a.vars.palette.common.onBackground:`${"light"===a.palette.mode?a.palette.common.black:a.palette.common.white}`,opacity:a.vars?a.vars.opacity.switchTrack:`${"light"===a.palette.mode?.38:.3}`}))),w=(0,k.Ay)("span",{name:"MuiSwitch",slot:"Thumb",overridesResolver:(a,b)=>b.thumb})((0,l.A)(({theme:a})=>({boxShadow:(a.vars||a).shadows[1],backgroundColor:"currentColor",width:20,height:20,borderRadius:"50%"}))),x=d.forwardRef(function(a,b){let c=(0,m.b)({props:a,name:"MuiSwitch"}),{className:d,color:g="primary",edge:i=!1,size:j="medium",sx:k,slots:l={},slotProps:n={},...o}=c,q={...c,color:g,edge:i,size:j},x=(a=>{let{classes:b,edge:c,size:d,color:e,checked:g,disabled:i}=a,j={root:["root",c&&`edge${(0,h.A)(c)}`,`size${(0,h.A)(d)}`],switchBase:["switchBase",`color${(0,h.A)(e)}`,g&&"checked",i&&"disabled"],thumb:["thumb"],track:["track"],input:["input"]},k=(0,f.A)(j,p,b);return{...b,...k}})(q),y={slots:l,slotProps:n},[z,A]=(0,r.A)("root",{className:(0,e.A)(x.root,d),elementType:t,externalForwardedProps:y,ownerState:q,additionalProps:{sx:k}}),[B,C]=(0,r.A)("thumb",{className:x.thumb,elementType:w,externalForwardedProps:y,ownerState:q}),D=(0,s.jsx)(B,{...C}),[E,F]=(0,r.A)("track",{className:x.track,elementType:v,externalForwardedProps:y,ownerState:q});return(0,s.jsxs)(z,{...A,children:[(0,s.jsx)(u,{type:"checkbox",icon:D,checkedIcon:D,ref:b,ownerState:q,...o,classes:{...x,root:x.switchBase},slots:{...l.switchBase&&{root:l.switchBase},...l.input&&{input:l.input}},slotProps:{...n.switchBase&&{root:"function"==typeof n.switchBase?n.switchBase(q):n.switchBase},...n.input&&{input:"function"==typeof n.input?n.input(q):n.input}}}),(0,s.jsx)(E,{...F})]})})},77028:(a,b,c)=>{c.d(b,{A:()=>D});var d=c(38301),e=c(43249),f=c(2783),g=c(37489),h=c(99515),i=c(11801),j=c(21124);let k=(0,i.A)((0,j.jsx)("path",{d:"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"}),"CheckBoxOutlineBlank"),l=(0,i.A)((0,j.jsx)("path",{d:"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"}),"CheckBox"),m=(0,i.A)((0,j.jsx)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"}),"IndeterminateCheckBox");var n=c(6638),o=c(41126),p=c(29565),q=c(33105);function r(a){return(0,q.Ay)("MuiCheckbox",a)}let s=(0,p.A)("MuiCheckbox",["root","checked","disabled","indeterminate","colorPrimary","colorSecondary","sizeSmall","sizeMedium"]);var t=c(18168),u=c(68333),v=c(54716),w=c(6636),x=c(19902),y=c(20385);let z=(0,t.Ay)(h.A,{shouldForwardProp:a=>(0,o.A)(a)||"classes"===a,name:"MuiCheckbox",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,c.indeterminate&&b.indeterminate,b[`size${(0,n.A)(c.size)}`],"default"!==c.color&&b[`color${(0,n.A)(c.color)}`]]}})((0,u.A)(({theme:a})=>({color:(a.vars||a).palette.text.secondary,variants:[{props:{color:"default",disableRipple:!1},style:{"&:hover":{backgroundColor:a.vars?`rgba(${a.vars.palette.action.activeChannel} / ${a.vars.palette.action.hoverOpacity})`:(0,g.X4)(a.palette.action.active,a.palette.action.hoverOpacity)}}},...Object.entries(a.palette).filter((0,v.A)()).map(([b])=>({props:{color:b,disableRipple:!1},style:{"&:hover":{backgroundColor:a.vars?`rgba(${a.vars.palette[b].mainChannel} / ${a.vars.palette.action.hoverOpacity})`:(0,g.X4)(a.palette[b].main,a.palette.action.hoverOpacity)}}})),...Object.entries(a.palette).filter((0,v.A)()).map(([b])=>({props:{color:b},style:{[`&.${s.checked}, &.${s.indeterminate}`]:{color:(a.vars||a).palette[b].main},[`&.${s.disabled}`]:{color:(a.vars||a).palette.action.disabled}}})),{props:{disableRipple:!1},style:{"&:hover":{"@media (hover: none)":{backgroundColor:"transparent"}}}}]}))),A=(0,j.jsx)(l,{}),B=(0,j.jsx)(k,{}),C=(0,j.jsx)(m,{}),D=d.forwardRef(function(a,b){let c=(0,w.b)({props:a,name:"MuiCheckbox"}),{checkedIcon:g=A,color:h="primary",icon:i=B,indeterminate:k=!1,indeterminateIcon:l=C,inputProps:m,size:o="medium",disableRipple:p=!1,className:q,slots:s={},slotProps:t={},...u}=c,v=k?l:i,D=k?l:g,E={...c,disableRipple:p,color:h,indeterminate:k,size:o},F=(a=>{let{classes:b,indeterminate:c,color:d,size:e}=a,g={root:["root",c&&"indeterminate",`color${(0,n.A)(d)}`,`size${(0,n.A)(e)}`]},h=(0,f.A)(g,r,b);return{...b,...h}})(E),G=t.input??m,[H,I]=(0,y.A)("root",{ref:b,elementType:z,className:(0,e.A)(F.root,q),shouldForwardComponentProp:!0,externalForwardedProps:{slots:s,slotProps:t,...u},ownerState:E,additionalProps:{type:"checkbox",icon:d.cloneElement(v,{fontSize:v.props.fontSize??o}),checkedIcon:d.cloneElement(D,{fontSize:D.props.fontSize??o}),disableRipple:p,slots:s,slotProps:{input:(0,x.A)("function"==typeof G?G(E):G,{"data-indeterminate":k})}}});return(0,j.jsx)(H,{...I,classes:F})})},84226:(a,b)=>{Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{describeHasCheckingStringProperty:function(){return e},describeStringPropertyAccess:function(){return d},wellKnownProperties:function(){return f}});let c=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function d(a,b){return c.test(b)?"`"+a+"."+b+"`":"`"+a+"["+JSON.stringify(b)+"]`"}function e(a,b){let c=JSON.stringify(b);return"`Reflect.has("+a+", "+c+")`, `"+c+" in "+a+"`, or similar"}let f=new Set(["hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toString","valueOf","toLocaleString","then","catch","finally","status","displayName","_debugInfo","toJSON","$$typeof","__esModule"])},95587:(a,b,c)=>{c.d(b,{A:()=>v});var d=c(38301),e=c(43249),f=c(2783),g=c(49628),h=c(18168),i=c(68333),j=c(6636),k=c(79515),l=c(6638),m=c(29565),n=c(33105);function o(a){return(0,n.Ay)("MuiFormControlLabel",a)}let p=(0,m.A)("MuiFormControlLabel",["root","labelPlacementStart","labelPlacementTop","labelPlacementBottom","disabled","label","error","required","asterisk"]);var q=c(83738),r=c(20385),s=c(21124);let t=(0,h.Ay)("label",{name:"MuiFormControlLabel",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[{[`& .${p.label}`]:b.label},b.root,b[`labelPlacement${(0,l.A)(c.labelPlacement)}`]]}})((0,i.A)(({theme:a})=>({display:"inline-flex",alignItems:"center",cursor:"pointer",verticalAlign:"middle",WebkitTapHighlightColor:"transparent",marginLeft:-11,marginRight:16,[`&.${p.disabled}`]:{cursor:"default"},[`& .${p.label}`]:{[`&.${p.disabled}`]:{color:(a.vars||a).palette.text.disabled}},variants:[{props:{labelPlacement:"start"},style:{flexDirection:"row-reverse",marginRight:-11}},{props:{labelPlacement:"top"},style:{flexDirection:"column-reverse"}},{props:{labelPlacement:"bottom"},style:{flexDirection:"column"}},{props:({labelPlacement:a})=>"start"===a||"top"===a||"bottom"===a,style:{marginLeft:16}}]}))),u=(0,h.Ay)("span",{name:"MuiFormControlLabel",slot:"Asterisk",overridesResolver:(a,b)=>b.asterisk})((0,i.A)(({theme:a})=>({[`&.${p.error}`]:{color:(a.vars||a).palette.error.main}}))),v=d.forwardRef(function(a,b){let c=(0,j.b)({props:a,name:"MuiFormControlLabel"}),{checked:h,className:i,componentsProps:m={},control:n,disabled:p,disableTypography:v,inputRef:w,label:x,labelPlacement:y="end",name:z,onChange:A,required:B,slots:C={},slotProps:D={},value:E,...F}=c,G=(0,g.A)(),H=p??n.props.disabled??G?.disabled,I=B??n.props.required,J={disabled:H,required:I};["checked","name","onChange","value","inputRef"].forEach(a=>{void 0===n.props[a]&&void 0!==c[a]&&(J[a]=c[a])});let K=(0,q.A)({props:c,muiFormControl:G,states:["error"]}),L={...c,disabled:H,labelPlacement:y,required:I,error:K.error},M=(a=>{let{classes:b,disabled:c,labelPlacement:d,error:e,required:g}=a,h={root:["root",c&&"disabled",`labelPlacement${(0,l.A)(d)}`,e&&"error",g&&"required"],label:["label",c&&"disabled"],asterisk:["asterisk",e&&"error"]};return(0,f.A)(h,o,b)})(L),N={slots:C,slotProps:{...m,...D}},[O,P]=(0,r.A)("typography",{elementType:k.default,externalForwardedProps:N,ownerState:L}),Q=x;return null==Q||Q.type===k.default||v||(Q=(0,s.jsx)(O,{component:"span",...P,className:(0,e.A)(M.label,P?.className),children:Q})),(0,s.jsxs)(t,{className:(0,e.A)(M.root,i),ownerState:L,ref:b,...F,children:[d.cloneElement(n,J),I?(0,s.jsxs)("div",{children:[Q,(0,s.jsxs)(u,{ownerState:L,"aria-hidden":!0,className:M.asterisk,children:[" ","*"]})]}):Q]})})},99515:(a,b,c)=>{c.d(b,{A:()=>s});var d=c(38301),e=c(2783),f=c(6638),g=c(41126),h=c(18168),i=c(65603),j=c(49628),k=c(14328),l=c(29565),m=c(33105);function n(a){return(0,m.Ay)("PrivateSwitchBase",a)}(0,l.A)("PrivateSwitchBase",["root","checked","disabled","input","edgeStart","edgeEnd"]);var o=c(20385),p=c(21124);let q=(0,h.Ay)(k.A,{name:"MuiSwitchBase"})({padding:9,borderRadius:"50%",variants:[{props:{edge:"start",size:"small"},style:{marginLeft:-3}},{props:({edge:a,ownerState:b})=>"start"===a&&"small"!==b.size,style:{marginLeft:-12}},{props:{edge:"end",size:"small"},style:{marginRight:-3}},{props:({edge:a,ownerState:b})=>"end"===a&&"small"!==b.size,style:{marginRight:-12}}]}),r=(0,h.Ay)("input",{name:"MuiSwitchBase",shouldForwardProp:g.A})({cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0,zIndex:1}),s=d.forwardRef(function(a,b){let{autoFocus:c,checked:d,checkedIcon:g,defaultChecked:h,disabled:k,disableFocusRipple:l=!1,edge:m=!1,icon:s,id:t,inputProps:u,inputRef:v,name:w,onBlur:x,onChange:y,onFocus:z,readOnly:A,required:B=!1,tabIndex:C,type:D,value:E,slots:F={},slotProps:G={},...H}=a,[I,J]=(0,i.A)({controlled:d,default:!!h,name:"SwitchBase",state:"checked"}),K=(0,j.A)(),L=k;K&&void 0===L&&(L=K.disabled);let M="checkbox"===D||"radio"===D,N={...a,checked:I,disabled:L,disableFocusRipple:l,edge:m},O=(a=>{let{classes:b,checked:c,disabled:d,edge:g}=a,h={root:["root",c&&"checked",d&&"disabled",g&&`edge${(0,f.A)(g)}`],input:["input"]};return(0,e.A)(h,n,b)})(N),P={slots:F,slotProps:{input:u,...G}},[Q,R]=(0,o.A)("root",{ref:b,elementType:q,className:O.root,shouldForwardComponentProp:!0,externalForwardedProps:{...P,component:"span",...H},getSlotProps:a=>({...a,onFocus:b=>{a.onFocus?.(b),z&&z(b),K&&K.onFocus&&K.onFocus(b)},onBlur:b=>{a.onBlur?.(b),x&&x(b),K&&K.onBlur&&K.onBlur(b)}}),ownerState:N,additionalProps:{centerRipple:!0,focusRipple:!l,disabled:L,role:void 0,tabIndex:null}}),[S,T]=(0,o.A)("input",{ref:v,elementType:r,className:O.input,externalForwardedProps:P,getSlotProps:a=>({onChange:b=>{a.onChange?.(b),(a=>{if(a.nativeEvent.defaultPrevented)return;let b=a.target.checked;J(b),y&&y(a,b)})(b)}}),ownerState:N,additionalProps:{autoFocus:c,checked:d,defaultChecked:h,disabled:L,id:M?t:void 0,name:w,readOnly:A,required:B,tabIndex:C,type:D,..."checkbox"===D&&void 0===E?{}:{value:E}}});return(0,p.jsxs)(Q,{...R,children:[(0,p.jsx)(S,{...T}),I?g:s]})})}};