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.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +205 -186
- package/.next/app-path-routes-manifest.json +2 -2
- package/.next/build-manifest.json +7 -7
- package/.next/react-loadable-manifest.json +25 -20
- package/.next/routes-manifest.json +19 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +3 -3
- package/.next/server/app/api/approvals/[id]/route.js +1 -1
- package/.next/server/app/api/approvals/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/approvals/route.js +1 -1
- package/.next/server/app/api/approvals/route.js.nft.json +1 -1
- package/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/backup/route.js +1 -1
- package/.next/server/app/api/backup/route.js.nft.json +1 -1
- package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/browse/route.js +1 -1
- package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/bugs/enhance/route.js +2 -2
- package/.next/server/app/api/bugs/enhance/route.js.nft.json +1 -1
- package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cwd/route.js +1 -1
- package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/encryption/secure/route.js +1 -1
- package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
- package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/env/route.js +1 -1
- package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/compile/route.js +1 -1
- package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/generate/route.js +1 -1
- package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/improve/route.js +1 -1
- package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/prompt-renderer/route.js +1 -1
- package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/quick-chat/route.js +1 -1
- package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/repair/route.js +1 -1
- package/.next/server/app/api/flow/repair/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/git/route.js +1 -1
- package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/init/route.js +1 -1
- package/.next/server/app/api/init/route.js.nft.json +1 -1
- package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/cancel/route.js +1 -1
- package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/route.js +1 -1
- package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/test-connection/route.js +1 -1
- package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp-registry/route.js +1 -1
- package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/[id]/route.js +1 -1
- package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/provider/route.js +1 -1
- package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
- package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/route.js +1 -1
- package/.next/server/app/api/model/route.js.nft.json +1 -1
- package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/test/route.js +1 -1
- package/.next/server/app/api/model/test/route.js.nft.json +1 -1
- package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/reset/route.js +1 -1
- package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
- package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/reconcile/route.js +1 -1
- package/.next/server/app/api/planned-executions/reconcile/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/route.js +1 -1
- package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/restore/route.js +1 -1
- package/.next/server/app/api/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/runs/active/route.js +1 -1
- package/.next/server/app/api/runs/active/route.js.nft.json +1 -1
- package/.next/server/app/api/runs/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/update/route.js +1 -1
- package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/waves/route.js +1 -1
- package/.next/server/app/api/waves/route.js.nft.json +1 -1
- package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/webhooks/[id]/route.js +1 -1
- package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/chat/page.js +10 -10
- package/.next/server/app/chat/page.js.nft.json +1 -1
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/chat.html +1 -1
- package/.next/server/app/chat.rsc +4 -4
- package/.next/server/app/docs/page.js +11 -8
- package/.next/server/app/docs/page.js.nft.json +1 -1
- package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/docs.html +1 -1
- package/.next/server/app/docs.rsc +4 -4
- package/.next/server/app/executions/page.js +3 -3
- package/.next/server/app/executions/page.js.nft.json +1 -1
- package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/executions.html +1 -1
- package/.next/server/app/executions.rsc +4 -4
- package/.next/server/app/flows/page.js +3 -3
- package/.next/server/app/flows/page.js.nft.json +1 -1
- package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
- package/.next/server/app/flows.html +1 -1
- package/.next/server/app/flows.rsc +4 -4
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +4 -4
- package/.next/server/app/mcp/page.js +5 -5
- package/.next/server/app/mcp/page.js.nft.json +1 -1
- package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp-flows/route.js +1 -1
- package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
- package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
- package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
- package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp.html +1 -1
- package/.next/server/app/mcp.rsc +4 -4
- package/.next/server/app/models/page.js +2 -2
- package/.next/server/app/models/page.js.nft.json +1 -1
- package/.next/server/app/models/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +2 -2
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page.js +2 -57
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +4 -4
- package/.next/server/app/v1/chat/completions/route.js +1 -1
- package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/models/route.js +1 -1
- package/.next/server/app/v1/models/route.js.nft.json +1 -1
- package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/waves/page.js +3 -3
- package/.next/server/app/waves/page.js.nft.json +1 -1
- package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
- package/.next/server/app/waves.html +1 -1
- package/.next/server/app/waves.rsc +4 -4
- package/.next/server/app-paths-manifest.json +2 -2
- package/.next/server/chunks/1083.js +1 -1
- package/.next/server/chunks/1114.js +1 -0
- package/.next/server/chunks/1197.js +2 -2
- package/.next/server/chunks/1226.js +1 -1
- package/.next/server/chunks/166.js +5 -0
- package/.next/server/chunks/2373.js +1 -0
- package/.next/server/chunks/2859.js +1 -3
- package/.next/server/chunks/289.js +1 -1
- package/.next/server/chunks/3030.js +1 -1
- package/.next/server/chunks/3298.js +2 -0
- package/.next/server/chunks/3312.js +1 -0
- package/.next/server/chunks/3774.js +1 -1
- package/.next/server/chunks/3823.js +9 -8
- package/.next/server/chunks/3855.js +1 -0
- package/.next/server/chunks/3924.js +52 -0
- package/.next/server/chunks/4545.js +21 -0
- package/.next/server/chunks/4561.js +9 -8
- package/.next/server/chunks/4578.js +1 -0
- package/.next/server/chunks/4671.js +1 -1
- package/.next/server/chunks/4677.js +37 -0
- package/.next/server/chunks/4771.js +2 -2
- package/.next/server/chunks/4793.js +2 -0
- package/.next/server/chunks/4836.js +1 -0
- package/.next/server/chunks/5311.js +1 -1
- package/.next/server/chunks/5463.js +1 -0
- package/.next/server/chunks/5544.js +5 -0
- package/.next/server/chunks/5708.js +11 -8
- package/.next/server/chunks/584.js +1 -0
- package/.next/server/chunks/62.js +1 -1
- package/.next/server/chunks/6240.js +1 -0
- package/.next/server/chunks/6306.js +1 -0
- package/.next/server/chunks/{3928.js → 6745.js} +1 -1
- package/.next/server/chunks/6908.js +2 -2
- package/.next/server/chunks/701.js +1 -1
- package/.next/server/chunks/7214.js +6 -0
- package/.next/server/chunks/7362.js +11 -7
- package/.next/server/chunks/7463.js +6 -0
- package/.next/server/chunks/7506.js +1 -1
- package/.next/server/chunks/7579.js +82 -0
- package/.next/server/chunks/7821.js +1 -1
- package/.next/server/chunks/8216.js +1 -0
- package/.next/server/chunks/8387.js +1 -0
- package/.next/server/chunks/856.js +5 -0
- package/.next/server/chunks/8652.js +1 -1
- package/.next/server/chunks/8739.js +2 -2
- package/.next/server/chunks/9165.js +1 -0
- package/.next/server/chunks/94.js +1 -0
- package/.next/server/chunks/9427.js +1 -0
- package/.next/server/edge-instrumentation.js +2 -0
- package/.next/server/edge-instrumentation.js.map +1 -0
- package/.next/server/edge-runtime-webpack.js +2 -0
- package/.next/server/edge-runtime-webpack.js.map +1 -0
- package/.next/server/instrumentation.js.nft.json +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-manifest.json +33 -2
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/server/src/middleware.js +14 -0
- package/.next/server/src/middleware.js.map +1 -0
- package/.next/static/chunks/1675-773454288de4309d.js +1 -0
- package/.next/static/chunks/1731-6e45fb529f9044a3.js +1 -0
- package/.next/static/chunks/1871-14c3e63ca865d85e.js +1 -0
- package/.next/static/chunks/2003-7710c23acaef11c9.js +1 -0
- package/.next/static/chunks/2318-76fcb6c769b1a569.js +1 -0
- package/.next/static/chunks/2566-6e2b9d9349814789.js +1 -0
- package/.next/static/chunks/2734-59fbe2f62a59df86.js +1 -0
- package/.next/static/chunks/3089.6b4e21e1faa304e2.js +1 -0
- package/.next/static/chunks/3109-11bdec9bdfd996c3.js +1 -0
- package/.next/static/chunks/3217.f728df99ab5da33c.js +1 -0
- package/.next/static/chunks/333-5f3c5be57c80c48c.js +1 -0
- package/.next/static/chunks/3333-b7b3e5758a568013.js +1 -0
- package/.next/static/chunks/3556-3b6f7c99b015b752.js +1 -0
- package/.next/static/chunks/{6730-c330b55cd0fe4f47.js → 4003-3b3768446ae333df.js} +1 -1
- package/.next/static/chunks/4523-a540747aa2ed34e8.js +1 -0
- package/.next/static/chunks/4635-0fe310d3be64e71e.js +1 -0
- package/.next/static/chunks/4690-ec7d397cfacedac3.js +1 -0
- package/.next/static/chunks/4775-cb9c0be621363a08.js +8 -0
- package/.next/static/chunks/5336-81da1080de29ebfc.js +1 -0
- package/.next/static/chunks/5512.d01d565f73109a1a.js +1 -0
- package/.next/static/chunks/6691-117567b2b40cd9f4.js +1 -0
- package/.next/static/chunks/7274-1184563607f2b5f5.js +1 -0
- package/.next/static/chunks/8166-e75acdc559b34fcd.js +1 -0
- package/.next/static/chunks/8345.fbc0af16acce7256.js +1 -0
- package/.next/static/chunks/8405.e728bc83a7c9fed6.js +1 -0
- package/.next/static/chunks/8470-72cf748472d4d501.js +1 -0
- package/.next/static/chunks/8607-5787e42775fc3acb.js +1 -0
- package/.next/static/chunks/8610-660d5088bc1dd7a7.js +1 -0
- package/.next/static/chunks/8834-faf121e257b517d5.js +1 -0
- package/.next/static/chunks/8989-401559d9f3bc80a0.js +1 -0
- package/.next/static/chunks/{9164-d9f1abba780231e0.js → 9164-829ab5b085ec06d6.js} +1 -1
- package/.next/static/chunks/9240-d0a51f4d504f34b1.js +1 -0
- package/.next/static/chunks/9562-b7922ceb400ec536.js +1 -0
- package/.next/static/chunks/9704-6b7415964d7c042a.js +1 -0
- package/.next/static/chunks/app/chat/page-04ad1fad78048afb.js +1 -0
- package/.next/static/chunks/app/docs/page-5475c616764dbb18.js +1 -0
- package/.next/static/chunks/app/executions/page-c18708ed96d228ec.js +1 -0
- package/.next/static/chunks/app/flows/page-f7e44aa545bcc56e.js +1 -0
- package/.next/static/chunks/app/layout-e6fbae80e0f456a6.js +1 -0
- package/.next/static/chunks/app/mcp/page-3638fbee04a3a6ea.js +1 -0
- package/.next/static/chunks/app/models/error-5732fbb053e182c5.js +1 -0
- package/.next/static/chunks/app/models/page-e690a986047b1e62.js +1 -0
- package/.next/static/chunks/app/{page-a859e4dbd180df98.js → page-0a95c40a65dbd2eb.js} +1 -1
- package/.next/static/chunks/app/settings/page-3ef9b95187e18a5a.js +1 -0
- package/.next/static/chunks/app/waves/page-c9a307e2236423a4.js +1 -0
- package/.next/static/chunks/{main-be8e823624954fab.js → main-9bda5041078d2b6a.js} +1 -1
- package/.next/static/chunks/webpack-a6844e1074885c2f.js +1 -0
- package/.next/static/css/40f9bef305b11bf5.css +1 -0
- package/.next/trace +10 -8
- package/README.md +31 -1
- package/next.config.mjs +139 -119
- package/package.json +1 -1
- package/.next/server/chunks/1119.js +0 -1
- package/.next/server/chunks/1439.js +0 -1
- package/.next/server/chunks/1556.js +0 -52
- package/.next/server/chunks/1910.js +0 -37
- package/.next/server/chunks/1999.js +0 -1
- package/.next/server/chunks/2246.js +0 -1
- package/.next/server/chunks/264.js +0 -17
- package/.next/server/chunks/2823.js +0 -6
- package/.next/server/chunks/3286.js +0 -6
- package/.next/server/chunks/4637.js +0 -81
- package/.next/server/chunks/6644.js +0 -1
- package/.next/server/chunks/7427.js +0 -1
- package/.next/server/chunks/7769.js +0 -6
- package/.next/server/chunks/8357.js +0 -1
- package/.next/server/chunks/8518.js +0 -2
- package/.next/static/chunks/1620-0d8ecd877f123f7b.js +0 -1
- package/.next/static/chunks/1871-dd8c10ed9d37100b.js +0 -1
- package/.next/static/chunks/1983-242862b3dc022a26.js +0 -1
- package/.next/static/chunks/2003-460f30484998c05d.js +0 -1
- package/.next/static/chunks/2619-04bc32f026a0d946.js +0 -1
- package/.next/static/chunks/3217.058098140ec3f563.js +0 -1
- package/.next/static/chunks/3736-5e2b3f6cda1bb923.js +0 -1
- package/.next/static/chunks/4207-41abb9622eb4b4f8.js +0 -1
- package/.next/static/chunks/4812-4a9aceb49632a973.js +0 -1
- package/.next/static/chunks/5501-f5b093c8dfd74196.js +0 -1
- package/.next/static/chunks/5545-2ab6e5d749e103cd.js +0 -1
- package/.next/static/chunks/6016.8201fa15ab6aa90e.js +0 -1
- package/.next/static/chunks/6288-a285bbbd701e0dbf.js +0 -1
- package/.next/static/chunks/6731-c230e88cf0032609.js +0 -1
- package/.next/static/chunks/6920-a83ad5c0d5a54cf3.js +0 -1
- package/.next/static/chunks/7430-6e78aaeac66988a9.js +0 -1
- package/.next/static/chunks/7583.7af90b94e3c263f2.js +0 -1
- package/.next/static/chunks/7687-7edf1a6e1f063b08.js +0 -1
- package/.next/static/chunks/8083.16fda2c7f6d10d0c.js +0 -1
- package/.next/static/chunks/8480-229fd353b68b570f.js +0 -1
- package/.next/static/chunks/8548-8e4a95334064e8b2.js +0 -1
- package/.next/static/chunks/8834-bda798efab40c60a.js +0 -1
- package/.next/static/chunks/9181-8d8ecd3f641b7209.js +0 -8
- package/.next/static/chunks/9356-99ba407b60b9dfe9.js +0 -1
- package/.next/static/chunks/9451-680fa09f81f18806.js +0 -1
- package/.next/static/chunks/9659-a279e3aaba407251.js +0 -1
- package/.next/static/chunks/app/chat/page-ea6752144d35c892.js +0 -1
- package/.next/static/chunks/app/docs/page-935b0386917b91bb.js +0 -1
- package/.next/static/chunks/app/executions/page-d72027b0179e8fa2.js +0 -1
- package/.next/static/chunks/app/flows/page-1844e86dd43fa285.js +0 -1
- package/.next/static/chunks/app/layout-2ebf01d97702a18a.js +0 -1
- package/.next/static/chunks/app/mcp/page-b6866f49f76a6801.js +0 -1
- package/.next/static/chunks/app/models/error-a3183f168e8a9b04.js +0 -1
- package/.next/static/chunks/app/models/page-5a13ea6ff5ac1b9c.js +0 -1
- package/.next/static/chunks/app/settings/page-7a68583660508ffd.js +0 -1
- package/.next/static/chunks/app/waves/page-ec33cf79f6103a9e.js +0 -1
- package/.next/static/chunks/webpack-f4a471ab560eb19e.js +0 -1
- package/.next/static/css/39393a79f7cb0dee.css +0 -1
- /package/.next/static/{WRUzIBdypUJvv0xAct8qc → Il6IDWxf3CN0dv-P6QQrp}/_buildManifest.js +0 -0
- /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()}]);
|