flujo-ai 3.40.0 → 3.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (278) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +400 -384
  3. package/.next/app-path-routes-manifest.json +53 -53
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +33 -33
  6. package/.next/react-loadable-manifest.json +9 -9
  7. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/_not-found.html +1 -1
  9. package/.next/server/app/_not-found.rsc +3 -3
  10. package/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
  11. package/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
  12. package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
  15. package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
  17. package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
  18. package/.next/server/app/api/flow/[id]/convert-process-to-subflow/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
  20. package/.next/server/app/api/flow/[id]/versions/[versionId]/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/flow/[id]/versions/route_client-reference-manifest.js +1 -1
  22. package/.next/server/app/api/flow/assist/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/flow/generator/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
  35. package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/mcp/app-sandbox/route_client-reference-manifest.js +1 -1
  37. package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/mcp/flujo/authoring/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/mcp/flujo/automation/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/mcp/flujo/flows/route_client-reference-manifest.js +1 -1
  41. package/.next/server/app/api/mcp/flujo/resources/read/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/mcp/flujo/resources/route_client-reference-manifest.js +1 -1
  43. package/.next/server/app/api/mcp/flujo/servers/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/mcp/flujo/state/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/mcp/flujo/tools/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/mcp/oauth-capability/route_client-reference-manifest.js +1 -1
  47. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
  52. package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
  54. package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
  56. package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
  62. package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
  66. package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/packages/build/route_client-reference-manifest.js +1 -1
  68. package/.next/server/app/api/packages/derive-secrets/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/packages/install/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/packages/install/status/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/packages/installed/route_client-reference-manifest.js +1 -1
  72. package/.next/server/app/api/packages/resolve/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/packages/scan-targets/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/packages/search/route_client-reference-manifest.js +1 -1
  75. package/.next/server/app/api/packages/uninstall/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
  78. package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
  81. package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/registry/auth/resend/route_client-reference-manifest.js +1 -1
  83. package/.next/server/app/api/registry/auth/reset/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/registry/auth/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/registry/feedback/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/registry/oauth/callback/route_client-reference-manifest.js +1 -1
  87. package/.next/server/app/api/registry/oauth/initiate/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/registry/packages/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/registry/publish/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/registry/settings/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/runs/active/route_client-reference-manifest.js +1 -1
  93. package/.next/server/app/api/setup/ai-cli/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/statistics/route_client-reference-manifest.js +1 -1
  95. package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/telemetry/daily-active/route.js +1 -1
  97. package/.next/server/app/api/telemetry/daily-active/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/automation/triggers/page.js +1 -1
  102. package/.next/server/app/automation/triggers/page.js.nft.json +1 -1
  103. package/.next/server/app/automation/triggers/page_client-reference-manifest.js +1 -1
  104. package/.next/server/app/automation/triggers.html +1 -1
  105. package/.next/server/app/automation/triggers.rsc +4 -4
  106. package/.next/server/app/automation/waves/page_client-reference-manifest.js +1 -1
  107. package/.next/server/app/automation/waves.html +1 -1
  108. package/.next/server/app/automation/waves.rsc +4 -4
  109. package/.next/server/app/chat/page.js +2 -2
  110. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  111. package/.next/server/app/chat.html +1 -1
  112. package/.next/server/app/chat.rsc +4 -4
  113. package/.next/server/app/docs/page.js +3 -3
  114. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  115. package/.next/server/app/docs.html +1 -1
  116. package/.next/server/app/docs.rsc +4 -4
  117. package/.next/server/app/executions/page.js +1 -1
  118. package/.next/server/app/executions/page.js.nft.json +1 -1
  119. package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
  120. package/.next/server/app/executions.html +1 -1
  121. package/.next/server/app/executions.rsc +4 -4
  122. package/.next/server/app/flows/page.js +5 -3
  123. package/.next/server/app/flows/page.js.nft.json +1 -1
  124. package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  125. package/.next/server/app/flows.html +1 -1
  126. package/.next/server/app/flows.rsc +4 -4
  127. package/.next/server/app/index.html +1 -1
  128. package/.next/server/app/index.rsc +4 -4
  129. package/.next/server/app/mcp/page.js +73 -44
  130. package/.next/server/app/mcp/page.js.nft.json +1 -1
  131. package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
  132. package/.next/server/app/mcp-flows/route.js +1 -1
  133. package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
  135. package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
  136. package/.next/server/app/mcp.html +1 -1
  137. package/.next/server/app/mcp.rsc +4 -4
  138. package/.next/server/app/models/page.js +7 -7
  139. package/.next/server/app/models/page_client-reference-manifest.js +1 -1
  140. package/.next/server/app/packages/page.js +1 -1
  141. package/.next/server/app/packages/page_client-reference-manifest.js +1 -1
  142. package/.next/server/app/packages.html +1 -1
  143. package/.next/server/app/packages.rsc +4 -4
  144. package/.next/server/app/page.js +2 -2
  145. package/.next/server/app/page_client-reference-manifest.js +1 -1
  146. package/.next/server/app/settings/page.js +2 -2
  147. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  148. package/.next/server/app/settings.html +1 -1
  149. package/.next/server/app/settings.rsc +4 -4
  150. package/.next/server/app/statistics/page.js +2 -2
  151. package/.next/server/app/statistics/page_client-reference-manifest.js +1 -1
  152. package/.next/server/app/statistics.html +1 -1
  153. package/.next/server/app/statistics.rsc +4 -4
  154. package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
  155. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
  157. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
  159. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
  160. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route_client-reference-manifest.js +1 -1
  162. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/[resourceId]/content/route_client-reference-manifest.js +1 -1
  163. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
  165. package/.next/server/app/v1/chat/conversations/[conversationId]/revert/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  167. package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
  168. package/.next/server/app/v1/chat/events/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
  170. package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
  171. package/.next/server/app/waves.html +1 -1
  172. package/.next/server/app/waves.rsc +4 -4
  173. package/.next/server/app-paths-manifest.json +53 -53
  174. package/.next/server/chunks/1227.js +1 -1
  175. package/.next/server/chunks/1403.js +2 -2
  176. package/.next/server/chunks/1539.js +1 -1
  177. package/.next/server/chunks/2069.js +1 -1
  178. package/.next/server/chunks/2372.js +1 -1
  179. package/.next/server/chunks/2828.js +2 -2
  180. package/.next/server/chunks/3422.js +1 -0
  181. package/.next/server/chunks/3945.js +3 -3
  182. package/.next/server/chunks/519.js +2 -2
  183. package/.next/server/chunks/5444.js +2 -2
  184. package/.next/server/chunks/5750.js +1 -1
  185. package/.next/server/chunks/5918.js +10 -10
  186. package/.next/server/chunks/6226.js +2 -2
  187. package/.next/server/chunks/9088.js +2 -2
  188. package/.next/server/chunks/9490.js +5 -0
  189. package/.next/server/chunks/9543.js +3 -3
  190. package/.next/server/chunks/9624.js +8 -8
  191. package/.next/server/middleware-build-manifest.js +1 -1
  192. package/.next/server/middleware-manifest.json +1 -1
  193. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  194. package/.next/server/pages/404.html +1 -1
  195. package/.next/server/pages/500.html +1 -1
  196. package/.next/server/server-reference-manifest.js +1 -1
  197. package/.next/server/server-reference-manifest.json +1 -1
  198. package/.next/static/chunks/{1161-19176c3e7c655121.js → 1161-563a8028f59f00de.js} +1 -1
  199. package/.next/static/chunks/1521-9ad145dcb8e3abfc.js +1 -0
  200. package/.next/static/chunks/1576.06797b29a19fa26c.js +1 -0
  201. package/.next/static/chunks/{4386-e9621d3c94969a68.js → 2005-f9d38c39f10c321f.js} +1 -1
  202. package/.next/static/chunks/2493-da85c47ef972c066.js +1 -0
  203. package/.next/static/chunks/361.c88d43436e974006.js +1 -0
  204. package/.next/static/chunks/3731-c18f48522b159d7f.js +1 -0
  205. package/.next/static/chunks/3781.5086bce03aa281f7.js +1 -0
  206. package/.next/static/chunks/3969-15a32253b112652c.js +1 -0
  207. package/.next/static/chunks/4167.2ce97ca450815df1.js +1 -0
  208. package/.next/static/chunks/4814-52b7254ab573a455.js +1 -0
  209. package/.next/static/chunks/4965.d401547984d71b7a.js +1 -0
  210. package/.next/static/chunks/5148-9174ba300221fd1b.js +1 -0
  211. package/.next/static/chunks/5417-fb7d3760cc288ab1.js +1 -0
  212. package/.next/static/chunks/5967-34735763d1b03ccc.js +1 -0
  213. package/.next/static/chunks/7260-743e4b0cc4211dcb.js +1 -0
  214. package/.next/static/chunks/7711-7323dabe7dc02311.js +1 -0
  215. package/.next/static/chunks/8124-f99060fe1dfc119e.js +1 -0
  216. package/.next/static/chunks/8135-7fe07a34a8c49967.js +1 -0
  217. package/.next/static/chunks/8529.6187e01de8e9a692.js +1 -0
  218. package/.next/static/chunks/9136-e9ee57cc581ddd50.js +1 -0
  219. package/.next/static/chunks/9140.9180b569c4b26168.js +1 -0
  220. package/.next/static/chunks/9195-6a18a5867bb76c64.js +1 -0
  221. package/.next/static/chunks/app/automation/triggers/{page-594a6294c58344bf.js → page-34b9a8a2e6f28c2f.js} +1 -1
  222. package/.next/static/chunks/app/automation/waves/{page-ce2fef4996cad8e6.js → page-fd4929ea308183b2.js} +1 -1
  223. package/.next/static/chunks/app/chat/page-fb8a33db7628ecd0.js +1 -0
  224. package/.next/static/chunks/app/docs/page-3e21583b1cd5d7ca.js +1 -0
  225. package/.next/static/chunks/app/executions/{page-fcc848de86714386.js → page-56ecca56c17c05d7.js} +1 -1
  226. package/.next/static/chunks/app/flows/page-8c1a656197b15894.js +1 -0
  227. package/.next/static/chunks/app/layout-6e2756704ddc9f39.js +1 -0
  228. package/.next/static/chunks/app/mcp/page-4c4390354fdd94c8.js +1 -0
  229. package/.next/static/chunks/app/models/error-ea477f0ad52f4dcb.js +1 -0
  230. package/.next/static/chunks/app/models/page-e237ac64a0f62c3d.js +1 -0
  231. package/.next/static/chunks/app/packages/page-8680e4bea6b7ea45.js +1 -0
  232. package/.next/static/chunks/app/page-6dca06b6b7667181.js +1 -0
  233. package/.next/static/chunks/app/settings/page-a5f7fedcbf9e3a7f.js +1 -0
  234. package/.next/static/chunks/app/statistics/page-f9f9627d1c1ff963.js +1 -0
  235. package/.next/static/chunks/app/waves/{page-5b53af3eb9409414.js → page-7529febc48eb473d.js} +1 -1
  236. package/.next/static/chunks/{webpack-9fbd3587b9ef4dca.js → webpack-f3df493faa0bd612.js} +1 -1
  237. package/.next/static/css/{400b1b927c3ffaf6.css → 9f9b7f1374ac2d01.css} +1 -1
  238. package/.next/trace +11 -11
  239. package/README.md +1 -1
  240. package/mcp-servers/bash/package.json +1 -1
  241. package/mcp-servers/browser/package.json +1 -1
  242. package/mcp-servers/filesystem/package.json +1 -1
  243. package/mcp-servers/flujo/package.json +1 -1
  244. package/package.json +5 -5
  245. package/.next/server/chunks/7508.js +0 -5
  246. package/.next/server/chunks/8598.js +0 -1
  247. package/.next/static/chunks/1521-1c98c9a56726e053.js +0 -1
  248. package/.next/static/chunks/1576.bc6ae6c9e6d939d8.js +0 -1
  249. package/.next/static/chunks/2005.300528b5119c2d38.js +0 -1
  250. package/.next/static/chunks/2499-92cd97ce4993999f.js +0 -1
  251. package/.next/static/chunks/361.51d642c530c84295.js +0 -1
  252. package/.next/static/chunks/3731-64070760ae44448f.js +0 -1
  253. package/.next/static/chunks/4814-31eb5f3b10c651c1.js +0 -1
  254. package/.next/static/chunks/4965.39e24b54c3c6ca58.js +0 -1
  255. package/.next/static/chunks/5967-59fde8c214c9ca9f.js +0 -1
  256. package/.next/static/chunks/6417.70056fe81ca21682.js +0 -1
  257. package/.next/static/chunks/7711-4b017720ec49c96d.js +0 -1
  258. package/.next/static/chunks/8124-94140ee1dd8ed87c.js +0 -1
  259. package/.next/static/chunks/8135-5b975b9014f8920b.js +0 -1
  260. package/.next/static/chunks/8529.b5a43e728bb5bb8a.js +0 -1
  261. package/.next/static/chunks/9001-4c27a608feddb878.js +0 -1
  262. package/.next/static/chunks/9136-9c415453ec02519c.js +0 -1
  263. package/.next/static/chunks/9140.6502327a2c098d33.js +0 -1
  264. package/.next/static/chunks/9195-3c9c4300e7505d9e.js +0 -1
  265. package/.next/static/chunks/9524-b9d2c7e4426edd07.js +0 -1
  266. package/.next/static/chunks/app/chat/page-203cb7bf21638ada.js +0 -1
  267. package/.next/static/chunks/app/docs/page-c466a58caf5e3336.js +0 -1
  268. package/.next/static/chunks/app/flows/page-172c759ca81ba02f.js +0 -1
  269. package/.next/static/chunks/app/layout-a6ca531683a518a7.js +0 -1
  270. package/.next/static/chunks/app/mcp/page-0a96e6b30e45b1e6.js +0 -1
  271. package/.next/static/chunks/app/models/error-1964203c5c6e7d0e.js +0 -1
  272. package/.next/static/chunks/app/models/page-ad1cbea6d3324966.js +0 -1
  273. package/.next/static/chunks/app/packages/page-dda48425be9fc137.js +0 -1
  274. package/.next/static/chunks/app/page-04189aa1b1318c2d.js +0 -1
  275. package/.next/static/chunks/app/settings/page-906c229c87011ead.js +0 -1
  276. package/.next/static/chunks/app/statistics/page-9b13a95549f438c0.js +0 -1
  277. /package/.next/static/{b1aMk0634gkkiunttd1SQ → utOrEUSzguWncIosxgCeR}/_buildManifest.js +0 -0
  278. /package/.next/static/{b1aMk0634gkkiunttd1SQ → utOrEUSzguWncIosxgCeR}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8124],{14368:(e,t,l)=>{l.d(t,{A:()=>d});var n=l(95155);l(12115);var a=l(94049),o=l(9562),r=l(25635),s=l(22003),i=l(84765);let d=e=>{let{config:t,onChange:l}=e;return(0,n.jsxs)(a.default,{sx:{mt:1},children:[(0,n.jsx)(o.A,{fullWidth:!0,label:"URL to watch",value:t.url,onChange:e=>l({...t,url:e.target.value}),placeholder:"https://example.com/status or an API/feed URL",margin:"normal",type:"url"}),(0,n.jsx)(r.A,{variant:"subtitle2",sx:{mt:1},children:"How often to check"}),(0,n.jsx)(i.A,{verb:"Check",cron:t.cron,timezone:t.timezone,onChange:e=>{let{cron:n,timezone:a}=e;return l({...t,cron:n,timezone:a})}}),(0,n.jsx)(s.A,{severity:"info",sx:{mt:1},children:"The first check only takes a snapshot; the flow runs when a later check finds different content, and the fetched content is handed to the flow. Pages that embed ever-changing bits (timestamps, session tokens) look “changed” on every check — plain APIs, feeds, and raw files work best."})]})}},21997:(e,t,l)=>{l.d(t,{A:()=>b});var n=l(95155),a=l(12115),o=l(94049),r=l(9562),s=l(56422),i=l(78470),d=l(41983),c=l(25635),u=l(17325),h=l(99944),m=l(22822),x=l(22003),f=l(98267),p=l(20537),g=l(37960),v=l(63186),w=l(80007),y=l(62640);let A=[{value:"add",label:"A file appears"},{value:"change",label:"A file changes"},{value:"unlink",label:"A file is deleted"}],b=e=>{var t;let{config:l,onChange:b}=e,[j,k]=(0,a.useState)(!1);return(0,n.jsxs)(o.default,{sx:{mt:1},children:[(0,n.jsx)(r.A,{fullWidth:!0,label:"Folder (or file) to watch",value:l.path,onChange:e=>b({...l,path:e.target.value}),placeholder:"e.g. C:\\Users\\me\\Documents\\inbox",margin:"normal",InputProps:{endAdornment:(0,n.jsx)(s.A,{position:"end",children:(0,n.jsx)(i.A,{title:"Browse folders (on the FLUJO machine)",children:(0,n.jsx)(d.A,{edge:"end",onClick:()=>k(!0),children:(0,n.jsx)(w.A,{})})})})}}),(0,n.jsx)(y.A,{open:j,title:"Choose what to watch",selectFiles:!0,initialPath:l.path||void 0,onClose:()=>k(!1),onSelect:e=>b({...l,path:e})}),(0,n.jsx)(r.A,{fullWidth:!0,label:"Only files matching (optional)",value:l.glob||"",onChange:e=>b({...l,glob:e.target.value||void 0}),placeholder:"e.g. *.pdf or reports/**/*.csv",helperText:"Simple patterns: * matches within a folder, ** across folders, ? one character.",margin:"normal"}),(0,n.jsx)(c.A,{variant:"subtitle2",sx:{mt:1},children:"Run when…"}),(0,n.jsx)(u.A,{row:!0,children:A.map(e=>(0,n.jsx)(h.A,{control:(0,n.jsx)(m.A,{checked:l.events.includes(e.value),onChange:t=>((e,t)=>{let n=t?[...l.events,e]:l.events.filter(t=>t!==e);b({...l,events:n})})(e.value,t.target.checked)}),label:e.label},e.value))}),(0,n.jsx)(x.A,{severity:"info",sx:{mt:1},children:"Bursts are batched: many files changing at once produce one run with all changes listed. If this flow writes into the watched folder, it will trigger itself in a loop — point its output somewhere else."}),(0,n.jsxs)(f.A,{disableGutters:!0,elevation:0,sx:{mt:1,"&:before":{display:"none"}},children:[(0,n.jsx)(p.A,{expandIcon:(0,n.jsx)(v.A,{}),sx:{px:0},children:(0,n.jsx)(c.A,{variant:"body2",color:"text.secondary",children:"Advanced"})}),(0,n.jsx)(g.A,{sx:{px:0},children:(0,n.jsx)(r.A,{label:"Quiet window (ms)",type:"number",value:null!=(t=l.debounceMs)?t:2e3,onChange:e=>b({...l,debounceMs:Math.max(0,Number(e.target.value)||0)}),helperText:"How long to wait after the last change before running.",inputProps:{min:0,step:500},sx:{width:220}})})]})]})}},23143:(e,t,l)=>{l.d(t,{A:()=>s});var n=l(95155);l(12115);var a=l(94049),o=l(25635),r=l(36741);let s=e=>{let{selected:t,icon:l,title:s,description:i,onClick:d}=e;return(0,n.jsxs)(a.default,{role:"radio","aria-checked":t,tabIndex:0,onClick:d,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),d())},sx:{flex:1,minWidth:200,position:"relative",p:2,borderRadius:2,border:2,borderColor:t?"primary.main":"divider",bgcolor:t?"action.selected":"background.paper",cursor:"pointer",transition:"border-color 120ms, background-color 120ms","&:hover":{borderColor:t?"primary.main":"text.disabled"},outline:"none","&:focus-visible":{boxShadow:e=>"0 0 0 3px ".concat(e.palette.primary.light)}},children:[t&&(0,n.jsx)(r.A,{color:"primary",fontSize:"small",sx:{position:"absolute",top:8,right:8}}),(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:.5,color:t?"primary.main":"text.secondary"},children:[l,(0,n.jsx)(o.A,{variant:"subtitle1",sx:{fontWeight:600,color:"text.primary"},children:s})]}),(0,n.jsx)(o.A,{variant:"body2",color:"text.secondary",children:i})]})}},23833:(e,t,l)=>{l.d(t,{A:()=>A});var n=l(95155),a=l(12115),o=l(94049),r=l(25635),s=l(52641),i=l(95436),d=l(55606),c=l(86973),u=l(98286),h=l(9562),m=l(17325),x=l(99944),f=l(22822),p=l(21067),g=l(22003),v=l(93632);function w(e){if(!e||!Array.isArray(e.nodes))return[];let t=[];for(let a of e.nodes){var l,n;if((null==a||null==(l=a.data)?void 0:l.type)!=="signal")continue;let e=null==(n=a.data.properties)?void 0:n.topic;"string"==typeof e&&e.trim()&&t.push(e.trim())}return t}let y=(0,l(73288).h)("frontend/components/PlannedExecutions/FlowEventPanel"),A=e=>{var t,l,A,b,j,k,C,S,I,N,M,T,P,W,E,O,R,F;let{config:z,onChange:D,flows:L,currentExecutionId:U}=e,[J,H]=(0,a.useState)([]),[G,$]=(0,a.useState)(void 0!==z.maxChainDepth||void 0!==z.minIntervalMs),_=(null==(t=z.source)?void 0:t.topic)!==void 0?"topic":(null==(l=z.source)?void 0:l.executionId)!==void 0?"execution":"flow",q="topic"===_,B=(0,a.useMemo)(()=>(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10,l=new Map;for(let t of e)t&&"string"==typeof t.id&&l.set(t.id,t);let n=new Map,a=(e,t)=>{n.has(e)||n.set(e,[]),n.get(e).push(t)};for(let n of e){if(!n||"string"!=typeof n.id)continue;let e=new Map;for(let t of w(n)){var o;e.set(t,(null!=(o=e.get(t))?o:0)+1)}for(let[t,l]of e)a(t,{flowId:n.id,flowName:n.name,signalNodeCount:l,viaSubflow:!1});for(let o of function(e,t){let l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,n=new Set,a=new Set,o=(e,r)=>{if(a.has(e)||r>l)return;a.add(e);let s=t.get(e);for(let e of w(s))n.add(e);for(let e of function(e){if(!e||!Array.isArray(e.nodes))return[];let t=[];for(let a of e.nodes){var l,n;if((null==a||null==(l=a.data)?void 0:l.type)!=="subflow")continue;let e=null!=(n=a.data.properties)?n:{};if("string"==typeof e.subflowId&&e.subflowId.trim()&&t.push(e.subflowId.trim()),Array.isArray(e.parallelSubflowIds))for(let l of e.parallelSubflowIds)"string"==typeof l&&l.trim()&&t.push(l.trim())}return Array.from(new Set(t))}(s))o(e,r+1)};return o(e,0),n}(n.id,l,t))e.has(o)||a(o,{flowId:n.id,flowName:n.name,signalNodeCount:0,viaSubflow:!0})}return n})(L),[L]),K=(0,a.useMemo)(()=>{let e=new Map;for(let t of L)(null==t?void 0:t.id)&&e.set(t.id,t.name);return e},[L]),Q=(0,a.useMemo)(()=>{let e=new Map;for(let n of J){var t,l;let a=n.execution;if(a.id===U||(null==(t=a.trigger)?void 0:t.type)!=="flow-event")continue;let o=null==(l=a.trigger.source)?void 0:l.topic;if("string"!=typeof o||!o.trim())continue;let r=o.trim();e.has(r)||e.set(r,[]),e.get(r).push({executionId:a.id,executionName:a.name,flowId:a.flowId,flowName:K.get(a.flowId)})}return e},[J,U,K]),V=(0,a.useMemo)(()=>Array.from(new Set([...B.keys(),...Q.keys()])).sort((e,t)=>e.localeCompare(t)),[B,Q]),X=e=>{let t=B.get(e);if(!t||0===t.length)return null;let l=Array.from(new Set(t.map(e=>(e.flowName||e.flowId)+(e.viaSubflow?" (via subflow)":""))));return"Emitted in: ".concat(l.join(", "))},Y=(null!=(I=null==(A=z.source)?void 0:A.topic)?I:"").trim(),Z=!Y||B.has(Y);(0,a.useEffect)(()=>{let e=!1;return v.P.list().then(t=>{e||H(t.executions||[])}).catch(t=>{y.warn("Failed to load planned executions for source picker",t),e||H([])}),()=>{e=!0}},[]);let ee=(e,t)=>{var l;let n=new Set(null!=(l=z.on)?l:[]);t?n.add(e):n.delete(e),D({...z,on:Array.from(n)})};return(0,n.jsxs)(o.default,{sx:{mt:1},children:[(0,n.jsx)(r.A,{variant:"subtitle2",sx:{mt:1},children:"React to"}),(0,n.jsxs)(o.default,{sx:{display:"flex",gap:2,mt:1},children:[(0,n.jsxs)(s.A,{sx:{minWidth:180},children:[(0,n.jsx)(i.A,{id:"flow-event-source-kind",children:"Source"}),(0,n.jsxs)(d.A,{labelId:"flow-event-source-kind",label:"Source",value:_,onChange:e=>(e=>{D({...z,source:"flow"===e?{flowId:""}:"execution"===e?{executionId:""}:{topic:""}})})(e.target.value),children:[(0,n.jsx)(c.A,{value:"flow",children:"A flow (any run)"}),(0,n.jsx)(c.A,{value:"execution",children:"A planned execution"}),(0,n.jsx)(c.A,{value:"topic",children:"A signal topic"})]})]}),"topic"===_?(0,n.jsx)(s.A,{fullWidth:!0,children:(0,n.jsx)(u.A,{freeSolo:!0,autoHighlight:!0,options:V,value:null!=(N=null==(b=z.source)?void 0:b.topic)?N:"",inputValue:null!=(M=null==(j=z.source)?void 0:j.topic)?M:"",onInputChange:(e,t)=>D({...z,source:{topic:t}}),renderOption:(e,t)=>{let l=X(t),s=(e=>{let t=Q.get(e);if(!t||0===t.length)return null;let l=Array.from(new Set(t.map(e=>e.flowName||e.flowId)));return"Used by ".concat(t.length," trigger").concat(1===t.length?"":"s"," → starts ").concat(l.join(", "))})(t);return(0,a.createElement)(o.default,{component:"li",...e,key:t},(0,n.jsxs)(o.default,{sx:{display:"flex",flexDirection:"column",py:.25},children:[(0,n.jsx)(r.A,{variant:"body2",sx:{fontWeight:600},children:t}),l&&(0,n.jsx)(r.A,{variant:"caption",color:"text.secondary",children:l}),s&&(0,n.jsx)(r.A,{variant:"caption",color:"text.secondary",children:s}),!l&&(0,n.jsx)(r.A,{variant:"caption",color:"warning.main",children:"No flow currently emits this signal"})]}))},renderInput:e=>{var t;return(0,n.jsx)(h.A,{...e,label:"Signal topic",placeholder:"e.g. review-blocked",helperText:Y?Z?null!=(t=X(Y))?t:"React when this signal is emitted.":"No flow currently emits this signal — the trigger will stay idle until one does.":"React when a signal node in any flow emits this topic. Suggestions come from your existing flows."})}})}):"flow"===_?(0,n.jsxs)(s.A,{fullWidth:!0,children:[(0,n.jsx)(i.A,{id:"flow-event-flow",children:"Flow to watch"}),(0,n.jsxs)(d.A,{labelId:"flow-event-flow",label:"Flow to watch",value:null!=(T=null==(k=z.source)?void 0:k.flowId)?T:"",onChange:e=>D({...z,source:{flowId:e.target.value}}),displayEmpty:!0,children:[0===L.length&&(0,n.jsx)(c.A,{value:"",disabled:!0,children:"No flows available"}),L.map(e=>(0,n.jsx)(c.A,{value:e.id,children:e.name},e.id))]})]}):(0,n.jsxs)(s.A,{fullWidth:!0,children:[(0,n.jsx)(i.A,{id:"flow-event-execution",children:"Planned execution to watch"}),(0,n.jsxs)(d.A,{labelId:"flow-event-execution",label:"Planned execution to watch",value:null!=(P=null==(C=z.source)?void 0:C.executionId)?P:"",onChange:e=>D({...z,source:{executionId:e.target.value}}),displayEmpty:!0,children:[0===J.filter(e=>e.execution.id!==U).length&&(0,n.jsx)(c.A,{value:"",disabled:!0,children:"No other planned executions"}),J.filter(e=>e.execution.id!==U).map(e=>(0,n.jsx)(c.A,{value:e.execution.id,children:e.execution.name},e.execution.id))]})]})]}),!q&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(r.A,{variant:"subtitle2",sx:{mt:2},children:"When it…"}),(0,n.jsxs)(m.A,{row:!0,children:[(0,n.jsx)(x.A,{control:(0,n.jsx)(f.A,{checked:(null!=(W=z.on)?W:[]).includes("completed"),onChange:e=>ee("completed",e.target.checked)}),label:"completes"}),(0,n.jsx)(x.A,{control:(0,n.jsx)(f.A,{checked:(null!=(E=z.on)?E:[]).includes("error"),onChange:e=>ee("error",e.target.checked)}),label:"errors"})]})]}),(0,n.jsx)(h.A,{fullWidth:!0,label:q?"Only when the payload contains (optional)":"Only when the output contains (optional)",value:null!=(O=null==(S=z.outputMatch)?void 0:S.contains)?O:"",onChange:e=>{let t=e.target.value,l={...z.outputMatch,contains:t||void 0},n=l.contains||l.regex?l:void 0;D({...z,outputMatch:n})},margin:"normal",placeholder:"e.g. FAILED, or leave empty to react to every matching run"}),(0,n.jsx)(x.A,{sx:{mt:1},control:(0,n.jsx)(f.A,{checked:G,onChange:e=>$(e.target.checked)}),label:"Advanced (loop safety)"}),G&&(0,n.jsxs)(o.default,{sx:{display:"flex",gap:2,mt:1},children:[(0,n.jsx)(h.A,{label:"Max chain depth",type:"number",value:null!=(R=z.maxChainDepth)?R:"",onChange:e=>D({...z,maxChainDepth:""===e.target.value?void 0:Number(e.target.value)}),helperText:"Stop after this many hops (default 100)",inputProps:{min:1}}),(0,n.jsx)(h.A,{label:"Cooldown (ms)",type:"number",value:null!=(F=z.minIntervalMs)?F:"",onChange:e=>D({...z,minIntervalMs:""===e.target.value?void 0:Number(e.target.value)}),helperText:"Minimum gap between fires",inputProps:{min:0}})]}),(0,n.jsx)(p.A,{sx:{mt:2}}),(0,n.jsx)(g.A,{severity:"info",sx:{mt:2},children:q?"The signal’s payload is handed to this flow. Emit a signal from a signal node in any flow to fire this one — fire-and-forget. To avoid runaway loops, a chain of fires stops at the max depth above, and the overlap-skip prevents a single execution from re-triggering itself while it’s still running.":"The upstream run’s output is handed to this flow, so it can build on what the other flow produced. To avoid runaway loops, a chain of flow-event fires stops at the max depth above, and the existing overlap-skip prevents a single execution from re-triggering itself while it’s still running."})]})}},43673:(e,t,l)=>{l.d(t,{A:()=>p});var n=l(95155),a=l(12115),o=l(94049),r=l(22003),s=l(9562),i=l(78470),d=l(41983),c=l(91871),u=l(25635),h=l(99944),m=l(22822),x=l(52277),f=l(9693);let p=e=>{let{config:t,onChange:l,executionId:p,saved:g}=e,[v,w]=(0,a.useState)(null),y=window.location.origin,A="".concat(y,"/api/webhooks/").concat(p),b=async(e,t)=>{try{await navigator.clipboard.writeText(t),w(e),setTimeout(()=>w(null),1500)}catch(e){}};return(0,n.jsxs)(o.default,{sx:{mt:1},children:[!g&&(0,n.jsx)(r.A,{severity:"info",sx:{mb:2},children:"This URL and token are ready to copy now — they become active when you save."}),(0,n.jsxs)(o.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,n.jsx)(s.A,{fullWidth:!0,label:"Webhook URL",value:A,InputProps:{readOnly:!0},size:"small"}),(0,n.jsx)(i.A,{title:"Copy URL",children:(0,n.jsx)(d.A,{onClick:()=>b("url",A),children:"url"===v?(0,n.jsx)(f.A,{color:"success"}):(0,n.jsx)(x.A,{})})})]}),(0,n.jsxs)(o.default,{sx:{display:"flex",alignItems:"center",gap:1,mt:2},children:[(0,n.jsx)(s.A,{fullWidth:!0,label:"Secret token",value:t.token,InputProps:{readOnly:!0},size:"small",type:"password"}),(0,n.jsx)(i.A,{title:"Copy token",children:(0,n.jsx)(d.A,{onClick:()=>b("token",t.token),disabled:!t.token,children:"token"===v?(0,n.jsx)(f.A,{color:"success"}):(0,n.jsx)(x.A,{})})}),(0,n.jsx)(c.A,{size:"small",onClick:()=>l({...t,token:crypto.randomUUID()}),sx:{whiteSpace:"nowrap"},children:"New token"})]}),(0,n.jsx)(u.A,{variant:"caption",color:"text.secondary",children:g?"A new token takes effect when you save — callers using the old one are cut off.":""}),(0,n.jsxs)(u.A,{variant:"body2",color:"text.secondary",sx:{mt:1.5},children:["Callers send a POST with the token in the ",(0,n.jsx)("code",{children:"X-Flujo-Token"})," ","header (or ",(0,n.jsx)("code",{children:"?token=…"}),"). The request body becomes part of the flow's input — treat it as untrusted data in your prompt."]}),(0,n.jsx)(h.A,{sx:{mt:1,display:"flex"},control:(0,n.jsx)(m.A,{checked:!0===t.allowExternal,onChange:e=>l({...t,allowExternal:e.target.checked})}),label:"Allow calls from other machines (default: this computer only)"}),t.allowExternal&&(0,n.jsx)(r.A,{severity:"warning",children:"FLUJO assumes a single user on this machine. If you expose it beyond localhost (port forwarding, tunnels), securing that access is your responsibility — anyone with the URL and token can run this flow."})]})}},80811:(e,t,l)=>{l.d(t,{A:()=>N});var n=l(95155),a=l(12115),o=l(94049),r=l(25635),s=l(91871),i=l(52641),d=l(95436),c=l(55606),u=l(86973),h=l(9562),m=l(4474),x=l(22003),f=l(41356),p=l(24610),g=l(17897),v=l(43076),w=l(90057),y=l(73288),A=l(23143),b=l(84765),j=l(17427),k=l(96362),C=l(95906),S=l(68503);let I=(0,y.h)("frontend/components/PlannedExecutions/WatchToolPanel"),N=e=>{var t,l;let{config:y,onChange:N}=e,[M,T]=(0,a.useState)([]),[P,W]=(0,a.useState)(!1),[E,O]=(0,a.useState)([]),[R,F]=(0,a.useState)(!1),[z,D]=(0,a.useState)(Object.keys(y.args||{}).length>0?JSON.stringify(y.args,null,2):""),[L,U]=(0,a.useState)(null),[J,H]=(0,a.useState)(!1),[G,$]=(0,a.useState)(null),[_,q]=(0,a.useState)(null),[B,K]=(0,a.useState)([]),[Q,V]=(0,a.useState)([]);(0,a.useEffect)(()=>{let e=!1;return g.S.loadServerConfigs().then(t=>{e||(Array.isArray(t)?T(t.filter(e=>!e.disabled)):(I.warn("Failed to load MCP servers for watch-tool panel",t),T([])))}),()=>{e=!0}},[]),(0,a.useEffect)(()=>{if(!y.serverName)return void O([]);let e=!1;return F(!0),g.S.listServerTools(y.serverName).then(t=>{let{tools:l}=t;e||O(l||[])}).finally(()=>{e||F(!1)}),()=>{e=!0}},[y.serverName]),(0,a.useEffect)(()=>{let e=!1;return v.N.loadModels().then(t=>{e||K(Array.isArray(t)?t:[])}).catch(()=>{e||K([])}),w.g.loadFlows().then(t=>{e||V(t||[])}).catch(()=>{e||V([])}),()=>{e=!0}},[]);let X=async()=>{H(!0),$(null),q(null);try{let l=await g.S.callTool(y.serverName,y.toolName,y.args||{});if(null==l?void 0:l.error)q("string"==typeof l.error?l.error:"Tool call failed");else{var e,t;let n=null!=(e=null==l?void 0:l.data)?e:l,a=null!=(t=JSON.stringify(n,null,2))?t:"";$(a.length>6e3?"".concat(a.slice(0,6e3),"\n… (truncated)"):a)}}catch(e){q(e instanceof Error?e.message:"Tool call failed")}finally{H(!1)}},Y=y.evaluate,Z=E.find(e=>e.name===y.toolName),ee=(0,S.E)("mcp",M),et=e=>({key:e.name,content:(e=>(0,n.jsx)(C.A,{name:e.name,status:e.status||"disconnected",path:e.rootPath||"",enabled:!e.disabled,transport:e.transport||"stdio",pickerMode:!0,selected:y.serverName===e.name,onClick:()=>{var t;return t=e.name,void(N({...y,serverName:t,toolName:""}),W(!1))}}))(e)}),el=ee.items.map(et),en=ee.groups?ee.groups.map(e=>({...e,items:e.items.map(et)})):null;return(0,n.jsxs)(o.default,{sx:{mt:1},children:[(0,n.jsxs)(o.default,{sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,n.jsxs)(o.default,{sx:{minWidth:220,flex:1,mt:2,mb:1},children:[(0,n.jsx)(r.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:.5},children:"Server"}),(0,n.jsx)(s.A,{variant:"outlined",fullWidth:!0,onClick:()=>W(!0),sx:{justifyContent:"flex-start",textTransform:"none"},children:y.serverName?"".concat(y.serverName," — change"):"Choose an MCP server…"}),(0,n.jsx)(k.A,{open:P,onClose:()=>W(!1),title:"Choose an MCP server",description:"Pick the server whose tool you want to watch.",emptyMessage:"No MCP servers configured.",searchable:!0,searchPlaceholder:"Search servers…",searchTerm:ee.searchTerm,onSearchChange:ee.setSearchTerm,columns:{xs:12,sm:6},items:el,groups:en,collapsedKeys:ee.collapsedKeys,onToggleGroup:ee.toggleGroup})]}),(0,n.jsxs)(i.A,{sx:{minWidth:220,flex:1},margin:"normal",disabled:!y.serverName,children:[(0,n.jsx)(d.A,{id:"watch-tool-label",children:"Tool"}),(0,n.jsxs)(c.A,{labelId:"watch-tool-label",label:"Tool",value:E.some(e=>e.name===y.toolName)?y.toolName:"",onChange:e=>N({...y,toolName:e.target.value,args:{}}),children:[0===E.length&&(0,n.jsx)(u.A,{value:"",disabled:!0,children:R?"Loading tools…":"Pick a server first"}),E.map(e=>(0,n.jsx)(u.A,{value:e.name,children:e.name},e.name))]})]})]}),(0,n.jsx)(r.A,{variant:"subtitle2",sx:{mt:1},children:"How often to check"}),(0,n.jsx)(b.A,{verb:"Check",cron:null!=(t=y.cron)?t:function(e){let t=Math.max(5,Math.round((null!=e?e:6e4)/1e3));if(t<60)return"*/".concat(t," * * * * *");let l=Math.max(1,Math.round(t/60));if(l<60)return"*/".concat(l," * * * *");let n=Math.max(1,Math.min(23,Math.round(l/60)));return"0 */".concat(n," * * *")}(y.intervalMs),timezone:y.timezone,onChange:e=>{let{cron:t,timezone:l}=e;return N({...y,cron:t,timezone:l})}}),Z?(0,n.jsxs)(o.default,{sx:{my:1.5},children:[(0,n.jsx)(r.A,{variant:"subtitle2",sx:{mb:1.5},children:"Tool parameters — sent on every check"}),(0,n.jsx)(j.A,{schema:Z.inputSchema,values:y.args||{},onChange:e=>N({...y,args:e})})]}):(0,n.jsx)(h.A,{fullWidth:!0,label:"Tool arguments (JSON, optional)",value:z,onChange:e=>(e=>{if(D(e),!e.trim()){U(null),N({...y,args:{}});return}try{let t=JSON.parse(e);if(null===t||"object"!=typeof t||Array.isArray(t))return void U('Arguments must be a JSON object, e.g. { "query": "…" }');U(null),N({...y,args:t})}catch(e){U("Not valid JSON yet")}})(e.target.value),margin:"normal",multiline:!0,minRows:2,placeholder:'{ "query": "is:unread" }',error:!!L,helperText:null!=L?L:"Sent to the tool on every check.",slotProps:{input:{sx:{fontFamily:"monospace",fontSize:14}}}}),(0,n.jsxs)(o.default,{sx:{display:"flex",alignItems:"center",gap:2,mb:1},children:[(0,n.jsx)(s.A,{variant:"outlined",size:"small",onClick:X,disabled:!y.serverName||!y.toolName||J||!!L,startIcon:J?(0,n.jsx)(m.default,{size:16}):void 0,children:"Test: call the tool now"}),(0,n.jsx)(r.A,{variant:"caption",color:"text.secondary",children:"See what the result looks like — useful for the settings below."})]}),_&&(0,n.jsx)(x.A,{severity:"error",sx:{mb:1},children:_}),G&&(0,n.jsx)(o.default,{component:"pre",sx:{maxHeight:240,overflow:"auto",bgcolor:"action.hover",borderRadius:1,p:1.5,fontSize:12,m:0,mb:1},children:G}),(0,n.jsx)(r.A,{variant:"subtitle2",sx:{mt:2,mb:1},children:"Run the flow when…"}),(0,n.jsxs)(o.default,{role:"radiogroup","aria-label":"Poll condition",sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,n.jsx)(A.A,{selected:"on-change"===Y.mode,onClick:()=>N({...y,evaluate:{mode:"on-change"}}),icon:(0,n.jsx)(f.A,{}),title:"The result changes",description:"Any difference from the last check runs the flow. Simplest — no setup."}),(0,n.jsx)(A.A,{selected:"llm-gate"===Y.mode||"flow-gate"===Y.mode,onClick:()=>{"llm-gate"!==Y.mode&&"flow-gate"!==Y.mode&&N({...y,evaluate:{mode:"llm-gate",condition:"",modelId:""}})},icon:(0,n.jsx)(p.A,{}),title:"AI decides",description:"Describe the condition in plain language; a model — or one of your flows — checks the result whenever it changes."})]}),("llm-gate"===Y.mode||"flow-gate"===Y.mode)&&(0,n.jsxs)(o.default,{sx:{mt:1},children:[(0,n.jsx)(h.A,{fullWidth:!0,label:"Run the flow if…",value:Y.condition,onChange:e=>N({...y,evaluate:{...Y,condition:e.target.value}}),multiline:!0,minRows:2,margin:"normal",placeholder:"e.g. any email mentions an invoice or a payment reminder"}),(0,n.jsxs)(o.default,{sx:{display:"flex",gap:2,flexWrap:"wrap",alignItems:"flex-start"},children:[(0,n.jsxs)(i.A,{sx:{minWidth:170},children:[(0,n.jsx)(d.A,{id:"gate-checker-label",children:"Checked by"}),(0,n.jsxs)(c.A,{labelId:"gate-checker-label",label:"Checked by",value:Y.mode,onChange:e=>{let t=e.target.value;if(t===Y.mode)return;let l={condition:Y.condition,maxCallsPerDay:Y.maxCallsPerDay};N({...y,evaluate:"llm-gate"===t?{mode:t,...l,modelId:""}:{mode:t,...l,flowId:""}})},children:[(0,n.jsx)(u.A,{value:"llm-gate",children:"A model"}),(0,n.jsx)(u.A,{value:"flow-gate",children:"One of my flows"})]})]}),"llm-gate"===Y.mode&&(0,n.jsxs)(i.A,{sx:{minWidth:240,flex:1},children:[(0,n.jsx)(d.A,{id:"gate-model-label",children:"Model that checks"}),(0,n.jsxs)(c.A,{labelId:"gate-model-label",label:"Model that checks",value:B.some(e=>e.id===Y.modelId)?Y.modelId:"",onChange:e=>N({...y,evaluate:{...Y,modelId:e.target.value}}),children:[0===B.length&&(0,n.jsx)(u.A,{value:"",disabled:!0,children:"No models configured"}),B.map(e=>(0,n.jsx)(u.A,{value:e.id,children:e.displayName||e.name},e.id))]})]}),"flow-gate"===Y.mode&&(0,n.jsxs)(i.A,{sx:{minWidth:240,flex:1},children:[(0,n.jsx)(d.A,{id:"gate-flow-label",children:"Flow that checks"}),(0,n.jsxs)(c.A,{labelId:"gate-flow-label",label:"Flow that checks",value:Q.some(e=>e.id===Y.flowId)?Y.flowId:"",onChange:e=>N({...y,evaluate:{...Y,flowId:e.target.value}}),children:[0===Q.length&&(0,n.jsx)(u.A,{value:"",disabled:!0,children:"No flows available"}),Q.map(e=>(0,n.jsx)(u.A,{value:e.id,children:e.name},e.id))]})]}),(0,n.jsx)(h.A,{label:"Max checks per day",type:"number",value:null!=(l=Y.maxCallsPerDay)?l:500,onChange:e=>N({...y,evaluate:{...Y,maxCallsPerDay:Math.max(1,Number(e.target.value)||1)}}),inputProps:{min:1},helperText:"Cost guard per check.",sx:{width:180}})]}),(0,n.jsx)(r.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:.5},children:"flow-gate"===Y.mode?'The checker flow runs invisibly (never in the chat), gets the condition + tool result, and must answer with {"fire": true/false, "reason": "…"} — it can use its own tools to verify before deciding.':"The model is only asked when the result actually changed since the last check — an idle feed costs nothing. Pick a small, cheap model."})]}),(0,n.jsx)(x.A,{severity:"info",sx:{mt:2},children:"The first check only takes a snapshot — the flow runs from the second check onwards, when something actually changed. FLUJO must be running for checks to happen."})]})}},84765:(e,t,l)=>{l.d(t,{A:()=>A});var n=l(95155),a=l(12115),o=l(94049),r=l(52641),s=l(95436),i=l(55606),d=l(86973),c=l(9562),u=l(22003),h=l(25635),m=l(99944),x=l(22822),f=l(98267),p=l(20537),g=l(37960),v=l(63186),w=l(93632);let y=e=>String(e).padStart(2,"0"),A=e=>{let{cron:t,timezone:l,onChange:A,verb:b="Runs",catchUp:j,onCatchUpChange:k}=e,C=(0,a.useMemo)(()=>(function(e){let t=/^\*\/(\d+) \* \* \* \* \*$/.exec(e);return t?{mode:"seconds",n:Number(t[1]),time:"09:00"}:(t=/^\*\/(\d+) \* \* \* \*$/.exec(e))?{mode:"minutes",n:Number(t[1]),time:"09:00"}:(t=/^0 \*\/(\d+) \* \* \*$/.exec(e))?{mode:"hours",n:Number(t[1]),time:"09:00"}:(t=/^(\d+) (\d+) \* \* \*$/.exec(e))?{mode:"daily",n:1,time:"".concat(y(Number(t[2])),":").concat(y(Number(t[1])))}:(t=/^(\d+) (\d+) \* \* 1-5$/.exec(e))?{mode:"weekdays",n:1,time:"".concat(y(Number(t[2])),":").concat(y(Number(t[1])))}:{mode:"custom",n:15,time:"09:00"}})(t),[]),[S,I]=(0,a.useState)(C.mode),[N,M]=(0,a.useState)(C.n),[T,P]=(0,a.useState)(C.time),[W,E]=(0,a.useState)(t),[O,R]=(0,a.useState)(null),F=function(e,t,l,n){let[a,o]=l.split(":").map(Number);switch(e){case"seconds":return"*/".concat(Math.max(1,Math.min(59,Math.floor(t)||1))," * * * * *");case"minutes":return"*/".concat(Math.max(1,Math.min(59,Math.floor(t)||1))," * * * *");case"hours":return"0 */".concat(Math.max(1,Math.min(23,Math.floor(t)||1))," * * *");case"daily":return"".concat(o||0," ").concat(a||0," * * *");case"weekdays":return"".concat(o||0," ").concat(a||0," * * 1-5");default:return n}}(S,N,T,W);return(0,a.useEffect)(()=>{F!==t&&A({cron:F,timezone:l})},[F]),(0,a.useEffect)(()=>{let e=!1,t=setTimeout(()=>{w.P.previewSchedule(F,l).then(t=>{e||R(t)})},300);return()=>{e=!0,clearTimeout(t)}},[F,l]),(0,n.jsxs)(o.default,{children:[(0,n.jsxs)(o.default,{sx:{display:"flex",gap:2,flexWrap:"wrap",alignItems:"center",mt:1},children:[(0,n.jsxs)(r.A,{sx:{minWidth:180},children:[(0,n.jsx)(s.A,{id:"schedule-preset-label",children:b}),(0,n.jsxs)(i.A,{labelId:"schedule-preset-label",label:b,value:S,onChange:e=>I(e.target.value),children:[(0,n.jsx)(d.A,{value:"seconds",children:"Every N seconds"}),(0,n.jsx)(d.A,{value:"minutes",children:"Every N minutes"}),(0,n.jsx)(d.A,{value:"hours",children:"Every N hours"}),(0,n.jsx)(d.A,{value:"daily",children:"Daily at a time"}),(0,n.jsx)(d.A,{value:"weekdays",children:"Weekdays at a time"}),(0,n.jsx)(d.A,{value:"custom",children:"Custom (cron)"})]})]}),("seconds"===S||"minutes"===S||"hours"===S)&&(0,n.jsx)(c.A,{label:"seconds"===S?"Seconds":"minutes"===S?"Minutes":"Hours",type:"number",value:N,onChange:e=>M(Number(e.target.value)),inputProps:{min:1,max:"hours"===S?23:59},sx:{width:120}}),("daily"===S||"weekdays"===S)&&(0,n.jsx)(c.A,{label:"Time",type:"time",value:T,onChange:e=>P(e.target.value),sx:{width:150},InputLabelProps:{shrink:!0}}),"custom"===S&&(0,n.jsx)(c.A,{label:"Cron pattern",value:W,onChange:e=>E(e.target.value),sx:{minWidth:220},placeholder:"*/15 * * * *"})]}),O&&!O.valid&&(0,n.jsx)(u.A,{severity:"error",sx:{mt:2},children:O.error||"This schedule is not valid."}),O&&O.valid&&O.nextRuns.length>0&&(0,n.jsxs)(h.A,{variant:"body2",color:"text.secondary",sx:{mt:2},children:["Next: ",O.nextRuns.map(e=>new Date(e).toLocaleString()).join(" \xb7 ")]}),k&&(0,n.jsx)(m.A,{sx:{mt:1,display:"flex"},control:(0,n.jsx)(x.A,{checked:!0===j,onChange:e=>k(e.target.checked)}),label:"If FLUJO was closed when this trigger was scheduled, run it once on startup"}),(0,n.jsxs)(f.A,{disableGutters:!0,elevation:0,sx:{mt:1,"&:before":{display:"none"}},children:[(0,n.jsx)(p.A,{expandIcon:(0,n.jsx)(v.A,{}),sx:{px:0},children:(0,n.jsx)(h.A,{variant:"body2",color:"text.secondary",children:"Advanced"})}),(0,n.jsx)(g.A,{sx:{px:0},children:(0,n.jsxs)(o.default,{sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,n.jsx)(c.A,{label:"Timezone (optional)",value:l||"",onChange:e=>A({cron:F,timezone:e.target.value||void 0}),placeholder:"e.g. Europe/Berlin",helperText:"IANA timezone name. Empty = this computer's timezone.",sx:{minWidth:260}}),(0,n.jsx)(c.A,{label:"Generated cron pattern",value:F,InputProps:{readOnly:"custom"!==S},onChange:e=>{I("custom"),E(e.target.value)},helperText:"Editing switches to Custom mode.",sx:{minWidth:220}})]})})]})]})}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8135],{9352:(e,r,o)=>{o.d(r,{Ic:()=>n,kY:()=>d.k});var t=o(26796),a=o(73288),d=o(34432);let i=(0,a.h)("frontend/utils/theme");function n(){let{isDarkMode:e,visualStyle:r}=(0,t.useTheme)();return i.debug("useThemeUtils called with isDarkMode: ".concat(e)),{getThemeValue:(r,o)=>e?o:r,getThemeColor:o=>{let t=o.split("."),a=("legacy"===r?d.z:d.k)[e?"dark":"light"];for(let e of t)if(!a||"object"!=typeof a||!(e in a))return i.warn("Theme color path not found: ".concat(o)),"";else a=a[e];return a},colors:"legacy"===r?e?d.z.dark:d.z.light:e?d.k.dark:d.k.light,isDarkMode:e,visualStyle:r}}},26796:(e,r,o)=>{o.r(r),o.d(r,{ThemeProvider:()=>h,useTheme:()=>m});var t=o(95155),a=o(12115),d=o(73288),i=o(7160),n=o(29197),s=o(8532),c=o(9352),l=o(34432),g=o(84563),u=o(29692);let b=(0,d.h)("frontend/contexts/ThemeContext"),f=(0,a.createContext)(void 0);function p(e,r){let o=document.documentElement;o.classList.toggle("dark-theme","dark"===e),o.classList.toggle("modern-theme","modern"===r),o.classList.toggle("legacy-theme","legacy"===r),o.dataset.visualStyle=r,o.style.colorScheme=e}let h=e=>{let{children:r}=e,[o,d]=(0,a.useState)(!1),[h,m]=(0,a.useState)("modern");(0,a.useEffect)(()=>{(async()=>{b.debug("Loading theme preference from storage");let[e,r]=await Promise.all([(0,u.YM)(u.Zg.THEME,"light"),(0,u.YM)(u.Zg.THEME_STYLE,"modern")]);b.info("Theme loaded from storage: ".concat(e));let o="dark"===e?"dark":"light",t="legacy"===r?"legacy":"modern";d("dark"===o),m(t),p(o,t)})()},[]);let k=(0,a.useMemo)(()=>(function(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"modern";return"legacy"===r?function(e){let r="dark"===e?l.z.dark:l.z.light,o="dark"===e;return(0,n.A)({palette:{mode:e,primary:{main:o?"#4f93f5":"#007bff",light:o?"#6aa6f7":"#3395ff",dark:o?"#3a7ad4":"#0056b3"},secondary:{main:o?"#a3adba":"#6c757d"},error:{main:o?"#ff6b6b":"#dc2626",light:o?"#5a2a2e":"#fecaca",dark:o?"#2a1618":"#b91c1c"},warning:{main:o?"#e0a23c":"#f59e0b"},info:{main:o?"#56b6d6":"#3b82f6"},success:{main:o?"#3fae72":"#16a34a"},divider:r.border,background:{default:r.background,paper:r.surface},text:{primary:r.foreground,secondary:r.textSecondary,disabled:r.textDisabled}},typography:{fontFamily:"var(--font-geist-sans), Arial, sans-serif",h1:{fontWeight:700},h2:{fontWeight:700},h3:{fontWeight:600},h4:{fontWeight:600},h5:{fontWeight:600},h6:{fontWeight:600}},components:{MuiButton:{styleOverrides:{root:{textTransform:"none",borderRadius:"0.375rem"}}},MuiPaper:{styleOverrides:{root:{borderRadius:"0.5rem",backgroundImage:"none"}}},MuiTextField:{styleOverrides:{root:{"& .MuiOutlinedInput-root":{borderRadius:"0.375rem"}}}},MuiCard:{styleOverrides:{root:{borderRadius:"0.5rem",border:o?"1px solid ".concat(r.border):void 0,boxShadow:o?"0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -1px rgba(0, 0, 0, 0.3)":"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)"}}},MuiMenu:{styleOverrides:{paper:{backgroundColor:r.surfaceRaised,backgroundImage:"none"}}},MuiPopover:{styleOverrides:{paper:{backgroundColor:r.surfaceRaised,backgroundImage:"none"}}},MuiTooltip:{styleOverrides:{tooltip:o?{backgroundColor:r.surfaceRaised,border:"1px solid ".concat(r.border),color:r.foreground}:void 0}}}})}(e):function(e){let r="dark"===e?c.kY.dark:c.kY.light,o="dark"===e,t=o?"#8B7CFF":"#6355E8",a=o?"#ACA2FF":"#6C5CE2",d=o?"#6656E8":"#493BCB",i=o?"#31D2ED":"#129DB8",l=o?"rgba(13, 17, 31, 0.82)":"rgba(255, 255, 255, 0.84)",g=o?"0 18px 55px rgba(0, 0, 0, 0.30)":"0 18px 55px rgba(60, 54, 116, 0.11)",u=o?"0 26px 80px rgba(0, 0, 0, 0.48)":"0 26px 80px rgba(54, 48, 112, 0.18)";return(0,n.A)({palette:{mode:e,primary:{main:t,light:a,dark:d,contrastText:"#FFFFFF"},secondary:{main:i,light:o?"#79E3F4":"#3CBBD0",dark:o?"#10A8C3":"#0B758A"},error:{main:o?"#FF8298":"#C62847",light:r.error.background,dark:r.error.border},warning:{main:o?"#F6BC66":"#C67A13"},info:{main:i},success:{main:o?"#57D59B":"#15885A"},divider:r.border,background:{default:r.background,paper:r.surface},text:{primary:r.foreground,secondary:r.textSecondary,disabled:r.textDisabled}},shape:{borderRadius:14},typography:{fontFamily:"var(--font-geist-sans), Inter, ui-sans-serif, system-ui, -apple-system, sans-serif",fontSize:14,h1:{fontSize:"clamp(2.6rem, 6vw, 5.5rem)",fontWeight:780,lineHeight:.98,letterSpacing:"-0.055em"},h2:{fontSize:"clamp(2.1rem, 4vw, 3.9rem)",fontWeight:760,lineHeight:1.04,letterSpacing:"-0.045em"},h3:{fontSize:"clamp(1.75rem, 3vw, 2.65rem)",fontWeight:730,lineHeight:1.1,letterSpacing:"-0.035em"},h4:{fontSize:"clamp(1.45rem, 2vw, 2rem)",fontWeight:710,lineHeight:1.16,letterSpacing:"-0.028em"},h5:{fontSize:"1.35rem",fontWeight:700,lineHeight:1.24,letterSpacing:"-0.022em"},h6:{fontSize:"1.05rem",fontWeight:680,lineHeight:1.35,letterSpacing:"-0.012em"},subtitle1:{fontWeight:640},button:{fontWeight:680,letterSpacing:"-0.01em"},body1:{lineHeight:1.62},body2:{lineHeight:1.55},caption:{fontSize:"0.74rem",fontWeight:560,letterSpacing:"0.012em"}},transitions:{duration:{shortest:110,shorter:150,short:190,standard:240,complex:320,enteringScreen:260,leavingScreen:190}},components:{MuiCssBaseline:{styleOverrides:{body:{backgroundColor:r.background}}},MuiAppBar:{styleOverrides:{root:{color:r.foreground,backgroundColor:l,backgroundImage:"none",borderBottom:"1px solid ".concat((0,s.X4)(r.border,.82)),boxShadow:"none",backdropFilter:"blur(24px) saturate(150%)"}}},MuiToolbar:{styleOverrides:{root:{minHeight:"var(--app-bar-height)"}}},MuiButton:{defaultProps:{disableElevation:!0},styleOverrides:{root:{minHeight:40,paddingInline:16,borderRadius:12,textTransform:"none",transition:"transform 180ms ease, box-shadow 180ms ease, background-color 180ms ease, border-color 180ms ease","&:active":{transform:"translateY(1px) scale(0.99)"},"&:focus-visible":{outline:"3px solid ".concat((0,s.X4)(t,.28)),outlineOffset:2}},sizeLarge:{minHeight:48,paddingInline:22,borderRadius:14,fontSize:"0.95rem"},containedPrimary:{color:"#fff",backgroundColor:t,backgroundImage:"linear-gradient(135deg, ".concat(a," 0%, ").concat(t," 46%, ").concat(d," 100%)"),boxShadow:"0 10px 26px ".concat((0,s.X4)(t,o?.28:.22)),"&:hover":{backgroundImage:"linear-gradient(135deg, ".concat(a," 0%, ").concat(t," 38%, ").concat(d," 100%)"),boxShadow:"0 15px 34px ".concat((0,s.X4)(t,o?.38:.3)),transform:"translateY(-1px)"},"&.Mui-disabled":{backgroundImage:"none"}},outlinedPrimary:{borderColor:(0,s.X4)(t,.42),backgroundColor:(0,s.X4)(t,o?.08:.045),"&:hover":{borderColor:t,backgroundColor:(0,s.X4)(t,o?.15:.09),transform:"translateY(-1px)"}}}},MuiPaper:{styleOverrides:{root:{borderRadius:18,backgroundColor:r.surface,backgroundImage:"none"},outlined:{borderColor:r.border},elevation1:{border:"1px solid ".concat(r.border),boxShadow:g},elevation2:{border:"1px solid ".concat(r.border),boxShadow:u}}},MuiCard:{styleOverrides:{root:{overflow:"hidden",border:"1px solid ".concat(r.border),borderRadius:18,backgroundColor:r.surface,backgroundImage:o?"linear-gradient(150deg, rgba(255,255,255,0.028), transparent 42%)":"linear-gradient(150deg, rgba(102,87,245,0.025), transparent 42%)",boxShadow:g}}},MuiCardActionArea:{styleOverrides:{root:{borderRadius:"inherit","&:focus-visible":{outline:"3px solid ".concat((0,s.X4)(t,.3)),outlineOffset:-3}}}},MuiOutlinedInput:{styleOverrides:{root:{minHeight:42,borderRadius:12,backgroundColor:(0,s.X4)(r.surfaceRaised,o?.6:.74),transition:"box-shadow 180ms ease, background-color 180ms ease","& .MuiOutlinedInput-notchedOutline":{borderColor:r.border},"&:hover .MuiOutlinedInput-notchedOutline":{borderColor:(0,s.X4)(t,.52)},"&.Mui-focused":{backgroundColor:r.surfaceRaised,boxShadow:"0 0 0 4px ".concat((0,s.X4)(t,.12))},"&.Mui-focused .MuiOutlinedInput-notchedOutline":{borderWidth:1,borderColor:t}}}},MuiInputBase:{styleOverrides:{input:{"&::placeholder":{color:r.textSecondary,opacity:.78}}}},MuiInputLabel:{styleOverrides:{root:{color:r.textSecondary,fontWeight:560}}},MuiDialog:{styleOverrides:{paper:{border:"1px solid ".concat(r.border),borderRadius:24,backgroundColor:l,boxShadow:u,backdropFilter:"blur(30px) saturate(145%)"}}},MuiDialogTitle:{styleOverrides:{root:{padding:"24px 24px 10px",fontWeight:720,letterSpacing:"-0.025em"}}},MuiDrawer:{styleOverrides:{paper:{borderColor:r.border,backgroundColor:l,backgroundImage:"none",boxShadow:u,backdropFilter:"blur(28px) saturate(150%)"}}},MuiMenu:{styleOverrides:{paper:{marginTop:8,border:"1px solid ".concat(r.border),borderRadius:15,backgroundColor:r.surfaceRaised,backgroundImage:"none",boxShadow:u,backdropFilter:"blur(24px) saturate(140%)"},list:{padding:7}}},MuiMenuItem:{styleOverrides:{root:{minHeight:40,borderRadius:9,"&.Mui-selected":{backgroundColor:(0,s.X4)(t,.14),"&:hover":{backgroundColor:(0,s.X4)(t,.2)}}}}},MuiPopover:{styleOverrides:{paper:{border:"1px solid ".concat(r.border),backgroundColor:r.surfaceRaised,backgroundImage:"none",boxShadow:u,backdropFilter:"blur(24px) saturate(140%)"}}},MuiTooltip:{styleOverrides:{tooltip:{padding:"7px 10px",border:"1px solid ".concat(r.border),borderRadius:9,color:r.foreground,backgroundColor:r.surfaceRaised,boxShadow:g,fontSize:"0.72rem",fontWeight:600}}},MuiChip:{styleOverrides:{root:{height:30,borderRadius:9,fontWeight:650}}},MuiIconButton:{styleOverrides:{root:{borderRadius:11,transition:"transform 160ms ease, background-color 160ms ease, color 160ms ease","&:hover":{backgroundColor:(0,s.X4)(t,.1),transform:"translateY(-1px)"},"&:focus-visible":{outline:"3px solid ".concat((0,s.X4)(t,.28)),outlineOffset:2}}}},MuiTabs:{styleOverrides:{root:{minHeight:42},indicator:{height:3,borderRadius:"3px 3px 0 0",backgroundImage:"linear-gradient(90deg, ".concat(t,", ").concat(i,")")}}},MuiTab:{styleOverrides:{root:{minWidth:0,minHeight:42,padding:"8px 14px",color:r.textSecondary,fontWeight:640,textTransform:"none","&.Mui-selected":{color:r.foreground}}}},MuiAlert:{styleOverrides:{root:{alignItems:"center",border:"1px solid currentColor",borderRadius:14,backgroundImage:"none"},message:{paddingBlock:7}}},MuiAccordion:{styleOverrides:{root:{overflow:"hidden",border:"1px solid ".concat(r.border),borderRadius:"16px !important",backgroundColor:r.surface,boxShadow:"none","&::before":{display:"none"},"& + &":{marginTop:10},"&.Mui-expanded":{marginBlock:10,boxShadow:g}}}},MuiAccordionSummary:{styleOverrides:{root:{minHeight:58,paddingInline:18,"&.Mui-expanded":{minHeight:58}},content:{marginBlock:12,"&.Mui-expanded":{marginBlock:12}}}},MuiListItemButton:{styleOverrides:{root:{minHeight:42,borderRadius:11,"&.Mui-selected":{backgroundColor:(0,s.X4)(t,.14),"&:hover":{backgroundColor:(0,s.X4)(t,.19)}}}}},MuiTableCell:{styleOverrides:{root:{borderColor:r.border},head:{color:r.textSecondary,backgroundColor:(0,s.X4)(r.surfaceRaised,.64),fontSize:"0.72rem",fontWeight:720,letterSpacing:"0.055em",textTransform:"uppercase"}}},MuiDivider:{styleOverrides:{root:{borderColor:r.border}}},MuiSwitch:{styleOverrides:{root:{padding:8},switchBase:{"&.Mui-checked + .MuiSwitch-track":{backgroundColor:t,opacity:.75}},track:{borderRadius:999}}},MuiLinearProgress:{styleOverrides:{root:{height:7,borderRadius:999,backgroundColor:(0,s.X4)(t,.12)},bar:{borderRadius:999,backgroundImage:"linear-gradient(90deg, ".concat(t,", ").concat(i,")")}}},MuiSkeleton:{styleOverrides:{root:{backgroundColor:(0,s.X4)(r.textSecondary,.12)}}}}})}(e)})(o?"dark":"light",h),[o,h]);return b.debug("Rendering ThemeProvider with isDarkMode: ".concat(o)),(0,t.jsx)(f.Provider,{value:{toggleTheme:()=>{d(e=>{let r=!e,o=r?"dark":"light";return b.info("Toggling theme to: ".concat(o)),p(o,h),(0,u.VH)(u.Zg.THEME,o),r})},isDarkMode:o,visualStyle:h,setVisualStyle:e=>{m(e),p(o?"dark":"light",e),(0,u.VH)(u.Zg.THEME_STYLE,e)},setThemePreset:e=>{let{mode:r,style:o}=e;d("dark"===r),m(o),p(r,o),Promise.all([(0,u.VH)(u.Zg.THEME,r),(0,u.VH)(u.Zg.THEME_STYLE,o)])}},children:(0,t.jsxs)(i.A,{theme:k,children:[(0,t.jsx)(g.Ay,{}),r]})})},m=()=>{let e=(0,a.useContext)(f);if(!e)throw b.error("useTheme hook used outside of ThemeProvider"),Error("useTheme must be used within a ThemeProvider");return b.debug("useTheme hook accessed"),e}},34432:(e,r,o)=>{o.d(r,{k:()=>t,z:()=>a});let t={light:{background:"#F5F7FF",foreground:"#171A2B",surface:"#FFFFFF",surfaceRaised:"#F8FAFF",paperBackground:"#FFFFFF",textSecondary:"#606A84",textDisabled:"#929BB1",border:"#DEE3F0",heading:"#121424",text:"#20243A",secondaryText:"#606A84",error:{background:"#FFF2F5",border:"#FFC7D2",text:"#C62847"},domain:{resource:"#008D83",resourceSoft:"#36B9AD",signal:"#7157D9",startNode:"#7A5C50",codeBackground:"#F2F4FA",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:"#070912",foreground:"#F4F6FF",surface:"#12182C",surfaceRaised:"#1C243B",paperBackground:"#12182C",textSecondary:"#ADB6CC",textDisabled:"#69738C",border:"#2A324B",heading:"#F8F9FF",text:"#F4F6FF",secondaryText:"#ADB6CC",error:{background:"#2D151F",border:"#633044",text:"#FF8298"},domain:{resource:"#38C9BC",resourceSoft:"#6BDED4",signal:"#A694FF",startNode:"#C6A69A",codeBackground:"#181E32",http:{get:"#66bb6a",post:"#5b9dff",put:"#ffa726",patch:"#ba68c8",delete:"#ef5350"},transport:{stdio:{fg:"#9DCCFF",bg:"#17243A"},websocket:{fg:"#9DE3B3",bg:"#172D24"},sse:{fg:"#FFD18A",bg:"#322718"},streamable:{fg:"#82E2D9",bg:"#15312F"},default:{fg:"#ADB6CC",bg:"#1C243B"}}}}},a={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"}}}}}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8529],{5421:(e,t,n)=>{n.d(t,{A:()=>u});var r=n(12115),o=n(9488),i=n(12549),a=n(33567),l=n(47250),s=n(69582),c=n(95155);let d={entering:{opacity:1},entered:{opacity:1}},u=r.forwardRef(function(e,t){let n=(0,a.A)(),u={enter:n.transitions.duration.enteringScreen,exit:n.transitions.duration.leavingScreen},{addEndListener:p,appear:A=!0,children:v,easing:h,in:f,onEnter:y,onEntered:m,onEntering:g,onExit:x,onExited:b,onExiting:w,style:j,timeout:E=u,TransitionComponent:S=o.Ay,...C}=e,M=r.useRef(null),k=(0,s.A)(M,(0,i.A)(v),t),z=e=>t=>{if(e){let n=M.current;void 0===t?e(n):e(n,t)}},L=z(g),I=z((e,t)=>{(0,l.q)(e);let r=(0,l.c)({style:j,timeout:E,easing:h},{mode:"enter"});e.style.webkitTransition=n.transitions.create("opacity",r),e.style.transition=n.transitions.create("opacity",r),y&&y(e,t)}),P=z(m),R=z(w),V=z(e=>{let t=(0,l.c)({style:j,timeout:E,easing:h},{mode:"exit"});e.style.webkitTransition=n.transitions.create("opacity",t),e.style.transition=n.transitions.create("opacity",t),x&&x(e)}),T=z(b);return(0,c.jsx)(S,{appear:A,in:f,nodeRef:M,onEnter:I,onEntered:P,onEntering:L,onExit:V,onExited:T,onExiting:R,addEndListener:e=>{p&&p(M.current,e)},timeout:E,...C,children:(e,t)=>{let{ownerState:n,...o}=t;return r.cloneElement(v,{style:{opacity:0,visibility:"exited"!==e||f?void 0:"hidden",...d[e],...j,...v.props.style},ref:k,...o})}})})},17576:(e,t,n)=>{n.d(t,{A:()=>r});let r=n(69827).A},21422:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(15485),o=n(95155);let i=(0,r.A)((0,o.jsx)("path",{d:"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2M9 6c0-1.66 1.34-3 3-3s3 1.34 3 3v2H9zm9 14H6V10h12zm-6-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2"}),"LockOutlined")},22003:(e,t,n)=>{n.d(t,{A:()=>I});var r=n(12115),o=n(2821),i=n(57001),a=n(8532),l=n(48116),s=n(66964),c=n(16625),d=n(77765),u=n(81852),p=n(74798),A=n(2300),v=n(85795),h=n(95195);function f(e){return(0,h.Ay)("MuiAlert",e)}let y=(0,v.A)("MuiAlert",["root","action","icon","message","filled","colorSuccess","colorInfo","colorWarning","colorError","filledSuccess","filledInfo","filledWarning","filledError","outlined","outlinedSuccess","outlinedInfo","outlinedWarning","outlinedError","standard","standardSuccess","standardInfo","standardWarning","standardError"]);var m=n(41983),g=n(15485),x=n(95155);let b=(0,g.A)((0,x.jsx)("path",{d:"M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z"}),"SuccessOutlined"),w=(0,g.A)((0,x.jsx)("path",{d:"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z"}),"ReportProblemOutlined"),j=(0,g.A)((0,x.jsx)("path",{d:"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"ErrorOutline"),E=(0,g.A)((0,x.jsx)("path",{d:"M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z"}),"InfoOutlined");var S=n(57908);let C=(0,l.Ay)(A.A,{name:"MuiAlert",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[n.variant],t["".concat(n.variant).concat((0,u.A)(n.color||n.severity))]]}})((0,s.A)(e=>{let{theme:t}=e,n="light"===t.palette.mode?a.e$:a.a,r="light"===t.palette.mode?a.a:a.e$;return{...t.typography.body2,backgroundColor:"transparent",display:"flex",padding:"6px 16px",variants:[...Object.entries(t.palette).filter((0,p.A)(["light"])).map(e=>{let[o]=e;return{props:{colorSeverity:o,variant:"standard"},style:{color:t.vars?t.vars.palette.Alert["".concat(o,"Color")]:n(t.palette[o].light,.6),backgroundColor:t.vars?t.vars.palette.Alert["".concat(o,"StandardBg")]:r(t.palette[o].light,.9),["& .".concat(y.icon)]:t.vars?{color:t.vars.palette.Alert["".concat(o,"IconColor")]}:{color:t.palette[o].main}}}}),...Object.entries(t.palette).filter((0,p.A)(["light"])).map(e=>{let[r]=e;return{props:{colorSeverity:r,variant:"outlined"},style:{color:t.vars?t.vars.palette.Alert["".concat(r,"Color")]:n(t.palette[r].light,.6),border:"1px solid ".concat((t.vars||t).palette[r].light),["& .".concat(y.icon)]:t.vars?{color:t.vars.palette.Alert["".concat(r,"IconColor")]}:{color:t.palette[r].main}}}}),...Object.entries(t.palette).filter((0,p.A)(["dark"])).map(e=>{let[n]=e;return{props:{colorSeverity:n,variant:"filled"},style:{fontWeight:t.typography.fontWeightMedium,...t.vars?{color:t.vars.palette.Alert["".concat(n,"FilledColor")],backgroundColor:t.vars.palette.Alert["".concat(n,"FilledBg")]}:{backgroundColor:"dark"===t.palette.mode?t.palette[n].dark:t.palette[n].main,color:t.palette.getContrastText(t.palette[n].main)}}}})]}})),M=(0,l.Ay)("div",{name:"MuiAlert",slot:"Icon",overridesResolver:(e,t)=>t.icon})({marginRight:12,padding:"7px 0",display:"flex",fontSize:22,opacity:.9}),k=(0,l.Ay)("div",{name:"MuiAlert",slot:"Message",overridesResolver:(e,t)=>t.message})({padding:"8px 0",minWidth:0,overflow:"auto"}),z=(0,l.Ay)("div",{name:"MuiAlert",slot:"Action",overridesResolver:(e,t)=>t.action})({display:"flex",alignItems:"flex-start",padding:"4px 0 0 16px",marginLeft:"auto",marginRight:-8}),L={success:(0,x.jsx)(b,{fontSize:"inherit"}),warning:(0,x.jsx)(w,{fontSize:"inherit"}),error:(0,x.jsx)(j,{fontSize:"inherit"}),info:(0,x.jsx)(E,{fontSize:"inherit"})},I=r.forwardRef(function(e,t){let n=(0,c.b)({props:e,name:"MuiAlert"}),{action:r,children:a,className:l,closeText:s="Close",color:p,components:A={},componentsProps:v={},icon:h,iconMapping:y=L,onClose:g,role:b="alert",severity:w="success",slotProps:j={},slots:E={},variant:I="standard",...P}=n,R={...n,color:p,severity:w,variant:I,colorSeverity:p||w},V=(e=>{let{variant:t,color:n,severity:r,classes:o}=e,a={root:["root","color".concat((0,u.A)(n||r)),"".concat(t).concat((0,u.A)(n||r)),"".concat(t)],icon:["icon"],message:["message"],action:["action"]};return(0,i.A)(a,f,o)})(R),T={slots:{closeButton:A.CloseButton,closeIcon:A.CloseIcon,...E},slotProps:{...v,...j}},[W,H]=(0,d.A)("root",{ref:t,shouldForwardComponentProp:!0,className:(0,o.A)(V.root,l),elementType:C,externalForwardedProps:{...T,...P},ownerState:R,additionalProps:{role:b,elevation:0}}),[N,O]=(0,d.A)("icon",{className:V.icon,elementType:M,externalForwardedProps:T,ownerState:R}),[F,B]=(0,d.A)("message",{className:V.message,elementType:k,externalForwardedProps:T,ownerState:R}),[U,_]=(0,d.A)("action",{className:V.action,elementType:z,externalForwardedProps:T,ownerState:R}),[D,q]=(0,d.A)("closeButton",{elementType:m.A,externalForwardedProps:T,ownerState:R}),[Z,J]=(0,d.A)("closeIcon",{elementType:S.A,externalForwardedProps:T,ownerState:R});return(0,x.jsxs)(W,{...H,children:[!1!==h?(0,x.jsx)(N,{...O,children:h||y[w]||L[w]}):null,(0,x.jsx)(F,{...B,children:a}),null!=r?(0,x.jsx)(U,{..._,children:r}):null,null==r&&g?(0,x.jsx)(U,{..._,children:(0,x.jsx)(D,{size:"small","aria-label":s,title:s,color:"inherit",onClick:g,...q,children:(0,x.jsx)(Z,{fontSize:"small",...J})})}):null]})})},23217:(e,t,n)=>{n.r(t),n.d(t,{default:()=>E});var r=n(95155),o=n(12115),i=n(73288),a=n(2778),l=n(52363),s=n(94049),c=n(25635),d=n(65036),u=n(22003),p=n(9562),A=n(56422),v=n(41983),h=n(75912),f=n(91871),y=n(4474),m=n(21422),g=n(68212),x=n(42063),b=n(9164),w=n(31373);let j=(0,i.h)("frontend/components/EncryptionAuthDialog");function E(){let{verifyKey:e,isEncryptionInitialized:t,isUserEncryptionEnabled:n}=(0,b.useStorage)(),[i,E]=(0,o.useState)(""),[S,C]=(0,o.useState)(!1),[M,k]=(0,o.useState)(null),[z,L]=(0,o.useState)(!1),[I,P]=(0,o.useState)(!1),[R,V]=(0,o.useState)(!1),[T,W]=(0,o.useState)(!0);(0,o.useEffect)(()=>{(async()=>{j.debug("Checking encryption status");try{W(!0);let e=await t();if(j.debug("Encryption initialized: ".concat(e)),!e){j.info("No encryption initialized, skipping authentication"),V(!0),P(!1),W(!1);return}let r=await n();if(j.debug("User encryption enabled: ".concat(r)),!r){j.info("Default encryption in use, skipping authentication"),V(!0),P(!1),W(!1);return}let o=sessionStorage.getItem("encryption_authenticated");if(j.debug("Session authentication status: ".concat(o)),"true"===o){j.info("Already authenticated in this session"),V(!0),P(!1),W(!1);return}j.info("User encryption enabled and not authenticated, showing dialog"),P(!0),W(!1)}catch(e){j.error("Failed to check encryption status:",e),W(!1),V(!0)}})()},[t,n]),(0,o.useEffect)(()=>{(0,w.bx)();let e=()=>{j.info("Encryption locked signal received; showing lock screen"),V(!1),W(!1),P(!0)};return window.addEventListener(w.UJ,e),()=>window.removeEventListener(w.UJ,e)},[]);let H=async()=>{if(!i.trim()){j.warn("Empty password submitted"),k("Password is required");return}j.debug("Verifying encryption password"),L(!0),k(null);try{let t=await e(i);j.debug("Password verification result: ".concat(t)),t?(j.info("Authentication successful"),V(!0),P(!1),window.dispatchEvent(new CustomEvent(w.ZB))):(j.warn("Invalid password provided"),k("Invalid password"))}catch(e){j.error("Failed to verify password:",e),k("An error occurred while verifying the password")}finally{L(!1)}};return T||R?null:(0,r.jsxs)(a.A,{open:I,maxWidth:"sm",fullWidth:!0,disableEscapeKeyDown:!0,onClose:()=>{},children:[(0,r.jsx)(l.A,{component:"div",children:(0,r.jsxs)(s.default,{display:"flex",alignItems:"center",children:[(0,r.jsx)(m.A,{sx:{mr:1}}),(0,r.jsx)(c.A,{variant:"h6",children:"Encryption Password Required"})]})}),(0,r.jsxs)(d.A,{children:[M&&(0,r.jsx)(u.A,{severity:"error",sx:{mb:2},children:M}),(0,r.jsx)(c.A,{variant:"body1",paragraph:!0,children:"This application is configured with custom encryption. Please enter your encryption password to access your encrypted data."}),(0,r.jsx)(p.A,{autoFocus:!0,fullWidth:!0,label:"Encryption Password",variant:"outlined",type:S?"text":"password",value:i,onChange:e=>E(e.target.value),onKeyDown:e=>{"Enter"===e.key&&H()},InputProps:{endAdornment:(0,r.jsx)(A.A,{position:"end",children:(0,r.jsx)(v.A,{"aria-label":"toggle password visibility",onClick:()=>C(!S),edge:"end",children:S?(0,r.jsx)(g.A,{}):(0,r.jsx)(x.A,{})})})},sx:{mt:2}})]}),(0,r.jsx)(h.A,{children:(0,r.jsx)(f.A,{variant:"contained",color:"primary",onClick:H,disabled:z,startIcon:z?(0,r.jsx)(y.default,{size:20}):null,children:z?"Verifying...":"Unlock"})})]})}},26281:(e,t,n)=>{n.d(t,{A:()=>c});var r=n(12115),o=n(47650),i=n(30365),a=n(12549),l=n(89255),s=n(65083);let c=r.forwardRef(function(e,t){let{children:n,container:c,disablePortal:d=!1}=e,[u,p]=r.useState(null),A=(0,i.A)(r.isValidElement(n)?(0,a.A)(n):null,t);return((0,l.A)(()=>{d||p(("function"==typeof c?c():c)||document.body)},[c,d]),(0,l.A)(()=>{if(u&&!d)return(0,s.A)(t,u),()=>{(0,s.A)(t,null)}},[t,u,d]),d)?r.isValidElement(n)?r.cloneElement(n,{ref:A}):n:u?o.createPortal(n,u):u})},26915:(e,t,n)=>{n.d(t,{A:()=>l});var r=n(30365),o=n(49808),i=n(25217),a=n(32979);let l=function(e){var t;let{elementType:n,externalSlotProps:l,ownerState:s,skipResolvingSlotProps:c=!1,...d}=e,u=c?{}:(0,a.A)(l,s),{props:p,internalRef:A}=(0,i.A)({...d,externalSlotProps:u}),v=(0,r.A)(A,null==u?void 0:u.ref,null==(t=e.additionalProps)?void 0:t.ref);return(0,o.A)(n,{...p,ref:v},s)}},42063:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(15485),o=n(95155);let i=(0,r.A)((0,o.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"}),"Visibility")},56422:(e,t,n)=>{n.d(t,{A:()=>x});var r,o=n(12115),i=n(2821),a=n(57001),l=n(81852),s=n(25635),c=n(45222),d=n(45918),u=n(48116),p=n(66964),A=n(16625),v=n(85795),h=n(95195);function f(e){return(0,h.Ay)("MuiInputAdornment",e)}let y=(0,v.A)("MuiInputAdornment",["root","filled","standard","outlined","positionStart","positionEnd","disablePointerEvents","hiddenLabel","sizeSmall"]);var m=n(95155);let g=(0,u.Ay)("div",{name:"MuiInputAdornment",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t["position".concat((0,l.A)(n.position))],!0===n.disablePointerEvents&&t.disablePointerEvents,t[n.variant]]}})((0,p.A)(e=>{let{theme:t}=e;return{display:"flex",maxHeight:"2em",alignItems:"center",whiteSpace:"nowrap",color:(t.vars||t).palette.action.active,variants:[{props:{variant:"filled"},style:{["&.".concat(y.positionStart,"&:not(.").concat(y.hiddenLabel,")")]:{marginTop:16}}},{props:{position:"start"},style:{marginRight:8}},{props:{position:"end"},style:{marginLeft:8}},{props:{disablePointerEvents:!0},style:{pointerEvents:"none"}}]}})),x=o.forwardRef(function(e,t){let n=(0,A.b)({props:e,name:"MuiInputAdornment"}),{children:u,className:p,component:v="div",disablePointerEvents:h=!1,disableTypography:y=!1,position:x,variant:b,...w}=n,j=(0,d.A)()||{},E=b;b&&j.variant,j&&!E&&(E=j.variant);let S={...n,hiddenLabel:j.hiddenLabel,size:j.size,disablePointerEvents:h,position:x,variant:E},C=(e=>{let{classes:t,disablePointerEvents:n,hiddenLabel:r,position:o,size:i,variant:s}=e,c={root:["root",n&&"disablePointerEvents",o&&"position".concat((0,l.A)(o)),s,r&&"hiddenLabel",i&&"size".concat((0,l.A)(i))]};return(0,a.A)(c,f,t)})(S);return(0,m.jsx)(c.A.Provider,{value:null,children:(0,m.jsx)(g,{as:v,ownerState:S,className:(0,i.A)(C.root,p),ref:t,...w,children:"string"!=typeof u||y?(0,m.jsxs)(o.Fragment,{children:["start"===x?r||(r=(0,m.jsx)("span",{className:"notranslate","aria-hidden":!0,children:"​"})):null,u]}):(0,m.jsx)(s.A,{color:"textSecondary",children:u})})})})},57908:(e,t,n)=>{n.d(t,{A:()=>i}),n(12115);var r=n(15485),o=n(95155);let i=(0,r.A)((0,o.jsx)("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close")},65083:(e,t,n)=>{n.d(t,{A:()=>r});function r(e,t){"function"==typeof e?e(t):e&&(e.current=t)}},68212:(e,t,n)=>{n.d(t,{A:()=>i});var r=n(15485),o=n(95155);let i=(0,r.A)((0,o.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7M2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2m4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3z"}),"VisibilityOff")},69827:(e,t,n)=>{n.d(t,{A:()=>o});var r=n(12115);function o(e){let{controlled:t,default:n,name:o,state:i="value"}=e,{current:a}=r.useRef(void 0!==t),[l,s]=r.useState(n),c=r.useCallback(e=>{a||s(e)},[]);return[a?t:l,c]}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9001],{4097:(t,c,e)=>{e.d(c,{A:()=>l});var r=e(15485),o=e(95155);let l=(0,r.A)((0,o.jsx)("path",{d:"m18.04 7.99-.63-1.4-1.4-.63c-.39-.18-.39-.73 0-.91l1.4-.63.63-1.4c.18-.39.73-.39.91 0l.63 1.4 1.4.63c.39.18.39.73 0 .91l-1.4.63-.63 1.4c-.17.39-.73.39-.91 0m3.24 4.73-.32-.72c-.18-.39-.73-.39-.91 0l-.32.72-.73.32c-.39.18-.39.73 0 .91l.72.32.32.73c.18.39.73.39.91 0l.32-.72.73-.32c.39-.18.39-.73 0-.91zm-5.04 1.65 1.23.93c.4.3.51.86.26 1.3l-1.62 2.8c-.25.44-.79.62-1.25.42l-1.43-.6c-.2.13-.42.26-.64.37l-.19 1.54c-.06.5-.49.88-.99.88H8.38c-.5 0-.93-.38-.99-.88l-.19-1.54c-.22-.11-.43-.23-.64-.37l-1.43.6c-.46.2-1 .02-1.25-.42l-1.62-2.8c-.25-.44-.14-.99.26-1.3l1.23-.93V14c0-.12 0-.25.01-.37l-1.23-.93c-.4-.3-.51-.86-.26-1.3l1.62-2.8c.25-.44.79-.62 1.25-.42l1.43.6c.2-.13.42-.26.64-.37l.19-1.54c.05-.49.48-.87.98-.87h3.23c.5 0 .93.38.99.88l.19 1.54c.22.11.43.23.64.37l1.43-.6c.46-.2 1-.02 1.25.42l1.62 2.8c.25.44.14.99-.26 1.3l-1.23.93c.01.12.01.24.01.37s0 .24-.01.36M13 14c0-1.66-1.34-3-3-3s-3 1.34-3 3 1.34 3 3 3 3-1.34 3-3"}),"SettingsSuggestRounded")},4484:(t,c,e)=>{e.d(c,{A:()=>l});var r=e(15485),o=e(95155);let l=(0,r.A)((0,o.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM19 4h-3.5l-1-1h-5l-1 1H5v2h14z"}),"Delete")},8907:(t,c,e)=>{e.d(c,{A:()=>l});var r=e(15485),o=e(95155);let l=(0,r.A)((0,o.jsx)("path",{d:"M5 13.18v4L12 21l7-3.82v-4L12 17zM12 3 1 9l11 6 9-4.91V17h2V9z"}),"School")},12267:(t,c,e)=>{e.d(c,{A:()=>l});var r=e(15485),o=e(95155);let l=(0,r.A)((0,o.jsx)("path",{d:"M12 2C6.49 2 2 6.49 2 12s4.49 10 10 10c1.38 0 2.5-1.12 2.5-2.5 0-.61-.23-1.2-.64-1.67-.08-.1-.13-.21-.13-.33 0-.28.22-.5.5-.5H16c3.31 0 6-2.69 6-6 0-4.96-4.49-9-10-9m5.5 11c-.83 0-1.5-.67-1.5-1.5s.67-1.5 1.5-1.5 1.5.67 1.5 1.5-.67 1.5-1.5 1.5m-3-4c-.83 0-1.5-.67-1.5-1.5S13.67 6 14.5 6s1.5.67 1.5 1.5S15.33 9 14.5 9M5 11.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5S7.33 13 6.5 13 5 12.33 5 11.5m6-4c0 .83-.67 1.5-1.5 1.5S8 8.33 8 7.5 8.67 6 9.5 6s1.5.67 1.5 1.5"}),"PaletteRounded")},12609:(t,c,e)=>{e.d(c,{A:()=>s,K:()=>l});var r=e(85795),o=e(95195);function l(t){return(0,o.Ay)("MuiDivider",t)}let s=(0,r.A)("MuiDivider",["root","absolute","fullWidth","inset","middle","flexItem","light","vertical","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","wrapper","wrapperVertical"])},12857:(t,c,e)=>{e.d(c,{A:()=>l});var r=e(15485),o=e(95155);let l=(0,r.A)((0,o.jsx)("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2m5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12z"}),"Cancel")},13538:(t,c,e)=>{e.d(c,{A:()=>l});var r=e(15485),o=e(95155);let l=(0,r.A)((0,o.jsx)("path",{d:"M19 11c0-3.87-3.13-7-7-7-3.22 0-5.93 2.18-6.74 5.15C2.82 9.71 1 11.89 1 14.5 1 17.54 3.46 20 6.5 20h12c2.49-.01 4.5-2.03 4.5-4.52 0-2.33-1.75-4.22-4-4.48m-6 2v2c0 .55-.45 1-1 1s-1-.45-1-1v-2H9.21c-.45 0-.67-.54-.35-.85l2.79-2.79c.2-.2.51-.2.71 0l2.79 2.79c.31.31.09.85-.35.85z"}),"BackupRounded")},14817:(t,c,e)=>{e.d(c,{A:()=>l});var r=e(15485),o=e(95155);let l=(0,r.A)((0,o.jsx)("path",{d:"M11.01 3.05C6.51 3.54 3 7.36 3 12c0 4.97 4.03 9 9 9 4.63 0 8.45-3.5 8.95-8 .09-.79-.78-1.42-1.54-.95-.84.54-1.84.85-2.91.85-2.98 0-5.4-2.42-5.4-5.4 0-1.06.31-2.06.84-2.89.45-.67-.04-1.63-.93-1.56"}),"DarkModeRounded")},17325:(t,c,e)=>{e.d(c,{A:()=>A});var r=e(12115),o=e(2821),l=e(57001),s=e(48116),a=e(16625),i=e(85795),d=e(95195);function n(t){return(0,d.Ay)("MuiFormGroup",t)}(0,i.A)("MuiFormGroup",["root","row","error"]);var h=e(45918),v=e(75108),u=e(95155);let p=(0,s.Ay)("div",{name:"MuiFormGroup",slot:"Root",overridesResolver:(t,c)=>{let{ownerState:e}=t;return[c.root,e.row&&c.row]}})({display:"flex",flexDirection:"column",flexWrap:"wrap",variants:[{props:{row:!0},style:{flexDirection:"row"}}]}),A=r.forwardRef(function(t,c){let e=(0,a.b)({props:t,name:"MuiFormGroup"}),{className:r,row:s=!1,...i}=e,d=(0,h.A)(),A=(0,v.A)({props:e,muiFormControl:d,states:["error"]}),m={...e,row:s,error:A.error},M=(t=>{let{classes:c,row:e,error:r}=t;return(0,l.A)({root:["root",e&&"row",r&&"error"]},n,c)})(m);return(0,u.jsx)(p,{className:(0,o.A)(M.root,r),ownerState:m,ref:c,...i})})},21422:(t,c,e)=>{e.d(c,{A:()=>l});var r=e(15485),o=e(95155);let l=(0,r.A)((0,o.jsx)("path",{d:"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2M9 6c0-1.66 1.34-3 3-3s3 1.34 3 3v2H9zm9 14H6V10h12zm-6-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2"}),"LockOutlined")},25766:(t,c,e)=>{e.d(c,{A:()=>l});var r=e(15485),o=e(95155);let l=(0,r.A)((0,o.jsx)("path",{d:"M3 18c0 .55.45 1 1 1h5v-2H4c-.55 0-1 .45-1 1M3 6c0 .55.45 1 1 1h9V5H4c-.55 0-1 .45-1 1m10 14v-1h7c.55 0 1-.45 1-1s-.45-1-1-1h-7v-1c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1s1-.45 1-1M7 10v1H4c-.55 0-1 .45-1 1s.45 1 1 1h3v1c0 .55.45 1 1 1s1-.45 1-1v-4c0-.55-.45-1-1-1s-1 .45-1 1m14 2c0-.55-.45-1-1-1h-9v2h9c.55 0 1-.45 1-1m-5-3c.55 0 1-.45 1-1V7h3c.55 0 1-.45 1-1s-.45-1-1-1h-3V4c0-.55-.45-1-1-1s-1 .45-1 1v4c0 .55.45 1 1 1"}),"TuneRounded")},26842:(t,c,e)=>{e.d(c,{A:()=>l});var r=e(15485),o=e(95155);let l=(0,r.A)((0,o.jsx)("path",{d:"M9 16.17 5.53 12.7a.996.996 0 0 0-1.41 0c-.39.39-.39 1.02 0 1.41l4.18 4.18c.39.39 1.02.39 1.41 0L20.29 7.71c.39-.39.39-1.02 0-1.41a.996.996 0 0 0-1.41 0z"}),"CheckRounded")},35465:(t,c,e)=>{e.d(c,{A:()=>l});var r=e(15485),o=e(95155);let l=(0,r.A)((0,o.jsx)("path",{d:"M4 7v2c0 .55-.45 1-1 1s-1 .45-1 1v2c0 .55.45 1 1 1s1 .45 1 1v2c0 1.66 1.34 3 3 3h2c.55 0 1-.45 1-1s-.45-1-1-1H7c-.55 0-1-.45-1-1v-2c0-1.3-.84-2.42-2-2.83v-.34C5.16 11.42 6 10.3 6 9V7c0-.55.45-1 1-1h2c.55 0 1-.45 1-1s-.45-1-1-1H7C5.34 4 4 5.34 4 7m17 3c-.55 0-1-.45-1-1V7c0-1.66-1.34-3-3-3h-2c-.55 0-1 .45-1 1s.45 1 1 1h2c.55 0 1 .45 1 1v2c0 1.3.84 2.42 2 2.83v.34c-1.16.41-2 1.52-2 2.83v2c0 .55-.45 1-1 1h-2c-.55 0-1 .45-1 1s.45 1 1 1h2c1.66 0 3-1.34 3-3v-2c0-.55.45-1 1-1s1-.45 1-1v-2c0-.55-.45-1-1-1"}),"DataObjectRounded")},37019:(t,c,e)=>{e.d(c,{A:()=>l});var r=e(15485),o=e(95155);let l=(0,r.A)((0,o.jsx)("path",{d:"M12 14c1.66 0 3-1.34 3-3V5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3m5.91-3c-.49 0-.9.36-.98.85C16.52 14.2 14.47 16 12 16s-4.52-1.8-4.93-4.15c-.08-.49-.49-.85-.98-.85-.61 0-1.09.54-1 1.14.49 3 2.89 5.35 5.91 5.78V20c0 .55.45 1 1 1s1-.45 1-1v-2.08c3.02-.43 5.42-2.78 5.91-5.78.1-.6-.39-1.14-1-1.14"}),"MicRounded")},42063:(t,c,e)=>{e.d(c,{A:()=>l});var r=e(15485),o=e(95155);let l=(0,r.A)((0,o.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"}),"Visibility")},43633:(t,c,e)=>{e.d(c,{A:()=>l});var r=e(15485),o=e(95155);let l=(0,r.A)((0,o.jsx)("path",{d:"M9.29 6.71c-.39.39-.39 1.02 0 1.41L13.17 12l-3.88 3.88c-.39.39-.39 1.02 0 1.41s1.02.39 1.41 0l4.59-4.59c.39-.39.39-1.02 0-1.41L10.7 6.7c-.38-.38-1.02-.38-1.41.01"}),"ChevronRightRounded")},47275:(t,c,e)=>{e.d(c,{A:()=>l});var r=e(15485),o=e(95155);let l=(0,r.A)((0,o.jsx)("path",{d:"M4.19 4.47C3.47 4.79 3 5.51 3 6.3V11c0 5.55 3.84 10.74 9 12 5.16-1.26 9-6.45 9-12V6.3c0-.79-.47-1.51-1.19-1.83l-7-3.11c-.52-.23-1.11-.23-1.62 0zM12 7c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1m0 4c.55 0 1 .45 1 1v4c0 .55-.45 1-1 1s-1-.45-1-1v-4c0-.55.45-1 1-1"}),"PrivacyTipRounded")},48363:(t,c,e)=>{e.d(c,{A:()=>l});var r=e(15485),o=e(95155);let l=(0,r.A)((0,o.jsx)("path",{d:"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1M8 13h8v-2H8zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5"}),"Link")},48989:(t,c,e)=>{e.d(c,{A:()=>m});var r=e(12115),o=e(2821),l=e(57001),s=e(48116),a=e(66964),i=e(16625),d=e(81852),n=e(85795),h=e(95195);function v(t){return(0,h.Ay)("MuiListSubheader",t)}(0,n.A)("MuiListSubheader",["root","colorPrimary","colorInherit","gutters","inset","sticky"]);var u=e(95155);let p=(0,s.Ay)("li",{name:"MuiListSubheader",slot:"Root",overridesResolver:(t,c)=>{let{ownerState:e}=t;return[c.root,"default"!==e.color&&c["color".concat((0,d.A)(e.color))],!e.disableGutters&&c.gutters,e.inset&&c.inset,!e.disableSticky&&c.sticky]}})((0,a.A)(t=>{let{theme:c}=t;return{boxSizing:"border-box",lineHeight:"48px",listStyle:"none",color:(c.vars||c).palette.text.secondary,fontFamily:c.typography.fontFamily,fontWeight:c.typography.fontWeightMedium,fontSize:c.typography.pxToRem(14),variants:[{props:{color:"primary"},style:{color:(c.vars||c).palette.primary.main}},{props:{color:"inherit"},style:{color:"inherit"}},{props:t=>{let{ownerState:c}=t;return!c.disableGutters},style:{paddingLeft:16,paddingRight:16}},{props:t=>{let{ownerState:c}=t;return c.inset},style:{paddingLeft:72}},{props:t=>{let{ownerState:c}=t;return!c.disableSticky},style:{position:"sticky",top:0,zIndex:1,backgroundColor:(c.vars||c).palette.background.paper}}]}})),A=r.forwardRef(function(t,c){let e=(0,i.b)({props:t,name:"MuiListSubheader"}),{className:r,color:s="default",component:a="li",disableGutters:n=!1,disableSticky:h=!1,inset:A=!1,...m}=e,M={...e,color:s,component:a,disableGutters:n,disableSticky:h,inset:A},x=(t=>{let{classes:c,color:e,disableGutters:r,inset:o,disableSticky:s}=t,a={root:["root","default"!==e&&"color".concat((0,d.A)(e)),!r&&"gutters",o&&"inset",!s&&"sticky"]};return(0,l.A)(a,v,c)})(M);return(0,u.jsx)(p,{as:a,className:(0,o.A)(x.root,r),ref:c,ownerState:M,...m})});A&&(A.muiSkipListHighlight=!0);let m=A},50001:(t,c,e)=>{e.d(c,{A:()=>A});var r=e(12115),o=e(2821),l=e(57001),s=e(30424),a=e(48116),i=e(16625),d=e(25635),n=e(85795),h=e(95195);function v(t){return(0,h.Ay)("MuiDialogContentText",t)}(0,n.A)("MuiDialogContentText",["root"]);var u=e(95155);let p=(0,a.Ay)(d.A,{shouldForwardProp:t=>(0,s.A)(t)||"classes"===t,name:"MuiDialogContentText",slot:"Root",overridesResolver:(t,c)=>c.root})({}),A=r.forwardRef(function(t,c){let e=(0,i.b)({props:t,name:"MuiDialogContentText"}),{children:r,className:s,...a}=e,d=(t=>{let{classes:c}=t,e=(0,l.A)({root:["root"]},v,c);return{...c,...e}})(a);return(0,u.jsx)(p,{component:"p",variant:"body1",color:"textSecondary",ref:c,ownerState:a,className:(0,o.A)(d.root,s),...e,classes:d})})},61615:(t,c,e)=>{e.d(c,{A:()=>l});var r=e(15485),o=e(95155);let l=(0,r.A)((0,o.jsx)("path",{d:"m12.35 15.65 2.79-2.79c.31-.31.09-.85-.35-.85H13V4c0-.55-.45-1-1-1s-1 .45-1 1v8H9.21c-.45 0-.67.54-.35.85l2.79 2.79c.19.2.51.2.7.01M21 3h-5.01c-.54 0-.99.45-.99.99 0 .55.45.99.99.99H20c.55 0 1 .45 1 1v12.03c0 .55-.45 1-1 1H4c-.55 0-1-.45-1-1V5.99c0-.55.45-1 1-1h4.01c.54 0 .99-.45.99-.99 0-.55-.45-1-.99-1H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2"}),"SystemUpdateAltRounded")},65187:(t,c,e)=>{e.d(c,{A:()=>l});var r=e(15485),o=e(95155);let l=(0,r.A)((0,o.jsx)("path",{d:"M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5M2 13h2c.55 0 1-.45 1-1s-.45-1-1-1H2c-.55 0-1 .45-1 1s.45 1 1 1m18 0h2c.55 0 1-.45 1-1s-.45-1-1-1h-2c-.55 0-1 .45-1 1s.45 1 1 1M11 2v2c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1s-1 .45-1 1m0 18v2c0 .55.45 1 1 1s1-.45 1-1v-2c0-.55-.45-1-1-1s-1 .45-1 1M5.99 4.58c-.39-.39-1.03-.39-1.41 0-.39.39-.39 1.03 0 1.41l1.06 1.06c.39.39 1.03.39 1.41 0s.39-1.03 0-1.41zm12.37 12.37c-.39-.39-1.03-.39-1.41 0-.39.39-.39 1.03 0 1.41l1.06 1.06c.39.39 1.03.39 1.41 0 .39-.39.39-1.03 0-1.41zm1.06-10.96c.39-.39.39-1.03 0-1.41-.39-.39-1.03-.39-1.41 0l-1.06 1.06c-.39.39-.39 1.03 0 1.41s1.03.39 1.41 0zM7.05 18.36c.39-.39.39-1.03 0-1.41-.39-.39-1.03-.39-1.41 0l-1.06 1.06c-.39.39-.39 1.03 0 1.41s1.03.39 1.41 0z"}),"LightModeRounded")},66636:(t,c,e)=>{e.d(c,{A:()=>l});var r=e(15485),o=e(95155);let l=(0,r.A)((0,o.jsx)("path",{d:"M20.54 17.73 15 11V5h1c.55 0 1-.45 1-1s-.45-1-1-1H8c-.55 0-1 .45-1 1s.45 1 1 1h1v6l-5.54 6.73c-.32.39-.46.83-.46 1.27.01 1.03.82 2 2 2h14c1.19 0 2-.97 2-2 0-.44-.14-.88-.46-1.27"}),"ScienceRounded")},68212:(t,c,e)=>{e.d(c,{A:()=>l});var r=e(15485),o=e(95155);let l=(0,r.A)((0,o.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7M2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2m4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3z"}),"VisibilityOff")},81685:(t,c,e)=>{e.d(c,{A:()=>l});var r=e(15485),o=e(95155);let l=(0,r.A)((0,o.jsx)("path",{d:"M9.19 6.35c-2.04 2.29-3.44 5.58-3.57 5.89l-2.26-.97c-.65-.28-.81-1.13-.31-1.63l3.01-3.01c.47-.47 1.15-.68 1.81-.55zm1.49 10.16c.3.3.74.38 1.12.2 1.16-.54 3.65-1.81 5.26-3.42 4.59-4.59 4.63-8.33 4.36-9.93-.07-.4-.39-.72-.79-.79-1.6-.27-5.34-.23-9.93 4.36-1.61 1.61-2.87 4.1-3.42 5.26-.18.38-.09.83.2 1.12zm6.97-1.7c-2.29 2.04-5.58 3.44-5.89 3.57l.97 2.26c.28.65 1.13.81 1.63.31l3.01-3.01c.47-.47.68-1.15.55-1.81zm-8.71 2.6c.2 1.06-.15 2.04-.82 2.71-.77.77-3.16 1.34-4.71 1.64-.69.13-1.3-.48-1.17-1.17.3-1.55.86-3.94 1.64-4.71.67-.67 1.65-1.02 2.71-.82 1.17.22 2.13 1.18 2.35 2.35M13 9c0-1.1.9-2 2-2s2 .9 2 2-.9 2-2 2-2-.9-2-2"}),"RocketLaunchRounded")},87830:(t,c,e)=>{e.d(c,{A:()=>l});var r=e(15485),o=e(95155);let l=(0,r.A)((0,o.jsx)("path",{d:"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6h2c0-1.66 1.34-3 3-3s3 1.34 3 3v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2m0 12H6V10h12zm-6-3c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2"}),"LockOpenOutlined")}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9136],{9136:(e,t,n)=>{n.r(t),n.d(t,{default:()=>K});var l=n(95155),i=n(12115),o=n(2300),r=n(25635),a=n(80777),s=n(28548),c=n(94049),u=n(4474),d=n(22003),f=n(21067),h=n(2975),g=n(26922),p=n(73288);let x=(0,p.h)("frontend/services/waves");class m{async list(){try{let e=await fetch("/api/waves");if(!e.ok)throw Error("HTTP ".concat(e.status));return await e.json()}catch(e){return x.warn("Failed to list waves",e),{paused:!1,generatedAt:new Date().toISOString(),waves:[],orphans:[]}}}}let b=new m;var v=n(64598),w=n(97104),y=n(23201),j=n(76122),A=n(22539);n(8301);var E=n(14913),k=n(57883),I=n(78470),S=n(11096),R=n(28874),N=n(64410);let O={schedule:{label:"Periodic",color:"#1976d2",timeline:!0},"mcp-poll":{label:"MCP Poll",color:"#7b1fa2",timeline:!0},"url-watch":{label:"URL Watch",color:"#0288d1",timeline:!0},webhook:{label:"Webhook",color:"#2e7d32",timeline:!1},"file-watch":{label:"File Watcher",color:"#ed6c02",timeline:!1},"flow-event":{label:"Event",color:"#616161",timeline:!1}};var z=n(14976);let C={"1h":36e5,"6h":216e5,"1d":864e5},W=["1h","6h","1d"];function T(e,t,n){let l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:24,i=arguments.length>4?arguments[4]:void 0;if(!e||"string"!=typeof e||!e.trim()||!Number.isFinite(t)||!Number.isFinite(n)||n<=0)return[];let o=t+n,r=[];try{let n=i?new z.l4(e.trim(),{timezone:i}):new z.l4(e.trim()),a=new Date(t-1);for(let e=0;e<l;e++){let e=n.nextRun(a);if(!e)break;let t=e.getTime();if(t>o)break;r.push(t),a=e}}catch(e){return[]}return r}function M(e,t){if(null==e||!Number.isFinite(e))return"no scheduled run";let n=e-t;if(n<=0)return"due now";let l=Math.floor(n/6e4),i=Math.floor(l/1440),o=Math.floor(l%1440/60),r=l%60;return i>0?"in ".concat(i,"d ").concat(o,"h"):o>0?"in ".concat(o,"h ").concat(String(r).padStart(2,"0"),"m"):"in ".concat(r,"m")}var _=n(55930);function L(e){let{subflows:t,depth:n=0}=e;return t&&0!==t.length?(0,l.jsx)(c.default,{sx:{pl:1.5*(0!==n),mt:.25},children:t.map((e,t)=>{var i;return(0,l.jsxs)(c.default,{sx:{borderLeft:n>0?"1px dashed rgba(0,0,0,0.2)":"none",pl:+(n>0)},children:[(0,l.jsxs)(c.default,{sx:{display:"flex",alignItems:"center",gap:.5},children:[(0,l.jsx)(_.A,{sx:{fontSize:12,opacity:.6}}),(0,l.jsxs)(r.A,{variant:"caption",sx:{opacity:e.missing?.6:.85,fontStyle:e.missing?"italic":"normal"},children:[null!=(i=e.flowName)?i:e.flowId,e.missing?" (missing)":"",e.truncated?" …":""]})]}),e.children.length>0&&(0,l.jsx)(L,{subflows:e.children,depth:n+1})]},"".concat(e.flowId,"-").concat(t))})}):null}var D=n(67404);function F(e,t){return"".concat(e,"#").concat(t)}let H={trigger:function(e){var t,n,i,o,u,d;let{data:f}=e,{chainNode:h,now:g,runAt:p,isRoot:x,hasSuccessors:m,expanded:b,pinned:v}=f,w=null!=(d=O[u=h.triggerKind])?d:{label:u,color:"#616161",timeline:!1},y="";"timeline"===h.timing.mode?y=x?M(p,g):"on schedule":"fixed"===h.timing.mode?y="fires when it happens":"event"===h.timing.mode&&(y="signal"===h.timing.via?'on signal "'.concat(null!=(t=h.timing.topic)?t:"",'"'):"when its upstream runs");let E=null!=(n=h.emittedSignals)?n:[];return(0,l.jsxs)(c.default,{sx:{minWidth:220,maxWidth:260,borderRadius:1,border:"1px solid rgba(0,0,0,0.15)",borderTop:"4px solid ".concat(w.color),outline:v||b?"2px solid ".concat(w.color):"none",outlineOffset:2*!!v,bgcolor:"background.paper",boxShadow:v?6:b?4:2,p:1,opacity:h.enabled?1:.55,transition:"box-shadow 120ms ease, outline-color 120ms ease"},children:[(0,l.jsx)(A.h7,{type:"target",position:j.yX.Left,style:{background:w.color}}),(0,l.jsx)(A.h7,{type:"target",position:j.yX.Top,id:"up",style:{background:w.color}}),(0,l.jsxs)(c.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:.5},children:[(0,l.jsx)(s.A,{label:w.label,size:"small",sx:{bgcolor:w.color,color:"#fff",height:18,fontSize:10}}),x&&(0,l.jsx)(r.A,{variant:"caption",sx:{opacity:.6},children:"root"})]}),(0,l.jsx)(r.A,{variant:"subtitle2",sx:{mt:.5,fontWeight:600,lineHeight:1.2},noWrap:!0,title:h.name,children:h.name}),(0,l.jsx)(r.A,{variant:"caption",sx:{display:"block",opacity:.75},noWrap:!0,title:null!=(i=h.flowName)?i:h.flowId,children:null!=(o=h.flowName)?o:h.flowId}),(0,l.jsx)(r.A,{variant:"caption",sx:{display:"block",mt:.25,color:w.color,fontWeight:500},children:y}),E.length>0&&(0,l.jsxs)(c.default,{sx:{mt:.5},children:[(0,l.jsxs)(c.default,{sx:{display:"flex",alignItems:"center",gap:.5,mb:.25},children:[(0,l.jsx)(S.A,{sx:{fontSize:13,color:"#7b1fa2"}}),(0,l.jsx)(r.A,{variant:"caption",sx:{opacity:.7},children:"Signals"})]}),(0,l.jsx)(a.A,{direction:"row",spacing:.5,flexWrap:"wrap",useFlexGap:!0,children:E.map(e=>(0,l.jsx)(I.A,{title:e.direct?"Emitted by this flow":"Emitted via a subflow",arrow:!0,children:(0,l.jsx)(s.A,{label:e.topic,size:"small",variant:e.direct?"filled":"outlined",sx:{height:18,fontSize:10,bgcolor:e.direct?"rgba(123,31,162,0.12)":"transparent",borderColor:"rgba(123,31,162,0.4)",color:"#7b1fa2"}})},e.topic))})]}),(0,l.jsx)(L,{subflows:h.subflows}),v&&(0,l.jsxs)(c.default,{sx:{display:"flex",alignItems:"center",gap:.25,mt:.5,color:w.color},children:[(0,l.jsx)(N.A,{sx:{fontSize:13}}),(0,l.jsx)(r.A,{variant:"caption",sx:{fontSize:10,fontWeight:600},children:"pinned"})]}),m&&!b&&!v&&(0,l.jsxs)(c.default,{sx:{display:"flex",alignItems:"center",gap:.25,mt:.5,opacity:.55},children:[(0,l.jsx)(R.A,{sx:{fontSize:13,transform:"rotate(90deg)"}}),(0,l.jsx)(r.A,{variant:"caption",sx:{fontSize:10},children:"hover to follow chain"})]}),(0,l.jsx)(A.h7,{type:"source",position:j.yX.Right,style:{background:w.color}}),(0,l.jsx)(A.h7,{type:"source",position:j.yX.Bottom,id:"down",style:{background:w.color}})]})},clock:function(){return(0,l.jsxs)(c.default,{sx:{display:"flex",flexDirection:"column",alignItems:"center",gap:.25,width:84},children:[(0,l.jsx)(c.default,{sx:{width:56,height:56,borderRadius:"50%",display:"flex",alignItems:"center",justifyContent:"center",bgcolor:"primary.main",color:"primary.contrastText",boxShadow:3},children:(0,l.jsx)(D.A,{})}),(0,l.jsx)(r.A,{variant:"caption",sx:{fontWeight:600},children:"now"}),(0,l.jsx)(r.A,{variant:"caption",sx:{opacity:.6,fontSize:10,textAlign:"center"},children:"time →"})]})},tick:function(e){let{data:t}=e,{label:n}=t;return(0,l.jsxs)(c.default,{sx:{display:"flex",flexDirection:"column",alignItems:"center",transform:"translateX(-50%)",pointerEvents:"none",userSelect:"none"},children:[(0,l.jsx)(r.A,{variant:"caption",sx:{fontSize:10,opacity:.55,whiteSpace:"nowrap"},children:n}),(0,l.jsx)(c.default,{sx:{width:"1px",height:14,bgcolor:"rgba(0,0,0,0.25)",mt:.25}})]})}};function G(e){let{wave:t,height:n=460}=e,[o,a]=(0,i.useState)(()=>Date.now()),[s,u]=(0,i.useState)(()=>(function(e,t){let n=1/0;for(let l of e.nodes){if("timeline"!==l.timing.mode)continue;let e=l.timing.cron;if(!e)continue;let i=T(e,t,864e5,3);if(i.length>=2){let e=i[1]-i[0];e<n&&(n=e)}}if(!Number.isFinite(n))return"6h";let l=6*n;return l<=C["1h"]?"1h":l<=C["6h"]?"6h":"1d"})(t,Date.now())),[d,f]=(0,i.useState)(null),[h,g]=(0,i.useState)(null),p=(0,i.useRef)(null),x=null!=h?h:d,m=(0,i.useMemo)(()=>t.nodes.some(e=>"timeline"===e.timing.mode),[t]);(0,i.useEffect)(()=>{if(!m)return;let e=setInterval(()=>a(Date.now()),3e4);return()=>clearInterval(e)},[m]),(0,i.useEffect)(()=>()=>{p.current&&clearTimeout(p.current)},[]);let b=C[s],v=(0,i.useMemo)(()=>{let e=new Map;for(let n of t.nodes)e.set(n.executionId,n.name);return e},[t]),w=(0,i.useMemo)(()=>(function(e){let{wave:t,now:n,windowMs:l,hoveredKey:i,timezone:o}=e,{nodeById:r,succ:a,edgeByPair:s,rootIds:c,parentOf:u}=function(e){let t=new Map;for(let n of e.nodes)t.set(n.executionId,n);let n=new Map,l=new Map;for(let t of e.nodes)n.set(t.executionId,[]),l.set(t.executionId,[]);let i=new Map;for(let o of e.edges)t.has(o.fromExecutionId)&&t.has(o.toExecutionId)&&(n.get(o.fromExecutionId).push(o.toExecutionId),l.get(o.toExecutionId).push(o.fromExecutionId),i.set("".concat(o.fromExecutionId,"->").concat(o.toExecutionId),o));for(let[,e]of n)e.sort();let o=e.rootExecutionIds.filter(e=>t.has(e));0===o.length&&(o=e.nodes.filter(e=>{var t,n;return(null!=(n=null==(t=l.get(e.executionId))?void 0:t.length)?n:0)===0}).map(e=>e.executionId)),o=[...o].sort();let r=new Map;{let e=new Set(o),t=[...o];for(;t.length>0;){var a;let l=t.shift();for(let i of null!=(a=n.get(l))?a:[])e.has(i)||(e.add(i),r.set(i,l),t.push(i))}}return{nodeById:t,succ:n,preds:l,edgeByPair:i,rootIds:o,parentOf:r}}(t),d=[];for(let e of c){let t=r.get(e);if("timeline"===t.timing.mode){let i=T(t.timing.cron,n,l,void 0,o);if(i.length>0)i.forEach((t,n)=>d.push({baseId:e,occ:n,runAt:t}));else{let n=t.timing.nextRun?Date.parse(t.timing.nextRun):NaN;d.push({baseId:e,occ:0,runAt:Number.isFinite(n)?n:null})}}else d.push({baseId:e,occ:0,runAt:null})}let f=i?function(e){let t=e.lastIndexOf("#");return t>=0?e.slice(0,t):e}(i):null,h=i?function(e){let t=e.lastIndexOf("#");return t>=0?Number(e.slice(t+1)):0}(i):null,g=new Set,p=null;if(f){let e=f,t=new Set;for(;e&&!t.has(e);){t.add(e),g.add(e);let n=u.get(e);if(!n){p=e;break}e=n}}let x=new Map,m=e=>{if("timeline"!==r.get(e.baseId).timing.mode)return 0;if(null==e.runAt)return 1;var t=e.runAt;if(null==t||!Number.isFinite(t)||l<=0)return 0;let i=t-n;return i<=0?0:Math.min(1,i/l)},b=(e,t,n,l,i,o)=>{var s,c;let u=F(e,t);if(x.has(u))return;let d=r.get(e);x.set(u,{key:u,baseId:e,occ:t,chainNode:d,isRoot:o,runAt:i,level:n,x:l,y:24+220*n,hasSuccessors:(null!=(c=null==(s=a.get(e))?void 0:s.length)?c:0)>0,expanded:g.has(e)&&t===h})},v=(e,t,n,l)=>{var i;if(!(g.has(e)&&t===h))return;let o=(null!=(i=a.get(e))?i:[]).filter(e=>!x.has(F(e,t)));if(0===o.length)return;let r=(o.length-1)*320;o.forEach((e,i)=>{let o=l-r/2+320*i;b(e,t,n+1,o,null,!1),v(e,t,n+1,o)})};for(let e of d){if(i&&(e.baseId!==p||e.occ!==h))continue;let t=160+620*m(e);b(e.baseId,e.occ,0,t,e.runAt,!0),v(e.baseId,e.occ,0,t)}let w=[];for(let[e,t]of x){var y;let n=t.occ;for(let l of null!=(y=a.get(t.baseId))?y:[]){let i=F(l,n),o=x.get(i);if(!o)continue;let r=s.get("".concat(t.baseId,"->").concat(l));r&&w.push({id:"".concat(e,"->").concat(i),source:e,target:i,chainEdge:r,recursive:o.level<=t.level})}}return{nodes:[...x.values()],edges:w}})({wave:t,now:o,windowMs:b,hoveredKey:x}),[t,o,b,x]),y=(0,i.useMemo)(()=>{let e=w.nodes.map(e=>({id:e.key,type:"trigger",position:{x:e.x,y:e.y},data:{chainNode:e.chainNode,now:o,runAt:e.runAt,isRoot:e.isRoot,hasSuccessors:e.hasSuccessors,expanded:e.expanded,pinned:e.key===h},draggable:!1,connectable:!1}));return[{id:"__clock__",type:"clock",position:{x:16,y:24},data:{},draggable:!1,selectable:!1,connectable:!1},...m?(function(e,t,n){if(!Number.isFinite(e)||!Number.isFinite(t)||t<=0)return[];let l=t<=C["1h"]?6e5:t<=C["6h"]?36e5:t<=C["1d"]?144e5:Math.max(6e4,Math.round(t/6)),i=[];for(let n=0;n<=t+1&&i.length<200;n+=l)i.push({atMs:e+n,fraction:Math.min(1,n/t),label:function(e){if(e<=0)return"now";let t=Math.round(e/6e4),n=Math.floor(t/60),l=t%60;return 0===n?"".concat(l,"m"):0===l?"".concat(n,"h"):"".concat(n,"h ").concat(l,"m")}(n)});return i})(o,b).map((e,t)=>({id:"__tick_".concat(t,"__"),type:"tick",position:{x:160+620*e.fraction,y:-24},data:{label:e.label},draggable:!1,selectable:!1,connectable:!1})):[],...e]},[w,o,h,m,b]),I=(0,i.useMemo)(()=>w.edges.map(e=>{let t=e.recursive?"#ed6c02":"signal"===e.chainEdge.via?"#7b1fa2":"#616161",n="".concat(e.recursive?"↻ ":"").concat(function(e,t){var n;if("signal"===e.via)return"⚡ ".concat(null!=(n=e.topic)?n:"signal");let l=e.on&&e.on.length>0?e.on.join(" / "):"completes";return"when ".concat(t?"".concat(t," "):"").concat(l)}(e.chainEdge,v.get(e.chainEdge.fromExecutionId)));return{id:e.id,source:e.source,target:e.target,sourceHandle:"down",targetHandle:"up",label:n,animated:!e.recursive,markerEnd:{type:j.TG.ArrowClosed,color:t},style:{stroke:t,strokeDasharray:e.recursive?"6 4":void 0},labelStyle:{fontSize:10,fill:t},labelBgStyle:{fill:"#fff",fillOpacity:.85}}}),[w,v]);return(0,l.jsx)(c.default,{sx:{height:n,width:"100%",border:"1px solid rgba(0,0,0,0.1)",borderRadius:1},children:(0,l.jsxs)(A.Gc,{nodes:y,edges:I,nodeTypes:H,fitView:!0,fitViewOptions:{padding:.15},minZoom:.2,nodesDraggable:!1,nodesConnectable:!1,elementsSelectable:!1,zoomOnScroll:!0,zoomOnPinch:!0,zoomOnDoubleClick:!0,panOnScroll:!1,preventScrolling:!0,panOnDrag:!0,onNodeMouseEnter:(e,t)=>{if(p.current&&clearTimeout(p.current),"clock"===t.type||"tick"===t.type)return void f(null);f(t.id)},onNodeMouseLeave:()=>{p.current&&clearTimeout(p.current),p.current=setTimeout(()=>f(null),800)},onNodeClick:(e,t)=>{"clock"!==t.type&&"tick"!==t.type&&g(e=>e===t.id?null:t.id)},onPaneClick:()=>g(null),proOptions:{hideAttribution:!0},children:[(0,l.jsx)(A.VS,{}),(0,l.jsx)(A.H2,{showInteractive:!1}),m&&(0,l.jsx)(A.Zk,{position:"top-right",children:(0,l.jsx)(E.A,{size:"small",exclusive:!0,value:s,onChange:(e,t)=>t&&u(t),sx:{bgcolor:"background.paper",boxShadow:1},children:W.map(e=>(0,l.jsx)(k.A,{value:e,sx:{px:1,py:.25},children:e},e))})}),(0,l.jsx)(A.Zk,{position:"bottom-right",children:(0,l.jsx)(r.A,{variant:"caption",sx:{opacity:.55,bgcolor:"background.paper",px:.5,borderRadius:.5},children:h?"chain pinned — click the background to release":"hover a card to follow its chain \xb7 click to pin"})})]})})}function B(e){return(0,l.jsx)(A.Ln,{children:(0,l.jsx)(G,{...e})})}let V=(0,p.h)("frontend/components/Waves");function P(e){let t=e.nodes.filter(t=>e.rootExecutionIds.includes(t.executionId)).map(e=>e.name);return t.length>0?t.join(", "):"Wave"}function X(e){let{wave:t,selected:n,now:i,onSelect:u}=e,d=t.nodes.some(e=>"timeline"===e.timing.mode),f=d?function(e){let t=null;for(let n of e.nodes)if("timeline"===n.timing.mode&&n.timing.nextRun){let e=Date.parse(n.timing.nextRun);Number.isFinite(e)&&(null===t||e<t)&&(t=e)}return t}(t):null;return(0,l.jsxs)(o.A,{variant:"outlined",onClick:u,sx:{p:1.25,cursor:"pointer",borderColor:n?"primary.main":void 0,borderWidth:n?2:1,bgcolor:n?"action.selected":"background.paper",transition:"border-color 120ms ease, background-color 120ms ease","&:hover":{borderColor:"primary.light"}},children:[(0,l.jsx)(r.A,{variant:"subtitle2",sx:{fontWeight:600,lineHeight:1.25},noWrap:!0,title:P(t),children:P(t)}),(0,l.jsxs)(a.A,{direction:"row",spacing:.5,flexWrap:"wrap",useFlexGap:!0,sx:{mt:.75},children:[(0,l.jsx)(s.A,{label:"".concat(t.nodes.length," trigger(s)"),size:"small",variant:"outlined"}),d&&(0,l.jsx)(s.A,{label:"time-based",size:"small",color:"info",variant:"outlined"}),t.hasCycle&&(0,l.jsx)(s.A,{label:"recursive",color:"warning",size:"small"})]}),d&&(0,l.jsxs)(c.default,{sx:{display:"flex",alignItems:"center",gap:.5,mt:.75,opacity:.75},children:[(0,l.jsx)(g.A,{sx:{fontSize:14}}),(0,l.jsxs)(r.A,{variant:"caption",children:["next run ",f?M(f,i):"not scheduled"]})]})]})}function U(e){var t;let{height:n="100%"}=e,[g,p]=(0,i.useState)(null),[x,m]=(0,i.useState)(!0),[j,A]=(0,i.useState)(()=>Date.now()),[E,k]=(0,w.Xk)("flujo-ui:waves:selected",null),{ref:I,showBackToTop:S,scrollToTop:R}=(0,v.R)("flujo-ui:scroll:waves",{deps:[g]}),N=(0,i.useCallback)(async()=>{p(await b.list()),m(!1)},[]);(0,i.useEffect)(()=>{N().catch(e=>{V.warn("Initial waves load failed",e),m(!1)});let e=setInterval(()=>{N().catch(e=>V.warn("Waves refresh failed",e))},3e4);return()=>clearInterval(e)},[N]),(0,i.useEffect)(()=>{let e=setInterval(()=>A(Date.now()),3e4);return()=>clearInterval(e)},[]);let O=(0,i.useMemo)(()=>{var e;return null!=(e=null==g?void 0:g.waves)?e:[]},[g]),z=null!=(t=null==g?void 0:g.orphans)?t:[],C=(0,i.useMemo)(()=>{var e;return 0===O.length?null:null!=(e=O.find(e=>e.id===E))?e:O[0]},[O,E]);return x?(0,l.jsx)(c.default,{sx:{display:"flex",justifyContent:"center",alignItems:"center",height:n,minHeight:0},children:(0,l.jsx)(u.default,{})}):(0,l.jsxs)(c.default,{sx:{p:3,height:n,boxSizing:"border-box",display:"flex",flexDirection:"column",minHeight:0},children:[(0,l.jsxs)(c.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:1},children:[(0,l.jsx)(h.A,{color:"primary"}),(0,l.jsx)(r.A,{variant:"h5",sx:{fontWeight:600},children:"Waves"}),(0,l.jsx)(s.A,{label:"experimental",size:"small",color:"warning",variant:"outlined"}),(null==g?void 0:g.paused)&&(0,l.jsx)(s.A,{label:"Scheduler paused",color:"warning",size:"small"})]}),(0,l.jsx)(r.A,{variant:"body2",sx:{opacity:.75,mb:2},children:"A read-only picture of how your Automation triggers chain together via signals and completion events. Pick a wave on the left to open it on the canvas — the clock on the left is “now”, and scheduled runs approach from the right. Hover a card to follow its chain, or click it to pin the chain open (click the background to release); use the window control to zoom the timeline out. Nothing here arms or fires anything."}),0===O.length&&0===z.length&&(0,l.jsx)(d.A,{severity:"info",children:"No triggers to visualize yet. Create some triggers (and link them with flow-event triggers or signal nodes) to see waves here."}),(O.length>0||z.length>0)&&(0,l.jsxs)(c.default,{sx:{flex:1,minHeight:0,display:"flex",gap:2},children:[(0,l.jsxs)(c.default,{ref:I,sx:{width:320,flexShrink:0,overflow:"auto",pr:.5},children:[(0,l.jsx)(a.A,{spacing:1,children:O.map(e=>(0,l.jsx)(X,{wave:e,now:j,selected:(null==C?void 0:C.id)===e.id,onSelect:()=>k(e.id)},e.id))}),z.length>0&&(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)(f.A,{sx:{my:2}}),(0,l.jsx)(r.A,{variant:"subtitle2",sx:{fontWeight:600,mb:.5},children:"Unlinked event triggers"}),(0,l.jsx)(r.A,{variant:"caption",sx:{display:"block",opacity:.75,mb:1},children:"These flow-event triggers reference a source that matches no known producer, so they never start from an organic trigger."}),(0,l.jsx)(a.A,{direction:"row",spacing:.5,flexWrap:"wrap",useFlexGap:!0,children:z.map(e=>{var t;return(0,l.jsx)(s.A,{label:"".concat(e.name," → ").concat(null!=(t=e.flowName)?t:e.flowId),size:"small"},e.executionId)})})]}),(0,l.jsx)(y.A,{show:S,onClick:R})]}),(0,l.jsx)(c.default,{sx:{flex:1,minHeight:0},children:C?(0,l.jsxs)(o.A,{variant:"outlined",sx:{p:1.5,height:"100%",display:"flex",flexDirection:"column",minHeight:0},children:[(0,l.jsxs)(c.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:1},children:[(0,l.jsx)(r.A,{variant:"subtitle1",sx:{fontWeight:600},noWrap:!0,title:P(C),children:P(C)}),(0,l.jsx)(s.A,{label:"".concat(C.nodes.length," trigger(s)"),size:"small",variant:"outlined"}),C.hasCycle&&(0,l.jsx)(s.A,{label:"recursive",color:"warning",size:"small"})]}),(0,l.jsx)(c.default,{sx:{flex:1,minHeight:0},children:(0,l.jsx)(B,{wave:C,height:"100%"},C.id)})]}):(0,l.jsx)(c.default,{sx:{height:"100%",display:"flex",alignItems:"center",justifyContent:"center",opacity:.6},children:(0,l.jsx)(r.A,{variant:"body2",children:"Select a wave to open it."})})})]})]})}let q={xs:"calc(100dvh - var(--app-bar-height))",md:"calc(100dvh - var(--app-bar-height) - var(--active-subnav-height))"},J=(0,p.h)("app/waves/page");function K(){return J.debug("Rendering WavesPage"),(0,l.jsx)(U,{height:q})}},23201:(e,t,n)=>{n.d(t,{A:()=>a});var l=n(95155);n(12115);var i=n(5421),o=n(67895),r=n(97430);function a(e){let{show:t,onClick:n,sx:a}=e;return(0,l.jsx)(i.A,{in:t,unmountOnExit:!0,children:(0,l.jsx)(o.A,{size:"small",color:"primary","aria-label":"Back to top",onClick:n,sx:{position:"fixed",bottom:24,right:24,zIndex:1200,...a},children:(0,l.jsx)(r.A,{})})})}},53228:(e,t,n)=>{n.d(t,{G:()=>l});let l={LOG_LEVEL:3,INCLUDE_TOOL_CALLS_IN_RESPONSE:!0,ENABLE_EXECUTION_TRACKER:!1,ENABLE_REVERT_TO_HERE:!1}},64598:(e,t,n)=>{n.d(t,{R:()=>o});var l=n(12115),i=n(97104);function o(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{threshold:n=200,deps:o=[]}=t,r=(0,l.useRef)(null),[a,s]=(0,l.useState)(!1),c=(0,l.useRef)(!1),u=(0,l.useCallback)(()=>{let e=r.current;return e&&e.scrollHeight>e.clientHeight+1?e:null},[]),d=(0,l.useCallback)(()=>{let e=u();return e?e.scrollTop:window.scrollY||document.documentElement.scrollTop||0},[u]),f=(0,l.useCallback)(e=>{let t=u();t?t.scrollTop=e:window.scrollTo(0,e)},[u]);return(0,l.useEffect)(()=>{let t=r.current,l=0,o="function"==typeof window.requestAnimationFrame?window.requestAnimationFrame.bind(window):e=>window.setTimeout(()=>e(0),16),a="function"==typeof window.cancelAnimationFrame?window.cancelAnimationFrame.bind(window):e=>window.clearTimeout(e),c=()=>{let t=d();s(t>n),l&&a(l),l=o(()=>(0,i.vi)(e,t))};return null==t||t.addEventListener("scroll",c,{passive:!0}),window.addEventListener("scroll",c,{passive:!0}),()=>{l&&a(l),null==t||t.removeEventListener("scroll",c),window.removeEventListener("scroll",c)}},[e,n,d]),(0,l.useEffect)(()=>{if(c.current)return;let t=(0,i.Aq)(e,0);if(t<=0){c.current=!0;return}f(t);let l=d();l>0&&(c.current=!0,s(l>n))},o),{ref:r,showBackToTop:a,scrollToTop:(0,l.useCallback)(()=>{let e=u();e?e.scrollTo({top:0,behavior:"smooth"}):window.scrollTo({top:0,behavior:"smooth"}),s(!1)},[u])}}},73288:(e,t,n)=>{n.d(t,{h:()=>s});var l=n(53228);let i={VERBOSE:-1,DEBUG:0,INFO:1,WARN:2,ERROR:3},o="number"==typeof l.G.LOG_LEVEL?l.G.LOG_LEVEL:i.ERROR;function r(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(t>6)return String(e);if(!(e instanceof Error))return e;let n={name:e.name,message:e.message};for(let l of Object.getOwnPropertyNames(e)){if("name"===l||"message"===l)continue;let i=e[l];"function"!=typeof i&&("stack"===l?n.stack=i:"cause"===l?n.cause=r(i,t+1):"errors"===l&&Array.isArray(i)?n.errors=i.map(e=>r(e,t+1)):n[l]=i)}return n}function a(e,t,n,l,a){if(e>=("number"==typeof a?a:o)){if("function"==typeof l)try{l=l()}catch(e){l="[lazy log data threw]"}let o=new Date().toISOString(),a="[".concat(o,"] [").concat(t,"]"),s="".concat(a," ").concat(n);if(void 0!==l)if(l instanceof Error||"object"==typeof l)try{let e=l instanceof Error?r(l):l,t=JSON.stringify(e,(e,t)=>t instanceof Error?r(t):t,2);s+=":\n".concat(t)}catch(e){s+=": [Object cannot be stringified]"}else s+=": ".concat(l);switch(e){case i.VERBOSE:console.debug("[VERBOSE] ".concat(s));break;case i.DEBUG:console.debug(s);break;case i.INFO:console.info(s);break;case i.WARN:console.warn(s);break;case i.ERROR:console.error(s);break;default:console.log(s)}}}function s(e,t){let n,l=((n=e.replace(/^src\//,"")).startsWith("/")&&(n=n.substring(1)),n);return{verbose:(e,n)=>{a(i.VERBOSE,l,e,n,t)},debug:(e,n)=>{a(i.DEBUG,l,e,n,t)},info:(e,n)=>{a(i.INFO,l,e,n,t)},warn:(e,n)=>{a(i.WARN,l,e,n,t)},error:(e,n)=>{a(i.ERROR,l,e,n,t)}}}},97104:(e,t,n)=>{n.d(t,{Aq:()=>i,Xk:()=>r,vi:()=>o});var l=n(12115);function i(e,t){try{let n=window.localStorage.getItem(e);if(null===n)return t;return JSON.parse(n)}catch(e){return t}}function o(e,t){try{window.localStorage.setItem(e,JSON.stringify(t))}catch(e){}}function r(e,t){let[n,r]=(0,l.useState)(()=>i(e,t));return[n,(0,l.useCallback)(t=>{r(n=>{let l="function"==typeof t?t(n):t;return o(e,l),l})},[e])]}}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1576,9140],{19140:(t,e,o)=>{o.r(e),o.d(e,{default:()=>E});var r=o(95155),n=o(12115),a=o(94049),s=o(2300),i=o(25635),l=o(2821),d=o(57001),p=o(81852),u=o(52005),c=o(48116),h=o(66964),m=o(16625),f=o(5356),g=o(85795),v=o(95195);function x(t){return(0,v.Ay)("MuiMobileStepper",t)}(0,g.A)("MuiMobileStepper",["root","positionBottom","positionTop","positionStatic","dots","dot","dotActive","progress"]);var b=o(77765);let y=(0,c.Ay)(s.A,{name:"MuiMobileStepper",slot:"Root",overridesResolver:(t,e)=>{let{ownerState:o}=t;return[e.root,e["position".concat((0,p.A)(o.position))]]}})((0,h.A)(t=>{let{theme:e}=t;return{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",background:(e.vars||e).palette.background.default,padding:8,variants:[{props:t=>{let{position:e}=t;return"top"===e||"bottom"===e},style:{position:"fixed",left:0,right:0,zIndex:(e.vars||e).zIndex.mobileStepper}},{props:{position:"top"},style:{top:0}},{props:{position:"bottom"},style:{bottom:0}}]}})),A=(0,c.Ay)("div",{name:"MuiMobileStepper",slot:"Dots",overridesResolver:(t,e)=>e.dots})({variants:[{props:{variant:"dots"},style:{display:"flex",flexDirection:"row"}}]}),w=(0,c.Ay)("div",{name:"MuiMobileStepper",slot:"Dot",shouldForwardProp:t=>(0,f.A)(t)&&"dotActive"!==t,overridesResolver:(t,e)=>{let{dotActive:o}=t;return[e.dot,o&&e.dotActive]}})((0,h.A)(t=>{let{theme:e}=t;return{variants:[{props:{variant:"dots"},style:{transition:e.transitions.create("background-color",{duration:e.transitions.duration.shortest}),backgroundColor:(e.vars||e).palette.action.disabled,borderRadius:"50%",width:8,height:8,margin:"0 2px"}},{props:{variant:"dots",dotActive:!0},style:{backgroundColor:(e.vars||e).palette.primary.main}}]}})),C=(0,c.Ay)(u.A,{name:"MuiMobileStepper",slot:"Progress",overridesResolver:(t,e)=>e.progress})({variants:[{props:{variant:"progress"},style:{width:"50%"}}]}),k=n.forwardRef(function(t,e){let o,a=(0,m.b)({props:t,name:"MuiMobileStepper"}),{activeStep:s=0,backButton:i,className:u,LinearProgressProps:c,nextButton:h,position:f="bottom",steps:g,variant:v="dots",slots:k={},slotProps:j={},...S}=a,M={...a,activeStep:s,position:f,variant:v};"progress"===v&&(o=1===g?100:Math.ceil(s/(g-1)*100));let T=(t=>{let{classes:e,position:o}=t,r={root:["root","position".concat((0,p.A)(o))],dots:["dots"],dot:["dot"],dotActive:["dotActive"],progress:["progress"]};return(0,d.A)(r,x,e)})(M),R={slots:k,slotProps:{progress:c,...j}},[P,z]=(0,b.A)("root",{ref:e,elementType:y,shouldForwardComponentProp:!0,className:(0,l.A)(T.root,u),externalForwardedProps:{...R,...S},ownerState:M,additionalProps:{square:!0,elevation:0}}),[E,I]=(0,b.A)("dots",{className:T.dots,elementType:A,externalForwardedProps:R,ownerState:M}),[F,N]=(0,b.A)("dot",{elementType:w,externalForwardedProps:R,ownerState:M}),[B,$]=(0,b.A)("progress",{className:T.progress,elementType:C,shouldForwardComponentProp:!0,externalForwardedProps:R,ownerState:M,additionalProps:{value:o,variant:"determinate"}});return(0,r.jsxs)(P,{...z,children:[i,"text"===v&&(0,r.jsxs)(n.Fragment,{children:[s+1," / ",g]}),"dots"===v&&(0,r.jsx)(E,{...I,children:[...Array(g)].map((t,e)=>(0,r.jsx)(F,{...N,className:(0,l.A)(T.dot,N.className,e===s&&T.dotActive),dotActive:e===s},e))}),"progress"===v&&(0,r.jsx)(B,{...$}),h]})});var j=o(91871),S=o(77073),M=o(41983),T=o(20063),R=o(69195),P=o(77326);function z(t){let{top:e,left:o,vw:r,transform:n}=t,a=o;return(n.includes("-50%, -100%")||n.includes("-50%, 0"))&&(a=Math.min(Math.max(o,188),r-180-8)),{top:e,left:a,transform:n}}function E(){let{isActive:t,stepIndex:e,next:o,back:l,endTour:d}=(0,R.useTour)(),p=(0,T.usePathname)(),u=(0,T.useRouter)(),[c,h]=(0,n.useState)(null),m=t?P.$[e]:void 0;if((0,n.useEffect)(()=>{m&&p!==m.path&&u.push(m.path)},[m,p,u]),(0,n.useLayoutEffect)(()=>{if(!m||p!==m.path)return void h(null);let t=0,e=!1,o=()=>{if(m.target){let t=document.querySelector(m.target);if(t){e||(t.scrollIntoView({block:"center",behavior:"smooth"}),e=!0);let o=t.getBoundingClientRect();h({top:o.top,left:o.left,width:o.width,height:o.height})}else h(null)}else h(null);t=window.setTimeout(o,200)};return o(),()=>window.clearTimeout(t)},[m,p,e]),!t||!m)return null;let f=p===m.path&&null!==c,g=function(t,e){let o,r=window.innerWidth,n=window.innerHeight;if(!t||"center"===e)return{top:"50%",left:"50%",transform:"translate(-50%, -50%)"};switch(e){case"top":return z({top:o=t.top-16,left:t.left+t.width/2,vw:r,vh:n,transform:"translate(-50%, -100%)"});case"left":return z({top:o=t.top+t.height/2,left:t.left-16,vw:r,vh:n,transform:"translate(-100%, -50%)"});case"right":return z({top:o=t.top+t.height/2,left:t.left+t.width+16,vw:r,vh:n,transform:"translate(0, -50%)"});default:return z({top:o=t.top+t.height+16,left:t.left+t.width/2,vw:r,vh:n,transform:"translate(-50%, 0)"})}}(f?c:null,m.placement),v=0===e,x=e===P.$.length-1;return(0,r.jsxs)(a.default,{sx:{position:"fixed",inset:0,zIndex:t=>t.zIndex.modal+200,pointerEvents:"none"},children:[!f&&(0,r.jsx)(a.default,{sx:{position:"absolute",inset:0,backgroundColor:"rgba(0,0,0,0.55)",pointerEvents:"auto"}}),f&&c&&(0,r.jsx)(a.default,{sx:{position:"absolute",top:c.top-8,left:c.left-8,width:c.width+16,height:c.height+16,borderRadius:1.5,boxShadow:"0 0 0 9999px rgba(0,0,0,0.55)",outline:t=>"2px solid ".concat(t.palette.primary.main),transition:"all 0.2s ease",pointerEvents:"none"}}),(0,r.jsxs)(s.A,{elevation:8,sx:{position:"absolute",width:360,maxWidth:"calc(100vw - 32px)",p:2.5,pointerEvents:"auto",...g},children:[(0,r.jsx)(M.A,{"aria-label":"Close tour",size:"small",onClick:d,sx:{position:"absolute",top:6,right:6},children:(0,r.jsx)(S.A,{fontSize:"small"})}),(0,r.jsx)(i.A,{variant:"h6",gutterBottom:!0,sx:{pr:3},children:m.title}),m.body.split("\n\n").map((t,e)=>(0,r.jsx)(i.A,{variant:"body2",color:"text.secondary",sx:{mb:1.5},children:t},e)),(0,r.jsx)(k,{variant:"dots",steps:P.$.length,position:"static",activeStep:e,sx:{background:"transparent",px:0,mt:1},nextButton:(0,r.jsx)(j.A,{size:"small",variant:"contained",onClick:o,children:x?"Finish":"Next"}),backButton:(0,r.jsx)(j.A,{size:"small",onClick:l,disabled:v,children:"Back"})}),(0,r.jsx)(a.default,{sx:{display:"flex",justifyContent:"center",mt:.5},children:!x&&(0,r.jsx)(j.A,{size:"small",color:"inherit",onClick:d,sx:{opacity:.7},children:"Skip tour"})})]})]})}},69195:(t,e,o)=>{o.r(e),o.d(e,{TourProvider:()=>p,useTour:()=>d});var r=o(95155),n=o(12115),a=o(9164),s=o(77326);let i=(0,o(73288).h)("frontend/contexts/TourContext"),l=(0,n.createContext)({isActive:!1,stepIndex:0,startTour:()=>{},next:()=>{},back:()=>{},endTour:()=>{}}),d=()=>(0,n.useContext)(l),p=t=>{var e;let{children:o}=t,{settings:d,updateSettings:p,isLoading:u,settingsHydrated:c}=(0,a.useStorage)(),[h,m]=(0,n.useState)(!1),[f,g]=(0,n.useState)(0),v=(0,n.useRef)(!1),x=(0,n.useCallback)(()=>{var t;p({...d,onboarding:{...null!=(t=d.onboarding)?t:{},completed:!0}}).catch(t=>i.warn("Failed to persist onboarding completion",t))},[d,p]),b=(0,n.useCallback)(()=>{i.info("Starting guided tour"),g(0),m(!0)},[]),y=(0,n.useCallback)(()=>{i.info("Ending guided tour"),m(!1),x()},[x]),A=(0,n.useCallback)(()=>{g(t=>t>=s.$.length-1?(m(!1),x(),t):t+1)},[x]),w=(0,n.useCallback)(()=>{g(t=>Math.max(0,t-1))},[]);return(0,n.useEffect)(()=>{var t;u||!c||v.current||(v.current=!0,(null==(t=d.onboarding)?void 0:t.completed)!==!0&&(i.info("First run detected — auto-starting guided tour"),b()))},[u,c,null==(e=d.onboarding)?void 0:e.completed,b]),(0,r.jsx)(l.Provider,{value:{isActive:h,stepIndex:f,startTour:b,next:A,back:w,endTour:y},children:o})}},77073:(t,e,o)=>{o.d(e,{A:()=>a});var r=o(15485),n=o(95155);let a=(0,r.A)((0,n.jsx)("path",{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close")},77326:(t,e,o)=>{o.d(e,{$:()=>r});let r=[{id:"add-model",path:"/models",target:'[data-tour="add-model"]',placement:"bottom",title:"1. Start by connecting your AI",body:"This is the one required setup step: every agent and conversation needs an AI model.\n\nChoose “Connect AI,” select the provider you use, and follow the connection steps. Recommended settings are already selected."},{id:"new-flow",path:"/flows",target:'[data-tour="new-flow"]',placement:"bottom",title:"2. Create your first agent",body:"Choose “Start simple” to open the easy recipe builder. Give your agent a name, then explain each job in everyday language.\n\nFLUJO handles the technical start, finish, and connections for you. You can open the expert editor later if you ever need it."},{id:"chat-input",path:"/chat",target:'[data-tour="chat-input"]',placement:"top",title:"3. Talk to your agent",body:"Choose the agent you just created, type a real request, and send it. That is the full setup.\n\nConnected Apps are optional; add one later only when an agent needs files or another service."}]}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1576,9195],{1877:(e,t,n)=>{n.d(t,{Hm:()=>o,xc:()=>r,yo:()=>i});let a=["key","secret","token","password"],r=e=>a.some(t=>e.toLowerCase().includes(t)),o=e=>r(e)||"authorization"===e.trim().toLowerCase(),i=e=>{if(!e)return e;if(e.includes("_-_-_")){let t=e.split("_-_-_");return 3===t.length?t[2]:e}let t=/^mcp_(.+)_[0-9a-z]+$/.exec(e);if(t&&t[1])return t[1];let n=e.indexOf("__");return n>0&&n+2<e.length?e.slice(n+2):e}},9164:(e,t,n)=>{n.r(t),n.d(t,{StorageProvider:()=>y,default:()=>p,useStorage:()=>u});var a=n(95155),r=n(12115),o=n(29692),i=n(1877),s=n(73288),c=n(31373);let l=(0,s.h)("frontend/contexts/StorageContext"),d=(0,r.createContext)({setKey:async()=>{},changeKey:async()=>!1,verifyKey:async()=>!1,isEncryptionInitialized:async()=>!1,globalEnvVars:{},setGlobalEnvVars:async()=>{},deleteGlobalEnvVar:async()=>{},encryptValue:async()=>null,decryptValue:async()=>null,isUserEncryptionEnabled:async()=>!1,isLoading:!0,settings:{speech:{enabled:!0},update:{checkOnStartup:!1}},settingsHydrated:!1,updateSettings:async()=>{}}),u=()=>(0,r.useContext)(d),y=e=>{let{children:t}=e,[n,s]=(0,r.useState)(!1),[u,y]=(0,r.useState)(!1),[p,g]=(0,r.useState)({}),[E,h]=(0,r.useState)({speech:{enabled:!0},update:{checkOnStartup:!1}}),f=(0,r.useCallback)(async()=>{l.debug("isEncryptionInitialized: Entering method");try{let e=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"check_initialized"})});if(!e.ok)throw Error("Failed to check encryption status");let t=await e.json();return!0===t.initialized}catch(e){return l.warn("isEncryptionInitialized: Failed to check encryption status:",e),!1}},[]),_=(0,r.useCallback)(async e=>{l.debug("setKey: Entering method");try{if(!(await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"initialize",password:e})})).ok)throw Error("Failed to set encryption key")}catch(e){l.warn("setKey: Failed to set encryption key:",e)}},[]),S=(0,r.useCallback)(async(e,t)=>{l.debug("changeKey: Entering method");try{let n=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"change_password",oldPassword:e,newPassword:t})});if(!n.ok)throw Error("Failed to change encryption key");let a=await n.json();if(a.success&&sessionStorage.getItem("encryption_token")){let e=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"authenticate",password:t})});if(e.ok){let t=await e.json();t.success&&t.token&&(sessionStorage.setItem("encryption_token",t.token),sessionStorage.setItem("encryption_authenticated","true"),sessionStorage.removeItem("encryption_key"))}}return!0===a.success}catch(e){return l.warn("changeKey: Failed to change encryption key:",e),!1}},[]),b=(0,r.useCallback)(async e=>{l.debug("verifyKey: Entering method");try{let t=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"verify_password",password:e})});if(!t.ok)throw Error("Failed to verify encryption key");let n=await t.json();return n.valid&&n.token&&(sessionStorage.setItem("encryption_token",n.token),sessionStorage.setItem("encryption_authenticated","true"),sessionStorage.removeItem("encryption_key")),!0===n.valid}catch(e){return l.warn("verifyKey: Failed to verify encryption key:",e),!1}},[]),m=(0,r.useCallback)(async()=>{let e={speech:{enabled:!0},update:{checkOnStartup:!1}};try{var t;let n=await fetch("/api/storage?key=".concat(encodeURIComponent(o.Zg.SPEECH_SETTINGS),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(e))));if(!n.ok)return void l.debug("loadSettings: settings read not ok, keeping defaults",{status:n.status});let a=await n.json();l.debug("Loaded settings from storage",{settings:a.value}),h(null!=(t=a.value)?t:e),y(!0)}catch(e){l.warn("loadSettings: failed to load settings:",e)}},[]);(0,r.useEffect)(()=>{let e=()=>{l.info("Encryption unlocked signal received; reloading settings"),m()};return window.addEventListener(c.ZB,e),()=>window.removeEventListener(c.ZB,e)},[m]),(0,r.useEffect)(()=>{(async()=>{l.debug("loadData: Entering method");try{l.info("Calling initialization API to verify storage");let e=await fetch("/api/init");if(e.ok)l.info("Storage initialization completed successfully");else{let t=await e.json();l.warn("Storage initialization warning:",t.error)}await f()||await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"initialize_default"})});let t=await fetch("/api/env?includeSecrets=false");if(t.ok){let e=await t.json();l.debug("Loaded environment variables",{count:Object.keys(e.variables||{}).length}),g(e.variables||{})}else l.error("loadData: Failed to load environment variables"),g({});await m(),s(!0)}catch(e){l.error("loadData: Error loading data:",e),s(!0)}})()},[f,m]);let v=(0,r.useCallback)(async(e,t)=>{l.debug("encryptValue: Entering method");try{let n=sessionStorage.getItem("encryption_token"),a=sessionStorage.getItem("encryption_key"),r={action:"encrypt",data:e};n?r.token=n:t?r.password=t:a&&(r.password=a);let o=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!o.ok)throw Error("Failed to encrypt value");return(await o.json()).result}catch(e){return l.warn("encryptValue: Failed to encrypt value:",e),null}},[]),w=(0,r.useCallback)(async(e,t)=>(l.debug("decryptValue: Entering method - THIS METHOD IS DEPRECATED"),l.warn("decryptValue: Frontend decryption is deprecated for security reasons"),null),[]),T=(0,r.useCallback)(async()=>{l.debug("isUserEncryptionEnabled: Entering method");try{let e=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"check_user_encryption"})});if(!e.ok)throw Error("Failed to check user encryption status");let t=await e.json();return!0===t.userEncryption}catch(e){return l.warn("isUserEncryptionEnabled: Failed to check user encryption status:",e),!1}},[]),k=(0,r.useCallback)(async e=>{l.debug("setGlobalEnvVars: Entering method");try{await f()||await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"initialize_default"})});let t=await fetch("/api/env",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"setAll",variables:e})});if(!t.ok){let e=await t.json();l.error("setGlobalEnvVars: Failed to set environment variables:",e.error);return}let n={};for(let[t,a]of Object.entries(e)){let e="object"==typeof a&&null!==a&&"value"in a?a.value:a,r="object"==typeof a&&null!==a&&"metadata"in a?a.metadata:{isSecret:(0,i.xc)(t)};r.isSecret?n[t]={value:"********",metadata:r}:n[t]={value:e,metadata:r}}g(n)}catch(e){l.error("setGlobalEnvVars: Error setting environment variables:",e)}},[f]),O=(0,r.useCallback)(async e=>{l.debug("deleteGlobalEnvVar: Deleting environment variable: ".concat(e));try{let t=await fetch("/api/env",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"delete",key:e})});if(!t.ok){let e=await t.json();l.error("deleteGlobalEnvVar: Failed to delete environment variable:",e.error);return}g(t=>{let n={...t};return delete n[e],n})}catch(e){l.error("deleteGlobalEnvVar: Error deleting environment variable:",e)}},[]),C=(0,r.useCallback)(async e=>{l.debug("updateSettings: Updating settings",{newSettings:e});try{await (0,o.VH)(o.Zg.SPEECH_SETTINGS,e),h(e)}catch(e){l.error("updateSettings: Error updating settings:",e)}},[]);return(0,a.jsx)(d.Provider,{value:{setKey:_,changeKey:S,verifyKey:b,isEncryptionInitialized:f,globalEnvVars:p,setGlobalEnvVars:k,deleteGlobalEnvVar:O,encryptValue:v,decryptValue:w,isUserEncryptionEnabled:T,isLoading:!n,settings:E,settingsHydrated:u,updateSettings:C},children:t})},p=d},27156:(e,t,n)=>{n.d(t,{Z:()=>a});var a=function(e){return e.MODELS="models",e.FLOWS="flows",e.CHAT_HISTORY="history",e.THEME="theme",e.THEME_STYLE="theme_style",e.ENCRYPTION_KEY="encryption_key",e.MCP_SERVERS="mcp_servers",e.GLOBAL_ENV_VARS="global_env_vars",e.CURRENT_CONVERSATION_ID="current_conversation_id",e.SELECTED_FLOW_ID="selected_flow_id",e.LAST_PICKED_FLOW_ID="last_picked_flow_id",e.SPEECH_SETTINGS="speech_settings",e.SPOTLIGHT_SERVERS="spotlight_servers",e.PLANNED_EXECUTIONS="planned_executions",e.MCP_AUTO_INSTALL_SETTINGS="mcp_auto_install_settings",e.MCP_QUALITY_SETTINGS="mcp_quality_settings",e.RUN_RESOURCE_SETTINGS="run_resource_settings",e.KV_STORE_SETTINGS="kv_store_settings",e.PENDING_APPROVALS="pending_approvals",e.MCP_INTERNAL_OVERRIDES="mcp_internal_overrides",e.MCP_INTERNAL_SERVERS_MIGRATION_V1="mcp_internal_servers_migration_v1",e.MCP_INTERNAL_CAPABILITIES_MIGRATION_V2="mcp_internal_capabilities_migration_v2",e.MCP_INTERNAL_BROWSER_MIGRATION_V3="mcp_internal_browser_migration_v3",e.MCP_SHIPPED_SERVERS_MIGRATION_V4="mcp_shipped_servers_migration_v4",e.PACKAGE_INSTALLS="package_installs",e.EXPERIMENTAL_SETTINGS="experimental_settings",e.REGISTRY_ACCOUNT="registry_account",e.REGISTRY_SETTINGS="registry_settings",e.TELEMETRY_STATE="telemetry_state",e}({})},29692:(e,t,n)=>{n.d(t,{Zg:()=>a.Z,YM:()=>c,VH:()=>s,Mj:()=>i});var a=n(27156),r=n(12115);let o=(0,n(73288).h)("utils/storage/frontend.ts");function i(e,t){o.verbose("useLocalStorage: Entering method");let[n,a]=(0,r.useState)(t),[i,s]=(0,r.useState)(!0),c=(0,r.useRef)(n);return(0,r.useEffect)(()=>{c.current=n},[n]),(0,r.useEffect)(()=>{(async()=>{o.verbose("loadValue: Entering method");try{let n=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t)))),r=await n.json();n.ok&&a(r.value)}catch(t){o.warn('Error reading storage key "'.concat(e,'":'),t)}finally{s(!1)}})()},[e]),[n,(0,r.useCallback)(async t=>{o.verbose("setValue: Entering method");try{let n=t instanceof Function?t(c.current):t;if(a(n),!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:n})})).ok)throw Error("Failed to save value")}catch(t){o.warn('Error setting storage key "'.concat(e,'":'),t)}},[e]),i]}let s=async(e,t)=>{o.verbose("saveItem: Entering method");try{if(!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:t})})).ok)throw Error("Failed to save item")}catch(e){throw o.error("Error saving to storage:",e),e}},c=async(e,t)=>{o.verbose("loadItem: Entering method");try{let n=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t))));if(!n.ok)throw Error("Failed to load item");return(await n.json()).value}catch(e){return o.error("Error loading from storage:",e),t}}},31373:(e,t,n)=>{n.d(t,{UJ:()=>a,ZB:()=>r,bx:()=>i});let a="flujo:encryption-locked",r="flujo:encryption-unlocked",o=!1;function i(){if(o||"function"!=typeof window.fetch)return;o=!0;let e=window.fetch.bind(window);window.fetch=async function(){for(var t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];let o=await e(...n);return 423===o.status&&function(){try{sessionStorage.removeItem("encryption_authenticated"),sessionStorage.removeItem("encryption_token")}catch(e){}window.dispatchEvent(new CustomEvent(a))}(),o}}},53228:(e,t,n)=>{n.d(t,{G:()=>a});let a={LOG_LEVEL:3,INCLUDE_TOOL_CALLS_IN_RESPONSE:!0,ENABLE_EXECUTION_TRACKER:!1,ENABLE_REVERT_TO_HERE:!1}},69195:(e,t,n)=>{n.r(t),n.d(t,{TourProvider:()=>d,useTour:()=>l});var a=n(95155),r=n(12115),o=n(9164),i=n(77326);let s=(0,n(73288).h)("frontend/contexts/TourContext"),c=(0,r.createContext)({isActive:!1,stepIndex:0,startTour:()=>{},next:()=>{},back:()=>{},endTour:()=>{}}),l=()=>(0,r.useContext)(c),d=e=>{var t;let{children:n}=e,{settings:l,updateSettings:d,isLoading:u,settingsHydrated:y}=(0,o.useStorage)(),[p,g]=(0,r.useState)(!1),[E,h]=(0,r.useState)(0),f=(0,r.useRef)(!1),_=(0,r.useCallback)(()=>{var e;d({...l,onboarding:{...null!=(e=l.onboarding)?e:{},completed:!0}}).catch(e=>s.warn("Failed to persist onboarding completion",e))},[l,d]),S=(0,r.useCallback)(()=>{s.info("Starting guided tour"),h(0),g(!0)},[]),b=(0,r.useCallback)(()=>{s.info("Ending guided tour"),g(!1),_()},[_]),m=(0,r.useCallback)(()=>{h(e=>e>=i.$.length-1?(g(!1),_(),e):e+1)},[_]),v=(0,r.useCallback)(()=>{h(e=>Math.max(0,e-1))},[]);return(0,r.useEffect)(()=>{var e;u||!y||f.current||(f.current=!0,(null==(e=l.onboarding)?void 0:e.completed)!==!0&&(s.info("First run detected — auto-starting guided tour"),S()))},[u,y,null==(t=l.onboarding)?void 0:t.completed,S]),(0,a.jsx)(c.Provider,{value:{isActive:p,stepIndex:E,startTour:S,next:m,back:v,endTour:b},children:n})}},73288:(e,t,n)=>{n.d(t,{h:()=>c});var a=n(53228);let r={VERBOSE:-1,DEBUG:0,INFO:1,WARN:2,ERROR:3},o="number"==typeof a.G.LOG_LEVEL?a.G.LOG_LEVEL:r.ERROR;function i(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(t>6)return String(e);if(!(e instanceof Error))return e;let n={name:e.name,message:e.message};for(let a of Object.getOwnPropertyNames(e)){if("name"===a||"message"===a)continue;let r=e[a];"function"!=typeof r&&("stack"===a?n.stack=r:"cause"===a?n.cause=i(r,t+1):"errors"===a&&Array.isArray(r)?n.errors=r.map(e=>i(e,t+1)):n[a]=r)}return n}function s(e,t,n,a,s){if(e>=("number"==typeof s?s:o)){if("function"==typeof a)try{a=a()}catch(e){a="[lazy log data threw]"}let o=new Date().toISOString(),s="[".concat(o,"] [").concat(t,"]"),c="".concat(s," ").concat(n);if(void 0!==a)if(a instanceof Error||"object"==typeof a)try{let e=a instanceof Error?i(a):a,t=JSON.stringify(e,(e,t)=>t instanceof Error?i(t):t,2);c+=":\n".concat(t)}catch(e){c+=": [Object cannot be stringified]"}else c+=": ".concat(a);switch(e){case r.VERBOSE:console.debug("[VERBOSE] ".concat(c));break;case r.DEBUG:console.debug(c);break;case r.INFO:console.info(c);break;case r.WARN:console.warn(c);break;case r.ERROR:console.error(c);break;default:console.log(c)}}}function c(e,t){let n,a=((n=e.replace(/^src\//,"")).startsWith("/")&&(n=n.substring(1)),n);return{verbose:(e,n)=>{s(r.VERBOSE,a,e,n,t)},debug:(e,n)=>{s(r.DEBUG,a,e,n,t)},info:(e,n)=>{s(r.INFO,a,e,n,t)},warn:(e,n)=>{s(r.WARN,a,e,n,t)},error:(e,n)=>{s(r.ERROR,a,e,n,t)}}}},77326:(e,t,n)=>{n.d(t,{$:()=>a});let a=[{id:"add-model",path:"/models",target:'[data-tour="add-model"]',placement:"bottom",title:"1. Start by connecting your AI",body:"This is the one required setup step: every agent and conversation needs an AI model.\n\nChoose “Connect AI,” select the provider you use, and follow the connection steps. Recommended settings are already selected."},{id:"new-flow",path:"/flows",target:'[data-tour="new-flow"]',placement:"bottom",title:"2. Create your first agent",body:"Choose “Start simple” to open the easy recipe builder. Give your agent a name, then explain each job in everyday language.\n\nFLUJO handles the technical start, finish, and connections for you. You can open the expert editor later if you ever need it."},{id:"chat-input",path:"/chat",target:'[data-tour="chat-input"]',placement:"top",title:"3. Talk to your agent",body:"Choose the agent you just created, type a real request, and send it. That is the full setup.\n\nConnected Apps are optional; add one later only when an agent needs files or another service."}]}}]);
@@ -1 +0,0 @@
1
- "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9524],{17427:(e,t,r)=>{r.d(t,{A:()=>f});var o=r(95155),a=r(12115),s=r(25635),n=r(94049),l=r(99944),i=r(9957),c=r(52641),d=r(95436),u=r(55606),p=r(86973),h=r(9562),m=r(9164),x=r(11433);let f=e=>{var t;let{schema:r,values:f,onChange:b,size:g="small"}=e,{globalEnvVars:y}=(0,m.useStorage)(),v=(0,a.useMemo)(()=>Object.keys(y).sort((e,t)=>e.localeCompare(t)),[y]),[j,A]=(0,a.useState)({}),w=null!=(t=null==r?void 0:r.properties)?t:{},S=Array.isArray(null==r?void 0:r.required)?r.required:[],k=Object.keys(w);if(0===k.length)return(0,o.jsx)(s.A,{variant:"body2",color:"text.secondary",children:"This tool takes no parameters."});let C=(e,t)=>{let r={...f};void 0===t?delete r[e]:r[e]=t,b(r)};return(0,o.jsx)(n.default,{sx:{display:"flex",flexDirection:"column",gap:2},children:k.map(e=>{var t,r;let a=null!=(t=w[e])?t:{},m=S.includes(e)?"".concat(e," *"):e,b="string"==typeof a.description?a.description:"";if("boolean"===a.type)return(0,o.jsx)(l.A,{control:(0,o.jsx)(i.A,{size:g,checked:!0===f[e],onChange:t=>C(e,t.target.checked)}),label:(0,o.jsxs)(n.default,{children:[(0,o.jsx)(s.A,{variant:"body2",children:m}),b&&(0,o.jsx)(s.A,{variant:"caption",color:"text.secondary",children:b})]})},e);if(Array.isArray(a.enum)&&a.enum.length>0){let t=f[e];return(0,o.jsxs)(c.A,{size:g,fullWidth:!0,children:[(0,o.jsx)(d.A,{id:"schema-param-".concat(e),children:m}),(0,o.jsx)(u.A,{labelId:"schema-param-".concat(e),label:m,value:a.enum.includes(t)?t:"",onChange:t=>C(e,t.target.value),children:a.enum.map(e=>(0,o.jsx)(p.A,{value:e,children:String(e)},String(e)))}),b&&(0,o.jsx)(s.A,{variant:"caption",color:"text.secondary",sx:{mt:.5,mx:1.75},children:b})]},e)}if("number"===a.type||"integer"===a.type)return(0,o.jsx)(h.A,{fullWidth:!0,size:g,type:"number",label:m,value:void 0!==f[e]?String(f[e]):"",onChange:t=>{let r=t.target.value;if(""===r)return void C(e,void 0);let o="integer"===a.type?parseInt(r,10):parseFloat(r);C(e,Number.isNaN(o)?void 0:o)},helperText:b},e);if("object"===a.type||"array"===a.type){let t=null!=(r=j[e])?r:void 0!==f[e]?JSON.stringify(f[e],null,2):"",s=null;if(t.trim())try{JSON.parse(t)}catch(e){s="Not valid JSON yet"}return(0,o.jsx)(h.A,{fullWidth:!0,size:g,multiline:!0,minRows:2,label:"".concat(m," (JSON ").concat(a.type,")"),value:t,error:!!s,helperText:null!=s?s:b,onChange:t=>{let r=t.target.value;if(A(t=>({...t,[e]:r})),!r.trim())return void C(e,void 0);try{C(e,JSON.parse(r))}catch(e){}},slotProps:{input:{sx:{fontFamily:"monospace",fontSize:13}}}},e)}return(0,o.jsxs)(n.default,{children:[(0,o.jsx)(s.A,{variant:"body2",component:"label",sx:{display:"block",mb:.5},children:m}),(0,o.jsx)(x.Ay,{value:void 0!==f[e]?String(f[e]):"",onChange:t=>C(e,""===t?void 0:t),globalNames:v,placeholder:b||e,multiline:!1,minRows:1,ariaLabel:m}),b&&(0,o.jsx)(s.A,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:.5,mx:1.75},children:b})]},e)})})}},62640:(e,t,r)=>{r.d(t,{A:()=>z});var o=r(95155),a=r(12115),s=r(2778),n=r(52363),l=r(65036),i=r(94049),c=r(78470),d=r(41983),u=r(9562),p=r(28548),h=r(22003),m=r(4474),x=r(25635),f=r(41602),b=r(73707),g=r(49501),y=r(17681),v=r(75912),j=r(91871),A=r(80007),w=r(74482),S=r(40171),k=r(36944);let C=(0,r(73288).h)("frontend/components/shared/FolderPickerDialog"),z=e=>{let{open:t,title:r="Choose a folder",selectFiles:z=!1,initialPath:O,onClose:P,onSelect:U}=e,[T,E]=(0,a.useState)(null),[N,F]=(0,a.useState)(""),[I,R]=(0,a.useState)(!1),[W,D]=(0,a.useState)(null),M=(0,a.useCallback)(async e=>{R(!0),D(null);try{let t=e?"?path=".concat(encodeURIComponent(e)):"",r=await fetch("/api/browse".concat(t)),o=await r.json();if(!r.ok||o.error)return void D(o.error||"HTTP ".concat(r.status));E(o),F(o.path)}catch(e){C.warn("Browse failed",e),D("Could not reach the backend to browse folders.")}finally{R(!1)}},[]);(0,a.useEffect)(()=>{t?M(O||void 0):(E(null),D(null))},[t,O,M]);let J=e=>{U(e),P()};return(0,o.jsxs)(s.A,{open:t,onClose:P,maxWidth:"sm",fullWidth:!0,children:[(0,o.jsx)(n.A,{children:r}),(0,o.jsxs)(l.A,{dividers:!0,sx:{display:"flex",flexDirection:"column",gap:1.5},children:[(0,o.jsxs)(i.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,o.jsx)(c.A,{title:"Up one folder",children:(0,o.jsx)("span",{children:(0,o.jsx)(d.A,{size:"small",disabled:!(null==T?void 0:T.parent)||I,onClick:()=>(null==T?void 0:T.parent)&&void M(T.parent),children:(0,o.jsx)(S.A,{fontSize:"small"})})})}),(0,o.jsx)(c.A,{title:"Home folder",children:(0,o.jsx)("span",{children:(0,o.jsx)(d.A,{size:"small",disabled:I,onClick:()=>void M(),children:(0,o.jsx)(k.A,{fontSize:"small"})})})}),(0,o.jsx)(u.A,{fullWidth:!0,size:"small",value:N,onChange:e=>F(e.target.value),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),M(N))},placeholder:"Type a path and press Enter"})]}),T&&T.drives.length>0&&(0,o.jsx)(i.default,{sx:{display:"flex",gap:.75,flexWrap:"wrap"},children:T.drives.map(e=>(0,o.jsx)(p.A,{label:e,size:"small",variant:T.path.toLowerCase().startsWith(e.toLowerCase())?"filled":"outlined",onClick:()=>void M(e)},e))}),W&&(0,o.jsx)(h.A,{severity:"error",children:W}),(0,o.jsxs)(i.default,{sx:{minHeight:240,maxHeight:"45vh",overflow:"auto",border:1,borderColor:"divider",borderRadius:1},children:[I&&(0,o.jsx)(i.default,{sx:{display:"flex",justifyContent:"center",py:4},children:(0,o.jsx)(m.default,{size:24})}),!I&&T&&0===T.entries.length&&(0,o.jsx)(x.A,{variant:"body2",color:"text.secondary",sx:{p:2},children:"This folder is empty."}),!I&&(0,o.jsx)(f.A,{dense:!0,disablePadding:!0,children:null==T?void 0:T.entries.map(e=>(0,o.jsxs)(b.A,{disabled:!e.isDirectory&&!z,onClick:()=>e.isDirectory?void M(e.path):J(e.path),children:[(0,o.jsx)(g.A,{sx:{minWidth:34},children:e.isDirectory?(0,o.jsx)(A.A,{fontSize:"small",color:"primary"}):(0,o.jsx)(w.A,{fontSize:"small"})}),(0,o.jsx)(y.A,{primary:e.name,primaryTypographyProps:{noWrap:!0}})]},e.path))})]})]}),(0,o.jsxs)(v.A,{children:[(0,o.jsx)(j.A,{onClick:P,children:"Cancel"}),(0,o.jsx)(j.A,{variant:"contained",disabled:!T||I,onClick:()=>T&&J(T.path),children:"Select this folder"})]})]})}},70272:(e,t,r)=>{function o(e){let t={};if(!e)return t;for(let[r,o]of Object.entries(e))t[r]=o&&"object"==typeof o&&"value"in o?o.value:"string"==typeof o?o:"";return t}function a(e){let t,r=[],o=[];if("string"==typeof e)try{t=JSON.parse(e)}catch(e){return{servers:o,errors:["Invalid JSON: ".concat(e.message)]}}else t=e;if(!t||"object"!=typeof t)return{servers:o,errors:["Expected a JSON object."]};let a=t,s=a.mcpServers&&"object"==typeof a.mcpServers?a.mcpServers:a;if(0===Object.keys(s).length)return{servers:o,errors:['No servers found. Expected an "mcpServers" object.']};for(let[e,t]of Object.entries(s)){var n;if(!t||"object"!=typeof t){r.push('"'.concat(e,'": entry is not an object.'));continue}let a=function(e){let t=(e.transport||e.type||"").toString().toLowerCase().trim();if(!t)return"stdio";switch(t){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}}(t);if(!a){r.push('"'.concat(e,'": unknown transport type "').concat(t.type||t.transport,'".'));continue}let s={};if(t.env&&"object"==typeof t.env)for(let[e,r]of Object.entries(t.env))s[e]="string"==typeof r?r:String(null!=r?r:"");let l={name:e,env:s,disabled:null!=(n=t.disabled)&&n,autoApprove:Array.isArray(t.autoApprove)?t.autoApprove:[],rootPath:"",_buildCommand:"",_installCommand:""};if("stdio"===a){if(!t.command||"string"!=typeof t.command){r.push('"'.concat(e,'": stdio server is missing a "command".'));continue}o.push({...l,transport:"stdio",command:t.command,args:Array.isArray(t.args)?t.args:[]})}else if("websocket"===a){let a=t.url||t.websocketUrl;if(!a){r.push('"'.concat(e,'": websocket server is missing a "url".'));continue}o.push({...l,transport:"websocket",websocketUrl:a})}else{let s=t.url||t.serverUrl;if(!s){r.push('"'.concat(e,'": ').concat(a,' server is missing a "url".'));continue}let n=t.headers&&"object"==typeof t.headers?t.headers:void 0;o.push({...l,transport:a,serverUrl:s,...n?{headers:n}:{}})}}return{servers:o,errors:r}}r.d(t,{_i:()=>s,CZ:()=>l,Kt:()=>n});let s=[{id:"claude",label:"Claude",fileName:"mcp_config.json",export:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=(t.proxyBaseUrl||"").replace(/\/$/,""),a={};for(let t of e){if(t.exposeAsMcpServer){a[t.name]={type:"http",url:"".concat(r,"/mcp-proxy/").concat(t.name)};continue}let e={},s=o(t.env);switch(t.transport){case"stdio":e.command=t.command,e.args=t.args||[],Object.keys(s).length>0&&(e.env=s);break;case"streamable":e.type="http",e.url=t.serverUrl,t.headers&&Object.keys(t.headers).length>0&&(e.headers=o(t.headers)),Object.keys(s).length>0&&(e.env=s);break;case"sse":e.type="sse",e.url=t.serverUrl,t.headers&&Object.keys(t.headers).length>0&&(e.headers=o(t.headers)),Object.keys(s).length>0&&(e.env=s);break;case"websocket":e.type="ws",e.url=t.websocketUrl,Object.keys(s).length>0&&(e.env=s);break;default:Object.keys(s).length>0&&(e.env=s)}a[t.name]=e}return{mcpServers:a}},import:a},{id:"cline",label:"Cline",fileName:"cline_mcp_settings.json",export:function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=(t.proxyBaseUrl||"").replace(/\/$/,""),a={};for(let t of e){var s,n;let e={disabled:null!=(s=t.disabled)&&s,autoApprove:null!=(n=t.autoApprove)?n:[],timeout:60};if(t.exposeAsMcpServer){a[t.name]={...e,type:"streamableHttp",url:"".concat(r,"/mcp-proxy/").concat(t.name)};continue}let l=o(t.env),i={...e};switch(t.transport){case"stdio":i.command=t.command,i.args=t.args||[],Object.keys(l).length>0&&(i.env=l);break;case"streamable":i.type="streamableHttp",i.url=t.serverUrl,t.headers&&Object.keys(t.headers).length>0&&(i.headers=o(t.headers));break;case"sse":i.type="sse",i.url=t.serverUrl,t.headers&&Object.keys(t.headers).length>0&&(i.headers=o(t.headers));break;case"websocket":i.type="ws",i.url=t.websocketUrl;break;default:Object.keys(l).length>0&&(i.env=l)}a[t.name]=i}return{mcpServers:a}},import:function(e){return a(e)}}];function n(e){var t;return null!=(t=s.find(t=>t.id===e))?t:s[0]}function l(e,t,r){let o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"claude",a=(r||"").replace(/\/$/,"");return JSON.stringify(t?n(o).export([t],{proxyBaseUrl:a}):{mcpServers:{[e]:{type:"http",url:"".concat(a,"/mcp-proxy/").concat(e)}}},null,2)}},79508:(e,t,r)=>{r.d(t,{default:()=>c});var o=r(95155),a=r(33567),s=r(94049),n=r(80777),l=r(25635),i=r(8532);function c(e){let{title:t,description:r,eyebrow:c,icon:d,leading:u,badge:p,actions:h,compact:m=!1,maxWidth:x=1440}=e,f=(0,a.A)();return(0,o.jsx)(s.default,{component:"header",sx:{position:"relative",overflow:"hidden",borderBottom:1,borderColor:"divider",background:"linear-gradient(110deg, ".concat((0,i.X4)(f.palette.primary.main,"dark"===f.palette.mode?.09:.055),", transparent 38%, ").concat((0,i.X4)(f.palette.secondary.main,.045),")"),"&::after":{position:"absolute",top:-90,right:"8%",width:220,height:160,borderRadius:"50%",content:'""',pointerEvents:"none",background:"radial-gradient(circle, ".concat((0,i.X4)(f.palette.primary.main,.16),", transparent 68%)"),filter:"blur(20px)"}},children:(0,o.jsxs)(s.default,{sx:{position:"relative",zIndex:1,display:"flex",width:"100%",maxWidth:x,mx:"auto",px:{xs:2,sm:3,lg:4},py:m?{xs:1.8,sm:2}:{xs:2.2,sm:2.8},alignItems:{xs:"flex-start",md:"center"},justifyContent:"space-between",flexDirection:{xs:"column",md:"row"},gap:2},children:[(0,o.jsxs)(n.A,{direction:"row",spacing:1.5,alignItems:"center",sx:{minWidth:0},children:[u,d&&(0,o.jsx)(s.default,{"aria-hidden":"true",sx:{display:"grid",width:m?40:46,height:m?40:46,flexShrink:0,placeItems:"center",border:"1px solid ".concat((0,i.X4)(f.palette.primary.main,.24)),borderRadius:m?2.8:3.2,color:"primary.light",bgcolor:(0,i.X4)(f.palette.primary.main,.1),boxShadow:"inset 0 1px 0 ".concat((0,i.X4)(f.palette.common.white,.08),", 0 10px 30px ").concat((0,i.X4)(f.palette.primary.main,.12))},children:(0,o.jsx)(d,{sx:{fontSize:m?21:24}})}),(0,o.jsxs)(s.default,{sx:{minWidth:0},children:[(c||p)&&(0,o.jsxs)(n.A,{direction:"row",spacing:1,alignItems:"center",sx:{mb:.35},children:[c&&(0,o.jsx)(l.A,{sx:{color:"primary.light",fontSize:"0.67rem",fontWeight:780,letterSpacing:"0.13em",textTransform:"uppercase"},children:c}),p]}),(0,o.jsx)(l.A,{component:"h1",variant:"h5",sx:{overflow:"hidden",textOverflow:"ellipsis",fontSize:m?"1.2rem":void 0,whiteSpace:{xs:"normal",sm:"nowrap"}},children:t}),r&&(0,o.jsx)(l.A,{variant:"body2",color:"text.secondary",sx:{mt:.45,maxWidth:720,textWrap:"balance"},children:r})]})]}),h&&(0,o.jsx)(s.default,{sx:{display:"flex",width:{xs:"100%",md:"auto"},flexShrink:0,flexWrap:"wrap",alignItems:"center",gap:1,"& > .MuiButton-root":{flex:{xs:"1 1 auto",sm:"0 0 auto"}}},children:h})]})})}},80411:(e,t,r)=>{r.d(t,{Fu:()=>i,M8:()=>s,Qv:()=>n,Qz:()=>l});let o=(0,r(73288).h)("frontend/components/mcp/MCPServerManager/utils/serverUpdates"),a=new Map;async function s(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=Date.now(),s={},n=[];for(let o of new Set(e.filter(Boolean))){let e=a.get(o);!t&&e&&r-e.at<6e5?s[o]=e.info:n.push(o)}if(n.length>0)try{let e=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"checkUpdatesBatch",paths:n})}),t=await e.json();if(e.ok&&t.results)for(let[e,o]of Object.entries(t.results))a.set(e,{at:r,info:o}),s[e]=o;else o.warn("Batch update check failed",t.error)}catch(e){o.warn("Batch update check request failed",e)}return s}async function n(e){try{let t=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"pullUpdates",savePath:e})}),r=await t.json();if(!t.ok)return{success:!1,error:r.error||"Failed to pull updates"};return{success:!0,oldSha:r.oldSha,newSha:r.newSha,updated:r.updated}}catch(e){return{success:!1,error:e.message||"Failed to pull updates"}}}async function l(e,t,r){let a=e.match(/github\.com[:/]([^/]+)\/([^/]+?)(?:\.git)?\/?$/i);if(!a)return null;try{let e=await fetch("https://api.github.com/repos/".concat(a[1],"/").concat(a[2],"/compare/").concat(t,"...").concat(r));if(!e.ok)return null;let o=await e.json(),s=Array.isArray(o.commits)?o.commits:[];return{behindBy:"number"==typeof o.total_commits?o.total_commits:null,commits:s.slice(-10).reverse().map(e=>{var t;return{sha:(e.sha||"").slice(0,7),message:((null==(t=e.commit)?void 0:t.message)||"").split("\n")[0]}})}}catch(e){return o.debug("GitHub compare preview failed (non-fatal)",e),null}}function i(e){return e?e.slice(0,7):""}},86631:(e,t,r)=>{r.d(t,{b:()=>s,c:()=>n});var o=r(56290);async function a(e,t){try{let r=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!r.ok||!r.body)return null;let a=null;return await (0,o.z)(r,e=>{if("stdout"===e.type||"stderr"===e.type)t(e.data);else if("result"===e.type){var r;a={success:e.success,output:null!=(r=e.commandOutput)?r:""}}}),a}catch(e){return console.error("Error streaming git command:",e),null}}let s=async(e,t,r)=>{if(r){let o=await a({action:"installStream",savePath:e,installCommand:t},r);if(o)return{success:o.success,message:o.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:o.output||"No output was returned from the installation process."}}try{let r=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"install",savePath:e,installCommand:t})}),o=await r.json();if(!r.ok)throw Error(o.error||"Failed to install dependencies");return{success:!0,message:{type:"success",text:"Dependencies installed successfully. You can now build the server."},output:o.commandOutput||"No output was returned from the installation process."}}catch(e){return console.error("Error installing dependencies:",e),{success:!1,message:{type:"error",text:"Error installing dependencies: ".concat(e.message||"Unknown error",". You can still try to build the server.")},output:e instanceof Response?await e.text():(null==e?void 0:e.message)||"Unknown error"}}},n=async(e,t,r)=>{if(r){let o=await a({action:"buildStream",savePath:e,buildCommand:t},r);if(o)return{success:o.success,message:o.success?{type:"success",text:"Server built successfully."}:{type:"error",text:"Error building server."},output:o.output||"No output was returned from the build process."}}try{let r=await fetch("/api/git",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"build",savePath:e,buildCommand:t})}),o=await r.json();if(!r.ok)throw Error(o.error||"Failed to build repository");return{success:!0,message:{type:"success",text:"Server built successfully."},output:o.commandOutput||"No output was returned from the build process."}}catch(e){return console.error("Error building server:",e),{success:!1,message:{type:"error",text:"Error building server: ".concat(e.message||"Unknown error",".")},output:e instanceof Response?await e.text():(null==e?void 0:e.message)||"Unknown error"}}}},95906:(e,t,r)=>{r.d(t,{A:()=>ec});var o=r(95155),a=r(12115),s=r(73288),n=r(9352),l=r(36741),i=r(12857),c=r(48563),d=r(76530),u=r(14915),p=r(4484),h=r(80412),m=r(13548),x=r(20099),f=r(11414),b=r(26188),g=r(52277),y=r(59652),v=r(89296),j=r(97714),A=r(62291),w=r(47529),S=r(94929),k=r(81956),C=r(17897),z=r(70272),O=r(28548),P=r(67891),U=r(84318),T=r(4543),E=r(8415);let N=e=>{let{transport:t,size:r="small"}=e,{colors:a}=(0,n.Ic)(),s=a.domain.transport,l=(()=>{switch(t){case"stdio":return{label:"STDIO",icon:(0,o.jsx)(P.A,{fontSize:"small"}),color:s.stdio.fg,bgColor:s.stdio.bg};case"websocket":return{label:"WebSocket",icon:(0,o.jsx)(U.A,{fontSize:"small"}),color:s.websocket.fg,bgColor:s.websocket.bg};case"sse":return{label:"SSE",icon:(0,o.jsx)(T.A,{fontSize:"small"}),color:s.sse.fg,bgColor:s.sse.bg};case"streamable":return{label:"HTTP Stream",icon:(0,o.jsx)(E.A,{fontSize:"small"}),color:s.streamable.fg,bgColor:s.streamable.bg};default:return{label:"UNKNOWN",icon:(0,o.jsx)(P.A,{fontSize:"small"}),color:s.default.fg,bgColor:s.default.bg}}})();return(0,o.jsx)(O.A,{icon:l.icon,label:l.label,size:r,sx:{backgroundColor:l.bgColor,color:l.color,fontWeight:500,fontSize:"small"===r?"0.75rem":"0.875rem",height:"small"===r?24:32,"& .MuiChip-icon":{color:l.color}}})};var F=r(2778),I=r(52363),R=r(65036),W=r(75912),D=r(91871),M=r(94049),J=r(25635),B=r(22003),_=r(99944),H=r(22822),X=r(41602),L=r(23820),q=r(49501),$=r(17681),Y=r(16186),Q=r(80411),K=r(86631);let G=(0,s.h)("frontend/components/mcp/MCPServerManager/ServerUpdateDialog"),V=e=>{let{open:t,onClose:r,serverName:s,rootPath:n,installCommand:i,buildCommand:d,enabled:u,updateInfo:p,onToggle:h,onUpdated:m}=e,[x,f]=(0,a.useState)(null),[b,g]=(0,a.useState)(!1),[y,v]=(0,a.useState)(!1),[A,w]=(0,a.useState)(!1),[k,C]=(0,a.useState)(null),[z,P]=(0,a.useState)({}),[U,T]=(0,a.useState)(""),E=!!(i&&i.trim()),N=!!(d&&d.trim()),V=[{key:"stop",label:"Stop server",active:u},{key:"pull",label:"Pull latest changes",active:!0},{key:"install",label:"Install dependencies (".concat(i,")"),active:E},{key:"build",label:"Build (".concat(d,")"),active:N},{key:"restart",label:"Restart server",active:u}];(0,a.useEffect)(()=>{t&&(g(!1),v(!1),w(!1),C(null),P({}),T(""))},[t,s]),(0,a.useEffect)(()=>{if(t&&p.remoteUrl&&p.localSha&&p.remoteSha){let e=!1;return(0,Q.Qz)(p.remoteUrl,p.localSha,p.remoteSha).then(t=>{e||f(t)}),()=>{e=!0}}f(null)},[t,p.remoteUrl,p.localSha,p.remoteSha]);let Z=(0,a.useCallback)((e,t)=>{P(r=>({...r,[e]:t}))},[]),ee=(0,a.useCallback)((e,t)=>{T(r=>r+(r?"\n":"")+"--- ".concat(e," ---\n")+(t||"").trim()+"\n")},[]),et=async()=>{v(!0),C(null),G.info("Starting update for server ".concat(s));let e=(e,t)=>{Z(e,"error"),C(t),v(!1)};try{u&&(Z("stop","running"),await Promise.resolve(h(!1)),Z("stop","done")),Z("pull","running");let t=await (0,Q.Qv)(n);if(!t.success)return void e("pull",t.error||"Failed to pull updates");if(ee("Pull","Updated ".concat((0,Q.Fu)(t.oldSha)," -> ").concat((0,Q.Fu)(t.newSha))),Z("pull","done"),E){Z("install","running");let t=await (0,K.b)(n,i.trim());if(ee("Install",t.output),!t.success)return void e("install",t.message.text);Z("install","done")}if(N){Z("build","running");let t=await (0,K.c)(n,d.trim());if(ee("Build",t.output),!t.success)return void e("build",t.message.text);Z("build","done")}u&&(Z("restart","running"),await Promise.resolve(h(!0)),Z("restart","done")),G.info("Update completed for server ".concat(s)),w(!0),v(!1),null==m||m()}catch(e){G.error("Update failed for server ".concat(s),e),C(e.message||"Update failed"),v(!1)}},er=y||A||Object.keys(z).length>0,eo=p.hasLocalChanges&&!b;return(0,o.jsxs)(F.A,{open:t,onClose:y?void 0:r,maxWidth:"sm",fullWidth:!0,onClick:e=>e.stopPropagation(),children:[(0,o.jsxs)(I.A,{component:"div",sx:{display:"flex",alignItems:"center",gap:1},children:[(0,o.jsx)(j.A,{color:"primary"}),"Update ",s]}),(0,o.jsxs)(R.A,{children:[(0,o.jsxs)(M.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:1,flexWrap:"wrap"},children:[(0,o.jsx)(O.A,{size:"small",label:(0,Q.Fu)(p.localSha),sx:{fontFamily:"monospace"}}),(0,o.jsx)(J.A,{variant:"body2",color:"text.secondary",children:"→"}),(0,o.jsx)(O.A,{size:"small",color:"primary",label:(0,Q.Fu)(p.remoteSha),sx:{fontFamily:"monospace"}}),p.branch&&"HEAD"!==p.branch&&(0,o.jsxs)(J.A,{variant:"body2",color:"text.secondary",children:["on ",(0,o.jsx)("code",{children:p.branch})]}),(null==x?void 0:x.behindBy)!=null&&(0,o.jsxs)(J.A,{variant:"body2",color:"text.secondary",children:["(",x.behindBy," commit",1===x.behindBy?"":"s"," behind)"]})]}),p.repoRoot&&p.repoRoot.replace(/\\/g,"/").replace(/\/+$/,"").toLowerCase()!==n.replace(/\\/g,"/").replace(/\/+$/,"").toLowerCase()&&(0,o.jsxs)(J.A,{variant:"body2",color:"text.secondary",sx:{mb:1},children:["This server lives inside a larger repository — the update pulls"," ",(0,o.jsx)("code",{children:p.repoRoot})," as a whole (other servers from the same repository are updated along with it)."]}),x&&x.commits.length>0&&!er&&(0,o.jsx)(M.default,{sx:{mb:2,p:1,borderRadius:1,border:"1px solid",borderColor:"divider",maxHeight:160,overflow:"auto"},children:x.commits.map(e=>(0,o.jsxs)(J.A,{variant:"body2",sx:{fontSize:"0.8rem"},noWrap:!0,title:e.message,children:[(0,o.jsx)("code",{children:e.sha})," ",e.message]},e.sha))}),p.hasLocalChanges&&!er&&(0,o.jsxs)(B.A,{severity:"warning",sx:{mb:2},children:[(0,o.jsxs)(J.A,{variant:"body2",sx:{mb:1},children:["This repository has local changes to tracked files. Updating will ",(0,o.jsx)("strong",{children:"discard"})," them. Untracked files (e.g. a ",(0,o.jsx)("code",{children:".env"})," you created) and all FLUJO settings for this server are kept."]}),(0,o.jsx)(M.default,{component:"ul",sx:{m:0,pl:3,maxHeight:100,overflow:"auto"},children:p.dirtyFiles.map(e=>(0,o.jsx)("li",{children:(0,o.jsx)(J.A,{variant:"body2",component:"span",sx:{fontFamily:"monospace",fontSize:"0.8rem"},children:e})},e))}),(0,o.jsx)(_.A,{sx:{mt:1},control:(0,o.jsx)(H.A,{size:"small",checked:b,onChange:e=>g(e.target.checked)}),label:(0,o.jsx)(J.A,{variant:"body2",children:"Discard my local changes and update"})})]}),(0,o.jsx)(X.A,{dense:!0,disablePadding:!0,children:V.filter(e=>e.active).map(e=>(0,o.jsxs)(L.Ay,{disableGutters:!0,sx:{py:.25},children:[(0,o.jsx)(q.A,{sx:{minWidth:32},children:(e=>{switch(e){case"running":return(0,o.jsx)(S.default,{size:"small",color:"primary"});case"done":return(0,o.jsx)(l.A,{color:"success",fontSize:"small"});case"error":return(0,o.jsx)(c.A,{color:"error",fontSize:"small"});default:return(0,o.jsx)(Y.A,{color:"disabled",fontSize:"small"})}})(z[e.key])}),(0,o.jsx)($.A,{primary:e.label,primaryTypographyProps:{variant:"body2",noWrap:!0,title:e.label}})]},e.key))}),k&&(0,o.jsxs)(B.A,{severity:"error",sx:{mt:2,whiteSpace:"pre-wrap"},children:[k,u&&(0,o.jsx)(J.A,{variant:"body2",sx:{mt:1},children:"The server was left stopped. Adjust the install/build commands via Edit, then re-enable it."})]}),A&&(0,o.jsxs)(B.A,{severity:"success",sx:{mt:2},children:["Server updated successfully",u?" and restarted":"","."]}),U&&(0,o.jsx)(M.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:U})]}),(0,o.jsxs)(W.A,{children:[(0,o.jsx)(D.A,{onClick:r,disabled:y,children:A?"Close":"Cancel"}),!A&&(0,o.jsx)(D.A,{variant:"contained",color:"primary",startIcon:(0,o.jsx)(j.A,{}),onClick:et,disabled:y||eo,children:y?"Updating…":k?"Retry Update":"Update"})]})]})};var Z=r(74494),ee=r(33567),et=r(29767),er=r(8532),eo=r(78470),ea=r(41983),es=r(84578),en=r(9957),el=r(1702);let ei=(0,s.h)("frontend/components/mcp/MCPServerManager/ServerCard"),ec=e=>{let{name:t,status:s,path:P,enabled:U,transport:T,onToggle:E=()=>{},onRetry:_=()=>{},onDelete:X=()=>{},onClick:L,onEdit:q=()=>{},onAuthenticate:$,pickerMode:Y=!1,error:K,stderrOutput:G,authorizationUrl:ec,selected:ed=!1,onSelect:eu,selectionMode:ep=!1,hasOAuthTokens:eh=!1,exposeAsMcpServer:em=!1,enableMcpApps:ex=!1,updateInfo:ef,installCommand:eb,buildCommand:eg,onUpdated:ey,folder:ev,folders:ej=[],onSetFolder:eA,favorite:ew=!1,onToggleFavorite:eS,serverConfig:ek}=e,[eC,ez]=(0,a.useState)(!1),[eO,eP]=(0,a.useState)(null),[eU,eT]=(0,a.useState)(!1),[eE,eN]=(0,a.useState)(!1),[eF,eI]=(0,a.useState)(""),[eR,eW]=(0,a.useState)("success"),[eD,eM]=(0,a.useState)(!1),[eJ,eB]=(0,a.useState)(!1),[e_,eH]=(0,a.useState)(em),[eX,eL]=(0,a.useState)(ex),eq=(0,ee.A)();(0,a.useEffect)(()=>{eH(em)},[em]),(0,a.useEffect)(()=>{eL(ex)},[ex]);let e$="".concat(window.location.origin,"/mcp-proxy/").concat(encodeURIComponent(t)),eY=async e=>{eH(e);let r=await C.S.updateServerConfig(t,{exposeAsMcpServer:e});"success"in r&&r.success?(eI(e?"Server is now exposed to external apps.":"Server is no longer exposed."),eW("success")):(eH(!e),eI("Failed to update exposure setting."),eW("error")),eN(!0)},eQ=async e=>{eL(e);let r=await C.S.updateServerConfig(t,{enableMcpApps:e});"success"in r&&r.success?(eI(e?"This server may now render interactive apps in chat (sandboxed).":"Interactive apps disabled for this server."),eW("success")):(eL(!e),eI("Failed to update the MCP Apps setting."),eW("error")),eN(!0)},eK={connected:"success.main",disconnected:"text.secondary",error:"error.main",connecting:"info.main",initialization:"info.main",requires_authentication:"warning.main"}[s];(0,a.useEffect)(()=>{if(("connecting"===s||"initialization"===s)&&U&&!Y){eM(!0);let e=setTimeout(()=>{ei.debug("Polling status for server: ".concat(t)),_()},2e3);return()=>{clearTimeout(e),eM(!1)}}"connecting"!==s&&"initialization"!==s&&eM(!1)},[s,U,t,_]);let[eG,eV]=(0,a.useState)(null);(0,a.useEffect)(()=>()=>{eG&&clearTimeout(eG)},[eG]);let eZ=async e=>{e.stopPropagation(),ei.debug("Reset OAuth tokens button clicked for server: ".concat(t)),eB(!0);try{let e=await fetch("/api/oauth/reset",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({serverName:t})});if(!e.ok){let t=await e.json();throw Error(t.error||"Failed to reset OAuth tokens")}let r=await e.json();ei.info("OAuth tokens reset successfully for ".concat(t),r),eI("OAuth tokens reset successfully. Server will require re-authentication."),eW("success"),eN(!0),setTimeout(()=>{_()},500)}catch(e){ei.error("Failed to reset OAuth tokens for ".concat(t),e),eI("Failed to reset OAuth tokens: ".concat(e instanceof Error?e.message:"Unknown error")),eW("error"),eN(!0)}finally{eB(!1)}},{getThemeValue:e0,getThemeColor:e1,colors:e2}=(0,n.Ic)(),e5=()=>{ei.debug("Server restart initiated for: ".concat(t)),E(!1),setTimeout(()=>{E(!0),ei.info("Server ".concat(t," restarted"))},1e3)};return(0,o.jsxs)(et.A,{role:Y?"button":void 0,"aria-pressed":Y?ed:void 0,sx:{cursor:"pointer",position:"relative",height:Y?"100%":void 0,overflow:"hidden",transition:"transform 200ms ease, box-shadow 200ms ease, border-color 180ms ease",border:e=>"1px solid ".concat(Y&&ed?e.palette.primary.main:e.palette.divider),boxShadow:Y&&ed?"0 0 0 3px ".concat((0,er.X4)(eq.palette.primary.main,.13)):void 0,"&:hover":{borderColor:(0,er.X4)(eq.palette.primary.main,.38),boxShadow:"0 22px 60px ".concat((0,er.X4)(eq.palette.primary.main,.12)),transform:"translateY(-4px)"}},onClick:()=>{ei.debug("Server card clicked: ".concat(t)),L()},children:[eS&&(0,o.jsx)(eo.A,{title:ew?"Remove from favorites":"Add to favorites",arrow:!0,placement:"top",children:(0,o.jsx)(ea.A,{size:"small","aria-label":ew?"remove from favorites":"add to favorites",onClick:e=>{e.stopPropagation(),eS()},sx:{position:"absolute",top:4,left:4,zIndex:2,color:ew?eq.palette.warning.main:eq.palette.text.secondary,backgroundColor:(0,er.X4)(eq.palette.background.paper,.6),"&:hover":{backgroundColor:(0,er.X4)(eq.palette.background.paper,.9)}},children:ew?(0,o.jsx)(A.A,{fontSize:"small"}):(0,o.jsx)(w.A,{fontSize:"small"})})}),(0,o.jsxs)(es.A,{sx:{pb:1},children:[(0,o.jsxs)(M.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"flex-start",mb:1},children:[(0,o.jsxs)(M.default,{sx:{display:"flex",alignItems:"center",flex:1},children:[ep&&eu&&(0,o.jsx)(H.A,{checked:ed,onClick:e=>e.stopPropagation(),onChange:e=>eu(e.target.checked),size:"small",sx:{mr:1,p:.5}}),(0,o.jsx)(J.A,{variant:"h6",component:"h3",sx:{flex:1},children:t})]}),(0,o.jsxs)(M.default,{sx:{display:"flex",flexDirection:"column",alignItems:"flex-end",gap:.5},children:[(0,o.jsxs)(M.default,{sx:{display:"flex",alignItems:"center",gap:.5},children:[(null==ef?void 0:ef.updateAvailable)&&(0,o.jsx)(eo.A,{title:"Update available: ".concat((0,Q.Fu)(ef.localSha)," → ").concat((0,Q.Fu)(ef.remoteSha),". Click to update."),children:(0,o.jsx)(O.A,{icon:(0,o.jsx)(j.A,{}),label:"Update",color:"warning",size:"small",onClick:e=>{e.stopPropagation(),ei.debug("Update badge clicked for server: ".concat(t)),eT(!0)}})}),(0,o.jsx)(N,{transport:T,size:"small"})]}),(0,o.jsxs)(M.default,{sx:{display:"flex",alignItems:"center"},children:["connected"===s&&(0,o.jsx)(l.A,{color:"success",sx:{mr:.5},fontSize:"small"}),"disconnected"===s&&(0,o.jsx)(i.A,{color:"action",sx:{mr:.5},fontSize:"small"}),"error"===s&&(0,o.jsx)(c.A,{color:"error",sx:{mr:.5},fontSize:"small"}),"requires_authentication"===s&&(0,o.jsx)(h.A,{color:"warning",sx:{mr:.5},fontSize:"small"}),("connecting"===s||"initialization"===s)&&(0,o.jsx)(S.default,{size:"small",color:"primary",sx:{mr:.5}}),(0,o.jsx)(J.A,{variant:"body2",color:eK,children:"requires_authentication"===s?"Requires Authentication":s})]})]})]}),(0,o.jsx)(J.A,{variant:"body2",color:"text.secondary",sx:{mb:1,fontSize:"0.875rem"},noWrap:!0,title:P,children:P}),!Y&&(0,o.jsxs)(M.default,{sx:{mt:1,mb:1,p:1.1,borderRadius:2.5,border:"1px solid",borderColor:"divider",bgcolor:(0,er.X4)(eq.palette.background.default,.42)},onClick:e=>e.stopPropagation(),children:[(0,o.jsxs)(M.default,{sx:{display:"flex",alignItems:"center"},children:[(0,o.jsx)(f.A,{fontSize:"small",sx:{mr:.5,color:e_?"primary.main":"text.disabled"}}),(0,o.jsx)(en.A,{checked:e_,onChange:e=>eY(e.target.checked),size:"small"}),(0,o.jsx)(eo.A,{title:"Re-expose this server's tools to external MCP clients (Claude Desktop, Cursor, …) at a local URL.",children:(0,o.jsx)(J.A,{variant:"body2",sx:{fontWeight:500},children:"Expose to external apps"})})]}),e_&&(0,o.jsxs)(M.default,{sx:{display:"flex",alignItems:"center",mt:.5},children:[(0,o.jsx)(J.A,{variant:"caption",sx:{flex:1,fontFamily:"monospace",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},title:e$,children:e$}),(0,o.jsx)(eo.A,{title:"Copy endpoint URL",children:(0,o.jsx)(ea.A,{size:"small",onClick:()=>{navigator.clipboard.writeText(e$),eI("Endpoint URL copied to clipboard."),eW("success"),eN(!0)},children:(0,o.jsx)(g.A,{fontSize:"small"})})}),(0,o.jsx)(eo.A,{title:"Copy MCP server JSON",children:(0,o.jsx)(ea.A,{size:"small",onClick:()=>{let e=window.location.origin;navigator.clipboard.writeText((0,z.CZ)(t,ek,e)),eI("Server JSON copied to clipboard."),eW("success"),eN(!0)},children:(0,o.jsx)(y.A,{fontSize:"small"})})})]})]}),!Y&&(0,o.jsx)(M.default,{sx:{mt:1,mb:1,p:1.1,borderRadius:2.5,border:"1px solid",borderColor:"divider",bgcolor:(0,er.X4)(eq.palette.background.default,.42)},onClick:e=>e.stopPropagation(),children:(0,o.jsxs)(M.default,{sx:{display:"flex",alignItems:"center"},children:[(0,o.jsx)(b.A,{fontSize:"small",sx:{mr:.5,color:eX?"primary.main":"text.disabled"}}),(0,o.jsx)(en.A,{checked:eX,onChange:e=>eQ(e.target.checked),size:"small"}),(0,o.jsx)(eo.A,{title:"Allow this server's tools to render isolated interactive apps (MCP Apps / ui:// resources) and broker same-server tool/resource requests. Only enable for servers you trust.",children:(0,o.jsx)(J.A,{variant:"body2",sx:{fontWeight:500},children:"Render interactive apps"})})]})}),"error"===s&&(0,o.jsxs)(M.default,{sx:{mt:1,mb:1},children:[(0,o.jsxs)(M.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:.5},children:[(0,o.jsx)(J.A,{variant:"body2",fontWeight:"medium",color:"error",children:"Error:"}),(0,o.jsx)(D.A,{size:"small",color:"primary",onClick:e=>{e.stopPropagation(),ei.debug("View full error clicked for server: ".concat(t)),ez(!0)},children:"View Full Error"})]}),(0,o.jsx)(M.default,{sx:{maxHeight:"80px",overflow:"auto",p:1,borderRadius:1,bgcolor:e=>e1("error.background"),color:e=>e1("error.text"),border:"1px solid",borderColor:e=>e1("error.border"),fontSize:"0.75rem",fontWeight:500,whiteSpace:"pre-wrap"},children:K||"Unknown error"})]}),"requires_authentication"===s&&!Y&&(0,o.jsxs)(M.default,{sx:{mt:1,mb:1},children:[(0,o.jsx)(M.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:1},children:(0,o.jsx)(J.A,{variant:"body2",fontWeight:"medium",color:"warning.main",children:"Authentication Required"})}),(0,o.jsxs)(D.A,{variant:"contained",color:"warning",size:"small",startIcon:(0,o.jsx)(m.A,{}),onClick:async e=>{if(e.stopPropagation(),ei.debug("Authenticate button clicked for server: ".concat(t)),$)$();else try{let e=await fetch("/api/oauth/initiate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({serverName:t})});if(!e.ok){let t=await e.json();throw Error(t.error||"Failed to initiate OAuth")}let{authorizationUrl:o,alreadyAuthorized:a}=await e.json();if(a||!o){ei.info("Server ".concat(t," already authorized, no popup needed")),e5();return}let{openOAuthPopup:s}=await r.e(8198).then(r.bind(r,68198));await s({url:o,windowName:"oauth_".concat(t),onSuccess:e=>{ei.info("OAuth authentication successful for ".concat(t),e),ei.info("Automatically restarting server ".concat(t," after OAuth completion")),e5()},onError:e=>{ei.error("OAuth authentication failed for ".concat(t),e),eI("OAuth authentication failed"),eW("error"),eN(!0)}})}catch(e){ei.error("Failed to start OAuth authentication for ".concat(t),e),eI("Failed to start OAuth authentication"),eW("error"),eN(!0)}},sx:{width:"100%"},children:["Authenticate with ",t]})]})]}),!Y&&(0,o.jsxs)(el.A,{sx:{justifyContent:"space-between",px:2,py:1},children:[(0,o.jsxs)(M.default,{sx:{display:"flex",alignItems:"center"},children:[(0,o.jsx)(en.A,{checked:U,onClick:e=>e.stopPropagation(),onChange:e=>{ei.debug("Server ".concat(t," toggle changed to: ").concat(e.target.checked)),E(e.target.checked)},color:"primary",size:"small"}),(0,o.jsx)(J.A,{variant:"body2",sx:{ml:.5,fontWeight:500,color:U?"primary.main":"text.secondary"},children:U?"Enabled":"Disabled"}),U&&(0,o.jsx)(eo.A,{title:"Restart server",children:(0,o.jsx)(ea.A,{size:"small",onClick:e=>{e.stopPropagation(),ei.debug("Restart button clicked for server: ".concat(t)),e5()},sx:{ml:1},children:(0,o.jsx)(d.A,{fontSize:"small"})})})]}),(0,o.jsxs)(M.default,{children:[(0,o.jsx)(eo.A,{title:"Retry connection",children:(0,o.jsx)(ea.A,{color:"primary",onClick:e=>{e.stopPropagation(),ei.debug("Retry button clicked for server: ".concat(t)),eG&&clearTimeout(eG),eM(!0),_();let r=setTimeout(()=>{"connecting"!==s&&"initialization"!==s&&eM(!1),eV(null)},1e4);eV(r)},disabled:eD,size:"small",children:eD?(0,o.jsx)(S.default,{size:"small",color:"primary"}):(0,o.jsx)(d.A,{})})}),"streamable"===T&&eh&&(0,o.jsx)(eo.A,{title:"Reset OAuth tokens",children:(0,o.jsx)(ea.A,{color:"warning",onClick:eZ,disabled:eJ,size:"small",children:eJ?(0,o.jsx)(S.default,{size:"small",color:"primary"}):(0,o.jsx)(x.A,{})})}),eA&&(0,o.jsx)(eo.A,{title:ev?"Folder: ".concat(ev):"Move to folder",children:(0,o.jsx)(ea.A,{color:ev?"primary":"default",onClick:e=>{e.stopPropagation(),eP(e.currentTarget)},size:"small",children:(0,o.jsx)(v.A,{})})}),(0,o.jsx)(eo.A,{title:"Edit server",children:(0,o.jsx)(ea.A,{color:"primary",onClick:e=>{e.stopPropagation(),q()},size:"small",children:(0,o.jsx)(u.A,{})})}),(0,o.jsx)(eo.A,{title:"Delete server",children:(0,o.jsx)(ea.A,{color:"error",onClick:e=>{e.stopPropagation(),X()},size:"small",children:(0,o.jsx)(p.A,{})})})]})]}),eA&&(0,o.jsx)(k.A,{anchorEl:eO,open:!!eO,currentFolder:ev,folders:ej,onClose:()=>eP(null),onAssign:e=>eA(e)}),(0,o.jsxs)(F.A,{open:eC,onClose:()=>{ei.debug("Error modal closed for server: ".concat(t)),ez(!1)},maxWidth:"md",fullWidth:!0,onClick:e=>e.stopPropagation(),children:[(0,o.jsxs)(I.A,{component:"div",children:["Error Details for ",t]}),(0,o.jsxs)(R.A,{children:[(0,o.jsx)(M.default,{sx:{p:2,borderRadius:1,bgcolor:e=>e1("error.background"),color:e=>e1("error.text"),border:"1px solid",borderColor:e=>e1("error.border"),fontFamily:"monospace",fontSize:"0.875rem",fontWeight:500,whiteSpace:"pre-wrap",overflow:"auto",maxHeight:"300px",mb:2},children:K||"Unknown error"}),G&&(0,o.jsxs)(M.default,{sx:{mt:2},children:[(0,o.jsx)(J.A,{variant:"h6",gutterBottom:!0,children:"Stderr Output:"}),(0,o.jsx)(M.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:G})]})]}),(0,o.jsxs)(W.A,{children:[(0,o.jsx)(D.A,{onClick:()=>ez(!1),children:"Close"}),(0,o.jsx)(D.A,{onClick:()=>{let e=[K||"Unknown error",G?"\n\nStderr Output:\n".concat(G):""].join("");navigator.clipboard.writeText(e),ei.debug("Error copied to clipboard for server: ".concat(t)),eI("Error message copied to clipboard"),eW("success"),eN(!0)},color:"primary",children:"Copy to Clipboard"})]})]}),ef&&(0,o.jsx)(V,{open:eU,onClose:()=>eT(!1),serverName:t,rootPath:P,installCommand:eb,buildCommand:eg,enabled:U,updateInfo:ef,onToggle:E,onUpdated:ey}),(0,o.jsx)(Z.A,{open:eE,autoHideDuration:3e3,onClose:()=>eN(!1),anchorOrigin:{vertical:"bottom",horizontal:"center"},children:(0,o.jsx)(B.A,{onClose:()=>eN(!1),severity:eR,sx:{width:"100%"},children:eF||"Error message copied to clipboard"})})]})}}}]);