flujo-ai 3.23.0 → 3.26.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 (397) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +205 -186
  3. package/.next/app-path-routes-manifest.json +2 -2
  4. package/.next/build-manifest.json +7 -7
  5. package/.next/react-loadable-manifest.json +25 -20
  6. package/.next/routes-manifest.json +19 -1
  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.js +1 -1
  11. package/.next/server/app/api/approvals/[id]/route.js.nft.json +1 -1
  12. package/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
  13. package/.next/server/app/api/approvals/route.js +1 -1
  14. package/.next/server/app/api/approvals/route.js.nft.json +1 -1
  15. package/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/backup/route.js +1 -1
  17. package/.next/server/app/api/backup/route.js.nft.json +1 -1
  18. package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/browse/route.js +1 -1
  20. package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/bugs/enhance/route.js +2 -2
  22. package/.next/server/app/api/bugs/enhance/route.js.nft.json +1 -1
  23. package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
  24. package/.next/server/app/api/cwd/route.js +1 -1
  25. package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
  26. package/.next/server/app/api/encryption/secure/route.js +1 -1
  27. package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
  28. package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
  29. package/.next/server/app/api/env/route.js +1 -1
  30. package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
  31. package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
  32. package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
  33. package/.next/server/app/api/flow/compile/route.js +1 -1
  34. package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
  35. package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/flow/generate/route.js +1 -1
  37. package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
  38. package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
  39. package/.next/server/app/api/flow/improve/route.js +1 -1
  40. package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
  41. package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/flow/prompt-renderer/route.js +1 -1
  43. package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
  44. package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
  45. package/.next/server/app/api/flow/quick-chat/route.js +1 -1
  46. package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
  47. package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/flow/repair/route.js +1 -1
  49. package/.next/server/app/api/flow/repair/route.js.nft.json +1 -1
  50. package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/flow/route.js.nft.json +1 -1
  52. package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/git/route.js +1 -1
  54. package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/init/route.js +1 -1
  56. package/.next/server/app/api/init/route.js.nft.json +1 -1
  57. package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  58. package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
  60. package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/mcp/cancel/route.js +1 -1
  62. package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
  63. package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
  64. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
  65. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
  66. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
  68. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
  69. package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
  70. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
  71. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
  72. package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
  73. package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
  74. package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
  75. package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
  76. package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
  77. package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
  78. package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
  80. package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
  81. package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
  83. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
  84. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
  85. package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
  86. package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
  87. package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/mcp/servers/route.js +1 -1
  89. package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
  90. package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
  91. package/.next/server/app/api/mcp/test-connection/route.js +1 -1
  92. package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
  93. package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
  95. package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
  96. package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
  97. package/.next/server/app/api/mcp-registry/route.js +1 -1
  98. package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
  99. package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
  100. package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/model/[id]/route.js +1 -1
  102. package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
  103. package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
  104. package/.next/server/app/api/model/provider/route.js +1 -1
  105. package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
  106. package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
  107. package/.next/server/app/api/model/route.js +1 -1
  108. package/.next/server/app/api/model/route.js.nft.json +1 -1
  109. package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
  110. package/.next/server/app/api/model/test/route.js +1 -1
  111. package/.next/server/app/api/model/test/route.js.nft.json +1 -1
  112. package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
  114. package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
  115. package/.next/server/app/api/oauth/reset/route.js +1 -1
  116. package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
  117. package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
  118. package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
  119. package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
  120. package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
  121. package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
  122. package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
  123. package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
  124. package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
  125. package/.next/server/app/api/planned-executions/reconcile/route.js +1 -1
  126. package/.next/server/app/api/planned-executions/reconcile/route.js.nft.json +1 -1
  127. package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
  128. package/.next/server/app/api/planned-executions/route.js +1 -1
  129. package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
  130. package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
  131. package/.next/server/app/api/restore/route.js +1 -1
  132. package/.next/server/app/api/restore/route.js.nft.json +1 -1
  133. package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
  134. package/.next/server/app/api/runs/active/route.js +1 -1
  135. package/.next/server/app/api/runs/active/route.js.nft.json +1 -1
  136. package/.next/server/app/api/runs/active/route_client-reference-manifest.js +1 -1
  137. package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/api/update/route.js +1 -1
  139. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  140. package/.next/server/app/api/waves/route.js +1 -1
  141. package/.next/server/app/api/waves/route.js.nft.json +1 -1
  142. package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
  143. package/.next/server/app/api/webhooks/[id]/route.js +1 -1
  144. package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
  145. package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
  146. package/.next/server/app/chat/page.js +10 -10
  147. package/.next/server/app/chat/page.js.nft.json +1 -1
  148. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  149. package/.next/server/app/chat.html +1 -1
  150. package/.next/server/app/chat.rsc +4 -4
  151. package/.next/server/app/docs/page.js +11 -8
  152. package/.next/server/app/docs/page.js.nft.json +1 -1
  153. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  154. package/.next/server/app/docs.html +1 -1
  155. package/.next/server/app/docs.rsc +4 -4
  156. package/.next/server/app/executions/page.js +3 -3
  157. package/.next/server/app/executions/page.js.nft.json +1 -1
  158. package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
  159. package/.next/server/app/executions.html +1 -1
  160. package/.next/server/app/executions.rsc +4 -4
  161. package/.next/server/app/flows/page.js +3 -3
  162. package/.next/server/app/flows/page.js.nft.json +1 -1
  163. package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  164. package/.next/server/app/flows.html +1 -1
  165. package/.next/server/app/flows.rsc +4 -4
  166. package/.next/server/app/index.html +1 -1
  167. package/.next/server/app/index.rsc +4 -4
  168. package/.next/server/app/mcp/page.js +5 -5
  169. package/.next/server/app/mcp/page.js.nft.json +1 -1
  170. package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
  171. package/.next/server/app/mcp-flows/route.js +1 -1
  172. package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
  173. package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
  174. package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
  175. package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
  176. package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
  177. package/.next/server/app/mcp.html +1 -1
  178. package/.next/server/app/mcp.rsc +4 -4
  179. package/.next/server/app/models/page.js +2 -2
  180. package/.next/server/app/models/page.js.nft.json +1 -1
  181. package/.next/server/app/models/page_client-reference-manifest.js +1 -1
  182. package/.next/server/app/page.js +2 -2
  183. package/.next/server/app/page_client-reference-manifest.js +1 -1
  184. package/.next/server/app/settings/page.js +2 -57
  185. package/.next/server/app/settings/page.js.nft.json +1 -1
  186. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  187. package/.next/server/app/settings.html +1 -1
  188. package/.next/server/app/settings.rsc +4 -4
  189. package/.next/server/app/v1/chat/completions/route.js +1 -1
  190. package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
  191. package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
  192. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +2 -2
  193. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
  194. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
  195. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
  196. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
  197. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
  198. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
  199. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
  200. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
  201. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
  202. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
  203. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
  204. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +2 -2
  205. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
  206. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
  207. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +1 -1
  208. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
  209. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
  210. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route_client-reference-manifest.js +1 -1
  211. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
  212. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
  213. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
  214. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -2
  215. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
  216. package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  217. package/.next/server/app/v1/chat/conversations/route.js +2 -2
  218. package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
  219. package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
  220. package/.next/server/app/v1/models/route.js +1 -1
  221. package/.next/server/app/v1/models/route.js.nft.json +1 -1
  222. package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
  223. package/.next/server/app/waves/page.js +3 -3
  224. package/.next/server/app/waves/page.js.nft.json +1 -1
  225. package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
  226. package/.next/server/app/waves.html +1 -1
  227. package/.next/server/app/waves.rsc +4 -4
  228. package/.next/server/app-paths-manifest.json +2 -2
  229. package/.next/server/chunks/1083.js +1 -1
  230. package/.next/server/chunks/1114.js +1 -0
  231. package/.next/server/chunks/1197.js +2 -2
  232. package/.next/server/chunks/1226.js +1 -1
  233. package/.next/server/chunks/166.js +5 -0
  234. package/.next/server/chunks/2373.js +1 -0
  235. package/.next/server/chunks/2859.js +1 -3
  236. package/.next/server/chunks/289.js +1 -1
  237. package/.next/server/chunks/3030.js +1 -1
  238. package/.next/server/chunks/3298.js +2 -0
  239. package/.next/server/chunks/3312.js +1 -0
  240. package/.next/server/chunks/3774.js +1 -1
  241. package/.next/server/chunks/3823.js +9 -8
  242. package/.next/server/chunks/3855.js +1 -0
  243. package/.next/server/chunks/3924.js +52 -0
  244. package/.next/server/chunks/4545.js +21 -0
  245. package/.next/server/chunks/4561.js +9 -8
  246. package/.next/server/chunks/4578.js +1 -0
  247. package/.next/server/chunks/4671.js +1 -1
  248. package/.next/server/chunks/4677.js +37 -0
  249. package/.next/server/chunks/4771.js +2 -2
  250. package/.next/server/chunks/4793.js +2 -0
  251. package/.next/server/chunks/4836.js +1 -0
  252. package/.next/server/chunks/5311.js +1 -1
  253. package/.next/server/chunks/5463.js +1 -0
  254. package/.next/server/chunks/5544.js +5 -0
  255. package/.next/server/chunks/5708.js +11 -8
  256. package/.next/server/chunks/584.js +1 -0
  257. package/.next/server/chunks/62.js +1 -1
  258. package/.next/server/chunks/6240.js +1 -0
  259. package/.next/server/chunks/6306.js +1 -0
  260. package/.next/server/chunks/{3928.js → 6745.js} +1 -1
  261. package/.next/server/chunks/6908.js +2 -2
  262. package/.next/server/chunks/701.js +1 -1
  263. package/.next/server/chunks/7214.js +6 -0
  264. package/.next/server/chunks/7362.js +11 -7
  265. package/.next/server/chunks/7463.js +6 -0
  266. package/.next/server/chunks/7506.js +1 -1
  267. package/.next/server/chunks/7579.js +82 -0
  268. package/.next/server/chunks/7821.js +1 -1
  269. package/.next/server/chunks/8216.js +1 -0
  270. package/.next/server/chunks/8387.js +1 -0
  271. package/.next/server/chunks/856.js +5 -0
  272. package/.next/server/chunks/8652.js +1 -1
  273. package/.next/server/chunks/8739.js +2 -2
  274. package/.next/server/chunks/9165.js +1 -0
  275. package/.next/server/chunks/94.js +1 -0
  276. package/.next/server/chunks/9427.js +1 -0
  277. package/.next/server/edge-instrumentation.js +2 -0
  278. package/.next/server/edge-instrumentation.js.map +1 -0
  279. package/.next/server/edge-runtime-webpack.js +2 -0
  280. package/.next/server/edge-runtime-webpack.js.map +1 -0
  281. package/.next/server/instrumentation.js.nft.json +1 -1
  282. package/.next/server/middleware-build-manifest.js +1 -1
  283. package/.next/server/middleware-manifest.json +33 -2
  284. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  285. package/.next/server/pages/404.html +1 -1
  286. package/.next/server/pages/500.html +1 -1
  287. package/.next/server/server-reference-manifest.js +1 -1
  288. package/.next/server/server-reference-manifest.json +1 -1
  289. package/.next/server/src/middleware.js +14 -0
  290. package/.next/server/src/middleware.js.map +1 -0
  291. package/.next/static/chunks/1675-773454288de4309d.js +1 -0
  292. package/.next/static/chunks/1731-6e45fb529f9044a3.js +1 -0
  293. package/.next/static/chunks/1871-14c3e63ca865d85e.js +1 -0
  294. package/.next/static/chunks/2003-7710c23acaef11c9.js +1 -0
  295. package/.next/static/chunks/2318-76fcb6c769b1a569.js +1 -0
  296. package/.next/static/chunks/2566-6e2b9d9349814789.js +1 -0
  297. package/.next/static/chunks/2734-59fbe2f62a59df86.js +1 -0
  298. package/.next/static/chunks/3089.6b4e21e1faa304e2.js +1 -0
  299. package/.next/static/chunks/3109-11bdec9bdfd996c3.js +1 -0
  300. package/.next/static/chunks/3217.f728df99ab5da33c.js +1 -0
  301. package/.next/static/chunks/333-5f3c5be57c80c48c.js +1 -0
  302. package/.next/static/chunks/3333-b7b3e5758a568013.js +1 -0
  303. package/.next/static/chunks/3556-3b6f7c99b015b752.js +1 -0
  304. package/.next/static/chunks/{6730-c330b55cd0fe4f47.js → 4003-3b3768446ae333df.js} +1 -1
  305. package/.next/static/chunks/4523-a540747aa2ed34e8.js +1 -0
  306. package/.next/static/chunks/4635-0fe310d3be64e71e.js +1 -0
  307. package/.next/static/chunks/4690-ec7d397cfacedac3.js +1 -0
  308. package/.next/static/chunks/4775-cb9c0be621363a08.js +8 -0
  309. package/.next/static/chunks/5336-81da1080de29ebfc.js +1 -0
  310. package/.next/static/chunks/5512.d01d565f73109a1a.js +1 -0
  311. package/.next/static/chunks/6691-117567b2b40cd9f4.js +1 -0
  312. package/.next/static/chunks/7274-1184563607f2b5f5.js +1 -0
  313. package/.next/static/chunks/8166-e75acdc559b34fcd.js +1 -0
  314. package/.next/static/chunks/8345.fbc0af16acce7256.js +1 -0
  315. package/.next/static/chunks/8405.e728bc83a7c9fed6.js +1 -0
  316. package/.next/static/chunks/8470-72cf748472d4d501.js +1 -0
  317. package/.next/static/chunks/8607-5787e42775fc3acb.js +1 -0
  318. package/.next/static/chunks/8610-660d5088bc1dd7a7.js +1 -0
  319. package/.next/static/chunks/8834-faf121e257b517d5.js +1 -0
  320. package/.next/static/chunks/8989-401559d9f3bc80a0.js +1 -0
  321. package/.next/static/chunks/{9164-d9f1abba780231e0.js → 9164-829ab5b085ec06d6.js} +1 -1
  322. package/.next/static/chunks/9240-d0a51f4d504f34b1.js +1 -0
  323. package/.next/static/chunks/9562-b7922ceb400ec536.js +1 -0
  324. package/.next/static/chunks/9704-6b7415964d7c042a.js +1 -0
  325. package/.next/static/chunks/app/chat/page-04ad1fad78048afb.js +1 -0
  326. package/.next/static/chunks/app/docs/page-5475c616764dbb18.js +1 -0
  327. package/.next/static/chunks/app/executions/page-c18708ed96d228ec.js +1 -0
  328. package/.next/static/chunks/app/flows/page-f7e44aa545bcc56e.js +1 -0
  329. package/.next/static/chunks/app/layout-e6fbae80e0f456a6.js +1 -0
  330. package/.next/static/chunks/app/mcp/page-3638fbee04a3a6ea.js +1 -0
  331. package/.next/static/chunks/app/models/error-5732fbb053e182c5.js +1 -0
  332. package/.next/static/chunks/app/models/page-e690a986047b1e62.js +1 -0
  333. package/.next/static/chunks/app/{page-a859e4dbd180df98.js → page-0a95c40a65dbd2eb.js} +1 -1
  334. package/.next/static/chunks/app/settings/page-3ef9b95187e18a5a.js +1 -0
  335. package/.next/static/chunks/app/waves/page-c9a307e2236423a4.js +1 -0
  336. package/.next/static/chunks/{main-be8e823624954fab.js → main-9bda5041078d2b6a.js} +1 -1
  337. package/.next/static/chunks/webpack-a6844e1074885c2f.js +1 -0
  338. package/.next/static/css/40f9bef305b11bf5.css +1 -0
  339. package/.next/trace +10 -8
  340. package/README.md +31 -1
  341. package/next.config.mjs +139 -119
  342. package/package.json +1 -1
  343. package/.next/server/chunks/1119.js +0 -1
  344. package/.next/server/chunks/1439.js +0 -1
  345. package/.next/server/chunks/1556.js +0 -52
  346. package/.next/server/chunks/1910.js +0 -37
  347. package/.next/server/chunks/1999.js +0 -1
  348. package/.next/server/chunks/2246.js +0 -1
  349. package/.next/server/chunks/264.js +0 -17
  350. package/.next/server/chunks/2823.js +0 -6
  351. package/.next/server/chunks/3286.js +0 -6
  352. package/.next/server/chunks/4637.js +0 -81
  353. package/.next/server/chunks/6644.js +0 -1
  354. package/.next/server/chunks/7427.js +0 -1
  355. package/.next/server/chunks/7769.js +0 -6
  356. package/.next/server/chunks/8357.js +0 -1
  357. package/.next/server/chunks/8518.js +0 -2
  358. package/.next/static/chunks/1620-0d8ecd877f123f7b.js +0 -1
  359. package/.next/static/chunks/1871-dd8c10ed9d37100b.js +0 -1
  360. package/.next/static/chunks/1983-242862b3dc022a26.js +0 -1
  361. package/.next/static/chunks/2003-460f30484998c05d.js +0 -1
  362. package/.next/static/chunks/2619-04bc32f026a0d946.js +0 -1
  363. package/.next/static/chunks/3217.058098140ec3f563.js +0 -1
  364. package/.next/static/chunks/3736-5e2b3f6cda1bb923.js +0 -1
  365. package/.next/static/chunks/4207-41abb9622eb4b4f8.js +0 -1
  366. package/.next/static/chunks/4812-4a9aceb49632a973.js +0 -1
  367. package/.next/static/chunks/5501-f5b093c8dfd74196.js +0 -1
  368. package/.next/static/chunks/5545-2ab6e5d749e103cd.js +0 -1
  369. package/.next/static/chunks/6016.8201fa15ab6aa90e.js +0 -1
  370. package/.next/static/chunks/6288-a285bbbd701e0dbf.js +0 -1
  371. package/.next/static/chunks/6731-c230e88cf0032609.js +0 -1
  372. package/.next/static/chunks/6920-a83ad5c0d5a54cf3.js +0 -1
  373. package/.next/static/chunks/7430-6e78aaeac66988a9.js +0 -1
  374. package/.next/static/chunks/7583.7af90b94e3c263f2.js +0 -1
  375. package/.next/static/chunks/7687-7edf1a6e1f063b08.js +0 -1
  376. package/.next/static/chunks/8083.16fda2c7f6d10d0c.js +0 -1
  377. package/.next/static/chunks/8480-229fd353b68b570f.js +0 -1
  378. package/.next/static/chunks/8548-8e4a95334064e8b2.js +0 -1
  379. package/.next/static/chunks/8834-bda798efab40c60a.js +0 -1
  380. package/.next/static/chunks/9181-8d8ecd3f641b7209.js +0 -8
  381. package/.next/static/chunks/9356-99ba407b60b9dfe9.js +0 -1
  382. package/.next/static/chunks/9451-680fa09f81f18806.js +0 -1
  383. package/.next/static/chunks/9659-a279e3aaba407251.js +0 -1
  384. package/.next/static/chunks/app/chat/page-ea6752144d35c892.js +0 -1
  385. package/.next/static/chunks/app/docs/page-935b0386917b91bb.js +0 -1
  386. package/.next/static/chunks/app/executions/page-d72027b0179e8fa2.js +0 -1
  387. package/.next/static/chunks/app/flows/page-1844e86dd43fa285.js +0 -1
  388. package/.next/static/chunks/app/layout-2ebf01d97702a18a.js +0 -1
  389. package/.next/static/chunks/app/mcp/page-b6866f49f76a6801.js +0 -1
  390. package/.next/static/chunks/app/models/error-a3183f168e8a9b04.js +0 -1
  391. package/.next/static/chunks/app/models/page-5a13ea6ff5ac1b9c.js +0 -1
  392. package/.next/static/chunks/app/settings/page-7a68583660508ffd.js +0 -1
  393. package/.next/static/chunks/app/waves/page-ec33cf79f6103a9e.js +0 -1
  394. package/.next/static/chunks/webpack-f4a471ab560eb19e.js +0 -1
  395. package/.next/static/css/39393a79f7cb0dee.css +0 -1
  396. /package/.next/static/{WRUzIBdypUJvv0xAct8qc → Il6IDWxf3CN0dv-P6QQrp}/_buildManifest.js +0 -0
  397. /package/.next/static/{WRUzIBdypUJvv0xAct8qc → Il6IDWxf3CN0dv-P6QQrp}/_ssgManifest.js +0 -0
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1488],{17325:(e,t,l)=>{"use strict";l.d(t,{A:()=>m});var a=l(12115),r=l(2821),n=l(57001),o=l(48116),s=l(16625),i=l(85795),c=l(95195);function d(e){return(0,c.Ay)("MuiFormGroup",e)}(0,i.A)("MuiFormGroup",["root","row","error"]);var u=l(45918),h=l(75108),p=l(95155);let x=(0,o.Ay)("div",{name:"MuiFormGroup",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:l}=e;return[t.root,l.row&&t.row]}})({display:"flex",flexDirection:"column",flexWrap:"wrap",variants:[{props:{row:!0},style:{flexDirection:"row"}}]}),m=a.forwardRef(function(e,t){let l=(0,s.b)({props:e,name:"MuiFormGroup"}),{className:a,row:o=!1,...i}=l,c=(0,u.A)(),m=(0,h.A)({props:l,muiFormControl:c,states:["error"]}),f={...l,row:o,error:m.error},g=(e=>{let{classes:t,row:l,error:a}=e;return(0,n.A)({root:["root",l&&"row",a&&"error"]},d,t)})(f);return(0,p.jsx)(x,{className:(0,r.A)(g.root,a),ownerState:f,ref:t,...i})})},17427:(e,t,l)=>{"use strict";l.d(t,{A:()=>x});var a=l(95155),r=l(12115),n=l(25635),o=l(94049),s=l(99944),i=l(9957),c=l(52641),d=l(51221),u=l(55606),h=l(86973),p=l(9562);let x=e=>{var t;let{schema:l,values:x,onChange:m,size:f="small"}=e,[g,v]=(0,r.useState)({}),w=null!=(t=null==l?void 0:l.properties)?t:{},y=Array.isArray(null==l?void 0:l.required)?l.required:[],b=Object.keys(w);if(0===b.length)return(0,a.jsx)(n.default,{variant:"body2",color:"text.secondary",children:"This tool takes no parameters."});let j=(e,t)=>{let l={...x};void 0===t?delete l[e]:l[e]=t,m(l)};return(0,a.jsx)(o.default,{sx:{display:"flex",flexDirection:"column",gap:2},children:b.map(e=>{var t,l;let r=null!=(t=w[e])?t:{},m=y.includes(e)?"".concat(e," *"):e,b="string"==typeof r.description?r.description:"";if("boolean"===r.type)return(0,a.jsx)(s.A,{control:(0,a.jsx)(i.A,{size:f,checked:!0===x[e],onChange:t=>j(e,t.target.checked)}),label:(0,a.jsxs)(o.default,{children:[(0,a.jsx)(n.default,{variant:"body2",children:m}),b&&(0,a.jsx)(n.default,{variant:"caption",color:"text.secondary",children:b})]})},e);if(Array.isArray(r.enum)&&r.enum.length>0){let t=x[e];return(0,a.jsxs)(c.A,{size:f,fullWidth:!0,children:[(0,a.jsx)(d.A,{id:"schema-param-".concat(e),children:m}),(0,a.jsx)(u.A,{labelId:"schema-param-".concat(e),label:m,value:r.enum.includes(t)?t:"",onChange:t=>j(e,t.target.value),children:r.enum.map(e=>(0,a.jsx)(h.A,{value:e,children:String(e)},String(e)))}),b&&(0,a.jsx)(n.default,{variant:"caption",color:"text.secondary",sx:{mt:.5,mx:1.75},children:b})]},e)}if("number"===r.type||"integer"===r.type)return(0,a.jsx)(p.A,{fullWidth:!0,size:f,type:"number",label:m,value:void 0!==x[e]?String(x[e]):"",onChange:t=>{let l=t.target.value;if(""===l)return void j(e,void 0);let a="integer"===r.type?parseInt(l,10):parseFloat(l);j(e,Number.isNaN(a)?void 0:a)},helperText:b},e);if("object"===r.type||"array"===r.type){let t=null!=(l=g[e])?l:void 0!==x[e]?JSON.stringify(x[e],null,2):"",n=null;if(t.trim())try{JSON.parse(t)}catch(e){n="Not valid JSON yet"}return(0,a.jsx)(p.A,{fullWidth:!0,size:f,multiline:!0,minRows:2,label:"".concat(m," (JSON ").concat(r.type,")"),value:t,error:!!n,helperText:null!=n?n:b,onChange:t=>{let l=t.target.value;if(v(t=>({...t,[e]:l})),!l.trim())return void j(e,void 0);try{j(e,JSON.parse(l))}catch(e){}},slotProps:{input:{sx:{fontFamily:"monospace",fontSize:13}}}},e)}return(0,a.jsx)(p.A,{fullWidth:!0,size:f,label:m,value:void 0!==x[e]?String(x[e]):"",onChange:t=>j(e,""===t.target.value?void 0:t.target.value),helperText:b},e)})})}},27156:(e,t,l)=>{"use strict";l.d(t,{Z:()=>a});var a=function(e){return e.MODELS="models",e.FLOWS="flows",e.CHAT_HISTORY="history",e.THEME="theme",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}({})},29692:(e,t,l)=>{"use strict";l.d(t,{Zg:()=>a.Z,YM:()=>i,VH:()=>s,Mj:()=>o});var a=l(27156),r=l(12115);let n=(0,l(87021).h)("utils/storage/frontend.ts");function o(e,t){n.verbose("useLocalStorage: Entering method");let[l,a]=(0,r.useState)(t),[o,s]=(0,r.useState)(!0),i=(0,r.useRef)(l);return(0,r.useEffect)(()=>{i.current=l},[l]),(0,r.useEffect)(()=>{(async()=>{n.verbose("loadValue: Entering method");try{let l=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t)))),r=await l.json();l.ok&&a(r.value)}catch(t){n.warn('Error reading storage key "'.concat(e,'":'),t)}finally{s(!1)}})()},[e]),[l,(0,r.useCallback)(async t=>{n.verbose("setValue: Entering method");try{let l=t instanceof Function?t(i.current):t;if(a(l),!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:l})})).ok)throw Error("Failed to save value")}catch(t){n.warn('Error setting storage key "'.concat(e,'":'),t)}},[e]),o]}let s=async(e,t)=>{n.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 n.error("Error saving to storage:",e),e}},i=async(e,t)=>{n.verbose("loadItem: Entering method");try{let l=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t))));if(!l.ok)throw Error("Failed to load item");return(await l.json()).value}catch(e){return n.error("Error loading from storage:",e),t}}},31932:(e,t,l)=>{"use strict";l.r(t),l.d(t,{default:()=>ez});var a=l(95155),r=l(94049),n=l(12115),o=l(25635),s=l(99944),i=l(9957),c=l(91871),d=l(22003),u=l(80422),h=l(2778),p=l(52363),x=l(65036),m=l(75912),f=l(86946),g=l(76530),v=l(78470),w=l(41983),y=l(87021);let b=(0,y.h)("frontend/services/plannedExecutions");class j{async list(){try{let e=await fetch("/api/planned-executions");if(!e.ok)throw Error("HTTP ".concat(e.status));return await e.json()}catch(e){return b.warn("Failed to list planned executions",e),{paused:!1,executions:[]}}}async create(e){try{let t=await fetch("/api/planned-executions",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),l=await t.json();if(!t.ok)return{success:!1,error:(null==l?void 0:l.error)||"HTTP ".concat(t.status)};return{success:!0,execution:l.execution}}catch(e){return{success:!1,error:e instanceof Error?e.message:"Request failed"}}}async update(e,t){try{let l=await fetch("/api/planned-executions/".concat(e),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),a=await l.json();if(!l.ok)return{success:!1,error:(null==a?void 0:a.error)||"HTTP ".concat(l.status)};return{success:!0,execution:a.execution}}catch(e){return{success:!1,error:e instanceof Error?e.message:"Request failed"}}}async delete(e){try{let t=await fetch("/api/planned-executions/".concat(e),{method:"DELETE"});if(!t.ok){let e=await t.json().catch(()=>null);return{success:!1,error:(null==e?void 0:e.error)||"HTTP ".concat(t.status)}}return{success:!0}}catch(e){return{success:!1,error:e instanceof Error?e.message:"Request failed"}}}async setPaused(e){try{let t=await fetch("/api/planned-executions",{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify({paused:e})});if(!t.ok){let e=await t.json().catch(()=>null);return{success:!1,error:(null==e?void 0:e.error)||"HTTP ".concat(t.status)}}return{success:!0}}catch(e){return{success:!1,error:e instanceof Error?e.message:"Request failed"}}}async runNow(e){try{let t=await fetch("/api/planned-executions/".concat(e,"/run"),{method:"POST"}),l=await t.json();if(!t.ok)return{success:!1,error:(null==l?void 0:l.error)||"HTTP ".concat(t.status)};return{success:!0,record:l.record}}catch(e){return{success:!1,error:e instanceof Error?e.message:"Request failed"}}}async loadRuns(e){try{let t=await fetch("/api/planned-executions/".concat(e,"/runs"));if(!t.ok)throw Error("HTTP ".concat(t.status));let l=await t.json();return Array.isArray(null==l?void 0:l.runs)?l.runs:[]}catch(t){return b.warn("Failed to load runs for ".concat(e),t),[]}}async previewSchedule(e,t){try{let l=await fetch("/api/planned-executions/preview-schedule",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cron:e,timezone:t})});if(!l.ok)throw Error("HTTP ".concat(l.status));return await l.json()}catch(e){return{valid:!1,error:e instanceof Error?e.message:"Preview failed",nextRuns:[]}}}}let A=new j;var k=l(2300),C=l(28548),S=l(4474),T=l(50430),I=l(55406),N=l(14915),E=l(4484),F=l(63186),P=l(62962),W=l(36697);let M=(0,W.A)((0,a.jsx)("path",{d:"M21 11V3h-8l3.29 3.29-10 10L3 13v8h8l-3.29-3.29 10-10z"}),"OpenInFull"),O=e=>String(e).padStart(2,"0"),R=e=>{switch(e){case"completed":return"success.main";case"error":return"error.main";case"skipped":return"warning.main";default:return"transparent"}},L=e=>e?new Date(e).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):"",U=e=>{if(!e.finishedAt)return"";let t=new Date(e.finishedAt).getTime()-new Date(e.firedAt).getTime();return t<1e3?"<1s":t<6e4?"".concat(Math.round(t/1e3),"s"):"".concat(Math.round(t/6e4),"min")},D=e=>{var t;let{entry:l,paused:s,onEdit:d,onDelete:u,onToggleEnabled:f,onRanNow:g}=e,{execution:y,status:b,lastRun:j}=l,[W,D]=(0,n.useState)(!1),[_,z]=(0,n.useState)(null),[H,J]=(0,n.useState)(!1),[G,K]=(0,n.useState)(!1),[V,q]=(0,n.useState)(null),[B,$]=(0,n.useState)(10),Z=(0,n.useCallback)(async()=>{J(!0),z([...await A.loadRuns(y.id)].reverse()),$(10),J(!1)},[y.id]);(0,n.useEffect)(()=>{W&&Z()},[W,Z,null==j?void 0:j.runId]);let X=async()=>{K(!0),await A.runNow(y.id),K(!1),W&&Z(),g()};return(0,a.jsxs)(k.A,{variant:"outlined",sx:{p:2},children:[(0,a.jsxs)(r.default,{sx:{display:"flex",alignItems:"center",gap:1.5,flexWrap:"wrap"},children:[(0,a.jsxs)(r.default,{sx:{flexGrow:1,minWidth:220},children:[(0,a.jsxs)(r.default,{sx:{display:"flex",alignItems:"center",gap:1,flexWrap:"wrap"},children:[(0,a.jsx)(o.default,{variant:"subtitle1",sx:{fontWeight:600},children:y.name}),(0,a.jsx)(C.A,{size:"small",label:function(e){var t,l,a;switch(e.type){case"schedule":{let l,a=(t=e.cron,(l=/^\*\/(\d+) \* \* \* \* \*$/.exec(t))?"Every ".concat(l[1],"s"):(l=/^\*\/(\d+) \* \* \* \*$/.exec(t))?"Every ".concat(l[1]," min"):(l=/^0 \*\/(\d+) \* \* \*$/.exec(t))?1===Number(l[1])?"Every hour":"Every ".concat(l[1]," hours"):(l=/^(\d+) (\d+) \* \* \*$/.exec(t))?"Daily at ".concat(O(Number(l[2])),":").concat(O(Number(l[1]))):(l=/^(\d+) (\d+) \* \* 1-5$/.exec(t))?"Weekdays at ".concat(O(Number(l[2])),":").concat(O(Number(l[1]))):null);return null!=a?a:"Schedule: ".concat(e.cron)}case"webhook":return"Webhook";case"file-watch":return"Watching ".concat(e.path);case"mcp-poll":return"Watching ".concat(e.serverName," › ").concat(e.toolName);case"url-watch":try{return"Watching ".concat(new URL(e.url).hostname)}catch(e){return"Watching a URL"}case"flow-event":{if(null==(l=e.source)?void 0:l.topic)return"On signal “".concat(e.source.topic,"”");let t=(null!=(a=e.on)?a:[]).join("/")||"terminal";return"When a flow is ".concat(t)}default:return"Trigger"}}(y.trigger)}),!y.enabled&&(0,a.jsx)(C.A,{size:"small",label:"Off",variant:"outlined"})]}),b.running?(0,a.jsxs)(r.default,{sx:{display:"flex",alignItems:"center",gap:.75,mt:.5},children:[(0,a.jsx)(S.default,{size:12,thickness:6}),(0,a.jsxs)(o.default,{variant:"body2",color:"text.secondary",children:["Running…",b.runningSince?" — started ".concat(L(b.runningSince)):""]})]}):(0,a.jsxs)(o.default,{variant:"body2",color:"text.secondary",sx:{mt:.5},children:[(e=>{let{execution:t,status:l}=e;if(!t.enabled)return"";if(l.nextRun)return"Next run: ".concat(L(l.nextRun));if("paused"===l.notArmedReason)return"Paused (global)";if(l.armed)switch(t.trigger.type){case"webhook":return"Listening for webhook";case"file-watch":return"Watching ".concat(t.trigger.path);case"mcp-poll":case"url-watch":return"Watching for changes";case"flow-event":return"Waiting for flow event";default:return"Armed"}return"Not armed"})(l),b.lastTriggerError?" — trigger error: ".concat(b.lastTriggerError):""]}),j&&(0,a.jsxs)(r.default,{sx:{display:"flex",alignItems:"center",gap:.75,mt:.5},children:[(0,a.jsx)(v.A,{title:j.status,children:(0,a.jsx)(r.default,{sx:{width:10,height:10,borderRadius:"50%",bgcolor:R(j.status),flexShrink:0}})}),(0,a.jsxs)(o.default,{variant:"body2",color:"text.secondary",children:["Last run ",L(j.firedAt),"error"===j.status&&j.error?" — ".concat(j.error):""]})]})]}),(0,a.jsx)(v.A,{title:"Run now",children:(0,a.jsx)("span",{children:(0,a.jsx)(w.A,{onClick:X,disabled:G,color:"primary",children:G?(0,a.jsx)(S.default,{size:20}):(0,a.jsx)(I.A,{})})})}),(0,a.jsx)(v.A,{title:s?"Scheduler is paused globally — switch it to Active (top right) to arm triggers":y.enabled?"Turn off":"Turn on",children:(0,a.jsx)(i.A,{checked:y.enabled,onChange:e=>f(e.target.checked)})}),(0,a.jsx)(v.A,{title:"Edit",children:(0,a.jsx)(w.A,{onClick:d,children:(0,a.jsx)(N.A,{})})}),(0,a.jsx)(v.A,{title:"Delete",children:(0,a.jsx)(w.A,{onClick:u,children:(0,a.jsx)(E.A,{})})}),(0,a.jsx)(v.A,{title:W?"Hide run history":"Show run history",children:(0,a.jsx)(w.A,{onClick:()=>D(e=>!e),children:W?(0,a.jsx)(P.A,{}):(0,a.jsx)(F.A,{})})})]}),(0,a.jsx)(T.A,{in:W,timeout:"auto",unmountOnExit:!0,children:(0,a.jsxs)(r.default,{sx:{mt:2,borderTop:1,borderColor:"divider",pt:1.5},children:[H&&!_&&(0,a.jsx)(o.default,{variant:"body2",color:"text.secondary",children:"Loading runs…"}),_&&0===_.length&&(0,a.jsx)(o.default,{variant:"body2",color:"text.secondary",children:"No runs yet. Use the play button to try it now."}),null==_?void 0:_.slice(0,B).map(e=>{var t;return(0,a.jsxs)(r.default,{sx:{display:"flex",gap:1,py:.75,alignItems:"flex-start","&:hover .run-detail-button":{opacity:1}},children:[(0,a.jsx)(r.default,{sx:{width:10,height:10,borderRadius:"50%",bgcolor:R(e.status),mt:"5px",flexShrink:0}}),(0,a.jsxs)(r.default,{sx:{minWidth:0,flexGrow:1},children:[(0,a.jsxs)(o.default,{variant:"body2",children:[L(e.firedAt),U(e)?" \xb7 ".concat(U(e)):""," \xb7 ",e.triggerSummary,(null==(t=e.usage)?void 0:t.totalTokens)?" \xb7 ".concat(e.usage.totalTokens.toLocaleString()," tokens"):""]}),e.error&&(0,a.jsx)(o.default,{variant:"body2",color:"error",children:e.error}),e.outputText&&(0,a.jsx)(o.default,{variant:"body2",color:"text.secondary",sx:{whiteSpace:"pre-wrap",display:"-webkit-box",WebkitLineClamp:3,WebkitBoxOrient:"vertical",overflow:"hidden"},children:e.outputText})]}),(0,a.jsx)(v.A,{title:"Show full output",children:(0,a.jsx)(w.A,{className:"run-detail-button",size:"small",onClick:()=>q(e),sx:{opacity:{xs:1,md:.35},transition:"opacity 120ms",flexShrink:0},children:(0,a.jsx)(M,{fontSize:"inherit"})})})]},e.runId)}),_&&_.length>B&&(0,a.jsxs)(c.A,{size:"small",onClick:()=>$(e=>e+10),sx:{mt:1},children:["Load more (",_.length-B," older)"]})]})}),(0,a.jsxs)(h.A,{open:null!==V,onClose:()=>q(null),maxWidth:"md",fullWidth:!0,children:[(0,a.jsx)(p.A,{component:"div",children:(0,a.jsxs)(r.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,a.jsx)(r.default,{sx:{width:10,height:10,borderRadius:"50%",bgcolor:V?R(V.status):"transparent",flexShrink:0}}),(0,a.jsxs)(o.default,{variant:"h6",children:[y.name," — ",V?L(V.firedAt):""]})]})}),(0,a.jsx)(x.A,{dividers:!0,children:V&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)(o.default,{variant:"body2",color:"text.secondary",sx:{mb:1.5},children:[V.status,U(V)?" \xb7 ".concat(U(V)):""," \xb7 ",V.triggerSummary,(null==(t=V.usage)?void 0:t.totalTokens)?" \xb7 ".concat(V.usage.totalTokens.toLocaleString()," tokens (").concat(V.usage.promptTokens.toLocaleString()," in / ").concat(V.usage.completionTokens.toLocaleString()," out)"):""]}),V.error&&(0,a.jsx)(o.default,{variant:"body2",color:"error",sx:{mb:1.5,whiteSpace:"pre-wrap"},children:V.error}),V.outputText?(0,a.jsx)(r.default,{sx:{whiteSpace:"pre-wrap",wordBreak:"break-word",bgcolor:"action.hover",borderRadius:1,p:2,fontSize:14,maxHeight:"55vh",overflow:"auto"},children:V.outputText}):!V.error&&(0,a.jsx)(o.default,{variant:"body2",color:"text.secondary",children:"This run produced no output text."})]})}),(0,a.jsx)(m.A,{children:(0,a.jsx)(c.A,{onClick:()=>q(null),children:"Close"})})]})]})};var _=l(21067),z=l(9562),H=l(52641),J=l(51221),G=l(55606),K=l(86973),V=l(18369),q=l(77073);let B=(0,W.A)([(0,a.jsx)("path",{d:"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2M12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8"},"0"),(0,a.jsx)("path",{d:"M12.5 7H11v6l5.25 3.15.75-1.23-4.5-2.67z"},"1")],"Schedule"),$=(0,W.A)((0,a.jsx)("path",{d:"M10 15h5.88c.27-.31.67-.5 1.12-.5.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5c-.44 0-.84-.19-1.12-.5H11.9c-.46 2.28-2.48 4-4.9 4-2.76 0-5-2.24-5-5 0-2.42 1.72-4.44 4-4.9v2.07c-1.16.41-2 1.53-2 2.83 0 1.65 1.35 3 3 3s3-1.35 3-3zm2.5-11c1.65 0 3 1.35 3 3h2c0-2.76-2.24-5-5-5s-5 2.24-5 5c0 1.43.6 2.71 1.55 3.62l-2.35 3.9c-.68.14-1.2.75-1.2 1.48 0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5c0-.16-.02-.31-.07-.45l3.38-5.63C10.49 9.61 9.5 8.42 9.5 7c0-1.65 1.35-3 3-3m4.5 9c-.64 0-1.23.2-1.72.54l-3.05-5.07C11.53 8.35 11 7.74 11 7c0-.83.67-1.5 1.5-1.5S14 6.17 14 7c0 .15-.02.29-.06.43l2.19 3.65c.28-.05.57-.08.87-.08 2.76 0 5 2.24 5 5s-2.24 5-5 5c-1.85 0-3.47-1.01-4.33-2.5h2.67c.48.32 1.05.5 1.66.5 1.65 0 3-1.35 3-3s-1.35-3-3-3"}),"Webhook");var Z=l(79299);let X=(0,W.A)((0,a.jsx)("path",{d:"M19.3 16.9c.4-.7.7-1.5.7-2.4 0-2.5-2-4.5-4.5-4.5S11 12 11 14.5s2 4.5 4.5 4.5c.9 0 1.7-.3 2.4-.7l3.2 3.2 1.4-1.4zm-3.8.1c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5-1.1 2.5-2.5 2.5M12 20v2C6.48 22 2 17.52 2 12S6.48 2 12 2c4.84 0 8.87 3.44 9.8 8h-2.07c-.64-2.46-2.4-4.47-4.73-5.41V5c0 1.1-.9 2-2 2h-2v2c0 .55-.45 1-1 1H8v2h2v3H9l-4.79-4.79C4.08 10.79 4 11.38 4 12c0 4.41 3.59 8 8 8"}),"TravelExplore");var Y=l(53657);let Q=(0,W.A)((0,a.jsx)("path",{d:"m9.78 11.16-1.42 1.42c-.68-.69-1.34-1.58-1.79-2.94l1.94-.49c.32.89.77 1.5 1.27 2.01M11 6 7 2 3 6h3.02c.02.81.08 1.54.19 2.17l1.94-.49C8.08 7.2 8.03 6.63 8.02 6zm10 0-4-4-4 4h2.99c-.1 3.68-1.28 4.75-2.54 5.88-.5.44-1.01.92-1.45 1.55-.34-.49-.73-.88-1.13-1.24L9.46 13.6c.93.85 1.54 1.54 1.54 3.4v5h2v-5c0-2.02.71-2.66 1.79-3.63 1.38-1.24 3.08-2.78 3.2-7.37z"}),"AltRoute");var ee=l(90057),et=l(36741);let el=e=>{let{selected:t,icon:l,title:n,description:s,onClick:i}=e;return(0,a.jsxs)(r.default,{role:"radio","aria-checked":t,tabIndex:0,onClick:i,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),i())},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,a.jsx)(et.A,{color:"primary",fontSize:"small",sx:{position:"absolute",top:8,right:8}}),(0,a.jsxs)(r.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:.5,color:t?"primary.main":"text.secondary"},children:[l,(0,a.jsx)(o.default,{variant:"subtitle1",sx:{fontWeight:600,color:"text.primary"},children:n})]}),(0,a.jsx)(o.default,{variant:"body2",color:"text.secondary",children:s})]})};var ea=l(22822),er=l(98267),en=l(20537),eo=l(37960);let es=e=>String(e).padStart(2,"0"),ei=e=>{let{cron:t,timezone:l,onChange:i,verb:c="Runs",catchUp:u,onCatchUpChange:h}=e,p=(0,n.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(es(Number(t[2])),":").concat(es(Number(t[1])))}:(t=/^(\d+) (\d+) \* \* 1-5$/.exec(e))?{mode:"weekdays",n:1,time:"".concat(es(Number(t[2])),":").concat(es(Number(t[1])))}:{mode:"custom",n:15,time:"09:00"}})(t),[]),[x,m]=(0,n.useState)(p.mode),[f,g]=(0,n.useState)(p.n),[v,w]=(0,n.useState)(p.time),[y,b]=(0,n.useState)(t),[j,k]=(0,n.useState)(null),C=function(e,t,l,a){let[r,n]=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(n||0," ").concat(r||0," * * *");case"weekdays":return"".concat(n||0," ").concat(r||0," * * 1-5");default:return a}}(x,f,v,y);return(0,n.useEffect)(()=>{C!==t&&i({cron:C,timezone:l})},[C]),(0,n.useEffect)(()=>{let e=!1,t=setTimeout(()=>{A.previewSchedule(C,l).then(t=>{e||k(t)})},300);return()=>{e=!0,clearTimeout(t)}},[C,l]),(0,a.jsxs)(r.default,{children:[(0,a.jsxs)(r.default,{sx:{display:"flex",gap:2,flexWrap:"wrap",alignItems:"center",mt:1},children:[(0,a.jsxs)(H.A,{sx:{minWidth:180},children:[(0,a.jsx)(J.A,{id:"schedule-preset-label",children:c}),(0,a.jsxs)(G.A,{labelId:"schedule-preset-label",label:c,value:x,onChange:e=>m(e.target.value),children:[(0,a.jsx)(K.A,{value:"seconds",children:"Every N seconds"}),(0,a.jsx)(K.A,{value:"minutes",children:"Every N minutes"}),(0,a.jsx)(K.A,{value:"hours",children:"Every N hours"}),(0,a.jsx)(K.A,{value:"daily",children:"Daily at a time"}),(0,a.jsx)(K.A,{value:"weekdays",children:"Weekdays at a time"}),(0,a.jsx)(K.A,{value:"custom",children:"Custom (cron)"})]})]}),("seconds"===x||"minutes"===x||"hours"===x)&&(0,a.jsx)(z.A,{label:"seconds"===x?"Seconds":"minutes"===x?"Minutes":"Hours",type:"number",value:f,onChange:e=>g(Number(e.target.value)),inputProps:{min:1,max:"hours"===x?23:59},sx:{width:120}}),("daily"===x||"weekdays"===x)&&(0,a.jsx)(z.A,{label:"Time",type:"time",value:v,onChange:e=>w(e.target.value),sx:{width:150},InputLabelProps:{shrink:!0}}),"custom"===x&&(0,a.jsx)(z.A,{label:"Cron pattern",value:y,onChange:e=>b(e.target.value),sx:{minWidth:220},placeholder:"*/15 * * * *"})]}),j&&!j.valid&&(0,a.jsx)(d.A,{severity:"error",sx:{mt:2},children:j.error||"This schedule is not valid."}),j&&j.valid&&j.nextRuns.length>0&&(0,a.jsxs)(o.default,{variant:"body2",color:"text.secondary",sx:{mt:2},children:["Next: ",j.nextRuns.map(e=>new Date(e).toLocaleString()).join(" \xb7 ")]}),h&&(0,a.jsx)(s.A,{sx:{mt:1,display:"flex"},control:(0,a.jsx)(ea.A,{checked:!0===u,onChange:e=>h(e.target.checked)}),label:"If FLUJO was closed at a scheduled time, run once on startup"}),(0,a.jsxs)(er.A,{disableGutters:!0,elevation:0,sx:{mt:1,"&:before":{display:"none"}},children:[(0,a.jsx)(en.A,{expandIcon:(0,a.jsx)(F.A,{}),sx:{px:0},children:(0,a.jsx)(o.default,{variant:"body2",color:"text.secondary",children:"Advanced"})}),(0,a.jsx)(eo.A,{sx:{px:0},children:(0,a.jsxs)(r.default,{sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,a.jsx)(z.A,{label:"Timezone (optional)",value:l||"",onChange:e=>i({cron:C,timezone:e.target.value||void 0}),placeholder:"e.g. Europe/Berlin",helperText:"IANA timezone name. Empty = this computer's timezone.",sx:{minWidth:260}}),(0,a.jsx)(z.A,{label:"Generated cron pattern",value:C,InputProps:{readOnly:"custom"!==x},onChange:e=>{m("custom"),b(e.target.value)},helperText:"Editing switches to Custom mode.",sx:{minWidth:220}})]})})]})]})};var ec=l(52277),ed=l(9693);let eu=e=>{let{config:t,onChange:l,executionId:i,saved:u}=e,[h,p]=(0,n.useState)(null),x=window.location.origin,m="".concat(x,"/api/webhooks/").concat(i),f=async(e,t)=>{try{await navigator.clipboard.writeText(t),p(e),setTimeout(()=>p(null),1500)}catch(e){}};return(0,a.jsxs)(r.default,{sx:{mt:1},children:[!u&&(0,a.jsx)(d.A,{severity:"info",sx:{mb:2},children:"This URL and token are ready to copy now — they become active when you save."}),(0,a.jsxs)(r.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,a.jsx)(z.A,{fullWidth:!0,label:"Webhook URL",value:m,InputProps:{readOnly:!0},size:"small"}),(0,a.jsx)(v.A,{title:"Copy URL",children:(0,a.jsx)(w.A,{onClick:()=>f("url",m),children:"url"===h?(0,a.jsx)(ed.A,{color:"success"}):(0,a.jsx)(ec.A,{})})})]}),(0,a.jsxs)(r.default,{sx:{display:"flex",alignItems:"center",gap:1,mt:2},children:[(0,a.jsx)(z.A,{fullWidth:!0,label:"Secret token",value:t.token,InputProps:{readOnly:!0},size:"small",type:"password"}),(0,a.jsx)(v.A,{title:"Copy token",children:(0,a.jsx)(w.A,{onClick:()=>f("token",t.token),disabled:!t.token,children:"token"===h?(0,a.jsx)(ed.A,{color:"success"}):(0,a.jsx)(ec.A,{})})}),(0,a.jsx)(c.A,{size:"small",onClick:()=>l({...t,token:crypto.randomUUID()}),sx:{whiteSpace:"nowrap"},children:"New token"})]}),(0,a.jsx)(o.default,{variant:"caption",color:"text.secondary",children:u?"A new token takes effect when you save — callers using the old one are cut off.":""}),(0,a.jsxs)(o.default,{variant:"body2",color:"text.secondary",sx:{mt:1.5},children:["Callers send a POST with the token in the ",(0,a.jsx)("code",{children:"X-Flujo-Token"})," ","header (or ",(0,a.jsx)("code",{children:"?token=…"}),"). The request body becomes part of the flow's input — treat it as untrusted data in your prompt."]}),(0,a.jsx)(s.A,{sx:{mt:1,display:"flex"},control:(0,a.jsx)(ea.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,a.jsx)(d.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."})]})};var eh=l(56422),ep=l(17325),ex=l(80007),em=l(62640);let ef=[{value:"add",label:"A file appears"},{value:"change",label:"A file changes"},{value:"unlink",label:"A file is deleted"}],eg=e=>{var t;let{config:l,onChange:i}=e,[c,u]=(0,n.useState)(!1);return(0,a.jsxs)(r.default,{sx:{mt:1},children:[(0,a.jsx)(z.A,{fullWidth:!0,label:"Folder (or file) to watch",value:l.path,onChange:e=>i({...l,path:e.target.value}),placeholder:"e.g. C:\\Users\\me\\Documents\\inbox",margin:"normal",InputProps:{endAdornment:(0,a.jsx)(eh.A,{position:"end",children:(0,a.jsx)(v.A,{title:"Browse folders (on the FLUJO machine)",children:(0,a.jsx)(w.A,{edge:"end",onClick:()=>u(!0),children:(0,a.jsx)(ex.A,{})})})})}}),(0,a.jsx)(em.A,{open:c,title:"Choose what to watch",selectFiles:!0,initialPath:l.path||void 0,onClose:()=>u(!1),onSelect:e=>i({...l,path:e})}),(0,a.jsx)(z.A,{fullWidth:!0,label:"Only files matching (optional)",value:l.glob||"",onChange:e=>i({...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,a.jsx)(o.default,{variant:"subtitle2",sx:{mt:1},children:"Run when…"}),(0,a.jsx)(ep.A,{row:!0,children:ef.map(e=>(0,a.jsx)(s.A,{control:(0,a.jsx)(ea.A,{checked:l.events.includes(e.value),onChange:t=>((e,t)=>{let a=t?[...l.events,e]:l.events.filter(t=>t!==e);i({...l,events:a})})(e.value,t.target.checked)}),label:e.label},e.value))}),(0,a.jsx)(d.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,a.jsxs)(er.A,{disableGutters:!0,elevation:0,sx:{mt:1,"&:before":{display:"none"}},children:[(0,a.jsx)(en.A,{expandIcon:(0,a.jsx)(F.A,{}),sx:{px:0},children:(0,a.jsx)(o.default,{variant:"body2",color:"text.secondary",children:"Advanced"})}),(0,a.jsx)(eo.A,{sx:{px:0},children:(0,a.jsx)(z.A,{label:"Quiet window (ms)",type:"number",value:null!=(t=l.debounceMs)?t:2e3,onChange:e=>i({...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}})})]})]})},ev=(0,W.A)((0,a.jsx)("path",{d:"M18 23H4c-1.1 0-2-.9-2-2V7h2v14h14zM15 1H8c-1.1 0-1.99.9-1.99 2L6 17c0 1.1.89 2 1.99 2H19c1.1 0 2-.9 2-2V7zm1.5 14h-6v-2h6zm0-6h-2v2h-2V9h-2V7h2V5h2v2h2z"}),"Difference"),ew=(0,W.A)([(0,a.jsx)("path",{d:"M13 8.57c-.79 0-1.43.64-1.43 1.43s.64 1.43 1.43 1.43 1.43-.64 1.43-1.43-.64-1.43-1.43-1.43"},"0"),(0,a.jsx)("path",{d:"M13 3C9.25 3 6.2 5.94 6.02 9.64L4.1 12.2c-.25.33-.01.8.4.8H6v3c0 1.1.9 2 2 2h1v3h7v-4.68c2.36-1.12 4-3.53 4-6.32 0-3.87-3.13-7-7-7m3 7c0 .13-.01.26-.02.39l.83.66c.08.06.1.16.05.25l-.8 1.39c-.05.09-.16.12-.24.09l-.99-.4c-.21.16-.43.29-.67.39L14 13.83c-.01.1-.1.17-.2.17h-1.6c-.1 0-.18-.07-.2-.17l-.15-1.06c-.25-.1-.47-.23-.68-.39l-.99.4c-.09.03-.2 0-.25-.09l-.8-1.39c-.05-.08-.03-.19.05-.25l.84-.66c-.01-.13-.02-.26-.02-.39s.02-.27.04-.39l-.85-.66c-.08-.06-.1-.16-.05-.26l.8-1.38c.05-.09.15-.12.24-.09l1 .4c.2-.15.43-.29.67-.39L12 6.17c.02-.1.1-.17.2-.17h1.6c.1 0 .18.07.2.17l.15 1.06c.24.1.46.23.67.39l1-.4c.09-.03.2 0 .24.09l.8 1.38c.05.09.03.2-.05.26l-.85.66c.03.12.04.25.04.39"},"1")],"Psychology");var ey=l(17897),eb=l(43076),ej=l(17427),eA=l(96362),ek=l(95906),eC=l(68503);let eS=(0,y.h)("frontend/components/PlannedExecutions/WatchToolPanel"),eT=e=>{var t,l;let{config:s,onChange:i}=e,[u,h]=(0,n.useState)([]),[p,x]=(0,n.useState)(!1),[m,f]=(0,n.useState)([]),[g,v]=(0,n.useState)(!1),[w,y]=(0,n.useState)(Object.keys(s.args||{}).length>0?JSON.stringify(s.args,null,2):""),[b,j]=(0,n.useState)(null),[A,k]=(0,n.useState)(!1),[C,T]=(0,n.useState)(null),[I,N]=(0,n.useState)(null),[E,F]=(0,n.useState)([]),[P,W]=(0,n.useState)([]);(0,n.useEffect)(()=>{let e=!1;return ey.S.loadServerConfigs().then(t=>{e||(Array.isArray(t)?h(t.filter(e=>!e.disabled)):(eS.warn("Failed to load MCP servers for watch-tool panel",t),h([])))}),()=>{e=!0}},[]),(0,n.useEffect)(()=>{if(!s.serverName)return void f([]);let e=!1;return v(!0),ey.S.listServerTools(s.serverName).then(t=>{let{tools:l}=t;e||f(l||[])}).finally(()=>{e||v(!1)}),()=>{e=!0}},[s.serverName]),(0,n.useEffect)(()=>{let e=!1;return eb.N.loadModels().then(t=>{e||F(Array.isArray(t)?t:[])}).catch(()=>{e||F([])}),ee.g.loadFlows().then(t=>{e||W(t||[])}).catch(()=>{e||W([])}),()=>{e=!0}},[]);let M=async()=>{k(!0),T(null),N(null);try{let l=await ey.S.callTool(s.serverName,s.toolName,s.args||{});if(null==l?void 0:l.error)N("string"==typeof l.error?l.error:"Tool call failed");else{var e,t;let a=null!=(e=null==l?void 0:l.data)?e:l,r=null!=(t=JSON.stringify(a,null,2))?t:"";T(r.length>6e3?"".concat(r.slice(0,6e3),"\n… (truncated)"):r)}}catch(e){N(e instanceof Error?e.message:"Tool call failed")}finally{k(!1)}},O=s.evaluate,R=m.find(e=>e.name===s.toolName),L=(0,eC.E)("mcp",u),U=e=>({key:e.name,content:(e=>(0,a.jsx)(ek.A,{name:e.name,status:e.status||"disconnected",path:e.rootPath||"",enabled:!e.disabled,transport:e.transport||"stdio",pickerMode:!0,selected:s.serverName===e.name,onClick:()=>{var t;return t=e.name,void(i({...s,serverName:t,toolName:""}),x(!1))}}))(e)}),D=L.items.map(U),_=L.groups?L.groups.map(e=>({...e,items:e.items.map(U)})):null;return(0,a.jsxs)(r.default,{sx:{mt:1},children:[(0,a.jsxs)(r.default,{sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,a.jsxs)(r.default,{sx:{minWidth:220,flex:1,mt:2,mb:1},children:[(0,a.jsx)(o.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:.5},children:"Server"}),(0,a.jsx)(c.A,{variant:"outlined",fullWidth:!0,onClick:()=>x(!0),sx:{justifyContent:"flex-start",textTransform:"none"},children:s.serverName?"".concat(s.serverName," — change"):"Choose an MCP server…"}),(0,a.jsx)(eA.A,{open:p,onClose:()=>x(!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:L.searchTerm,onSearchChange:L.setSearchTerm,columns:{xs:12,sm:6},items:D,groups:_,collapsedKeys:L.collapsedKeys,onToggleGroup:L.toggleGroup})]}),(0,a.jsxs)(H.A,{sx:{minWidth:220,flex:1},margin:"normal",disabled:!s.serverName,children:[(0,a.jsx)(J.A,{id:"watch-tool-label",children:"Tool"}),(0,a.jsxs)(G.A,{labelId:"watch-tool-label",label:"Tool",value:m.some(e=>e.name===s.toolName)?s.toolName:"",onChange:e=>i({...s,toolName:e.target.value,args:{}}),children:[0===m.length&&(0,a.jsx)(K.A,{value:"",disabled:!0,children:g?"Loading tools…":"Pick a server first"}),m.map(e=>(0,a.jsx)(K.A,{value:e.name,children:e.name},e.name))]})]})]}),(0,a.jsx)(o.default,{variant:"subtitle2",sx:{mt:1},children:"How often to check"}),(0,a.jsx)(ei,{verb:"Check",cron:null!=(t=s.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 a=Math.max(1,Math.min(23,Math.round(l/60)));return"0 */".concat(a," * * *")}(s.intervalMs),timezone:s.timezone,onChange:e=>{let{cron:t,timezone:l}=e;return i({...s,cron:t,timezone:l})}}),R?(0,a.jsxs)(r.default,{sx:{my:1.5},children:[(0,a.jsx)(o.default,{variant:"subtitle2",sx:{mb:1.5},children:"Tool parameters — sent on every check"}),(0,a.jsx)(ej.A,{schema:R.inputSchema,values:s.args||{},onChange:e=>i({...s,args:e})})]}):(0,a.jsx)(z.A,{fullWidth:!0,label:"Tool arguments (JSON, optional)",value:w,onChange:e=>(e=>{if(y(e),!e.trim()){j(null),i({...s,args:{}});return}try{let t=JSON.parse(e);if(null===t||"object"!=typeof t||Array.isArray(t))return void j('Arguments must be a JSON object, e.g. { "query": "…" }');j(null),i({...s,args:t})}catch(e){j("Not valid JSON yet")}})(e.target.value),margin:"normal",multiline:!0,minRows:2,placeholder:'{ "query": "is:unread" }',error:!!b,helperText:null!=b?b:"Sent to the tool on every check.",slotProps:{input:{sx:{fontFamily:"monospace",fontSize:14}}}}),(0,a.jsxs)(r.default,{sx:{display:"flex",alignItems:"center",gap:2,mb:1},children:[(0,a.jsx)(c.A,{variant:"outlined",size:"small",onClick:M,disabled:!s.serverName||!s.toolName||A||!!b,startIcon:A?(0,a.jsx)(S.default,{size:16}):void 0,children:"Test: call the tool now"}),(0,a.jsx)(o.default,{variant:"caption",color:"text.secondary",children:"See what the result looks like — useful for the settings below."})]}),I&&(0,a.jsx)(d.A,{severity:"error",sx:{mb:1},children:I}),C&&(0,a.jsx)(r.default,{component:"pre",sx:{maxHeight:240,overflow:"auto",bgcolor:"action.hover",borderRadius:1,p:1.5,fontSize:12,m:0,mb:1},children:C}),(0,a.jsx)(o.default,{variant:"subtitle2",sx:{mt:2,mb:1},children:"Run the flow when…"}),(0,a.jsxs)(r.default,{role:"radiogroup","aria-label":"Poll condition",sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,a.jsx)(el,{selected:"on-change"===O.mode,onClick:()=>i({...s,evaluate:{mode:"on-change"}}),icon:(0,a.jsx)(ev,{}),title:"The result changes",description:"Any difference from the last check runs the flow. Simplest — no setup."}),(0,a.jsx)(el,{selected:"llm-gate"===O.mode||"flow-gate"===O.mode,onClick:()=>{"llm-gate"!==O.mode&&"flow-gate"!==O.mode&&i({...s,evaluate:{mode:"llm-gate",condition:"",modelId:""}})},icon:(0,a.jsx)(ew,{}),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"===O.mode||"flow-gate"===O.mode)&&(0,a.jsxs)(r.default,{sx:{mt:1},children:[(0,a.jsx)(z.A,{fullWidth:!0,label:"Run the flow if…",value:O.condition,onChange:e=>i({...s,evaluate:{...O,condition:e.target.value}}),multiline:!0,minRows:2,margin:"normal",placeholder:"e.g. any email mentions an invoice or a payment reminder"}),(0,a.jsxs)(r.default,{sx:{display:"flex",gap:2,flexWrap:"wrap",alignItems:"flex-start"},children:[(0,a.jsxs)(H.A,{sx:{minWidth:170},children:[(0,a.jsx)(J.A,{id:"gate-checker-label",children:"Checked by"}),(0,a.jsxs)(G.A,{labelId:"gate-checker-label",label:"Checked by",value:O.mode,onChange:e=>{let t=e.target.value;if(t===O.mode)return;let l={condition:O.condition,maxCallsPerDay:O.maxCallsPerDay};i({...s,evaluate:"llm-gate"===t?{mode:t,...l,modelId:""}:{mode:t,...l,flowId:""}})},children:[(0,a.jsx)(K.A,{value:"llm-gate",children:"A model"}),(0,a.jsx)(K.A,{value:"flow-gate",children:"One of my flows"})]})]}),"llm-gate"===O.mode&&(0,a.jsxs)(H.A,{sx:{minWidth:240,flex:1},children:[(0,a.jsx)(J.A,{id:"gate-model-label",children:"Model that checks"}),(0,a.jsxs)(G.A,{labelId:"gate-model-label",label:"Model that checks",value:E.some(e=>e.id===O.modelId)?O.modelId:"",onChange:e=>i({...s,evaluate:{...O,modelId:e.target.value}}),children:[0===E.length&&(0,a.jsx)(K.A,{value:"",disabled:!0,children:"No models configured"}),E.map(e=>(0,a.jsx)(K.A,{value:e.id,children:e.displayName||e.name},e.id))]})]}),"flow-gate"===O.mode&&(0,a.jsxs)(H.A,{sx:{minWidth:240,flex:1},children:[(0,a.jsx)(J.A,{id:"gate-flow-label",children:"Flow that checks"}),(0,a.jsxs)(G.A,{labelId:"gate-flow-label",label:"Flow that checks",value:P.some(e=>e.id===O.flowId)?O.flowId:"",onChange:e=>i({...s,evaluate:{...O,flowId:e.target.value}}),children:[0===P.length&&(0,a.jsx)(K.A,{value:"",disabled:!0,children:"No flows available"}),P.map(e=>(0,a.jsx)(K.A,{value:e.id,children:e.name},e.id))]})]}),(0,a.jsx)(z.A,{label:"Max checks per day",type:"number",value:null!=(l=O.maxCallsPerDay)?l:500,onChange:e=>i({...s,evaluate:{...O,maxCallsPerDay:Math.max(1,Number(e.target.value)||1)}}),inputProps:{min:1},helperText:"Cost guard per check.",sx:{width:180}})]}),(0,a.jsx)(o.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:.5},children:"flow-gate"===O.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,a.jsx)(d.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."})]})},eI=e=>{let{config:t,onChange:l}=e;return(0,a.jsxs)(r.default,{sx:{mt:1},children:[(0,a.jsx)(z.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,a.jsx)(o.default,{variant:"subtitle2",sx:{mt:1},children:"How often to check"}),(0,a.jsx)(ei,{verb:"Check",cron:t.cron,timezone:t.timezone,onChange:e=>{let{cron:a,timezone:r}=e;return l({...t,cron:a,timezone:r})}}),(0,a.jsx)(d.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."})]})},eN=(0,y.h)("frontend/components/PlannedExecutions/FlowEventPanel"),eE=e=>{var t,l,i,c,u,h,p,x,m,f,g,v,w,y;let{config:b,onChange:j,flows:k,currentExecutionId:C}=e,[S,T]=(0,n.useState)([]),[I,N]=(0,n.useState)(void 0!==b.maxChainDepth||void 0!==b.minIntervalMs),E=(null==(t=b.source)?void 0:t.topic)!==void 0?"topic":(null==(l=b.source)?void 0:l.executionId)!==void 0?"execution":"flow",F="topic"===E;(0,n.useEffect)(()=>{let e=!1;return A.list().then(t=>{e||T(t.executions||[])}).catch(t=>{eN.warn("Failed to load planned executions for source picker",t),e||T([])}),()=>{e=!0}},[]);let P=(e,t)=>{var l;let a=new Set(null!=(l=b.on)?l:[]);t?a.add(e):a.delete(e),j({...b,on:Array.from(a)})};return(0,a.jsxs)(r.default,{sx:{mt:1},children:[(0,a.jsx)(o.default,{variant:"subtitle2",sx:{mt:1},children:"React to"}),(0,a.jsxs)(r.default,{sx:{display:"flex",gap:2,mt:1},children:[(0,a.jsxs)(H.A,{sx:{minWidth:180},children:[(0,a.jsx)(J.A,{id:"flow-event-source-kind",children:"Source"}),(0,a.jsxs)(G.A,{labelId:"flow-event-source-kind",label:"Source",value:E,onChange:e=>(e=>{j({...b,source:"flow"===e?{flowId:""}:"execution"===e?{executionId:""}:{topic:""}})})(e.target.value),children:[(0,a.jsx)(K.A,{value:"flow",children:"A flow (any run)"}),(0,a.jsx)(K.A,{value:"execution",children:"A planned execution"}),(0,a.jsx)(K.A,{value:"topic",children:"A signal topic"})]})]}),"topic"===E?(0,a.jsx)(H.A,{fullWidth:!0,children:(0,a.jsx)(z.A,{label:"Signal topic",value:null!=(p=null==(i=b.source)?void 0:i.topic)?p:"",onChange:e=>j({...b,source:{topic:e.target.value}}),placeholder:"e.g. review-blocked",helperText:"React when a signal node in any flow emits this topic."})}):"flow"===E?(0,a.jsxs)(H.A,{fullWidth:!0,children:[(0,a.jsx)(J.A,{id:"flow-event-flow",children:"Flow to watch"}),(0,a.jsxs)(G.A,{labelId:"flow-event-flow",label:"Flow to watch",value:null!=(x=null==(c=b.source)?void 0:c.flowId)?x:"",onChange:e=>j({...b,source:{flowId:e.target.value}}),displayEmpty:!0,children:[0===k.length&&(0,a.jsx)(K.A,{value:"",disabled:!0,children:"No flows available"}),k.map(e=>(0,a.jsx)(K.A,{value:e.id,children:e.name},e.id))]})]}):(0,a.jsxs)(H.A,{fullWidth:!0,children:[(0,a.jsx)(J.A,{id:"flow-event-execution",children:"Planned execution to watch"}),(0,a.jsxs)(G.A,{labelId:"flow-event-execution",label:"Planned execution to watch",value:null!=(m=null==(u=b.source)?void 0:u.executionId)?m:"",onChange:e=>j({...b,source:{executionId:e.target.value}}),displayEmpty:!0,children:[0===S.filter(e=>e.execution.id!==C).length&&(0,a.jsx)(K.A,{value:"",disabled:!0,children:"No other planned executions"}),S.filter(e=>e.execution.id!==C).map(e=>(0,a.jsx)(K.A,{value:e.execution.id,children:e.execution.name},e.execution.id))]})]})]}),!F&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(o.default,{variant:"subtitle2",sx:{mt:2},children:"When it…"}),(0,a.jsxs)(ep.A,{row:!0,children:[(0,a.jsx)(s.A,{control:(0,a.jsx)(ea.A,{checked:(null!=(f=b.on)?f:[]).includes("completed"),onChange:e=>P("completed",e.target.checked)}),label:"completes"}),(0,a.jsx)(s.A,{control:(0,a.jsx)(ea.A,{checked:(null!=(g=b.on)?g:[]).includes("error"),onChange:e=>P("error",e.target.checked)}),label:"errors"})]})]}),(0,a.jsx)(z.A,{fullWidth:!0,label:F?"Only when the payload contains (optional)":"Only when the output contains (optional)",value:null!=(v=null==(h=b.outputMatch)?void 0:h.contains)?v:"",onChange:e=>{let t=e.target.value,l={...b.outputMatch,contains:t||void 0},a=l.contains||l.regex?l:void 0;j({...b,outputMatch:a})},margin:"normal",placeholder:"e.g. FAILED, or leave empty to react to every matching run"}),(0,a.jsx)(s.A,{sx:{mt:1},control:(0,a.jsx)(ea.A,{checked:I,onChange:e=>N(e.target.checked)}),label:"Advanced (loop safety)"}),I&&(0,a.jsxs)(r.default,{sx:{display:"flex",gap:2,mt:1},children:[(0,a.jsx)(z.A,{label:"Max chain depth",type:"number",value:null!=(w=b.maxChainDepth)?w:"",onChange:e=>j({...b,maxChainDepth:""===e.target.value?void 0:Number(e.target.value)}),helperText:"Stop after this many hops (default 5)",inputProps:{min:1}}),(0,a.jsx)(z.A,{label:"Cooldown (ms)",type:"number",value:null!=(y=b.minIntervalMs)?y:"",onChange:e=>j({...b,minIntervalMs:""===e.target.value?void 0:Number(e.target.value)}),helperText:"Minimum gap between fires",inputProps:{min:0}})]}),(0,a.jsx)(_.A,{sx:{mt:2}}),(0,a.jsx)(d.A,{severity:"info",sx:{mt:2},children:F?"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."})]})},eF=(0,y.h)("frontend/components/PlannedExecutions/ExecutionModal"),eP={type:"schedule",cron:"0 9 * * *"},eW={type:"file-watch",path:"",events:["add","change"]},eM={type:"mcp-poll",serverName:"",toolName:"",args:{},cron:"*/5 * * * *",evaluate:{mode:"on-change"}},eO={type:"url-watch",url:"",cron:"*/15 * * * *"},eR={type:"flow-event",source:{flowId:""},on:["completed"]},eL=e=>{var t,l;let{open:u,execution:f,onClose:g,onSaved:v}=e,[y,b]=(0,n.useState)(""),[j,k]=(0,n.useState)(""),[C,S]=(0,n.useState)(""),[T,I]=(0,n.useState)(!1),[N,E]=(0,n.useState)("skip"),[F,P]=(0,n.useState)(eP),[W,M]=(0,n.useState)(""),[O,R]=(0,n.useState)([]),[L,U]=(0,n.useState)(!1),[D,et]=(0,n.useState)(!1),[ea,er]=(0,n.useState)(null);(0,n.useEffect)(()=>{var e,t,l,a,r;u&&(er(null),b(null!=(e=null==f?void 0:f.name)?e:""),k(null!=(t=null==f?void 0:f.flowId)?t:""),S(null!=(l=null==f?void 0:f.prompt)?l:""),I((null==f?void 0:f.saveConversations)===!0),E(null!=(a=null==f?void 0:f.overlapStrategy)?a:"skip"),P(null!=(r=null==f?void 0:f.trigger)?r:eP),M(f?"":crypto.randomUUID()))},[u,f]),(0,n.useEffect)(()=>{if(!u)return;let e=!1;return U(!0),ee.g.loadFlows().then(t=>{e||R(t||[])}).catch(t=>{eF.warn("Failed to load flows for execution picker",t),e||R([])}).finally(()=>{e||U(!1)}),()=>{e=!0}},[u]);let en=!!j&&!L&&O.length>0&&!O.some(e=>e.id===j),eo=async()=>{var e;et(!0),er(null);let t={name:y,flowId:j,prompt:C,saveConversations:T,overlapStrategy:N,trigger:F,enabled:null==(e=null==f?void 0:f.enabled)||e,...f?{}:{id:W}},l=f?await A.update(f.id,t):await A.create(t);if(et(!1),!l.success)return void er(l.error||"Failed to save");v(),g()};return(0,a.jsxs)(h.A,{open:u,onClose:g,maxWidth:"md",fullWidth:!0,PaperProps:{sx:{borderTop:5,borderColor:"primary.main",maxWidth:"95vw",maxHeight:"90vh"}},children:[(0,a.jsx)(p.A,{component:"div",children:(0,a.jsxs)(r.default,{display:"flex",alignItems:"center",justifyContent:"space-between",children:[(0,a.jsx)(o.default,{variant:"h6",children:f?"Edit planned execution":"New planned execution"}),(0,a.jsx)(w.A,{edge:"end",color:"inherit",onClick:g,"aria-label":"close",children:(0,a.jsx)(q.A,{})})]})}),(0,a.jsx)(_.A,{}),(0,a.jsxs)(x.A,{sx:{p:3},children:[(0,a.jsx)(o.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"A planned execution runs one of your flows automatically — on a schedule or when something happens — without anyone sitting in the chat. Results show up in its run history on the Executions page."}),(0,a.jsx)(z.A,{fullWidth:!0,label:"Name",value:y,onChange:e=>b(e.target.value),margin:"normal",placeholder:"e.g. Morning news digest"}),(0,a.jsx)(o.default,{variant:"subtitle1",sx:{mt:3,mb:1,fontWeight:600},children:"1 \xb7 When should it run?"}),(0,a.jsxs)(r.default,{role:"radiogroup","aria-label":"Trigger type",sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,a.jsx)(el,{selected:"schedule"===F.type,onClick:()=>{"schedule"!==F.type&&P((null==f?void 0:f.trigger.type)==="schedule"?f.trigger:eP)},icon:(0,a.jsx)(B,{}),title:"On a schedule",description:"Run at fixed times — every few minutes, daily, on weekdays, or a custom rhythm."}),(0,a.jsx)(el,{selected:"webhook"===F.type,onClick:()=>{"webhook"!==F.type&&P((null==f?void 0:f.trigger.type)==="webhook"?f.trigger:{type:"webhook",token:crypto.randomUUID()})},icon:(0,a.jsx)($,{}),title:"When called (webhook)",description:"Other apps run this flow by calling a URL — GitHub, Stripe, Slack and most services can send webhooks."}),(0,a.jsx)(el,{selected:"file-watch"===F.type,onClick:()=>{"file-watch"!==F.type&&P((null==f?void 0:f.trigger.type)==="file-watch"?f.trigger:eW)},icon:(0,a.jsx)(Z.A,{}),title:"When files change",description:"Watch a folder on this computer and run when files appear, change, or disappear."}),(0,a.jsx)(el,{selected:"mcp-poll"===F.type,onClick:()=>{"mcp-poll"!==F.type&&P((null==f?void 0:f.trigger.type)==="mcp-poll"?f.trigger:eM)},icon:(0,a.jsx)(X,{}),title:"Watch a tool",description:"Check one of your MCP tools regularly — run when its result changes, or let AI decide."}),(0,a.jsx)(el,{selected:"url-watch"===F.type,onClick:()=>{"url-watch"!==F.type&&P((null==f?void 0:f.trigger.type)==="url-watch"?f.trigger:eO)},icon:(0,a.jsx)(Y.A,{}),title:"When a website changes",description:"Check a URL regularly and run when its content is different from the last check."}),(0,a.jsx)(el,{selected:"flow-event"===F.type,onClick:()=>{"flow-event"!==F.type&&P((null==f?void 0:f.trigger.type)==="flow-event"?f.trigger:eR)},icon:(0,a.jsx)(Q,{}),title:"When another flow finishes",description:"React to another flow completing or erroring — chain flows together or run triage when something fails."})]}),"schedule"===F.type&&(0,a.jsx)(ei,{cron:F.cron,timezone:F.timezone,onChange:e=>{let{cron:t,timezone:l}=e;return P({...F,cron:t,timezone:l})},catchUp:!0===F.catchUp,onCatchUpChange:e=>P({...F,catchUp:e})}),"webhook"===F.type&&(0,a.jsx)(eu,{config:F,onChange:P,executionId:null!=(t=null==f?void 0:f.id)?t:W,saved:null!==f}),"file-watch"===F.type&&(0,a.jsx)(eg,{config:F,onChange:P}),"mcp-poll"===F.type&&(0,a.jsx)(eT,{config:F,onChange:P}),"url-watch"===F.type&&(0,a.jsx)(eI,{config:F,onChange:P}),"flow-event"===F.type&&(0,a.jsx)(eE,{config:F,onChange:P,flows:O,currentExecutionId:null!=(l=null==f?void 0:f.id)?l:W}),(0,a.jsxs)(H.A,{fullWidth:!0,margin:"normal",children:[(0,a.jsx)(J.A,{id:"overlap-strategy-label",children:"If it's already running…"}),(0,a.jsxs)(G.A,{labelId:"overlap-strategy-label",label:"If it's already running…",value:N,onChange:e=>E(e.target.value),children:[(0,a.jsx)(K.A,{value:"skip",children:"Skip the new run (default)"}),(0,a.jsx)(K.A,{value:"queue",children:"Queue it — run after the current one finishes"}),(0,a.jsx)(K.A,{value:"parallel",children:"Run in parallel — allow concurrent runs"}),(0,a.jsx)(K.A,{value:"error",children:"Reject it — record an error (webhook gets 409)"})]}),(0,a.jsx)(V.A,{children:"parallel"===N&&("url-watch"===F.type||"mcp-poll"===F.type)?"Heads up: parallel runs of a change-watching trigger can race each other — skip or queue is usually safer here.":"queue"===N?"Queued fires run one at a time, in order. A burst is capped so it can’t grow without limit.":"What happens when this trigger fires while a previous run of it is still going."})]}),(0,a.jsx)(_.A,{sx:{mt:3}}),(0,a.jsx)(o.default,{variant:"subtitle1",sx:{mt:2,mb:0,fontWeight:600},children:"2 \xb7 What should it run?"}),(0,a.jsxs)(H.A,{fullWidth:!0,margin:"normal",children:[(0,a.jsx)(J.A,{id:"execution-flow-label",children:"Flow to run"}),(0,a.jsxs)(G.A,{labelId:"execution-flow-label",label:"Flow to run",value:en?"":j,onChange:e=>k(e.target.value),displayEmpty:!0,children:[0===O.length&&(0,a.jsx)(K.A,{value:"",disabled:!0,children:L?"Loading flows…":"No flows available"}),O.map(e=>(0,a.jsx)(K.A,{value:e.id,children:e.name},e.id))]})]}),en&&(0,a.jsx)(d.A,{severity:"warning",sx:{mt:1},children:"The previously selected flow no longer exists. Please choose another."}),(0,a.jsx)(z.A,{fullWidth:!0,label:"What should the flow do?",value:C,onChange:e=>S(e.target.value),margin:"normal",multiline:!0,rows:3,helperText:"Sent to the flow as the user message each time this runs. Run details are attached automatically: current time, what triggered it, the previous run, the next planned run, and any trigger data."}),(0,a.jsx)(s.A,{sx:{mt:1},control:(0,a.jsx)(i.A,{checked:T,onChange:e=>I(e.target.checked)}),label:"Save full conversations (each run appears in the chat sidebar — useful for debugging)"}),ea&&(0,a.jsx)(d.A,{severity:"error",sx:{mt:2},children:ea})]}),(0,a.jsxs)(m.A,{children:[(0,a.jsx)(c.A,{onClick:g,children:"Cancel"}),(0,a.jsx)(c.A,{onClick:eo,variant:"contained",color:"primary",disabled:D||!y.trim()||!j,children:D?"Saving…":"Save"})]})]})},eU=(0,y.h)("frontend/components/PlannedExecutions"),eD=()=>{let[e,t]=(0,n.useState)([]),[l,y]=(0,n.useState)(!1),[b,j]=(0,n.useState)(!1),[k,C]=(0,n.useState)(!1),[S,T]=(0,n.useState)(null),[I,N]=(0,n.useState)(null),[E,F]=(0,n.useState)(null),P=(0,n.useCallback)(async()=>{let e=await A.list();t(e.executions),y(e.paused),j(!0)},[]);(0,n.useEffect)(()=>{P()},[P]);let W=e.some(e=>e.status.running);(0,n.useEffect)(()=>{let e=setInterval(()=>{document.hidden||P()},W?3e3:1e4);return()=>clearInterval(e)},[P,W]);let M=async e=>{y(e);let t=await A.setPaused(e);t.success||eU.warn("Failed to toggle pause",t.error),P()},O=async(e,t)=>{let l=await A.update(e.id,{enabled:t});if(!l.success){let e=l.error||"Failed to update the planned execution.";eU.warn("Failed to toggle enabled",e),F(e)}P()},R=async()=>{I&&(await A.delete(I.id),N(null),P())};return(0,a.jsxs)(r.default,{sx:{p:3,maxWidth:1100,mx:"auto",width:"100%"},children:[(0,a.jsxs)(r.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:2,mb:1},children:[(0,a.jsx)(o.default,{variant:"h5",children:"Planned Executions"}),(0,a.jsxs)(r.default,{sx:{display:"flex",alignItems:"center",gap:2},children:[(0,a.jsx)(v.A,{title:"Refresh",children:(0,a.jsx)(w.A,{onClick:()=>void P(),children:(0,a.jsx)(g.A,{})})}),(0,a.jsx)(s.A,{control:(0,a.jsx)(i.A,{checked:!l,onChange:e=>M(!e.target.checked)}),label:l?"Paused":"Active"}),(0,a.jsx)(c.A,{variant:"contained",startIcon:(0,a.jsx)(f.A,{}),onClick:()=>{T(null),C(!0)},"data-tour":"add-execution",children:"Add"})]})]}),(0,a.jsxs)(o.default,{variant:"body2",color:"text.secondary",sx:{mb:3},children:["Run your flows automatically — on a schedule or when something happens — without opening the chat. FLUJO must be running for triggers to fire. The Active/Paused switch above gates ",(0,a.jsx)("em",{children:"all"})," triggers globally."]}),l&&e.length>0&&(0,a.jsx)(d.A,{severity:"info",sx:{mb:3},children:"The scheduler is paused — no triggers will fire, so every execution below shows “Paused (global)”. Switch it to Active (top right) to arm them."}),b&&0===e.length&&(0,a.jsxs)(r.default,{sx:{border:1,borderColor:"divider",borderRadius:2,borderStyle:"dashed",p:6,textAlign:"center"},children:[(0,a.jsx)(o.default,{variant:"h6",sx:{mb:1},children:"Nothing planned yet"}),(0,a.jsx)(o.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:"Create your first planned execution to run a flow on a schedule."}),(0,a.jsx)(c.A,{variant:"contained",startIcon:(0,a.jsx)(f.A,{}),onClick:()=>{T(null),C(!0)},children:"New planned execution"})]}),(0,a.jsx)(r.default,{sx:{display:"flex",flexDirection:"column",gap:2},children:e.map(e=>(0,a.jsx)(D,{entry:e,onEdit:()=>{T(e.execution),C(!0)},onDelete:()=>N(e.execution),onToggleEnabled:t=>O(e.execution,t),onRanNow:()=>void P(),paused:l},e.execution.id))}),(0,a.jsx)(eL,{open:k,execution:S,onClose:()=>C(!1),onSaved:()=>void P()}),(0,a.jsx)(u.A,{open:null!==E,autoHideDuration:6e3,onClose:()=>F(null),anchorOrigin:{vertical:"bottom",horizontal:"center"},children:(0,a.jsx)(d.A,{severity:"error",onClose:()=>F(null),sx:{width:"100%"},children:E})}),(0,a.jsxs)(h.A,{open:null!==I,onClose:()=>N(null),children:[(0,a.jsxs)(p.A,{children:["Delete “",null==I?void 0:I.name,"”?"]}),(0,a.jsx)(x.A,{children:(0,a.jsx)(o.default,{variant:"body2",color:"text.secondary",children:"This removes the planned execution and its run history. The flow itself is not affected."})}),(0,a.jsxs)(m.A,{children:[(0,a.jsx)(c.A,{onClick:()=>N(null),children:"Cancel"}),(0,a.jsx)(c.A,{color:"error",variant:"contained",onClick:R,children:"Delete"})]})]})]})},e_=(0,y.h)("app/executions/page");function ez(){return e_.debug("Rendering ExecutionsPage"),(0,a.jsx)(r.default,{sx:{height:"100%",display:"flex",flexDirection:"column"},children:(0,a.jsx)(eD,{})})}},48072:(e,t,l)=>{"use strict";l.d(t,{Lg:()=>o,eZ:()=>i,fC:()=>n,h5:()=>c});var a=l(88107),r=l(38459);let n={"name-asc":"Name (A-Z)","name-desc":"Name (Z-A)",provider:"Provider","context-desc":"Context (largest)","context-asc":"Context (smallest)"},o=e=>e.displayName||e.name||"",s=e=>(0,a.T_)(e.provider,e.adapter).label;function i(e,t){switch(t){case"provider":{let t=s(e);return{key:"provider:".concat(t),label:t}}case"context-asc":case"context-desc":var l;return"number"!=typeof(l=e.contextWindow)||Number.isNaN(l)?{key:"ctx:unknown",label:"Unknown context"}:l<=8e3?{key:"ctx:<=8k",label:"≤ 8K tokens"}:l<=32e3?{key:"ctx:8k-32k",label:"8K–32K tokens"}:l<=128e3?{key:"ctx:32k-128k",label:"32K–128K tokens"}:l<=1e6?{key:"ctx:128k-1m",label:"128K–1M tokens"}:{key:"ctx:>1m",label:"> 1M tokens"};default:return(0,r.po)(o(e))}}function c(e,t){return[...e].sort((e,l)=>{switch(t){case"name-asc":return o(e).localeCompare(o(l));case"name-desc":return o(l).localeCompare(o(e));case"provider":return s(e).localeCompare(s(l))||o(e).localeCompare(o(l));case"context-desc":case"context-asc":{let a="number"!=typeof e.contextWindow||Number.isNaN(e.contextWindow)?void 0:e.contextWindow,r="number"!=typeof l.contextWindow||Number.isNaN(l.contextWindow)?void 0:l.contextWindow;if(void 0===a&&void 0===r)return o(e).localeCompare(o(l));if(void 0===a)return 1;if(void 0===r)return -1;let n="context-desc"===t?r-a:a-r;return 0!==n?n:o(e).localeCompare(o(l))}default:return 0}})}},53657:(e,t,l)=>{"use strict";l.d(t,{A:()=>n});var a=l(36697),r=l(95155);let n=(0,a.A)((0,r.jsx)("path",{d:"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2m6.93 6h-2.95c-.32-1.25-.78-2.45-1.38-3.56 1.84.63 3.37 1.91 4.33 3.56M12 4.04c.83 1.2 1.48 2.53 1.91 3.96h-3.82c.43-1.43 1.08-2.76 1.91-3.96M4.26 14C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2s.06 1.34.14 2zm.82 2h2.95c.32 1.25.78 2.45 1.38 3.56-1.84-.63-3.37-1.9-4.33-3.56m2.95-8H5.08c.96-1.66 2.49-2.93 4.33-3.56C8.81 5.55 8.35 6.75 8.03 8M12 19.96c-.83-1.2-1.48-2.53-1.91-3.96h3.82c-.43 1.43-1.08 2.76-1.91 3.96M14.34 14H9.66c-.09-.66-.16-1.32-.16-2s.07-1.35.16-2h4.68c.09.65.16 1.32.16 2s-.07 1.34-.16 2m.25 5.56c.6-1.11 1.06-2.31 1.38-3.56h2.95c-.96 1.65-2.49 2.93-4.33 3.56M16.36 14c.08-.66.14-1.32.14-2s-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2z"}),"Language")},55406:(e,t,l)=>{"use strict";l.d(t,{A:()=>n});var a=l(36697),r=l(95155);let n=(0,a.A)((0,r.jsx)("path",{d:"M8 5v14l11-7z"}),"PlayArrow")},60187:(e,t,l)=>{Promise.resolve().then(l.bind(l,31932))},62962:(e,t,l)=>{"use strict";l.d(t,{A:()=>n});var a=l(36697),r=l(95155);let n=(0,a.A)((0,r.jsx)("path",{d:"m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"}),"ExpandLess")},68503:(e,t,l)=>{"use strict";l.d(t,{E:()=>d});var a=l(12115),r=l(97104),n=l(38459),o=l(48072),s=l(65818),i=l(88377);let c={models:{defaultSort:"name-asc",sort:(e,t)=>(0,o.h5)(e,t),deriveSortGroup:(e,t)=>(0,o.eZ)(e,t),getFolder:e=>e.folder,getSearchText:e=>{var t;return"".concat((0,o.Lg)(e)," ").concat(null!=(t=e.name)?t:"")}},mcp:{defaultSort:"name-asc",sort:(e,t)=>(0,s.rI)(e,t),deriveSortGroup:(e,t)=>(0,s.mO)(e,t),getFolder:e=>e.folder,getSearchText:e=>{var t,l,a;return"".concat(null!=(t=e.name)?t:""," ").concat(null!=(a=null!=(l=e.rootPath)?l:e.path)?a:"")}},flows:{defaultSort:"name-asc",sort:(e,t)=>(0,i.NP)(e,t),deriveSortGroup:(e,t)=>(0,i.ts)(e,t),getFolder:e=>e.folder,getSearchText:e=>{var t;return null!=(t=e.name)?t:""}}};function d(e,t){let l=c[e],[o,s]=(0,a.useState)(""),[i]=(0,r.Xk)("flujo-ui:".concat(e,":sort"),l.defaultSort),[d]=(0,r.Xk)("flujo-ui:".concat(e,":group"),"none"),[u,h]=(0,r.Xk)("flujo-ui:".concat(e,":collapsed"),[]),p=(0,a.useMemo)(()=>new Set(u),[u]),x=(0,a.useMemo)(()=>{let e=o.trim().toLowerCase(),a=e?t.filter(t=>l.getSearchText(t).toLowerCase().includes(e)):t;return l.sort([...a],i)},[t,o,i,l]),m=(0,a.useMemo)(()=>"folder"===d?(0,n.Je)(x,e=>l.getFolder(e)):"sort"===d?(0,n.Az)(x,e=>l.deriveSortGroup(e,i)):null,[d,x,i,l]);return{searchTerm:o,setSearchTerm:s,sortOption:i,groupMode:d,items:x,groups:m,collapsedKeys:p,toggleGroup:(0,a.useCallback)(e=>{h(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[h])}}},74879:(e,t,l)=>{"use strict";let a;l.d(t,{A:()=>s});let r={randomUUID:"undefined"!=typeof crypto&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)},n=new Uint8Array(16),o=[];for(let e=0;e<256;++e)o.push((e+256).toString(16).slice(1));let s=function(e,t,l){if(r.randomUUID&&!t&&!e)return r.randomUUID();let s=(e=e||{}).random??e.rng?.()??function(){if(!a){if("undefined"==typeof crypto||!crypto.getRandomValues)throw Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");a=crypto.getRandomValues.bind(crypto)}return a(n)}();if(s.length<16)throw Error("Random bytes length must be >= 16");if(s[6]=15&s[6]|64,s[8]=63&s[8]|128,t){if((l=l||0)<0||l+16>t.length)throw RangeError(`UUID byte range ${l}:${l+15} is out of buffer bounds`);for(let e=0;e<16;++e)t[l+e]=s[e];return t}return function(e,t=0){return(o[e[t+0]]+o[e[t+1]]+o[e[t+2]]+o[e[t+3]]+"-"+o[e[t+4]]+o[e[t+5]]+"-"+o[e[t+6]]+o[e[t+7]]+"-"+o[e[t+8]]+o[e[t+9]]+"-"+o[e[t+10]]+o[e[t+11]]+o[e[t+12]]+o[e[t+13]]+o[e[t+14]]+o[e[t+15]]).toLowerCase()}(s)}},88107:(e,t,l)=>{"use strict";l.d(t,{T_:()=>r,xx:()=>a});let a=[{id:"openai",label:"OpenAI",provider:"openai",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.openai.com/v1",showBaseUrl:!0},{id:"openrouter",label:"OpenRouter",provider:"openrouter",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://openrouter.ai/api/v1",showBaseUrl:!0},{id:"requesty",label:"Requesty",provider:"requesty",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://router.requesty.ai/v1",showBaseUrl:!0},{id:"xai",label:"X.ai",provider:"xai",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.x.ai/v1",showBaseUrl:!0},{id:"ollama",label:"Ollama",provider:"ollama",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"http://localhost:11434/v1",showBaseUrl:!0},{id:"litellm",label:"LiteLLM",provider:"litellm",adapter:"openai",sdkLabel:"OpenAI SDK (via LiteLLM Proxy)",baseUrl:"http://localhost:4000/v1",showBaseUrl:!0},{id:"gemini-openai",label:"Gemini (OpenAI Format)",provider:"gemini",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://generativelanguage.googleapis.com/v1beta/openai/",showBaseUrl:!0},{id:"gemini-native",label:"Gemini (Native)",provider:"gemini",adapter:"gemini",sdkLabel:"GenAI SDK",baseUrl:"",showBaseUrl:!1,defaultModels:["gemini-2.5-pro","gemini-2.5-flash","gemini-2.5-flash-lite","gemini-2.0-flash"]},{id:"anthropic-openai",label:"Anthropic (OpenAI Format)",provider:"anthropic",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.anthropic.com/v1/",showBaseUrl:!0},{id:"anthropic-native",label:"Anthropic (Native)",provider:"anthropic",adapter:"anthropic",sdkLabel:"Anthropic SDK",baseUrl:"",showBaseUrl:!1,defaultModels:["claude-opus-4-8","claude-sonnet-4-6","claude-haiku-4-5-20251001","claude-fable-5"]},{id:"claude-subscription",label:"Claude Subscription",provider:"claude-subscription",adapter:"claude-cli",sdkLabel:"Claude CLI",baseUrl:"",showBaseUrl:!1,defaultModels:["opus","sonnet","haiku","fable"]}];function r(e,t){let l=e||"openai",r=t||"openai";return a.find(e=>e.provider===l&&e.adapter===r)||a.find(e=>e.provider===l)||a[0]}},88377:(e,t,l)=>{"use strict";l.d(t,{NP:()=>s,ts:()=>n});var a=l(38459);function r(e){var t,l;return null!=(l=null!=(t=e.updatedAt)?t:e.createdAt)?l:0}function n(e,t){switch(t){case"name-asc":case"name-desc":return(0,a.po)(e.name);case"most-nodes":case"least-nodes":var l;return 0===(l=e.nodes.length)?{key:"nodes:0",label:"0 nodes"}:l<=2?{key:"nodes:1-2",label:"1–2 nodes"}:l<=5?{key:"nodes:3-5",label:"3–5 nodes"}:l<=10?{key:"nodes:6-10",label:"6–10 nodes"}:{key:"nodes:11+",label:"11+ nodes"};case"newest":case"oldest":return function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now();if(!e)return{key:"recency:unknown",label:"No date"};let l=t-e;return l<864e5?{key:"recency:today",label:"Today"}:l<6048e5?{key:"recency:week",label:"This week"}:l<2592e6?{key:"recency:month",label:"This month"}:{key:"recency:older",label:"Older"}}(r(e));default:return{key:"all",label:"All flows"}}}function o(e,t){return e.name.localeCompare(t.name)||e.id.localeCompare(t.id)}function s(e,t){let l=(e,l)=>{switch(t){case"name-asc":return e.name.localeCompare(l.name);case"name-desc":return l.name.localeCompare(e.name);case"most-nodes":return l.nodes.length-e.nodes.length;case"least-nodes":return e.nodes.length-l.nodes.length;case"newest":{let t=r(l)-r(e);return 0!==t?t:o(e,l)}case"oldest":{let t=r(e)-r(l);return 0!==t?t:o(e,l)}default:return 0}};return[...e].sort((e,t)=>{let a=Number(!!t.favorite)-Number(!!e.favorite);return 0!==a?a:l(e,t)})}},90057:(e,t,l)=>{"use strict";l.d(t,{g:()=>o});var a=l(74879);let r=(0,l(87021).h)("frontend/services/flow/index");class n{async loadFlows(){r.debug("loadFlows: Entering method");try{if(this.flowsCache)return r.debug("loadFlows: Using cached flows",{count:this.flowsCache.length}),this.flowsCache;let e=await fetch("/api/flow");if(!e.ok){let t=await e.json();throw Error(t.error||"Failed to load flows")}let t=await e.json();return r.debug("loadFlows: Loaded flows from API",{count:t.length}),this.flowsCache=t,t}catch(e){return r.warn("loadFlows: Failed to load flows:",e),[]}}async getFlow(e){r.debug("getFlow: Entering method",{flowId:e});try{if(this.flowsCache){let t=this.flowsCache.find(t=>t.id===e);if(t)return r.debug("getFlow: Using cached flow",{flowId:e}),t}let t=await fetch("/api/flow/".concat(encodeURIComponent(e)));if(!t.ok){if(404===t.status)return r.debug("getFlow: Flow ".concat(e," not found")),null;let l=await t.json();throw Error(l.error||"Failed to get flow: ".concat(e))}let l=await t.json();return r.debug("getFlow: Retrieved flow from API",{flowId:e}),l}catch(t){return r.warn("getFlow: Failed to get flow ".concat(e,":"),t),null}}async addFlow(e){r.debug("addFlow: Entering method",{flowId:e.id,flowName:e.name,nodeCount:e.nodes.length,edgeCount:e.edges.length});try{let t=await fetch("/api/flow",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){let e=await t.json();return{success:!1,error:e.error||"Failed to add flow"}}let l=await t.json();return this.flowsCache&&this.flowsCache.push(l),r.debug("addFlow: Flow added successfully",{flowId:e.id}),{success:!0}}catch(e){return r.warn("addFlow: Failed to add flow:",e),{success:!1,error:e instanceof Error?e.message:"Failed to add flow"}}}async generateFlow(e,t,l){r.debug("generateFlow: Entering method",{modelId:t,allowInstall:null==l?void 0:l.allowInstall,allowSubflows:null==l?void 0:l.allowSubflows,maxDepth:null==l?void 0:l.maxDepth});try{var a,n,o,s,i,c,d;let u=await fetch("/api/flow/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({description:e,modelId:t,allowInstall:(null==l?void 0:l.allowInstall)===!0,allowSubflows:(null==l?void 0:l.allowSubflows)===!0,..."number"==typeof(null==l?void 0:l.maxDepth)?{maxDepth:l.maxDepth}:{}})}),h=await u.json().catch(()=>null);if(!u.ok)return{success:!1,error:(null==h?void 0:h.error)||"Failed to generate flow"};let p=Array.isArray(h.flows)&&h.flows.length>0?h.flows:[{flow:h.flow,validation:h.validation}];return r.debug("generateFlow: Draft generated",{flowId:null==(a=h.flow)?void 0:a.id,flowCount:p.length,attempts:h.attempts,errorCount:null==(n=h.validation)?void 0:n.errorCount,installedServers:null!=(i=null==(o=h.installedServers)?void 0:o.length)?i:0}),{success:!0,flow:h.flow,validation:h.validation,flows:p,rootFlowId:null!=(c=h.rootFlowId)?c:null==(s=h.flow)?void 0:s.id,attempts:h.attempts,installedServers:null!=(d=h.installedServers)?d:[]}}catch(e){return r.warn("generateFlow: Failed to generate flow:",e),{success:!1,error:e instanceof Error?e.message:"Failed to generate flow"}}}async improveFlow(e,t,l,a){r.debug("improveFlow: Entering method",{flowId:null==e?void 0:e.id,modelId:l,allowInstall:null==a?void 0:a.allowInstall});try{var n,o,s,i,c;let d=await fetch("/api/flow/improve",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({flow:e,description:t,modelId:l,allowInstall:(null==a?void 0:a.allowInstall)===!0})}),u=await d.json().catch(()=>null);if(!d.ok)return{success:!1,error:(null==u?void 0:u.error)||"Failed to improve flow"};return r.debug("improveFlow: Draft revised",{flowId:null==(n=u.flow)?void 0:n.id,attempts:u.attempts,errorCount:null==(o=u.validation)?void 0:o.errorCount,installedServers:null!=(i=null==(s=u.installedServers)?void 0:s.length)?i:0}),{success:!0,flow:u.flow,validation:u.validation,attempts:u.attempts,installedServers:null!=(c=u.installedServers)?c:[]}}catch(e){return r.warn("improveFlow: Failed to improve flow:",e),{success:!1,error:e instanceof Error?e.message:"Failed to improve flow"}}}async updateFlow(e){r.debug("updateFlow: Entering method",{flowId:e.id,flowName:e.name,nodeCount:e.nodes.length,edgeCount:e.edges.length});try{let t=await fetch("/api/flow/".concat(encodeURIComponent(e.id)),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){let e=await t.json();return{success:!1,error:e.error||"Failed to update flow"}}let l=await t.json();if(this.flowsCache){let t=this.flowsCache.findIndex(t=>t.id===e.id);t>=0?this.flowsCache[t]=l:this.flowsCache.push(l)}return r.debug("updateFlow: Flow updated successfully",{flowId:e.id}),{success:!0}}catch(e){return r.warn("updateFlow: Failed to update flow:",e),{success:!1,error:e instanceof Error?e.message:"Failed to update flow"}}}async deleteFlow(e){r.debug("deleteFlow: Entering method",{flowId:e});try{let t=await fetch("/api/flow/".concat(encodeURIComponent(e)),{method:"DELETE"});if(!t.ok){let e=await t.json();return{success:!1,error:e.error||"Failed to delete flow"}}return this.flowsCache&&(this.flowsCache=this.flowsCache.filter(t=>t.id!==e)),r.debug("deleteFlow: Flow deleted successfully",{flowId:e}),{success:!0}}catch(e){return r.warn("deleteFlow: Failed to delete flow:",e),{success:!1,error:e instanceof Error?e.message:"Failed to delete flow"}}}createNode(e,t){return r.debug("createNode: Entering method",{type:e,position:t}),{id:(0,a.A)(),type:e,position:t,data:{label:"".concat("mcp"===e?"MCP":e.charAt(0).toUpperCase()+e.slice(1)," Node"),type:e,properties:{}}}}createStartNode(){return{id:(0,a.A)(),type:"start",position:{x:250,y:150},data:{label:"Start Node",type:"start",properties:{promptTemplate:""}}}}createNewFlow(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"NewFlow";r.debug("createNewFlow: Entering method",{name:e});let t=Date.now();return{id:(0,a.A)(),name:e,createdAt:t,updatedAt:t,nodes:[this.createStartNode()],edges:[]}}createHistoryEntry(e,t){return r.debug("createHistoryEntry: Entering method"),{nodes:[...e],edges:[...t]}}generateSampleFlow(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Sample Flow";return r.debug("generateSampleFlow: Entering method",{name:e}),{id:(0,a.A)(),name:e,nodes:[{id:"1",type:"start",position:{x:250,y:50},data:{label:"Start Node",type:"start",properties:{prompt:"Enter your query here",systemMessage:"You are a helpful assistant",temperature:0}}},{id:"2",type:"process",position:{x:250,y:200},data:{label:"Process Node",type:"process",properties:{operation:"transform",enabled:!0}}},{id:"3",type:"finish",position:{x:250,y:350},data:{label:"Finish Node",type:"finish",properties:{format:"json",template:'{ "result": {{data}} }'}}},{id:"4",type:"mcp",position:{x:450,y:200},data:{label:"MCP Node",type:"mcp",properties:{channels:2,mode:"parallel"}}}],edges:[{id:"e1-2",source:"1",target:"2",type:"custom"},{id:"e2-3",source:"2",target:"3",type:"custom"}]}}constructor(){this.flowsCache=null}}let o=new n},96362:(e,t,l)=>{"use strict";l.d(t,{A:()=>m});var a=l(95155);l(12115);var r=l(2778),n=l(52363),o=l(94049),s=l(25635),i=l(41983),c=l(21067),d=l(65036),u=l(75912),h=l(91871),p=l(77073),x=l(99162);let m=e=>{let{open:t,onClose:l,title:m,description:f,maxWidth:g="md",...v}=e;return(0,a.jsxs)(r.A,{open:t,onClose:l,maxWidth:g,fullWidth:!0,children:[(0,a.jsx)(n.A,{component:"div",children:(0,a.jsxs)(o.default,{display:"flex",alignItems:"center",justifyContent:"space-between",children:[(0,a.jsx)(s.default,{variant:"h6",children:m}),(0,a.jsx)(i.A,{edge:"end",color:"inherit",onClick:l,"aria-label":"close",children:(0,a.jsx)(p.A,{})})]})}),(0,a.jsx)(c.A,{}),(0,a.jsxs)(d.A,{sx:{p:3},children:[f&&(0,a.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:f}),(0,a.jsx)(x.A,{...v})]}),(0,a.jsx)(u.A,{children:(0,a.jsx)(h.A,{onClick:l,children:"Cancel"})})]})}},99162:(e,t,l)=>{"use strict";l.d(t,{A:()=>x});var a=l(95155),r=l(12115),n=l(33077),o=l(94049),s=l(9562),i=l(56422),c=l(4474),d=l(25635),u=l(51611),h=l(22573);let p={xs:12,sm:6,md:4},x=e=>{let{isLoading:t=!1,error:l=null,emptyMessage:x="Nothing to choose from.",loadingMessage:m="Loading…",skeleton:f,skeletonCount:g=4,columns:v=p,items:w,searchable:y=!1,searchPlaceholder:b="Search…",searchTerm:j,onSearchChange:A,groups:k,collapsedKeys:C,onToggleGroup:S}=e,T={...p,...v},[I,N]=(0,r.useState)(""),E=void 0!==j,F=E?j:I,[P,W]=(0,r.useState)(new Set),M=null!=C?C:P,O=e=>(0,a.jsx)(n.Ay,{container:!0,spacing:2,alignItems:"stretch",children:e.map(e=>(0,a.jsx)(n.Ay,{item:!0,xs:T.xs,sm:T.sm,md:T.md,lg:T.lg,sx:{display:"flex"},children:(0,a.jsx)(o.default,{sx:{width:"100%"},children:e.content})},e.key))}),R=y?(0,a.jsx)(s.A,{placeholder:b,variant:"outlined",size:"small",fullWidth:!0,value:F,onChange:e=>(e=>{null==A||A(e),E||N(e)})(e.target.value),sx:{mb:2},InputProps:{startAdornment:(0,a.jsx)(i.A,{position:"start",children:(0,a.jsx)(u.A,{fontSize:"small"})})}}):null,L=e=>(0,a.jsxs)(o.default,{children:[R,e]});if(t)return L(f?(0,a.jsx)(n.Ay,{container:!0,spacing:2,children:Array.from({length:g}).map((e,t)=>(0,a.jsx)(n.Ay,{item:!0,xs:T.xs,sm:T.sm,md:T.md,lg:T.lg,children:f},"skeleton-".concat(t)))}):(0,a.jsxs)(o.default,{sx:{display:"flex",alignItems:"center",gap:1,py:2},children:[(0,a.jsx)(c.default,{size:20}),(0,a.jsx)(d.default,{variant:"body2",color:"text.secondary",children:m})]}));if(l)return L((0,a.jsx)(d.default,{color:"error",variant:"body2",sx:{py:2},children:l}));let U=E?"":F.trim().toLowerCase(),D=e=>{var t;return!U||(null!=(t=e.searchText)?t:"").toLowerCase().includes(U)},_=(0,a.jsx)(d.default,{variant:"body2",color:"text.secondary",sx:{py:2},children:x});if(k){let e=k.map(e=>({...e,items:e.items.filter(D)})).filter(e=>e.items.length>0);return L(0===e.length?_:(0,a.jsx)(a.Fragment,{children:e.map(e=>(0,a.jsx)(h.A,{label:e.label,count:e.items.length,expanded:!M.has(e.key),onToggle:()=>(e=>{if(S)return void S(e);W(t=>{let l=new Set(t);return l.has(e)?l.delete(e):l.add(e),l})})(e.key),children:O(e.items)},e.key))}))}let z=(null!=w?w:[]).filter(D);return L(0===z.length?_:O(z))}}},e=>{e.O(0,[2678,4754,9244,8548,1983,1871,2003,5501,488,3272,3077,8598,9659,9451,2403,7687,9554,6731,812,7430,8441,1255,7358],()=>e(e.s=60187)),_N_E=e.O()}]);