flujo-ai 3.26.0 → 3.28.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 +470 -306
- package/.next/app-path-routes-manifest.json +28 -8
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +24 -0
- package/.next/react-loadable-manifest.json +31 -18
- package/.next/routes-manifest.json +29 -0
- 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 +2 -2
- 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 +2 -2
- 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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/bugs/enhance/route.js +3 -3
- 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 +2 -2
- package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/[id]/route.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/[id]/versions/[versionId]/route.js +1 -0
- package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js.nft.json +1 -0
- package/.next/server/app/api/flow/[id]/versions/[versionId]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/flow/[id]/versions/route.js +1 -0
- package/.next/server/app/api/flow/[id]/versions/route.js.nft.json +1 -0
- package/.next/server/app/api/flow/[id]/versions/route_client-reference-manifest.js +1 -0
- 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 +2 -2
- 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 +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 +2 -2
- package/.next/server/app/api/git/route.js.nft.json +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/app-sandbox/route.js +1 -0
- package/.next/server/app/api/mcp/app-sandbox/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/app-sandbox/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/cancel/route.js +2 -2
- 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/oauth-capability/route.js +1 -0
- package/.next/server/app/api/mcp/oauth-capability/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/oauth-capability/route_client-reference-manifest.js +1 -0
- 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 +2 -2
- 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.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 +2 -2
- 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 +2 -2
- 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.js +2 -2
- package/.next/server/app/api/oauth/callback/route.js.nft.json +1 -1
- package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/initiate/route.js +2 -2
- package/.next/server/app/api/oauth/initiate/route.js.nft.json +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 +2 -2
- 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/packages/build/route.js +1 -0
- package/.next/server/app/api/packages/build/route.js.nft.json +1 -0
- package/.next/server/app/api/packages/build/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/packages/derive-secrets/route.js +1 -0
- package/.next/server/app/api/packages/derive-secrets/route.js.nft.json +1 -0
- package/.next/server/app/api/packages/derive-secrets/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/packages/install/route.js +1 -0
- package/.next/server/app/api/packages/install/route.js.nft.json +1 -0
- package/.next/server/app/api/packages/install/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/packages/install/status/route.js +1 -0
- package/.next/server/app/api/packages/install/status/route.js.nft.json +1 -0
- package/.next/server/app/api/packages/install/status/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/packages/installed/route.js +1 -0
- package/.next/server/app/api/packages/installed/route.js.nft.json +1 -0
- package/.next/server/app/api/packages/installed/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/packages/resolve/route.js +1 -0
- package/.next/server/app/api/packages/resolve/route.js.nft.json +1 -0
- package/.next/server/app/api/packages/resolve/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/packages/uninstall/route.js +1 -0
- package/.next/server/app/api/packages/uninstall/route.js.nft.json +1 -0
- package/.next/server/app/api/packages/uninstall/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/planned-executions/[id]/route.js +2 -2
- 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 +2 -2
- 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 +2 -2
- 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/registry/auth/resend/route.js +1 -0
- package/.next/server/app/api/registry/auth/resend/route.js.nft.json +1 -0
- package/.next/server/app/api/registry/auth/resend/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/registry/auth/reset/route.js +1 -0
- package/.next/server/app/api/registry/auth/reset/route.js.nft.json +1 -0
- package/.next/server/app/api/registry/auth/reset/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/registry/auth/route.js +1 -0
- package/.next/server/app/api/registry/auth/route.js.nft.json +1 -0
- package/.next/server/app/api/registry/auth/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/registry/oauth/callback/route.js +1 -0
- package/.next/server/app/api/registry/oauth/callback/route.js.nft.json +1 -0
- package/.next/server/app/api/registry/oauth/callback/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/registry/oauth/initiate/route.js +1 -0
- package/.next/server/app/api/registry/oauth/initiate/route.js.nft.json +1 -0
- package/.next/server/app/api/registry/oauth/initiate/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/registry/publish/route.js +1 -0
- package/.next/server/app/api/registry/publish/route.js.nft.json +1 -0
- package/.next/server/app/api/registry/publish/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/registry/settings/route.js +1 -0
- package/.next/server/app/api/registry/settings/route.js.nft.json +1 -0
- package/.next/server/app/api/registry/settings/route_client-reference-manifest.js +1 -0
- 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 +2 -2
- 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.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.js.nft.json +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 +9 -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 +3 -3
- package/.next/server/app/docs/page.js +7 -6
- 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 +3 -3
- package/.next/server/app/executions/page.js +39 -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 +3 -3
- 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 +3 -3
- package/.next/server/app/mcp/page.js +14 -14
- 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 +3 -3
- 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/packages/page.js +2 -0
- package/.next/server/app/packages/page.js.nft.json +1 -0
- package/.next/server/app/packages/page_client-reference-manifest.js +1 -0
- package/.next/server/app/packages.html +1 -0
- package/.next/server/app/packages.meta +7 -0
- package/.next/server/app/packages.rsc +22 -0
- package/.next/server/app/page.js +1 -1
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page.js +2 -2
- 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 +3 -3
- 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 +3 -3
- 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.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/chat/events/route.js +11 -0
- package/.next/server/app/v1/chat/events/route.js.nft.json +1 -0
- package/.next/server/app/v1/chat/events/route_client-reference-manifest.js +1 -0
- package/.next/server/app/v1/models/route.js +2 -2
- 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 +4 -4
- 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 +3 -3
- package/.next/server/app-paths-manifest.json +28 -8
- package/.next/server/chunks/1083.js +1 -1
- package/.next/server/chunks/1114.js +1 -1
- package/.next/server/chunks/1197.js +1 -1
- package/.next/server/chunks/1226.js +1 -1
- package/.next/server/chunks/1314.js +1 -0
- package/.next/server/chunks/1604.js +70 -0
- package/.next/server/chunks/1615.js +1 -0
- package/.next/server/chunks/1659.js +1 -1
- package/.next/server/chunks/166.js +5 -5
- package/.next/server/chunks/1805.js +1 -0
- package/.next/server/chunks/1819.js +2 -0
- package/.next/server/chunks/1925.js +1 -0
- package/.next/server/chunks/2388.js +1 -0
- package/.next/server/chunks/2434.js +2 -0
- package/.next/server/chunks/2666.js +1 -0
- package/.next/server/chunks/2859.js +1 -1
- package/.next/server/chunks/2940.js +46 -0
- package/.next/server/chunks/2985.js +1 -0
- package/.next/server/chunks/3128.js +62 -0
- package/.next/server/chunks/3273.js +1 -0
- package/.next/server/chunks/3298.js +1 -1
- package/.next/server/chunks/{8445.js → 3392.js} +2 -2
- package/.next/server/chunks/346.js +1 -0
- package/.next/server/chunks/3570.js +249 -0
- package/.next/server/chunks/3629.js +1 -0
- package/.next/server/chunks/38.js +2 -2
- package/.next/server/chunks/3951.js +151 -0
- package/.next/server/chunks/4042.js +1 -0
- package/.next/server/chunks/4265.js +1 -1
- package/.next/server/chunks/4306.js +1 -0
- package/.next/server/chunks/4322.js +1 -0
- package/.next/server/chunks/4426.js +6 -0
- package/.next/server/chunks/{6745.js → 4661.js} +1 -1
- package/.next/server/chunks/4671.js +1 -1
- package/.next/server/chunks/4681.js +1 -0
- package/.next/server/chunks/4765.js +1 -0
- package/.next/server/chunks/4771.js +2 -2
- package/.next/server/chunks/5067.js +1 -0
- package/.next/server/chunks/5096.js +1 -0
- package/.next/server/chunks/510.js +1 -0
- package/.next/server/chunks/5148.js +1 -1
- package/.next/server/chunks/{4578.js → 5150.js} +1 -1
- package/.next/server/chunks/5200.js +1 -0
- package/.next/server/chunks/5463.js +1 -1
- package/.next/server/chunks/5471.js +1 -0
- package/.next/server/chunks/5544.js +5 -5
- package/.next/server/chunks/5708.js +6 -5
- package/.next/server/chunks/5880.js +1 -0
- package/.next/server/chunks/5958.js +2 -0
- package/.next/server/chunks/6005.js +1 -0
- package/.next/server/chunks/6126.js +53 -0
- package/.next/server/chunks/6529.js +5 -0
- package/.next/server/chunks/6537.js +1 -1
- package/.next/server/chunks/6826.js +1 -1
- package/.next/server/chunks/6849.js +66 -0
- package/.next/server/chunks/688.js +3 -0
- package/.next/server/chunks/701.js +1 -1
- package/.next/server/chunks/7032.js +1 -1
- package/.next/server/chunks/7214.js +4 -4
- package/.next/server/chunks/724.js +1 -1
- package/.next/server/chunks/7463.js +4 -4
- package/.next/server/chunks/7506.js +1 -1
- package/.next/server/chunks/7538.js +21 -0
- package/.next/server/chunks/7579.js +8 -7
- package/.next/server/chunks/{3030.js → 7674.js} +1 -1
- package/.next/server/chunks/7821.js +1 -1
- package/.next/server/chunks/793.js +393 -0
- package/.next/server/chunks/8037.js +1 -0
- package/.next/server/chunks/8165.js +3 -0
- package/.next/server/chunks/8339.js +1 -0
- package/.next/server/chunks/8387.js +1 -1
- package/.next/server/chunks/8522.js +2 -0
- package/.next/server/chunks/8568.js +12 -0
- package/.next/server/chunks/8667.js +1 -0
- package/.next/server/chunks/869.js +2 -0
- package/.next/server/chunks/{3489.js → 8730.js} +1 -1
- package/.next/server/chunks/8739.js +2 -2
- package/.next/server/chunks/8745.js +1 -1
- package/.next/server/chunks/8979.js +37 -0
- package/.next/server/chunks/8994.js +1 -1
- package/.next/server/chunks/9165.js +1 -1
- package/.next/server/chunks/9285.js +1 -1
- package/.next/server/chunks/94.js +1 -1
- package/.next/server/chunks/9400.js +2 -0
- package/.next/server/chunks/{4456.js → 9472.js} +2 -2
- package/.next/server/chunks/9583.js +1 -0
- package/.next/server/chunks/9671.js +1 -0
- package/.next/server/chunks/9724.js +393 -0
- package/.next/server/chunks/991.js +2 -0
- package/.next/server/functions-config-manifest.json +1 -0
- package/.next/server/instrumentation.js +1 -1
- package/.next/server/instrumentation.js.nft.json +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-manifest.json +1 -1
- 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 +1 -1
- package/.next/server/src/middleware.js.map +1 -1
- package/.next/static/Q6ITx_bZyoEOnKdZu_C7j/_buildManifest.js +1 -0
- package/.next/static/chunks/1594-309fa6363f215d76.js +1 -0
- package/.next/static/chunks/1809-e56cf3c476261e34.js +1 -0
- package/.next/static/chunks/1937-6bbdcdc660db562c.js +1 -0
- package/.next/static/chunks/1988-1b651d581fc44a36.js +1 -0
- package/.next/static/chunks/{2003-7710c23acaef11c9.js → 2003-f826c607d609d1fa.js} +1 -1
- package/.next/static/chunks/2164-7d6451e88a447de7.js +1 -0
- package/.next/static/chunks/218-6cbe09820faa3272.js +1 -0
- package/.next/static/chunks/2566-60acd5838abd9f3f.js +1 -0
- package/.next/static/chunks/{2403-5c26e0abd76095b1.js → 2800-4fa29a3eeb693593.js} +1 -1
- package/.next/static/chunks/289-98f50bfcf833d661.js +1 -0
- package/.next/static/chunks/3089.9e15df4ffd0fe4e8.js +1 -0
- package/.next/static/chunks/{3217.f728df99ab5da33c.js → 3217.260785c2198d1e9d.js} +1 -1
- package/.next/static/chunks/3392-6dd9ad3be66a7ce9.js +1 -0
- package/.next/static/chunks/3418-a2f5d0c4f29ee2fb.js +1 -0
- package/.next/static/chunks/{3556-3b6f7c99b015b752.js → 3556-b9855146c7506696.js} +1 -1
- package/.next/static/chunks/3827-9e9a6e11ef808d90.js +1 -0
- package/.next/static/chunks/3910.5c6885d7a5bd753e.js +1 -0
- package/.next/static/chunks/3948-1cb8fc7a64805254.js +1 -0
- package/.next/static/chunks/3958-5641a828b320f2fe.js +100 -0
- package/.next/static/chunks/{488-623d07c3fbc21e28.js → 488-7ab54d8ae2b4b550.js} +1 -1
- package/.next/static/chunks/5328-4e556503b70e72b4.js +1 -0
- package/.next/static/chunks/{5512.d01d565f73109a1a.js → 5512.682bef7fd3a7c286.js} +1 -1
- package/.next/static/chunks/6195-8c4c57628e9013d5.js +1 -0
- package/.next/static/chunks/6669-a949326b30ea1d39.js +1 -0
- package/.next/static/chunks/6777-4b0d05731a089de4.js +1 -0
- package/.next/static/chunks/6947-0ff3545efb53e959.js +1 -0
- package/.next/static/chunks/7111-44538f8a64241b74.js +1 -0
- package/.next/static/chunks/7304-e7cd725083617b81.js +8 -0
- package/.next/static/chunks/7445-2802e158c9093556.js +1 -0
- package/.next/static/chunks/795-704a0e742ecc2ef6.js +1 -0
- package/.next/static/chunks/812-3ceea0da38ad2891.js +1 -0
- package/.next/static/chunks/{8345.fbc0af16acce7256.js → 8345.bc5534ec13abc9ee.js} +1 -1
- package/.next/static/chunks/8401-0f39d91810180a88.js +1 -0
- package/.next/static/chunks/{8405.e728bc83a7c9fed6.js → 8405.73e8be2c8e5b55c5.js} +1 -1
- package/.next/static/chunks/8551-a28272acfda62ac9.js +1 -0
- package/.next/static/chunks/8855-02889c9ab4bf0bcf.js +1 -0
- package/.next/static/chunks/{8989-401559d9f3bc80a0.js → 8989-5fa9c7c670eb9a1a.js} +1 -1
- package/.next/static/chunks/{9164-829ab5b085ec06d6.js → 9164-840f056a0e11d979.js} +1 -1
- package/.next/static/chunks/9562-ef0ddd4e6b9023cf.js +1 -0
- package/.next/static/chunks/app/api/approvals/[id]/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/approvals/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/backup/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/browse/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/bugs/enhance/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/cwd/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/encryption/secure/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/env/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/versions/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/flow/compile/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/flow/generate/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/flow/improve/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/flow/prompt-renderer/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/flow/quick-chat/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/flow/repair/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/flow/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/git/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/init/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/local-models/capability/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/local-models/pull/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/local-models/suggest/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/app-sandbox/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/cancel/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/oauth-capability/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/test-connection/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/test-connection/stream/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/spotlight/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/model/[id]/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/model/provider/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/model/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/model/test/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/oauth/callback/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/oauth/initiate/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/oauth/reset/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/packages/build/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/packages/derive-secrets/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/packages/install/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/packages/install/status/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/packages/installed/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/packages/resolve/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/packages/uninstall/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/run/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/reconcile/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/registry/auth/resend/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/registry/auth/reset/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/registry/auth/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/registry/oauth/callback/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/registry/oauth/initiate/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/registry/publish/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/registry/settings/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/restore/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/runs/active/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/storage/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/update/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/waves/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/webhooks/[id]/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/chat/page-c39160ddf90bbae9.js +1 -0
- package/.next/static/chunks/app/docs/page-250523af44e96120.js +1 -0
- package/.next/static/chunks/app/executions/page-10d09f36de30939f.js +1 -0
- package/.next/static/chunks/app/flows/page-0d8fb471adfc2981.js +1 -0
- package/.next/static/chunks/app/layout-eea7078d7553c21a.js +1 -0
- package/.next/static/chunks/app/mcp/page-8ad71bf5801bfe5f.js +1 -0
- package/.next/static/chunks/app/mcp-flows/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/mcp-proxy/[server]/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/models/page-17e8e6668f92f58d.js +1 -0
- package/.next/static/chunks/app/packages/page-9f61751e98134f3d.js +1 -0
- package/.next/static/chunks/app/{page-0a95c40a65dbd2eb.js → page-d3ea90b065b95d1e.js} +1 -1
- package/.next/static/chunks/app/settings/page-afbf8790e99fecaf.js +1 -0
- package/.next/static/chunks/app/v1/chat/completions/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/v1/chat/events/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/v1/models/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/waves/page-97ad6b51c9cae4b3.js +1 -0
- package/.next/static/chunks/webpack-0d4a4e773990ac44.js +1 -0
- package/.next/static/css/{64cb1f185b52a623.css → 69ab44eb350e0b6c.css} +1 -1
- package/.next/trace +10 -10
- package/.next/types/app/api/flow/[id]/versions/[versionId]/route.ts +347 -0
- package/.next/types/app/api/flow/[id]/versions/route.ts +347 -0
- package/.next/types/app/api/mcp/app-sandbox/route.ts +347 -0
- package/.next/types/app/api/mcp/oauth-capability/route.ts +347 -0
- package/.next/types/app/api/packages/build/route.ts +347 -0
- package/.next/types/app/api/packages/derive-secrets/route.ts +347 -0
- package/.next/types/app/api/packages/install/route.ts +347 -0
- package/.next/types/app/api/packages/install/status/route.ts +347 -0
- package/.next/types/app/api/packages/installed/route.ts +347 -0
- package/.next/types/app/api/packages/resolve/route.ts +347 -0
- package/.next/types/app/api/packages/uninstall/route.ts +347 -0
- package/.next/types/app/api/registry/auth/resend/route.ts +347 -0
- package/.next/types/app/api/registry/auth/reset/route.ts +347 -0
- package/.next/types/app/api/registry/auth/route.ts +347 -0
- package/.next/types/app/api/registry/oauth/callback/route.ts +347 -0
- package/.next/types/app/api/registry/oauth/initiate/route.ts +347 -0
- package/.next/types/app/api/registry/publish/route.ts +347 -0
- package/.next/types/app/api/registry/settings/route.ts +347 -0
- package/.next/types/app/packages/page.ts +84 -0
- package/.next/types/app/v1/chat/events/route.ts +347 -0
- package/.next/types/routes.d.ts +22 -2
- package/.next/types/validator.ts +180 -0
- package/README.md +1 -1
- package/package.json +97 -90
- package/.next/server/chunks/1152.js +0 -2
- package/.next/server/chunks/1223.js +0 -1
- package/.next/server/chunks/1377.js +0 -1
- package/.next/server/chunks/2373.js +0 -1
- package/.next/server/chunks/289.js +0 -1
- package/.next/server/chunks/3774.js +0 -6
- package/.next/server/chunks/3823.js +0 -41
- package/.next/server/chunks/3855.js +0 -1
- package/.next/server/chunks/3924.js +0 -52
- package/.next/server/chunks/4372.js +0 -1
- package/.next/server/chunks/4545.js +0 -21
- package/.next/server/chunks/4561.js +0 -65
- package/.next/server/chunks/4677.js +0 -37
- package/.next/server/chunks/472.js +0 -1
- package/.next/server/chunks/4793.js +0 -2
- package/.next/server/chunks/4836.js +0 -1
- package/.next/server/chunks/5311.js +0 -1
- package/.next/server/chunks/5662.js +0 -2
- package/.next/server/chunks/5734.js +0 -60
- package/.next/server/chunks/584.js +0 -1
- package/.next/server/chunks/62.js +0 -1
- package/.next/server/chunks/6240.js +0 -1
- package/.next/server/chunks/6306.js +0 -1
- package/.next/server/chunks/6793.js +0 -1
- package/.next/server/chunks/6908.js +0 -12
- package/.next/server/chunks/6996.js +0 -62
- package/.next/server/chunks/7362.js +0 -158
- package/.next/server/chunks/8216.js +0 -1
- package/.next/server/chunks/856.js +0 -5
- package/.next/server/chunks/8652.js +0 -42
- package/.next/server/chunks/9427.js +0 -1
- package/.next/static/Il6IDWxf3CN0dv-P6QQrp/_buildManifest.js +0 -1
- package/.next/static/chunks/1675-773454288de4309d.js +0 -1
- package/.next/static/chunks/1731-6e45fb529f9044a3.js +0 -1
- package/.next/static/chunks/2318-76fcb6c769b1a569.js +0 -1
- package/.next/static/chunks/2566-6e2b9d9349814789.js +0 -1
- package/.next/static/chunks/2734-59fbe2f62a59df86.js +0 -1
- package/.next/static/chunks/3089.6b4e21e1faa304e2.js +0 -1
- package/.next/static/chunks/3109-11bdec9bdfd996c3.js +0 -1
- package/.next/static/chunks/333-5f3c5be57c80c48c.js +0 -1
- package/.next/static/chunks/3333-b7b3e5758a568013.js +0 -1
- package/.next/static/chunks/4003-3b3768446ae333df.js +0 -1
- package/.next/static/chunks/4635-0fe310d3be64e71e.js +0 -1
- package/.next/static/chunks/4690-ec7d397cfacedac3.js +0 -1
- package/.next/static/chunks/4775-cb9c0be621363a08.js +0 -8
- package/.next/static/chunks/5336-81da1080de29ebfc.js +0 -1
- package/.next/static/chunks/6691-117567b2b40cd9f4.js +0 -1
- package/.next/static/chunks/7274-1184563607f2b5f5.js +0 -1
- package/.next/static/chunks/812-624e93f4c0f671c7.js +0 -1
- package/.next/static/chunks/8166-e75acdc559b34fcd.js +0 -1
- package/.next/static/chunks/8607-5787e42775fc3acb.js +0 -1
- package/.next/static/chunks/8610-660d5088bc1dd7a7.js +0 -1
- package/.next/static/chunks/9240-d0a51f4d504f34b1.js +0 -1
- package/.next/static/chunks/9562-b7922ceb400ec536.js +0 -1
- package/.next/static/chunks/9704-6b7415964d7c042a.js +0 -1
- package/.next/static/chunks/app/api/approvals/[id]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/approvals/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/backup/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/browse/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/bugs/enhance/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/cwd/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/encryption/secure/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/env/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/flow/[id]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/flow/compile/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/flow/generate/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/flow/improve/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/flow/prompt-renderer/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/flow/quick-chat/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/flow/repair/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/flow/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/git/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/init/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/local-models/capability/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/local-models/pull/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/local-models/suggest/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/cancel/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/test-connection/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp/test-connection/stream/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp-registry/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/mcp-registry/spotlight/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/model/[id]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/model/provider/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/model/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/model/test/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/oauth/callback/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/oauth/initiate/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/oauth/reset/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/run/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/reconcile/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/restore/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/runs/active/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/storage/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/update/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/waves/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/api/webhooks/[id]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/chat/page-04ad1fad78048afb.js +0 -1
- package/.next/static/chunks/app/docs/page-5475c616764dbb18.js +0 -1
- package/.next/static/chunks/app/executions/page-c18708ed96d228ec.js +0 -1
- package/.next/static/chunks/app/flows/page-f7e44aa545bcc56e.js +0 -1
- package/.next/static/chunks/app/layout-e6fbae80e0f456a6.js +0 -1
- package/.next/static/chunks/app/mcp/page-3638fbee04a3a6ea.js +0 -1
- package/.next/static/chunks/app/mcp-flows/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/mcp-proxy/[server]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/models/page-e690a986047b1e62.js +0 -1
- package/.next/static/chunks/app/settings/page-3ef9b95187e18a5a.js +0 -1
- package/.next/static/chunks/app/v1/chat/completions/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/v1/models/route-6b442f97c5062f2c.js +0 -1
- package/.next/static/chunks/app/waves/page-c9a307e2236423a4.js +0 -1
- package/.next/static/chunks/webpack-a6844e1074885c2f.js +0 -1
- /package/.next/static/{Il6IDWxf3CN0dv-P6QQrp → Q6ITx_bZyoEOnKdZu_C7j}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1488],{17427:(e,t,l)=>{"use strict";l.d(t,{A:()=>f});var n=l(95155),a=l(12115),r=l(25635),o=l(94049),s=l(99944),i=l(9957),c=l(52641),d=l(51221),u=l(55606),h=l(86973),x=l(9562);let f=e=>{var t;let{schema:l,values:f,onChange:p,size:m="small"}=e,[g,v]=(0,a.useState)({}),y=null!=(t=null==l?void 0:l.properties)?t:{},w=Array.isArray(null==l?void 0:l.required)?l.required:[],j=Object.keys(y);if(0===j.length)return(0,n.jsx)(r.default,{variant:"body2",color:"text.secondary",children:"This tool takes no parameters."});let b=(e,t)=>{let l={...f};void 0===t?delete l[e]:l[e]=t,p(l)};return(0,n.jsx)(o.default,{sx:{display:"flex",flexDirection:"column",gap:2},children:j.map(e=>{var t,l;let a=null!=(t=y[e])?t:{},p=w.includes(e)?"".concat(e," *"):e,j="string"==typeof a.description?a.description:"";if("boolean"===a.type)return(0,n.jsx)(s.A,{control:(0,n.jsx)(i.A,{size:m,checked:!0===f[e],onChange:t=>b(e,t.target.checked)}),label:(0,n.jsxs)(o.default,{children:[(0,n.jsx)(r.default,{variant:"body2",children:p}),j&&(0,n.jsx)(r.default,{variant:"caption",color:"text.secondary",children:j})]})},e);if(Array.isArray(a.enum)&&a.enum.length>0){let t=f[e];return(0,n.jsxs)(c.A,{size:m,fullWidth:!0,children:[(0,n.jsx)(d.A,{id:"schema-param-".concat(e),children:p}),(0,n.jsx)(u.A,{labelId:"schema-param-".concat(e),label:p,value:a.enum.includes(t)?t:"",onChange:t=>b(e,t.target.value),children:a.enum.map(e=>(0,n.jsx)(h.A,{value:e,children:String(e)},String(e)))}),j&&(0,n.jsx)(r.default,{variant:"caption",color:"text.secondary",sx:{mt:.5,mx:1.75},children:j})]},e)}if("number"===a.type||"integer"===a.type)return(0,n.jsx)(x.A,{fullWidth:!0,size:m,type:"number",label:p,value:void 0!==f[e]?String(f[e]):"",onChange:t=>{let l=t.target.value;if(""===l)return void b(e,void 0);let n="integer"===a.type?parseInt(l,10):parseFloat(l);b(e,Number.isNaN(n)?void 0:n)},helperText:j},e);if("object"===a.type||"array"===a.type){let t=null!=(l=g[e])?l:void 0!==f[e]?JSON.stringify(f[e],null,2):"",r=null;if(t.trim())try{JSON.parse(t)}catch(e){r="Not valid JSON yet"}return(0,n.jsx)(x.A,{fullWidth:!0,size:m,multiline:!0,minRows:2,label:"".concat(p," (JSON ").concat(a.type,")"),value:t,error:!!r,helperText:null!=r?r:j,onChange:t=>{let l=t.target.value;if(v(t=>({...t,[e]:l})),!l.trim())return void b(e,void 0);try{b(e,JSON.parse(l))}catch(e){}},slotProps:{input:{sx:{fontFamily:"monospace",fontSize:13}}}},e)}return(0,n.jsx)(x.A,{fullWidth:!0,size:m,label:p,value:void 0!==f[e]?String(f[e]):"",onChange:t=>b(e,""===t.target.value?void 0:t.target.value),helperText:j},e)})})}},60187:(e,t,l)=>{Promise.resolve().then(l.bind(l,98440))},75870:(e,t,l)=>{"use strict";l.d(t,{A:()=>f});var n=l(95155),a=l(12115),r=l(94049),o=l(25635),s=l(4474),i=l(91871),c=l(56900),d=l(90057),u=l(96362),h=l(9226),x=l(68503);let f=e=>{let{selectedFlowId:t,onSelectFlow:l,disabled:f=!1,hideLabel:p=!1}=e,[m,g]=(0,a.useState)([]),[v,y]=(0,a.useState)(!0),[w,j]=(0,a.useState)(null),[b,A]=(0,a.useState)(!1);(0,a.useEffect)(()=>{(async()=>{y(!0),j(null);try{let e=await d.g.loadFlows();g(e)}catch(e){console.error("Error loading flows:",e),j("Failed to load flows")}finally{y(!1)}})()},[]);let k=e=>{l(e),A(!1)},S=async e=>{let t=m.find(t=>t.id===e);if(!t)return;let l=!t.favorite,n={...t,favorite:l||void 0};try{(await d.g.updateFlow(n)).success&&g(t=>t.map(t=>t.id===e?n:t))}catch(e){console.error("Error toggling flow favorite:",e)}},C=(0,x.E)("flows",m),T=e=>({key:e.id,content:(e=>(0,n.jsx)(h.A,{flow:e,selected:e.id===t,onSelect:k,onToggleFavorite:S,pickerMode:!0}))(e)}),I=C.items.map(T),N=C.groups?C.groups.map(e=>({...e,items:e.items.map(T)})):null,W=(()=>{if(!t)return"";let e=m.find(e=>e.id===t);return e?e.name:""})();return(0,n.jsxs)(r.default,{children:[!p&&(0,n.jsx)(o.default,{variant:"subtitle1",gutterBottom:!0,children:"Select Flow"}),v?(0,n.jsxs)(r.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,n.jsx)(s.default,{size:20}),(0,n.jsx)(o.default,{variant:"body2",color:"text.secondary",children:"Loading flows..."})]}):w?(0,n.jsx)(o.default,{color:"error",variant:"body2",children:w}):0===m.length?(0,n.jsx)(o.default,{variant:"body2",color:"text.secondary",children:"No flows available. Create some flows in the Flow Builder first."}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.A,{variant:"outlined",startIcon:(0,n.jsx)(c.A,{}),onClick:()=>A(!0),disabled:f,sx:{textTransform:"none",maxWidth:"100%"},children:(0,n.jsx)(r.default,{component:"span",sx:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:t&&W||"Select a flow"})}),(0,n.jsx)(o.default,{variant:"caption",color:"text.secondary",display:"block",sx:{mt:.5},children:t?'Using "'.concat(W,'" flow for this conversation'):"Select a flow to use for this conversation"}),(0,n.jsx)(u.A,{open:b,onClose:()=>A(!1),title:"Select a flow",description:"Pick the flow this conversation will run.",skeleton:(0,n.jsx)(h.o,{}),emptyMessage:"No flows available. Create some flows in the Flow Builder first.",searchable:!0,searchPlaceholder:"Search flows…",searchTerm:C.searchTerm,onSearchChange:C.setSearchTerm,items:I,groups:N,collapsedKeys:C.collapsedKeys,onToggleGroup:C.toggleGroup})]})]})}},93632:(e,t,l)=>{"use strict";l.d(t,{P:()=>r});let n=(0,l(87021).h)("frontend/services/plannedExecutions");class a{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 n.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)}),n=await l.json();if(!l.ok)return{success:!1,error:(null==n?void 0:n.error)||"HTTP ".concat(l.status)};return{success:!0,execution:n.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 n.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 r=new a},98440:(e,t,l)=>{"use strict";l.r(t),l.d(t,{default:()=>eH});var n=l(95155),a=l(94049),r=l(12115),o=l(25635),s=l(99944),i=l(9957),c=l(91871),d=l(22003),u=l(80422),h=l(2778),x=l(52363),f=l(65036),p=l(75912),m=l(86946),g=l(76530),v=l(78470),y=l(41983),w=l(93632),j=l(87021),b=l(2300),A=l(28548),k=l(4474),S=l(50430),C=l(55406),T=l(14915),I=l(4484),N=l(63186),W=l(62962),P=l(3713);let E=e=>String(e).padStart(2,"0"),M=e=>{switch(e){case"completed":return"success.main";case"error":return"error.main";case"skipped":return"warning.main";default:return"transparent"}},R=e=>e?new Date(e).toLocaleDateString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):"",O=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")},F=e=>{var t;let{entry:l,paused:s,onEdit:d,onDelete:u,onToggleEnabled:m,onRanNow:g}=e,{execution:j,status:F,lastRun:z}=l,[D,L]=(0,r.useState)(!1),[U,H]=(0,r.useState)(null),[J,q]=(0,r.useState)(!1),[B,G]=(0,r.useState)(!1),[$,_]=(0,r.useState)(null),[K,Q]=(0,r.useState)(10),V=(0,r.useCallback)(async()=>{q(!0),H([...await w.P.loadRuns(j.id)].reverse()),Q(10),q(!1)},[j.id]);(0,r.useEffect)(()=>{D&&V()},[D,V,null==z?void 0:z.runId]);let X=async()=>{G(!0),await w.P.runNow(j.id),G(!1),D&&V(),g()};return(0,n.jsxs)(b.A,{variant:"outlined",sx:{p:2},children:[(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1.5,flexWrap:"wrap"},children:[(0,n.jsxs)(a.default,{sx:{flexGrow:1,minWidth:220},children:[(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1,flexWrap:"wrap"},children:[(0,n.jsx)(o.default,{variant:"subtitle1",sx:{fontWeight:600},children:j.name}),(0,n.jsx)(A.A,{size:"small",label:function(e){var t,l,n;switch(e.type){case"schedule":{let l,n=(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(E(Number(l[2])),":").concat(E(Number(l[1]))):(l=/^(\d+) (\d+) \* \* 1-5$/.exec(t))?"Weekdays at ".concat(E(Number(l[2])),":").concat(E(Number(l[1]))):null);return null!=n?n:"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!=(n=e.on)?n:[]).join("/")||"terminal";return"When a flow is ".concat(t)}default:return"Trigger"}}(j.trigger)}),j.exclusive&&(0,n.jsx)(v.A,{title:"Only runs when the scheduler is idle; blocks other runs while active",children:(0,n.jsx)(A.A,{size:"small",color:"secondary",label:"Exclusive"})}),!j.enabled&&(0,n.jsx)(A.A,{size:"small",label:"Off",variant:"outlined"})]}),F.running?(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:.75,mt:.5},children:[(0,n.jsx)(k.default,{size:12,thickness:6}),(0,n.jsxs)(o.default,{variant:"body2",color:"text.secondary",children:["Running…",F.runningSince?" — started ".concat(R(F.runningSince)):""]})]}):F.blockedByExclusive?(0,n.jsxs)(o.default,{variant:"body2",color:"text.secondary",sx:{mt:.5},children:["Blocked — an exclusive execution holds the scheduler",F.lastTriggerError?" — trigger error: ".concat(F.lastTriggerError):""]}):(0,n.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(R(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),F.lastTriggerError?" — trigger error: ".concat(F.lastTriggerError):""]}),z&&(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:.75,mt:.5},children:[(0,n.jsx)(v.A,{title:z.status,children:(0,n.jsx)(a.default,{sx:{width:10,height:10,borderRadius:"50%",bgcolor:M(z.status),flexShrink:0}})}),(0,n.jsxs)(o.default,{variant:"body2",color:"text.secondary",children:["Last run ",R(z.firedAt),"error"===z.status&&z.error?" — ".concat(z.error):""]})]})]}),(0,n.jsx)(v.A,{title:"Run now",children:(0,n.jsx)("span",{children:(0,n.jsx)(y.A,{onClick:X,disabled:B,color:"primary",children:B?(0,n.jsx)(k.default,{size:20}):(0,n.jsx)(C.A,{})})})}),(0,n.jsx)(v.A,{title:s?"Scheduler is paused globally — switch it to Active (top right) to arm triggers":j.enabled?"Turn off":"Turn on",children:(0,n.jsx)(i.A,{checked:j.enabled,onChange:e=>m(e.target.checked)})}),(0,n.jsx)(v.A,{title:"Edit",children:(0,n.jsx)(y.A,{onClick:d,children:(0,n.jsx)(T.A,{})})}),(0,n.jsx)(v.A,{title:"Delete",children:(0,n.jsx)(y.A,{onClick:u,children:(0,n.jsx)(I.A,{})})}),(0,n.jsx)(v.A,{title:D?"Hide run history":"Show run history",children:(0,n.jsx)(y.A,{onClick:()=>L(e=>!e),children:D?(0,n.jsx)(W.A,{}):(0,n.jsx)(N.A,{})})})]}),(0,n.jsx)(S.A,{in:D,timeout:"auto",unmountOnExit:!0,children:(0,n.jsxs)(a.default,{sx:{mt:2,borderTop:1,borderColor:"divider",pt:1.5},children:[J&&!U&&(0,n.jsx)(o.default,{variant:"body2",color:"text.secondary",children:"Loading runs…"}),U&&0===U.length&&(0,n.jsx)(o.default,{variant:"body2",color:"text.secondary",children:"No runs yet. Use the play button to try it now."}),null==U?void 0:U.slice(0,K).map(e=>{var t;return(0,n.jsxs)(a.default,{sx:{display:"flex",gap:1,py:.75,alignItems:"flex-start","&:hover .run-detail-button":{opacity:1}},children:[(0,n.jsx)(a.default,{sx:{width:10,height:10,borderRadius:"50%",bgcolor:M(e.status),mt:"5px",flexShrink:0}}),(0,n.jsxs)(a.default,{sx:{minWidth:0,flexGrow:1},children:[(0,n.jsxs)(o.default,{variant:"body2",children:[R(e.firedAt),O(e)?" \xb7 ".concat(O(e)):""," \xb7 ",e.triggerSummary,(null==(t=e.usage)?void 0:t.totalTokens)?" \xb7 ".concat(e.usage.totalTokens.toLocaleString()," tokens"):""]}),e.error&&(0,n.jsx)(o.default,{variant:"body2",color:"error",children:e.error}),e.outputText&&(0,n.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,n.jsx)(v.A,{title:"Show full output",children:(0,n.jsx)(y.A,{className:"run-detail-button",size:"small",onClick:()=>_(e),sx:{opacity:{xs:1,md:.35},transition:"opacity 120ms",flexShrink:0},children:(0,n.jsx)(P.A,{fontSize:"inherit"})})})]},e.runId)}),U&&U.length>K&&(0,n.jsxs)(c.A,{size:"small",onClick:()=>Q(e=>e+10),sx:{mt:1},children:["Load more (",U.length-K," older)"]})]})}),(0,n.jsxs)(h.A,{open:null!==$,onClose:()=>_(null),maxWidth:"md",fullWidth:!0,children:[(0,n.jsx)(x.A,{component:"div",children:(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,n.jsx)(a.default,{sx:{width:10,height:10,borderRadius:"50%",bgcolor:$?M($.status):"transparent",flexShrink:0}}),(0,n.jsxs)(o.default,{variant:"h6",children:[j.name," — ",$?R($.firedAt):""]})]})}),(0,n.jsx)(f.A,{dividers:!0,children:$&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(o.default,{variant:"body2",color:"text.secondary",sx:{mb:1.5},children:[$.status,O($)?" \xb7 ".concat(O($)):""," \xb7 ",$.triggerSummary,(null==(t=$.usage)?void 0:t.totalTokens)?" \xb7 ".concat($.usage.totalTokens.toLocaleString()," tokens (").concat($.usage.promptTokens.toLocaleString()," in / ").concat($.usage.completionTokens.toLocaleString()," out)"):""]}),$.error&&(0,n.jsx)(o.default,{variant:"body2",color:"error",sx:{mb:1.5,whiteSpace:"pre-wrap"},children:$.error}),$.outputText?(0,n.jsx)(a.default,{sx:{whiteSpace:"pre-wrap",wordBreak:"break-word",bgcolor:"action.hover",borderRadius:1,p:2,fontSize:14,maxHeight:"55vh",overflow:"auto"},children:$.outputText}):!$.error&&(0,n.jsx)(o.default,{variant:"body2",color:"text.secondary",children:"This run produced no output text."})]})}),(0,n.jsx)(p.A,{children:(0,n.jsx)(c.A,{onClick:()=>_(null),children:"Close"})})]})]})};var z=l(21067),D=l(9562),L=l(52641),U=l(51221),H=l(55606),J=l(86973),q=l(18369),B=l(77073),G=l(26922),$=l(40520),_=l(79299),K=l(22590),Q=l(53657),V=l(7107),X=l(90057),Y=l(36741);let Z=e=>{let{selected:t,icon:l,title:r,description:s,onClick:i}=e;return(0,n.jsxs)(a.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,n.jsx)(Y.A,{color:"primary",fontSize:"small",sx:{position:"absolute",top:8,right:8}}),(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:.5,color:t?"primary.main":"text.secondary"},children:[l,(0,n.jsx)(o.default,{variant:"subtitle1",sx:{fontWeight:600,color:"text.primary"},children:r})]}),(0,n.jsx)(o.default,{variant:"body2",color:"text.secondary",children:s})]})};var ee=l(22822),et=l(98267),el=l(20537),en=l(37960);let ea=e=>String(e).padStart(2,"0"),er=e=>{let{cron:t,timezone:l,onChange:i,verb:c="Runs",catchUp:u,onCatchUpChange:h}=e,x=(0,r.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(ea(Number(t[2])),":").concat(ea(Number(t[1])))}:(t=/^(\d+) (\d+) \* \* 1-5$/.exec(e))?{mode:"weekdays",n:1,time:"".concat(ea(Number(t[2])),":").concat(ea(Number(t[1])))}:{mode:"custom",n:15,time:"09:00"}})(t),[]),[f,p]=(0,r.useState)(x.mode),[m,g]=(0,r.useState)(x.n),[v,y]=(0,r.useState)(x.time),[j,b]=(0,r.useState)(t),[A,k]=(0,r.useState)(null),S=function(e,t,l,n){let[a,r]=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(r||0," ").concat(a||0," * * *");case"weekdays":return"".concat(r||0," ").concat(a||0," * * 1-5");default:return n}}(f,m,v,j);return(0,r.useEffect)(()=>{S!==t&&i({cron:S,timezone:l})},[S]),(0,r.useEffect)(()=>{let e=!1,t=setTimeout(()=>{w.P.previewSchedule(S,l).then(t=>{e||k(t)})},300);return()=>{e=!0,clearTimeout(t)}},[S,l]),(0,n.jsxs)(a.default,{children:[(0,n.jsxs)(a.default,{sx:{display:"flex",gap:2,flexWrap:"wrap",alignItems:"center",mt:1},children:[(0,n.jsxs)(L.A,{sx:{minWidth:180},children:[(0,n.jsx)(U.A,{id:"schedule-preset-label",children:c}),(0,n.jsxs)(H.A,{labelId:"schedule-preset-label",label:c,value:f,onChange:e=>p(e.target.value),children:[(0,n.jsx)(J.A,{value:"seconds",children:"Every N seconds"}),(0,n.jsx)(J.A,{value:"minutes",children:"Every N minutes"}),(0,n.jsx)(J.A,{value:"hours",children:"Every N hours"}),(0,n.jsx)(J.A,{value:"daily",children:"Daily at a time"}),(0,n.jsx)(J.A,{value:"weekdays",children:"Weekdays at a time"}),(0,n.jsx)(J.A,{value:"custom",children:"Custom (cron)"})]})]}),("seconds"===f||"minutes"===f||"hours"===f)&&(0,n.jsx)(D.A,{label:"seconds"===f?"Seconds":"minutes"===f?"Minutes":"Hours",type:"number",value:m,onChange:e=>g(Number(e.target.value)),inputProps:{min:1,max:"hours"===f?23:59},sx:{width:120}}),("daily"===f||"weekdays"===f)&&(0,n.jsx)(D.A,{label:"Time",type:"time",value:v,onChange:e=>y(e.target.value),sx:{width:150},InputLabelProps:{shrink:!0}}),"custom"===f&&(0,n.jsx)(D.A,{label:"Cron pattern",value:j,onChange:e=>b(e.target.value),sx:{minWidth:220},placeholder:"*/15 * * * *"})]}),A&&!A.valid&&(0,n.jsx)(d.A,{severity:"error",sx:{mt:2},children:A.error||"This schedule is not valid."}),A&&A.valid&&A.nextRuns.length>0&&(0,n.jsxs)(o.default,{variant:"body2",color:"text.secondary",sx:{mt:2},children:["Next: ",A.nextRuns.map(e=>new Date(e).toLocaleString()).join(" \xb7 ")]}),h&&(0,n.jsx)(s.A,{sx:{mt:1,display:"flex"},control:(0,n.jsx)(ee.A,{checked:!0===u,onChange:e=>h(e.target.checked)}),label:"If FLUJO was closed at a scheduled time, run once on startup"}),(0,n.jsxs)(et.A,{disableGutters:!0,elevation:0,sx:{mt:1,"&:before":{display:"none"}},children:[(0,n.jsx)(el.A,{expandIcon:(0,n.jsx)(N.A,{}),sx:{px:0},children:(0,n.jsx)(o.default,{variant:"body2",color:"text.secondary",children:"Advanced"})}),(0,n.jsx)(en.A,{sx:{px:0},children:(0,n.jsxs)(a.default,{sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,n.jsx)(D.A,{label:"Timezone (optional)",value:l||"",onChange:e=>i({cron:S,timezone:e.target.value||void 0}),placeholder:"e.g. Europe/Berlin",helperText:"IANA timezone name. Empty = this computer's timezone.",sx:{minWidth:260}}),(0,n.jsx)(D.A,{label:"Generated cron pattern",value:S,InputProps:{readOnly:"custom"!==f},onChange:e=>{p("custom"),b(e.target.value)},helperText:"Editing switches to Custom mode.",sx:{minWidth:220}})]})})]})]})};var eo=l(52277),es=l(9693);let ei=e=>{let{config:t,onChange:l,executionId:i,saved:u}=e,[h,x]=(0,r.useState)(null),f=window.location.origin,p="".concat(f,"/api/webhooks/").concat(i),m=async(e,t)=>{try{await navigator.clipboard.writeText(t),x(e),setTimeout(()=>x(null),1500)}catch(e){}};return(0,n.jsxs)(a.default,{sx:{mt:1},children:[!u&&(0,n.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,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,n.jsx)(D.A,{fullWidth:!0,label:"Webhook URL",value:p,InputProps:{readOnly:!0},size:"small"}),(0,n.jsx)(v.A,{title:"Copy URL",children:(0,n.jsx)(y.A,{onClick:()=>m("url",p),children:"url"===h?(0,n.jsx)(es.A,{color:"success"}):(0,n.jsx)(eo.A,{})})})]}),(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1,mt:2},children:[(0,n.jsx)(D.A,{fullWidth:!0,label:"Secret token",value:t.token,InputProps:{readOnly:!0},size:"small",type:"password"}),(0,n.jsx)(v.A,{title:"Copy token",children:(0,n.jsx)(y.A,{onClick:()=>m("token",t.token),disabled:!t.token,children:"token"===h?(0,n.jsx)(es.A,{color:"success"}):(0,n.jsx)(eo.A,{})})}),(0,n.jsx)(c.A,{size:"small",onClick:()=>l({...t,token:crypto.randomUUID()}),sx:{whiteSpace:"nowrap"},children:"New token"})]}),(0,n.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,n.jsxs)(o.default,{variant:"body2",color:"text.secondary",sx:{mt:1.5},children:["Callers send a POST with the token in the ",(0,n.jsx)("code",{children:"X-Flujo-Token"})," ","header (or ",(0,n.jsx)("code",{children:"?token=…"}),"). The request body becomes part of the flow's input — treat it as untrusted data in your prompt."]}),(0,n.jsx)(s.A,{sx:{mt:1,display:"flex"},control:(0,n.jsx)(ee.A,{checked:!0===t.allowExternal,onChange:e=>l({...t,allowExternal:e.target.checked})}),label:"Allow calls from other machines (default: this computer only)"}),t.allowExternal&&(0,n.jsx)(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 ec=l(56422),ed=l(17325),eu=l(80007),eh=l(62640);let ex=[{value:"add",label:"A file appears"},{value:"change",label:"A file changes"},{value:"unlink",label:"A file is deleted"}],ef=e=>{var t;let{config:l,onChange:i}=e,[c,u]=(0,r.useState)(!1);return(0,n.jsxs)(a.default,{sx:{mt:1},children:[(0,n.jsx)(D.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,n.jsx)(ec.A,{position:"end",children:(0,n.jsx)(v.A,{title:"Browse folders (on the FLUJO machine)",children:(0,n.jsx)(y.A,{edge:"end",onClick:()=>u(!0),children:(0,n.jsx)(eu.A,{})})})})}}),(0,n.jsx)(eh.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,n.jsx)(D.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,n.jsx)(o.default,{variant:"subtitle2",sx:{mt:1},children:"Run when…"}),(0,n.jsx)(ed.A,{row:!0,children:ex.map(e=>(0,n.jsx)(s.A,{control:(0,n.jsx)(ee.A,{checked:l.events.includes(e.value),onChange:t=>((e,t)=>{let n=t?[...l.events,e]:l.events.filter(t=>t!==e);i({...l,events:n})})(e.value,t.target.checked)}),label:e.label},e.value))}),(0,n.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,n.jsxs)(et.A,{disableGutters:!0,elevation:0,sx:{mt:1,"&:before":{display:"none"}},children:[(0,n.jsx)(el.A,{expandIcon:(0,n.jsx)(N.A,{}),sx:{px:0},children:(0,n.jsx)(o.default,{variant:"body2",color:"text.secondary",children:"Advanced"})}),(0,n.jsx)(en.A,{sx:{px:0},children:(0,n.jsx)(D.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}})})]})]})};var ep=l(41356),em=l(24610),eg=l(17897),ev=l(43076),ey=l(17427),ew=l(96362),ej=l(40962),eb=l(68503);let eA=(0,j.h)("frontend/components/PlannedExecutions/WatchToolPanel"),ek=e=>{var t,l;let{config:s,onChange:i}=e,[u,h]=(0,r.useState)([]),[x,f]=(0,r.useState)(!1),[p,m]=(0,r.useState)([]),[g,v]=(0,r.useState)(!1),[y,w]=(0,r.useState)(Object.keys(s.args||{}).length>0?JSON.stringify(s.args,null,2):""),[j,b]=(0,r.useState)(null),[A,S]=(0,r.useState)(!1),[C,T]=(0,r.useState)(null),[I,N]=(0,r.useState)(null),[W,P]=(0,r.useState)([]),[E,M]=(0,r.useState)([]);(0,r.useEffect)(()=>{let e=!1;return eg.S.loadServerConfigs().then(t=>{e||(Array.isArray(t)?h(t.filter(e=>!e.disabled)):(eA.warn("Failed to load MCP servers for watch-tool panel",t),h([])))}),()=>{e=!0}},[]),(0,r.useEffect)(()=>{if(!s.serverName)return void m([]);let e=!1;return v(!0),eg.S.listServerTools(s.serverName).then(t=>{let{tools:l}=t;e||m(l||[])}).finally(()=>{e||v(!1)}),()=>{e=!0}},[s.serverName]),(0,r.useEffect)(()=>{let e=!1;return ev.N.loadModels().then(t=>{e||P(Array.isArray(t)?t:[])}).catch(()=>{e||P([])}),X.g.loadFlows().then(t=>{e||M(t||[])}).catch(()=>{e||M([])}),()=>{e=!0}},[]);let R=async()=>{S(!0),T(null),N(null);try{let l=await eg.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 n=null!=(e=null==l?void 0:l.data)?e:l,a=null!=(t=JSON.stringify(n,null,2))?t:"";T(a.length>6e3?"".concat(a.slice(0,6e3),"\n… (truncated)"):a)}}catch(e){N(e instanceof Error?e.message:"Tool call failed")}finally{S(!1)}},O=s.evaluate,F=p.find(e=>e.name===s.toolName),z=(0,eb.E)("mcp",u),q=e=>({key:e.name,content:(e=>(0,n.jsx)(ej.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:""}),f(!1))}}))(e)}),B=z.items.map(q),G=z.groups?z.groups.map(e=>({...e,items:e.items.map(q)})):null;return(0,n.jsxs)(a.default,{sx:{mt:1},children:[(0,n.jsxs)(a.default,{sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,n.jsxs)(a.default,{sx:{minWidth:220,flex:1,mt:2,mb:1},children:[(0,n.jsx)(o.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:.5},children:"Server"}),(0,n.jsx)(c.A,{variant:"outlined",fullWidth:!0,onClick:()=>f(!0),sx:{justifyContent:"flex-start",textTransform:"none"},children:s.serverName?"".concat(s.serverName," — change"):"Choose an MCP server…"}),(0,n.jsx)(ew.A,{open:x,onClose:()=>f(!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:z.searchTerm,onSearchChange:z.setSearchTerm,columns:{xs:12,sm:6},items:B,groups:G,collapsedKeys:z.collapsedKeys,onToggleGroup:z.toggleGroup})]}),(0,n.jsxs)(L.A,{sx:{minWidth:220,flex:1},margin:"normal",disabled:!s.serverName,children:[(0,n.jsx)(U.A,{id:"watch-tool-label",children:"Tool"}),(0,n.jsxs)(H.A,{labelId:"watch-tool-label",label:"Tool",value:p.some(e=>e.name===s.toolName)?s.toolName:"",onChange:e=>i({...s,toolName:e.target.value,args:{}}),children:[0===p.length&&(0,n.jsx)(J.A,{value:"",disabled:!0,children:g?"Loading tools…":"Pick a server first"}),p.map(e=>(0,n.jsx)(J.A,{value:e.name,children:e.name},e.name))]})]})]}),(0,n.jsx)(o.default,{variant:"subtitle2",sx:{mt:1},children:"How often to check"}),(0,n.jsx)(er,{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 n=Math.max(1,Math.min(23,Math.round(l/60)));return"0 */".concat(n," * * *")}(s.intervalMs),timezone:s.timezone,onChange:e=>{let{cron:t,timezone:l}=e;return i({...s,cron:t,timezone:l})}}),F?(0,n.jsxs)(a.default,{sx:{my:1.5},children:[(0,n.jsx)(o.default,{variant:"subtitle2",sx:{mb:1.5},children:"Tool parameters — sent on every check"}),(0,n.jsx)(ey.A,{schema:F.inputSchema,values:s.args||{},onChange:e=>i({...s,args:e})})]}):(0,n.jsx)(D.A,{fullWidth:!0,label:"Tool arguments (JSON, optional)",value:y,onChange:e=>(e=>{if(w(e),!e.trim()){b(null),i({...s,args:{}});return}try{let t=JSON.parse(e);if(null===t||"object"!=typeof t||Array.isArray(t))return void b('Arguments must be a JSON object, e.g. { "query": "…" }');b(null),i({...s,args:t})}catch(e){b("Not valid JSON yet")}})(e.target.value),margin:"normal",multiline:!0,minRows:2,placeholder:'{ "query": "is:unread" }',error:!!j,helperText:null!=j?j:"Sent to the tool on every check.",slotProps:{input:{sx:{fontFamily:"monospace",fontSize:14}}}}),(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:2,mb:1},children:[(0,n.jsx)(c.A,{variant:"outlined",size:"small",onClick:R,disabled:!s.serverName||!s.toolName||A||!!j,startIcon:A?(0,n.jsx)(k.default,{size:16}):void 0,children:"Test: call the tool now"}),(0,n.jsx)(o.default,{variant:"caption",color:"text.secondary",children:"See what the result looks like — useful for the settings below."})]}),I&&(0,n.jsx)(d.A,{severity:"error",sx:{mb:1},children:I}),C&&(0,n.jsx)(a.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,n.jsx)(o.default,{variant:"subtitle2",sx:{mt:2,mb:1},children:"Run the flow when…"}),(0,n.jsxs)(a.default,{role:"radiogroup","aria-label":"Poll condition",sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,n.jsx)(Z,{selected:"on-change"===O.mode,onClick:()=>i({...s,evaluate:{mode:"on-change"}}),icon:(0,n.jsx)(ep.A,{}),title:"The result changes",description:"Any difference from the last check runs the flow. Simplest — no setup."}),(0,n.jsx)(Z,{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,n.jsx)(em.A,{}),title:"AI decides",description:"Describe the condition in plain language; a model — or one of your flows — checks the result whenever it changes."})]}),("llm-gate"===O.mode||"flow-gate"===O.mode)&&(0,n.jsxs)(a.default,{sx:{mt:1},children:[(0,n.jsx)(D.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,n.jsxs)(a.default,{sx:{display:"flex",gap:2,flexWrap:"wrap",alignItems:"flex-start"},children:[(0,n.jsxs)(L.A,{sx:{minWidth:170},children:[(0,n.jsx)(U.A,{id:"gate-checker-label",children:"Checked by"}),(0,n.jsxs)(H.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,n.jsx)(J.A,{value:"llm-gate",children:"A model"}),(0,n.jsx)(J.A,{value:"flow-gate",children:"One of my flows"})]})]}),"llm-gate"===O.mode&&(0,n.jsxs)(L.A,{sx:{minWidth:240,flex:1},children:[(0,n.jsx)(U.A,{id:"gate-model-label",children:"Model that checks"}),(0,n.jsxs)(H.A,{labelId:"gate-model-label",label:"Model that checks",value:W.some(e=>e.id===O.modelId)?O.modelId:"",onChange:e=>i({...s,evaluate:{...O,modelId:e.target.value}}),children:[0===W.length&&(0,n.jsx)(J.A,{value:"",disabled:!0,children:"No models configured"}),W.map(e=>(0,n.jsx)(J.A,{value:e.id,children:e.displayName||e.name},e.id))]})]}),"flow-gate"===O.mode&&(0,n.jsxs)(L.A,{sx:{minWidth:240,flex:1},children:[(0,n.jsx)(U.A,{id:"gate-flow-label",children:"Flow that checks"}),(0,n.jsxs)(H.A,{labelId:"gate-flow-label",label:"Flow that checks",value:E.some(e=>e.id===O.flowId)?O.flowId:"",onChange:e=>i({...s,evaluate:{...O,flowId:e.target.value}}),children:[0===E.length&&(0,n.jsx)(J.A,{value:"",disabled:!0,children:"No flows available"}),E.map(e=>(0,n.jsx)(J.A,{value:e.id,children:e.name},e.id))]})]}),(0,n.jsx)(D.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,n.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,n.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."})]})},eS=e=>{let{config:t,onChange:l}=e;return(0,n.jsxs)(a.default,{sx:{mt:1},children:[(0,n.jsx)(D.A,{fullWidth:!0,label:"URL to watch",value:t.url,onChange:e=>l({...t,url:e.target.value}),placeholder:"https://example.com/status or an API/feed URL",margin:"normal",type:"url"}),(0,n.jsx)(o.default,{variant:"subtitle2",sx:{mt:1},children:"How often to check"}),(0,n.jsx)(er,{verb:"Check",cron:t.cron,timezone:t.timezone,onChange:e=>{let{cron:n,timezone:a}=e;return l({...t,cron:n,timezone:a})}}),(0,n.jsx)(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."})]})};var eC=l(63109);function eT(e){if(!e||!Array.isArray(e.nodes))return[];let t=[];for(let a of e.nodes){var l,n;if((null==a||null==(l=a.data)?void 0:l.type)!=="signal")continue;let e=null==(n=a.data.properties)?void 0:n.topic;"string"==typeof e&&e.trim()&&t.push(e.trim())}return t}let eI=(0,j.h)("frontend/components/PlannedExecutions/FlowEventPanel"),eN=e=>{var t,l,i,c,u,h,x,f,p,m,g,v,y,j,b,A,k,S;let{config:C,onChange:T,flows:I,currentExecutionId:N}=e,[W,P]=(0,r.useState)([]),[E,M]=(0,r.useState)(void 0!==C.maxChainDepth||void 0!==C.minIntervalMs),R=(null==(t=C.source)?void 0:t.topic)!==void 0?"topic":(null==(l=C.source)?void 0:l.executionId)!==void 0?"execution":"flow",O="topic"===R,F=(0,r.useMemo)(()=>(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10,l=new Map;for(let t of e)t&&"string"==typeof t.id&&l.set(t.id,t);let n=new Map,a=(e,t)=>{n.has(e)||n.set(e,[]),n.get(e).push(t)};for(let n of e){if(!n||"string"!=typeof n.id)continue;let e=new Map;for(let t of eT(n)){var r;e.set(t,(null!=(r=e.get(t))?r:0)+1)}for(let[t,l]of e)a(t,{flowId:n.id,flowName:n.name,signalNodeCount:l,viaSubflow:!1});for(let r of function(e,t){let l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,n=new Set,a=new Set,r=(e,o)=>{if(a.has(e)||o>l)return;a.add(e);let s=t.get(e);for(let e of eT(s))n.add(e);for(let e of function(e){if(!e||!Array.isArray(e.nodes))return[];let t=[];for(let a of e.nodes){var l,n;if((null==a||null==(l=a.data)?void 0:l.type)!=="subflow")continue;let e=null!=(n=a.data.properties)?n:{};if("string"==typeof e.subflowId&&e.subflowId.trim()&&t.push(e.subflowId.trim()),Array.isArray(e.parallelSubflowIds))for(let l of e.parallelSubflowIds)"string"==typeof l&&l.trim()&&t.push(l.trim())}return Array.from(new Set(t))}(s))r(e,o+1)};return r(e,0),n}(n.id,l,t))e.has(r)||a(r,{flowId:n.id,flowName:n.name,signalNodeCount:0,viaSubflow:!0})}return n})(I),[I]),q=(0,r.useMemo)(()=>{let e=new Map;for(let t of I)(null==t?void 0:t.id)&&e.set(t.id,t.name);return e},[I]),B=(0,r.useMemo)(()=>{let e=new Map;for(let n of W){var t,l;let a=n.execution;if(a.id===N||(null==(t=a.trigger)?void 0:t.type)!=="flow-event")continue;let r=null==(l=a.trigger.source)?void 0:l.topic;if("string"!=typeof r||!r.trim())continue;let o=r.trim();e.has(o)||e.set(o,[]),e.get(o).push({executionId:a.id,executionName:a.name,flowId:a.flowId,flowName:q.get(a.flowId)})}return e},[W,N,q]),G=(0,r.useMemo)(()=>Array.from(new Set([...F.keys(),...B.keys()])).sort((e,t)=>e.localeCompare(t)),[F,B]),$=e=>{let t=F.get(e);if(!t||0===t.length)return null;let l=Array.from(new Set(t.map(e=>(e.flowName||e.flowId)+(e.viaSubflow?" (via subflow)":""))));return"Emitted in: ".concat(l.join(", "))},_=(null!=(p=null==(i=C.source)?void 0:i.topic)?p:"").trim(),K=!_||F.has(_);(0,r.useEffect)(()=>{let e=!1;return w.P.list().then(t=>{e||P(t.executions||[])}).catch(t=>{eI.warn("Failed to load planned executions for source picker",t),e||P([])}),()=>{e=!0}},[]);let Q=(e,t)=>{var l;let n=new Set(null!=(l=C.on)?l:[]);t?n.add(e):n.delete(e),T({...C,on:Array.from(n)})};return(0,n.jsxs)(a.default,{sx:{mt:1},children:[(0,n.jsx)(o.default,{variant:"subtitle2",sx:{mt:1},children:"React to"}),(0,n.jsxs)(a.default,{sx:{display:"flex",gap:2,mt:1},children:[(0,n.jsxs)(L.A,{sx:{minWidth:180},children:[(0,n.jsx)(U.A,{id:"flow-event-source-kind",children:"Source"}),(0,n.jsxs)(H.A,{labelId:"flow-event-source-kind",label:"Source",value:R,onChange:e=>(e=>{T({...C,source:"flow"===e?{flowId:""}:"execution"===e?{executionId:""}:{topic:""}})})(e.target.value),children:[(0,n.jsx)(J.A,{value:"flow",children:"A flow (any run)"}),(0,n.jsx)(J.A,{value:"execution",children:"A planned execution"}),(0,n.jsx)(J.A,{value:"topic",children:"A signal topic"})]})]}),"topic"===R?(0,n.jsx)(L.A,{fullWidth:!0,children:(0,n.jsx)(eC.A,{freeSolo:!0,autoHighlight:!0,options:G,value:null!=(m=null==(c=C.source)?void 0:c.topic)?m:"",inputValue:null!=(g=null==(u=C.source)?void 0:u.topic)?g:"",onInputChange:(e,t)=>T({...C,source:{topic:t}}),renderOption:(e,t)=>{let l=$(t),s=(e=>{let t=B.get(e);if(!t||0===t.length)return null;let l=Array.from(new Set(t.map(e=>e.flowName||e.flowId)));return"Used by ".concat(t.length," trigger").concat(1===t.length?"":"s"," → starts ").concat(l.join(", "))})(t);return(0,r.createElement)(a.default,{component:"li",...e,key:t},(0,n.jsxs)(a.default,{sx:{display:"flex",flexDirection:"column",py:.25},children:[(0,n.jsx)(o.default,{variant:"body2",sx:{fontWeight:600},children:t}),l&&(0,n.jsx)(o.default,{variant:"caption",color:"text.secondary",children:l}),s&&(0,n.jsx)(o.default,{variant:"caption",color:"text.secondary",children:s}),!l&&(0,n.jsx)(o.default,{variant:"caption",color:"warning.main",children:"No flow currently emits this signal"})]}))},renderInput:e=>{var t;return(0,n.jsx)(D.A,{...e,label:"Signal topic",placeholder:"e.g. review-blocked",helperText:_?K?null!=(t=$(_))?t:"React when this signal is emitted.":"No flow currently emits this signal — the trigger will stay idle until one does.":"React when a signal node in any flow emits this topic. Suggestions come from your existing flows."})}})}):"flow"===R?(0,n.jsxs)(L.A,{fullWidth:!0,children:[(0,n.jsx)(U.A,{id:"flow-event-flow",children:"Flow to watch"}),(0,n.jsxs)(H.A,{labelId:"flow-event-flow",label:"Flow to watch",value:null!=(v=null==(h=C.source)?void 0:h.flowId)?v:"",onChange:e=>T({...C,source:{flowId:e.target.value}}),displayEmpty:!0,children:[0===I.length&&(0,n.jsx)(J.A,{value:"",disabled:!0,children:"No flows available"}),I.map(e=>(0,n.jsx)(J.A,{value:e.id,children:e.name},e.id))]})]}):(0,n.jsxs)(L.A,{fullWidth:!0,children:[(0,n.jsx)(U.A,{id:"flow-event-execution",children:"Planned execution to watch"}),(0,n.jsxs)(H.A,{labelId:"flow-event-execution",label:"Planned execution to watch",value:null!=(y=null==(x=C.source)?void 0:x.executionId)?y:"",onChange:e=>T({...C,source:{executionId:e.target.value}}),displayEmpty:!0,children:[0===W.filter(e=>e.execution.id!==N).length&&(0,n.jsx)(J.A,{value:"",disabled:!0,children:"No other planned executions"}),W.filter(e=>e.execution.id!==N).map(e=>(0,n.jsx)(J.A,{value:e.execution.id,children:e.execution.name},e.execution.id))]})]})]}),!O&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o.default,{variant:"subtitle2",sx:{mt:2},children:"When it…"}),(0,n.jsxs)(ed.A,{row:!0,children:[(0,n.jsx)(s.A,{control:(0,n.jsx)(ee.A,{checked:(null!=(j=C.on)?j:[]).includes("completed"),onChange:e=>Q("completed",e.target.checked)}),label:"completes"}),(0,n.jsx)(s.A,{control:(0,n.jsx)(ee.A,{checked:(null!=(b=C.on)?b:[]).includes("error"),onChange:e=>Q("error",e.target.checked)}),label:"errors"})]})]}),(0,n.jsx)(D.A,{fullWidth:!0,label:O?"Only when the payload contains (optional)":"Only when the output contains (optional)",value:null!=(A=null==(f=C.outputMatch)?void 0:f.contains)?A:"",onChange:e=>{let t=e.target.value,l={...C.outputMatch,contains:t||void 0},n=l.contains||l.regex?l:void 0;T({...C,outputMatch:n})},margin:"normal",placeholder:"e.g. FAILED, or leave empty to react to every matching run"}),(0,n.jsx)(s.A,{sx:{mt:1},control:(0,n.jsx)(ee.A,{checked:E,onChange:e=>M(e.target.checked)}),label:"Advanced (loop safety)"}),E&&(0,n.jsxs)(a.default,{sx:{display:"flex",gap:2,mt:1},children:[(0,n.jsx)(D.A,{label:"Max chain depth",type:"number",value:null!=(k=C.maxChainDepth)?k:"",onChange:e=>T({...C,maxChainDepth:""===e.target.value?void 0:Number(e.target.value)}),helperText:"Stop after this many hops (default 5)",inputProps:{min:1}}),(0,n.jsx)(D.A,{label:"Cooldown (ms)",type:"number",value:null!=(S=C.minIntervalMs)?S:"",onChange:e=>T({...C,minIntervalMs:""===e.target.value?void 0:Number(e.target.value)}),helperText:"Minimum gap between fires",inputProps:{min:0}})]}),(0,n.jsx)(z.A,{sx:{mt:2}}),(0,n.jsx)(d.A,{severity:"info",sx:{mt:2},children:O?"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."})]})};var eW=l(75870);let eP=(0,j.h)("frontend/components/PlannedExecutions/ExecutionModal"),eE={type:"schedule",cron:"0 9 * * *"},eM={type:"file-watch",path:"",events:["add","change"]},eR={type:"mcp-poll",serverName:"",toolName:"",args:{},cron:"*/5 * * * *",evaluate:{mode:"on-change"}},eO={type:"url-watch",url:"",cron:"*/15 * * * *"},eF={type:"flow-event",source:{flowId:""},on:["completed"]},ez=e=>{var t,l;let{open:u,execution:m,onClose:g,onSaved:v}=e,[j,b]=(0,r.useState)(""),[A,k]=(0,r.useState)(""),[S,C]=(0,r.useState)(""),[T,I]=(0,r.useState)(!1),[N,W]=(0,r.useState)("skip"),[P,E]=(0,r.useState)(!1),[M,R]=(0,r.useState)("queue"),[O,F]=(0,r.useState)(eE),[Y,ee]=(0,r.useState)(""),[et,el]=(0,r.useState)([]),[en,ea]=(0,r.useState)(!1),[eo,es]=(0,r.useState)(!1),[ec,ed]=(0,r.useState)(null);(0,r.useEffect)(()=>{var e,t,l,n,a,r;u&&(ed(null),b(null!=(e=null==m?void 0:m.name)?e:""),k(null!=(t=null==m?void 0:m.flowId)?t:""),C(null!=(l=null==m?void 0:m.prompt)?l:""),I((null==m?void 0:m.saveConversations)===!0),W(null!=(n=null==m?void 0:m.overlapStrategy)?n:"skip"),E((null==m?void 0:m.exclusive)===!0),R(null!=(a=null==m?void 0:m.nonExclusiveBehavior)?a:"queue"),F(null!=(r=null==m?void 0:m.trigger)?r:eE),ee(m?"":crypto.randomUUID()))},[u,m]),(0,r.useEffect)(()=>{if(!u)return;let e=!1;return ea(!0),X.g.loadFlows().then(t=>{e||el(t||[])}).catch(t=>{eP.warn("Failed to load flows for execution picker",t),e||el([])}).finally(()=>{e||ea(!1)}),()=>{e=!0}},[u]);let eu=!!A&&!en&&et.length>0&&!et.some(e=>e.id===A),eh=async()=>{var e;es(!0),ed(null);let t={name:j,flowId:A,prompt:S,saveConversations:T,overlapStrategy:N,exclusive:P,nonExclusiveBehavior:M,trigger:O,enabled:null==(e=null==m?void 0:m.enabled)||e,...m?{}:{id:Y}},l=m?await w.P.update(m.id,t):await w.P.create(t);if(es(!1),!l.success)return void ed(l.error||"Failed to save");v(),g()};return(0,n.jsxs)(h.A,{open:u,onClose:g,maxWidth:"md",fullWidth:!0,PaperProps:{sx:{borderTop:5,borderColor:"primary.main",maxWidth:"95vw",maxHeight:"90vh"}},children:[(0,n.jsx)(x.A,{component:"div",children:(0,n.jsxs)(a.default,{display:"flex",alignItems:"center",justifyContent:"space-between",children:[(0,n.jsx)(o.default,{variant:"h6",children:m?"Edit planned execution":"New planned execution"}),(0,n.jsx)(y.A,{edge:"end",color:"inherit",onClick:g,"aria-label":"close",children:(0,n.jsx)(B.A,{})})]})}),(0,n.jsx)(z.A,{}),(0,n.jsxs)(f.A,{sx:{p:3},children:[(0,n.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,n.jsx)(D.A,{fullWidth:!0,label:"Name",value:j,onChange:e=>b(e.target.value),margin:"normal",placeholder:"e.g. Morning news digest"}),(0,n.jsx)(o.default,{variant:"subtitle1",sx:{mt:3,mb:1,fontWeight:600},children:"1 \xb7 When should it run?"}),(0,n.jsxs)(a.default,{role:"radiogroup","aria-label":"Trigger type",sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,n.jsx)(Z,{selected:"schedule"===O.type,onClick:()=>{"schedule"!==O.type&&F((null==m?void 0:m.trigger.type)==="schedule"?m.trigger:eE)},icon:(0,n.jsx)(G.A,{}),title:"On a schedule",description:"Run at fixed times — every few minutes, daily, on weekdays, or a custom rhythm."}),(0,n.jsx)(Z,{selected:"webhook"===O.type,onClick:()=>{"webhook"!==O.type&&F((null==m?void 0:m.trigger.type)==="webhook"?m.trigger:{type:"webhook",token:crypto.randomUUID()})},icon:(0,n.jsx)($.A,{}),title:"When called (webhook)",description:"Other apps run this flow by calling a URL — GitHub, Stripe, Slack and most services can send webhooks."}),(0,n.jsx)(Z,{selected:"file-watch"===O.type,onClick:()=>{"file-watch"!==O.type&&F((null==m?void 0:m.trigger.type)==="file-watch"?m.trigger:eM)},icon:(0,n.jsx)(_.A,{}),title:"When files change",description:"Watch a folder on this computer and run when files appear, change, or disappear."}),(0,n.jsx)(Z,{selected:"mcp-poll"===O.type,onClick:()=>{"mcp-poll"!==O.type&&F((null==m?void 0:m.trigger.type)==="mcp-poll"?m.trigger:eR)},icon:(0,n.jsx)(K.A,{}),title:"Watch a tool",description:"Check one of your MCP tools regularly — run when its result changes, or let AI decide."}),(0,n.jsx)(Z,{selected:"url-watch"===O.type,onClick:()=>{"url-watch"!==O.type&&F((null==m?void 0:m.trigger.type)==="url-watch"?m.trigger:eO)},icon:(0,n.jsx)(Q.A,{}),title:"When a website changes",description:"Check a URL regularly and run when its content is different from the last check."}),(0,n.jsx)(Z,{selected:"flow-event"===O.type,onClick:()=>{"flow-event"!==O.type&&F((null==m?void 0:m.trigger.type)==="flow-event"?m.trigger:eF)},icon:(0,n.jsx)(V.A,{}),title:"When another flow finishes",description:"React to another flow completing or erroring — chain flows together or run triage when something fails."})]}),"schedule"===O.type&&(0,n.jsx)(er,{cron:O.cron,timezone:O.timezone,onChange:e=>{let{cron:t,timezone:l}=e;return F({...O,cron:t,timezone:l})},catchUp:!0===O.catchUp,onCatchUpChange:e=>F({...O,catchUp:e})}),"webhook"===O.type&&(0,n.jsx)(ei,{config:O,onChange:F,executionId:null!=(t=null==m?void 0:m.id)?t:Y,saved:null!==m}),"file-watch"===O.type&&(0,n.jsx)(ef,{config:O,onChange:F}),"mcp-poll"===O.type&&(0,n.jsx)(ek,{config:O,onChange:F}),"url-watch"===O.type&&(0,n.jsx)(eS,{config:O,onChange:F}),"flow-event"===O.type&&(0,n.jsx)(eN,{config:O,onChange:F,flows:et,currentExecutionId:null!=(l=null==m?void 0:m.id)?l:Y}),(0,n.jsxs)(L.A,{fullWidth:!0,margin:"normal",children:[(0,n.jsx)(U.A,{id:"overlap-strategy-label",children:"If it's already running…"}),(0,n.jsxs)(H.A,{labelId:"overlap-strategy-label",label:"If it's already running…",value:N,onChange:e=>W(e.target.value),children:[(0,n.jsx)(J.A,{value:"skip",children:"Skip the new run (default)"}),(0,n.jsx)(J.A,{value:"queue",children:"Queue it — run after the current one finishes"}),(0,n.jsx)(J.A,{value:"parallel",children:"Run in parallel — allow concurrent runs"}),(0,n.jsx)(J.A,{value:"error",children:"Reject it — record an error (webhook gets 409)"})]}),(0,n.jsx)(q.A,{children:"parallel"===N&&("url-watch"===O.type||"mcp-poll"===O.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,n.jsx)(s.A,{sx:{mt:1},control:(0,n.jsx)(i.A,{checked:P,onChange:e=>E(e.target.checked)}),label:"Exclusive — only run when nothing else is running, and block other runs while it does"}),P&&(0,n.jsxs)(L.A,{fullWidth:!0,margin:"normal",children:[(0,n.jsx)(U.A,{id:"non-exclusive-behavior-label",children:"While this runs, other triggers…"}),(0,n.jsxs)(H.A,{labelId:"non-exclusive-behavior-label",label:"While this runs, other triggers…",value:M,onChange:e=>R(e.target.value),children:[(0,n.jsx)(J.A,{value:"queue",children:"Queue — run them after this finishes (default)"}),(0,n.jsx)(J.A,{value:"skip",children:"Skip — drop them"}),(0,n.jsx)(J.A,{value:"error",children:"Fail — reject them (webhook gets 423)"})]}),(0,n.jsx)(q.A,{children:"An exclusive run waits until the scheduler is idle, then holds a global lock so no other planned execution can start until it finishes."})]}),(0,n.jsx)(z.A,{sx:{mt:3}}),(0,n.jsx)(o.default,{variant:"subtitle1",sx:{mt:2,mb:0,fontWeight:600},children:"2 \xb7 What should it run?"}),(0,n.jsx)(a.default,{sx:{mt:2},children:(0,n.jsx)(eW.A,{selectedFlowId:A||null,onSelectFlow:k,disabled:eo,hideLabel:!0})}),eu&&(0,n.jsx)(d.A,{severity:"warning",sx:{mt:1},children:"The previously selected flow no longer exists. Please choose another."}),(0,n.jsx)(D.A,{fullWidth:!0,label:"What should the flow do?",value:S,onChange:e=>C(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,n.jsx)(s.A,{sx:{mt:1},control:(0,n.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)"}),ec&&(0,n.jsx)(d.A,{severity:"error",sx:{mt:2},children:ec})]}),(0,n.jsxs)(p.A,{children:[(0,n.jsx)(c.A,{onClick:g,children:"Cancel"}),(0,n.jsx)(c.A,{onClick:eh,variant:"contained",color:"primary",disabled:eo||!j.trim()||!A,children:eo?"Saving…":"Save"})]})]})},eD=(0,j.h)("frontend/components/PlannedExecutions"),eL=()=>{let[e,t]=(0,r.useState)([]),[l,j]=(0,r.useState)(!1),[b,A]=(0,r.useState)(!1),[k,S]=(0,r.useState)(!1),[C,T]=(0,r.useState)(null),[I,N]=(0,r.useState)(null),[W,P]=(0,r.useState)(null),E=(0,r.useCallback)(async()=>{let e=await w.P.list();t(e.executions),j(e.paused),A(!0)},[]);(0,r.useEffect)(()=>{E()},[E]);let M=e.some(e=>e.status.running);(0,r.useEffect)(()=>{let e=setInterval(()=>{document.hidden||E()},M?3e3:1e4);return()=>clearInterval(e)},[E,M]);let R=async e=>{j(e);let t=await w.P.setPaused(e);t.success||eD.warn("Failed to toggle pause",t.error),E()},O=async(e,t)=>{let l=await w.P.update(e.id,{enabled:t});if(!l.success){let e=l.error||"Failed to update the planned execution.";eD.warn("Failed to toggle enabled",e),P(e)}E()},z=async()=>{I&&(await w.P.delete(I.id),N(null),E())};return(0,n.jsxs)(a.default,{sx:{p:3,maxWidth:1100,mx:"auto",width:"100%"},children:[(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",justifyContent:"space-between",flexWrap:"wrap",gap:2,mb:1},children:[(0,n.jsx)(o.default,{variant:"h5",children:"Planned Executions"}),(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:2},children:[(0,n.jsx)(v.A,{title:"Refresh",children:(0,n.jsx)(y.A,{onClick:()=>void E(),children:(0,n.jsx)(g.A,{})})}),(0,n.jsx)(s.A,{control:(0,n.jsx)(i.A,{checked:!l,onChange:e=>R(!e.target.checked)}),label:l?"Paused":"Active"}),(0,n.jsx)(c.A,{variant:"contained",startIcon:(0,n.jsx)(m.A,{}),onClick:()=>{T(null),S(!0)},"data-tour":"add-execution",children:"Add"})]})]}),(0,n.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,n.jsx)("em",{children:"all"})," triggers globally."]}),l&&e.length>0&&(0,n.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,n.jsxs)(a.default,{sx:{border:1,borderColor:"divider",borderRadius:2,borderStyle:"dashed",p:6,textAlign:"center"},children:[(0,n.jsx)(o.default,{variant:"h6",sx:{mb:1},children:"Nothing planned yet"}),(0,n.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,n.jsx)(c.A,{variant:"contained",startIcon:(0,n.jsx)(m.A,{}),onClick:()=>{T(null),S(!0)},children:"New planned execution"})]}),(0,n.jsx)(a.default,{sx:{display:"flex",flexDirection:"column",gap:2},children:e.map(e=>(0,n.jsx)(F,{entry:e,onEdit:()=>{T(e.execution),S(!0)},onDelete:()=>N(e.execution),onToggleEnabled:t=>O(e.execution,t),onRanNow:()=>void E(),paused:l},e.execution.id))}),(0,n.jsx)(ez,{open:k,execution:C,onClose:()=>S(!1),onSaved:()=>void E()}),(0,n.jsx)(u.A,{open:null!==W,autoHideDuration:6e3,onClose:()=>P(null),anchorOrigin:{vertical:"bottom",horizontal:"center"},children:(0,n.jsx)(d.A,{severity:"error",onClose:()=>P(null),sx:{width:"100%"},children:W})}),(0,n.jsxs)(h.A,{open:null!==I,onClose:()=>N(null),children:[(0,n.jsxs)(x.A,{children:["Delete “",null==I?void 0:I.name,"”?"]}),(0,n.jsx)(f.A,{children:(0,n.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,n.jsxs)(p.A,{children:[(0,n.jsx)(c.A,{onClick:()=>N(null),children:"Cancel"}),(0,n.jsx)(c.A,{color:"error",variant:"contained",onClick:z,children:"Delete"})]})]})]})},eU=(0,j.h)("app/executions/page");function eH(){return eU.debug("Rendering ExecutionsPage"),(0,n.jsx)(a.default,{sx:{height:"100%",display:"flex",flexDirection:"column"},children:(0,n.jsx)(eL,{})})}}},e=>{e.O(0,[3862,2678,4754,9244,3392,1871,7111,2003,9562,488,3272,8470,3077,8598,2800,1937,795,8551,3556,9554,3948,289,1809,812,2566,6669,8441,1255,7358],()=>e(e.s=60187)),_N_E=e.O()}]);
|