flujo-ai 3.31.0 → 3.34.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 +384 -342
- package/.next/app-path-routes-manifest.json +23 -19
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +24 -24
- package/.next/react-loadable-manifest.json +29 -14
- package/.next/server/app/_not-found/page.js +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +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.js +1 -1
- package/.next/server/app/api/browse/route.js.nft.json +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.js.nft.json +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.js.nft.json +1 -1
- 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 -1
- package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/[id]/versions/[versionId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/[id]/versions/route.js +1 -1
- package/.next/server/app/api/flow/[id]/versions/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/[id]/versions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/compile/route.js +1 -1
- package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/generate/route.js +1 -1
- package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/generator/route.js +28 -0
- package/.next/server/app/api/flow/generator/route.js.nft.json +1 -0
- package/.next/server/app/api/flow/generator/route_client-reference-manifest.js +1 -0
- 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 +1 -1
- 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 -1
- package/.next/server/app/api/mcp/app-sandbox/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/app-sandbox/route_client-reference-manifest.js +1 -1
- 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 -1
- package/.next/server/app/api/mcp/oauth-capability/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/oauth-capability/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/route.js +1 -1
- package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/test-connection/route.js +1 -1
- package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp-registry/route.js +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.js.nft.json +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 -1
- package/.next/server/app/api/packages/build/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/build/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/derive-secrets/route.js +1 -1
- package/.next/server/app/api/packages/derive-secrets/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/derive-secrets/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/install/route.js +1 -1
- package/.next/server/app/api/packages/install/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/install/status/route.js +1 -1
- package/.next/server/app/api/packages/install/status/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/install/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/installed/route.js +1 -1
- package/.next/server/app/api/packages/installed/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/installed/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/resolve/route.js +1 -1
- package/.next/server/app/api/packages/resolve/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/resolve/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/scan-targets/route.js +1 -1
- package/.next/server/app/api/packages/scan-targets/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/scan-targets/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/search/route.js +1 -1
- package/.next/server/app/api/packages/search/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/uninstall/route.js +1 -1
- package/.next/server/app/api/packages/uninstall/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/uninstall/route_client-reference-manifest.js +1 -1
- 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.js +1 -1
- package/.next/server/app/api/planned-executions/preview-schedule/route.js.nft.json +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 -1
- package/.next/server/app/api/registry/auth/resend/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/auth/resend/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/auth/reset/route.js +1 -1
- package/.next/server/app/api/registry/auth/reset/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/auth/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/auth/route.js +1 -1
- package/.next/server/app/api/registry/auth/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/auth/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/feedback/route.js +1 -0
- package/.next/server/app/api/registry/feedback/route.js.nft.json +1 -0
- package/.next/server/app/api/registry/feedback/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/registry/oauth/callback/route.js +1 -1
- package/.next/server/app/api/registry/oauth/callback/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/oauth/callback/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/oauth/initiate/route.js +1 -1
- package/.next/server/app/api/registry/oauth/initiate/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/oauth/initiate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/packages/route.js +1 -0
- package/.next/server/app/api/registry/packages/route.js.nft.json +1 -0
- package/.next/server/app/api/registry/packages/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/registry/publish/route.js +1 -1
- package/.next/server/app/api/registry/publish/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/publish/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/settings/route.js +1 -1
- package/.next/server/app/api/registry/settings/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/settings/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/restore/route.js +1 -1
- package/.next/server/app/api/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/runs/active/route.js +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.js.nft.json +1 -1
- package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/telemetry/daily-active/route.js +1 -0
- package/.next/server/app/api/telemetry/daily-active/route.js.nft.json +1 -0
- package/.next/server/app/api/telemetry/daily-active/route_client-reference-manifest.js +1 -0
- 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 +58 -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 +4 -5
- 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 +3 -2
- 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 +3 -3
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +3 -3
- package/.next/server/app/mcp/page.js +56 -5
- package/.next/server/app/mcp/page.js.nft.json +1 -1
- package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp-flows/route.js +1 -1
- package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
- package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
- package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
- package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp.html +1 -1
- package/.next/server/app/mcp.rsc +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 -2
- package/.next/server/app/packages/page.js.nft.json +1 -1
- package/.next/server/app/packages/page_client-reference-manifest.js +1 -1
- package/.next/server/app/packages.html +1 -1
- package/.next/server/app/packages.rsc +3 -3
- package/.next/server/app/page.js +5 -3
- 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 +2 -2
- 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]/inject/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/inject/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.js.nft.json +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 +3 -3
- package/.next/server/app/v1/chat/events/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/events/route_client-reference-manifest.js +1 -1
- 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 +3 -3
- package/.next/server/app/waves/page.js.nft.json +1 -1
- package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
- package/.next/server/app/waves.html +1 -1
- package/.next/server/app/waves.rsc +3 -3
- package/.next/server/app-paths-manifest.json +23 -19
- package/.next/server/chunks/1114.js +1 -1
- package/.next/server/chunks/1226.js +1 -1
- package/.next/server/chunks/1227.js +1 -0
- package/.next/server/chunks/1314.js +1 -1
- package/.next/server/chunks/1439.js +1 -0
- package/.next/server/chunks/1578.js +1 -1
- package/.next/server/chunks/1634.js +1 -1
- package/.next/server/chunks/166.js +5 -5
- package/.next/server/chunks/1664.js +2 -0
- package/.next/server/chunks/180.js +12 -0
- package/.next/server/chunks/227.js +1 -5
- package/.next/server/chunks/2273.js +2 -2
- package/.next/server/chunks/2372.js +2 -0
- package/.next/server/chunks/2859.js +1 -1
- package/.next/server/chunks/3128.js +4 -4
- package/.next/server/chunks/3653.js +2 -0
- package/.next/server/chunks/3717.js +1 -0
- package/.next/server/chunks/3855.js +1 -0
- package/.next/server/chunks/4013.js +1 -0
- package/.next/server/chunks/4308.js +4 -0
- package/.next/server/chunks/{4685.js → 4466.js} +1 -1
- package/.next/server/chunks/4551.js +1 -1
- package/.next/server/chunks/4663.js +1 -0
- package/.next/server/chunks/4771.js +1 -1
- package/.next/server/chunks/4822.js +1 -0
- package/.next/server/chunks/5067.js +1 -1
- package/.next/server/chunks/519.js +2 -0
- package/.next/server/chunks/5285.js +1 -0
- package/.next/server/chunks/5309.js +78 -0
- package/.next/server/chunks/544.js +28 -27
- package/.next/server/chunks/5463.js +1 -1
- package/.next/server/chunks/5544.js +5 -5
- package/.next/server/chunks/5703.js +2 -0
- package/.next/server/chunks/6034.js +1 -1
- package/.next/server/chunks/{5708.js → 6041.js} +3 -4
- package/.next/server/chunks/6226.js +1 -1
- package/.next/server/chunks/6747.js +435 -0
- package/.next/server/chunks/6967.js +82 -0
- package/.next/server/chunks/{5548.js → 7058.js} +2 -2
- package/.next/server/chunks/{4566.js → 7069.js} +3 -3
- package/.next/server/chunks/{2388.js → 7104.js} +1 -1
- package/.next/server/chunks/7519.js +1 -0
- package/.next/server/chunks/7628.js +1 -0
- package/.next/server/chunks/7630.js +11 -0
- package/.next/server/chunks/{3030.js → 7674.js} +1 -1
- package/.next/server/chunks/{2866.js → 7891.js} +2 -2
- package/.next/server/chunks/793.js +3 -3
- package/.next/server/chunks/7965.js +39 -0
- package/.next/server/chunks/{6404.js → 7993.js} +2 -2
- package/.next/server/chunks/8284.js +42 -0
- package/.next/server/chunks/8645.js +1 -1
- package/.next/server/chunks/87.js +1 -0
- package/.next/server/chunks/8739.js +1 -2
- package/.next/server/chunks/{3912.js → 9085.js} +2 -2
- package/.next/server/chunks/9235.js +29 -0
- package/.next/server/chunks/9724.js +3 -3
- package/.next/server/chunks/9983.js +1 -1
- package/.next/server/functions-config-manifest.json +1 -1
- 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 +5 -5
- 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/static/Zz_Vh59XdtLIPcf-PxCpo/_buildManifest.js +1 -0
- package/.next/static/chunks/1675-773454288de4309d.js +1 -0
- package/.next/static/chunks/2005.4eea65c00d9a29cd.js +1 -0
- package/.next/static/chunks/2318-13ef0d3048e97834.js +1 -0
- package/.next/static/chunks/3429-34fb1a84aed96703.js +1 -0
- package/.next/static/chunks/361.bb75b03b740930cd.js +1 -0
- package/.next/static/chunks/3772-20197853c04a6993.js +1 -0
- package/.next/static/chunks/422-61b173ba64cf0c94.js +1 -0
- package/.next/static/chunks/{3189-fa8ec6d719d5e72b.js → 4386-e9621d3c94969a68.js} +1 -1
- package/.next/static/chunks/4555-c9070f8c79bccfad.js +39 -0
- package/.next/static/chunks/4919-6c8a48e3cc642349.js +1 -0
- package/.next/static/chunks/4929-150b03595474c9d8.js +1 -0
- package/.next/static/chunks/5733-1419095a28c1ddc3.js +1 -0
- package/.next/static/chunks/639-90ed75d402dc872b.js +1 -0
- package/.next/static/chunks/{3452-a639f121f2953f50.js → 6428-951188daa6f74b86.js} +3 -3
- package/.next/static/chunks/6430-8c6dac4a758119f2.js +1 -0
- package/.next/static/chunks/6539-118a0084e0bfae34.js +1 -0
- package/.next/static/chunks/6733-c9029143901e62e9.js +1 -0
- package/.next/static/chunks/7264-91d1fa99abcd91ad.js +1 -0
- package/.next/static/chunks/7328-c8a51bb8c7470d77.js +1 -0
- package/.next/static/chunks/7391-5a0abd837ba241f5.js +1 -0
- package/.next/static/chunks/7561-2b366ddcbc3cc0ec.js +1 -0
- package/.next/static/chunks/8124-4a80e3201b8e51b0.js +1 -0
- package/.next/static/chunks/{2969.eb9ff8cd2a5034b0.js → 8345.bc5534ec13abc9ee.js} +1 -1
- package/.next/static/chunks/8404-5aa8ea49197b98b8.js +1 -0
- package/.next/static/chunks/{8405.73e8be2c8e5b55c5.js → 8405.a425f94b6b13d2be.js} +1 -1
- package/.next/static/chunks/8551-a28272acfda62ac9.js +1 -0
- package/.next/static/chunks/8650-5294c6ed1173b014.js +1 -0
- package/.next/static/chunks/{9164-840f056a0e11d979.js → 9164-de1d167d87614a6d.js} +1 -1
- package/.next/static/chunks/9203-786f457ecf60b49c.js +1 -0
- package/.next/static/chunks/9345-11d6e48d892b1862.js +8 -0
- package/.next/static/chunks/9562-f8371be653010627.js +1 -0
- package/.next/static/chunks/981-dd289e60d81da0d1.js +1 -0
- package/.next/static/chunks/9951-566fc6b05c12209e.js +1 -0
- package/.next/static/chunks/app/api/approvals/[id]/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/approvals/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/backup/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/browse/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/bugs/enhance/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/cwd/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/encryption/secure/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/env/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/versions/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/flow/compile/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/flow/generate/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/flow/generator/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/flow/improve/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/flow/prompt-renderer/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/flow/quick-chat/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/flow/repair/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/flow/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/git/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/init/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/local-models/capability/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/local-models/pull/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/local-models/suggest/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/app-sandbox/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/cancel/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/oauth-capability/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/test-connection/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/test-connection/stream/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/spotlight/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/model/[id]/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/model/provider/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/model/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/model/test/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/oauth/callback/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/oauth/initiate/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/oauth/reset/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/packages/build/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/packages/derive-secrets/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/packages/install/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/packages/install/status/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/packages/installed/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/packages/resolve/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/packages/scan-targets/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/packages/search/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/packages/uninstall/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/run/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/reconcile/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/registry/auth/resend/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/registry/auth/reset/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/registry/auth/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/registry/feedback/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/registry/oauth/callback/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/registry/oauth/initiate/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/registry/packages/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/registry/publish/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/registry/settings/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/restore/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/runs/active/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/storage/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/telemetry/daily-active/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/update/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/waves/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/webhooks/[id]/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/chat/page-bc7807593b8b7394.js +1 -0
- package/.next/static/chunks/app/docs/page-3b9ce48854b2147d.js +1 -0
- package/.next/static/chunks/app/executions/page-8296fd69c439ccee.js +1 -0
- package/.next/static/chunks/app/flows/page-87fb466e491fc068.js +1 -0
- package/.next/static/chunks/app/layout-abed1f211e03152f.js +1 -0
- package/.next/static/chunks/app/mcp/page-1648e6fde0c41461.js +1 -0
- package/.next/static/chunks/app/mcp-flows/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/mcp-proxy/[server]/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/models/page-a5e2437356b06db8.js +1 -0
- package/.next/static/chunks/app/packages/page-fba5696f33d9cdfb.js +1 -0
- package/.next/static/chunks/app/page-2f9da78a4891731a.js +1 -0
- package/.next/static/chunks/app/settings/page-2fc3a70bfd25c48b.js +1 -0
- package/.next/static/chunks/app/v1/chat/completions/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/inject/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/chat/events/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/models/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/waves/{page-3cf4b47b12662196.js → page-dc99a16141dd902b.js} +1 -1
- package/.next/static/chunks/webpack-d5d737ff6a86674f.js +1 -0
- package/.next/trace +10 -10
- package/.next/types/app/api/flow/generator/route.ts +347 -0
- package/.next/types/app/api/registry/feedback/route.ts +347 -0
- package/.next/types/app/api/registry/packages/route.ts +347 -0
- package/.next/types/app/api/telemetry/daily-active/route.ts +347 -0
- package/.next/types/routes.d.ts +5 -1
- package/.next/types/validator.ts +36 -0
- package/README.md +58 -18
- package/next.config.mjs +2 -2
- package/package.json +3 -2
- package/.next/server/chunks/2180.js +0 -1
- package/.next/server/chunks/237.js +0 -1
- package/.next/server/chunks/3392.js +0 -82
- package/.next/server/chunks/3570.js +0 -372
- package/.next/server/chunks/4366.js +0 -2
- package/.next/server/chunks/4961.js +0 -2
- package/.next/server/chunks/5040.js +0 -53
- package/.next/server/chunks/510.js +0 -1
- package/.next/server/chunks/5150.js +0 -1
- package/.next/server/chunks/5561.js +0 -1
- package/.next/server/chunks/5705.js +0 -1
- package/.next/server/chunks/5829.js +0 -1
- package/.next/server/chunks/694.js +0 -3
- package/.next/server/chunks/7579.js +0 -83
- package/.next/server/chunks/7724.js +0 -1
- package/.next/server/chunks/8034.js +0 -1
- package/.next/server/chunks/8037.js +0 -1
- package/.next/server/chunks/8192.js +0 -12
- package/.next/server/chunks/826.js +0 -2
- package/.next/server/chunks/8366.js +0 -90
- package/.next/server/chunks/848.js +0 -39
- package/.next/server/chunks/8615.js +0 -1
- package/.next/server/chunks/8851.js +0 -1
- package/.next/server/chunks/9313.js +0 -1
- package/.next/server/chunks/9537.js +0 -39
- package/.next/server/chunks/9576.js +0 -2
- package/.next/server/chunks/9632.js +0 -1
- package/.next/server/chunks/9671.js +0 -1
- package/.next/server/chunks/9857.js +0 -1
- package/.next/static/chunks/1496-d478bce7d7c85080.js +0 -1
- package/.next/static/chunks/1572-b663a83bba28a0a1.js +0 -8
- package/.next/static/chunks/1641-e5ff8f112da0a335.js +0 -1
- package/.next/static/chunks/1988-bd73f26184e930c1.js +0 -1
- package/.next/static/chunks/2266-d812473724cc6643.js +0 -1
- package/.next/static/chunks/3089.a0856f8093b90939.js +0 -1
- package/.next/static/chunks/3560-5bdceef09b50e1c3.js +0 -1
- package/.next/static/chunks/3672-cd86ace43288da79.js +0 -1
- package/.next/static/chunks/3711-0050bb4d345c2c9c.js +0 -1
- package/.next/static/chunks/4147-20897d83b3cd3978.js +0 -39
- package/.next/static/chunks/435-17c79f3b9f8dd38d.js +0 -1
- package/.next/static/chunks/469-1f043fe082d9f475.js +0 -1
- package/.next/static/chunks/4740-62814d07b2b7f760.js +0 -1
- package/.next/static/chunks/5441-cb0c31de8bce65c3.js +0 -1
- package/.next/static/chunks/7111-44538f8a64241b74.js +0 -1
- package/.next/static/chunks/8041-05830e887c133085.js +0 -1
- package/.next/static/chunks/812-dfe7ba07ddb7a565.js +0 -1
- package/.next/static/chunks/8401-0f39d91810180a88.js +0 -1
- package/.next/static/chunks/8404-14ef0345dc401ac5.js +0 -1
- package/.next/static/chunks/8678-c6c6be2672f337f6.js +0 -1
- package/.next/static/chunks/8834-faf121e257b517d5.js +0 -1
- package/.next/static/chunks/8855-f802599c4af81cca.js +0 -1
- package/.next/static/chunks/9562-5494feecd8c6f7a3.js +0 -1
- package/.next/static/chunks/app/api/approvals/[id]/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/approvals/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/backup/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/browse/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/bugs/enhance/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/cwd/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/encryption/secure/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/env/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/flow/[id]/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/flow/[id]/versions/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/flow/compile/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/flow/generate/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/flow/improve/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/flow/prompt-renderer/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/flow/quick-chat/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/flow/repair/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/flow/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/git/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/init/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/local-models/capability/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/local-models/pull/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/local-models/suggest/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/app-sandbox/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/cancel/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/oauth-capability/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/test-connection/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/test-connection/stream/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp-registry/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp-registry/spotlight/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/model/[id]/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/model/provider/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/model/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/model/test/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/oauth/callback/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/oauth/initiate/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/oauth/reset/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/packages/build/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/packages/derive-secrets/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/packages/install/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/packages/install/status/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/packages/installed/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/packages/resolve/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/packages/scan-targets/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/packages/search/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/packages/uninstall/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/run/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/reconcile/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/registry/auth/resend/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/registry/auth/reset/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/registry/auth/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/registry/oauth/callback/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/registry/oauth/initiate/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/registry/publish/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/registry/settings/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/restore/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/runs/active/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/storage/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/update/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/waves/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/webhooks/[id]/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/chat/page-558edb21321a32d0.js +0 -1
- package/.next/static/chunks/app/docs/page-fc30f613607b8a26.js +0 -1
- package/.next/static/chunks/app/executions/page-e71689c7256af1e8.js +0 -1
- package/.next/static/chunks/app/flows/page-e90e8d7b4c1bd1c8.js +0 -1
- package/.next/static/chunks/app/layout-038b35b382eef11d.js +0 -1
- package/.next/static/chunks/app/mcp/page-6041156fc67ef361.js +0 -1
- package/.next/static/chunks/app/mcp-flows/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/mcp-proxy/[server]/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/models/page-d16f2721e7a93b43.js +0 -1
- package/.next/static/chunks/app/packages/page-c6b0e7aa95bc1064.js +0 -1
- package/.next/static/chunks/app/page-5c7fccd019942d46.js +0 -1
- package/.next/static/chunks/app/settings/page-e3d9ffd69d16873a.js +0 -1
- package/.next/static/chunks/app/v1/chat/completions/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/inject/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/chat/events/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/models/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/webpack-2d8e0c13c0b865fe.js +0 -1
- package/.next/static/eaxwKaaFHlA1_FLDIyFGi/_buildManifest.js +0 -1
- /package/.next/static/{eaxwKaaFHlA1_FLDIyFGi → Zz_Vh59XdtLIPcf-PxCpo}/_ssgManifest.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[7561],{3713:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M21 11V3h-8l3.29 3.29-10 10L3 13v8h8l-3.29-3.29 10-10z"}),"OpenInFull")},3986:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M21 10.12h-6.78l2.74-2.82c-2.73-2.7-7.15-2.8-9.88-.1-2.73 2.71-2.73 7.08 0 9.79s7.15 2.71 9.88 0C18.32 15.65 19 14.08 19 12.1h2c0 1.98-.88 4.55-2.64 6.29-3.51 3.48-9.21 3.48-12.72 0-3.5-3.47-3.53-9.11-.02-12.58s9.14-3.47 12.65 0L21 3zM12.5 8v4.25l3.5 2.08-.72 1.21L11 13V8z"}),"Update")},4543:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)([(0,h.jsx)("circle",{cx:"20",cy:"12",r:"2"},"0"),(0,h.jsx)("circle",{cx:"4",cy:"12",r:"2"},"1"),(0,h.jsx)("circle",{cx:"12",cy:"20",r:"2"},"2"),(0,h.jsx)("path",{d:"M10.05 8.59 6.03 4.55h-.01l-.31-.32-1.42 1.41 4.02 4.05.01-.01.31.32zm3.893.027 4.405-4.392L19.76 5.64l-4.405 4.393zM10.01 15.36l-1.42-1.41-4.03 4.01-.32.33 1.41 1.41 4.03-4.02zm9.75 2.94-3.99-4.01-.36-.35L14 15.35l3.99 4.01.35.35z"},"3"),(0,h.jsx)("circle",{cx:"12",cy:"4",r:"2"},"4")],"Stream")},7107:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"m9.78 11.16-1.42 1.42c-.68-.69-1.34-1.58-1.79-2.94l1.94-.49c.32.89.77 1.5 1.27 2.01M11 6 7 2 3 6h3.02c.02.81.08 1.54.19 2.17l1.94-.49C8.08 7.2 8.03 6.63 8.02 6zm10 0-4-4-4 4h2.99c-.1 3.68-1.28 4.75-2.54 5.88-.5.44-1.01.92-1.45 1.55-.34-.49-.73-.88-1.13-1.24L9.46 13.6c.93.85 1.54 1.54 1.54 3.4v5h2v-5c0-2.02.71-2.66 1.79-3.63 1.38-1.24 3.08-2.78 3.2-7.37z"}),"AltRoute")},7517:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M20 6h-8l-2-2H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2m0 12H4V6h5.17l2 2H20zm-8-4h2v2h2v-2h2v-2h-2v-2h-2v2h-2z"}),"CreateNewFolderOutlined")},8190:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M20 6h-8l-2-2H7.17l4 4H20v9.17l1.76 1.76c.15-.28.24-.59.24-.93V8c0-1.1-.9-2-2-2M2.1 2.1.69 3.51l1.56 1.56c-.15.28-.24.59-.24.93L2 18c0 1.1.9 2 2 2h13.17l3.31 3.31 1.41-1.41zM4 18V6.83L15.17 18z"}),"FolderOffOutlined")},8415:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M4.5 11h-2V9H1v6h1.5v-2.5h2V15H6V9H4.5zm2.5-.5h1.5V15H10v-4.5h1.5V9H7zm5.5 0H14V15h1.5v-4.5H17V9h-4.5zm9-1.5H18v6h1.5v-2h2c.8 0 1.5-.7 1.5-1.5v-1c0-.8-.7-1.5-1.5-1.5m0 2.5h-2v-1h2z"}),"Http")},9693:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"}),"Check")},11414:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39"}),"Public")},12313:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2M6 9h12v2H6zm8 5H6v-2h8zm4-6H6V6h12z"}),"Chat")},13548:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M11 7 9.6 8.4l2.6 2.6H2v2h10.2l-2.6 2.6L11 17l5-5zm9 12h-8v2h8c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-8v2h8z"}),"Login")},14915:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83 3.75 3.75z"}),"Edit")},16186:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8"}),"RadioButtonUnchecked")},17325:(t,e,r)=>{r.d(e,{A:()=>m});var c=r(12115),h=r(2821),a=r(57001),l=r(48116),n=r(16625),s=r(85795),o=r(95195);function v(t){return(0,o.Ay)("MuiFormGroup",t)}(0,s.A)("MuiFormGroup",["root","row","error"]);var i=r(45918),d=r(75108),p=r(95155);let A=(0,l.Ay)("div",{name:"MuiFormGroup",slot:"Root",overridesResolver:(t,e)=>{let{ownerState:r}=t;return[e.root,r.row&&e.row]}})({display:"flex",flexDirection:"column",flexWrap:"wrap",variants:[{props:{row:!0},style:{flexDirection:"row"}}]}),m=c.forwardRef(function(t,e){let r=(0,n.b)({props:t,name:"MuiFormGroup"}),{className:c,row:l=!1,...s}=r,o=(0,i.A)(),m=(0,d.A)({props:r,muiFormControl:o,states:["error"]}),u={...r,row:l,error:m.error},z=(t=>{let{classes:e,row:r,error:c}=t;return(0,a.A)({root:["root",r&&"row",c&&"error"]},v,e)})(u);return(0,p.jsx)(A,{className:(0,h.A)(z.root,c),ownerState:u,ref:e,...s})})},20099:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M16.91 14.09 17 14l2 2 4-4.04L21 10h-8.17zM3.98 6.81C2.2 7.85 1 9.79 1 12c0 3.31 2.69 6 6 6 2.21 0 4.15-1.2 5.18-2.99l7.59 7.59 1.41-1.41L2.81 2.81 1.39 4.22zm5.93 5.93C9.58 14.03 8.4 15 7 15c-1.65 0-3-1.35-3-3 0-1.4.97-2.58 2.26-2.91z"}),"KeyOff")},20195:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M7.58 4.08 6.15 2.65C3.75 4.48 2.17 7.3 2.03 10.5h2c.15-2.65 1.51-4.97 3.55-6.42m12.39 6.42h2c-.15-3.2-1.73-6.02-4.12-7.85l-1.42 1.43c2.02 1.45 3.39 3.77 3.54 6.42M18 11c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2zm-6 11c.14 0 .27-.01.4-.04.65-.14 1.18-.58 1.44-1.18q.15-.36.15-.78h-4c.01 1.1.9 2 2.01 2"}),"NotificationsActive")},20699:(t,e,r)=>{r.d(e,{A:()=>C});var c=r(3648),h=r(12115),a=r(2821),l=r(57001),n=r(8532),s=r(10225),o=r(48116),v=r(66964),i=r(16625),d=r(85795),p=r(95195);function A(t){return(0,p.Ay)("MuiSkeleton",t)}(0,d.A)("MuiSkeleton",["root","text","rectangular","rounded","circular","pulse","wave","withChildren","fitContent","heightAuto"]);var m=r(95155);function u(){let t=(0,c._)(["\n 0% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.4;\n }\n\n 100% {\n opacity: 1;\n }\n"]);return u=function(){return t},t}function z(){let t=(0,c._)(["\n 0% {\n transform: translateX(-100%);\n }\n\n 50% {\n /* +0.5s of delay between each loop */\n transform: translateX(100%);\n }\n\n 100% {\n transform: translateX(100%);\n }\n"]);return z=function(){return t},t}function M(){let t=(0,c._)(["\n animation: "," 2s ease-in-out 0.5s infinite;\n "]);return M=function(){return t},t}function H(){let t=(0,c._)(["\n &::after {\n animation: "," 2s linear 0.5s infinite;\n }\n "]);return H=function(){return t},t}let x=(0,s.i7)(u()),V=(0,s.i7)(z()),j="string"!=typeof x?(0,s.AH)(M(),x):null,f="string"!=typeof V?(0,s.AH)(H(),V):null,L=(0,o.Ay)("span",{name:"MuiSkeleton",slot:"Root",overridesResolver:(t,e)=>{let{ownerState:r}=t;return[e.root,e[r.variant],!1!==r.animation&&e[r.animation],r.hasChildren&&e.withChildren,r.hasChildren&&!r.width&&e.fitContent,r.hasChildren&&!r.height&&e.heightAuto]}})((0,v.A)(t=>{let{theme:e}=t,r=String(e.shape.borderRadius).match(/[\d.\-+]*\s*(.*)/)[1]||"px",c=parseFloat(e.shape.borderRadius);return{display:"block",backgroundColor:e.vars?e.vars.palette.Skeleton.bg:(0,n.X4)(e.palette.text.primary,"light"===e.palette.mode?.11:.13),height:"1.2em",variants:[{props:{variant:"text"},style:{marginTop:0,marginBottom:0,height:"auto",transformOrigin:"0 55%",transform:"scale(1, 0.60)",borderRadius:"".concat(c).concat(r,"/").concat(Math.round(c/.6*10)/10).concat(r),"&:empty:before":{content:'"\\00a0"'}}},{props:{variant:"circular"},style:{borderRadius:"50%"}},{props:{variant:"rounded"},style:{borderRadius:(e.vars||e).shape.borderRadius}},{props:t=>{let{ownerState:e}=t;return e.hasChildren},style:{"& > *":{visibility:"hidden"}}},{props:t=>{let{ownerState:e}=t;return e.hasChildren&&!e.width},style:{maxWidth:"fit-content"}},{props:t=>{let{ownerState:e}=t;return e.hasChildren&&!e.height},style:{height:"auto"}},{props:{animation:"pulse"},style:j||{animation:"".concat(x," 2s ease-in-out 0.5s infinite")}},{props:{animation:"wave"},style:{position:"relative",overflow:"hidden",WebkitMaskImage:"-webkit-radial-gradient(white, black)","&::after":{background:"linear-gradient(\n 90deg,\n transparent,\n ".concat((e.vars||e).palette.action.hover,",\n transparent\n )"),content:'""',position:"absolute",transform:"translateX(-100%)",bottom:0,left:0,right:0,top:0}}},{props:{animation:"wave"},style:f||{"&::after":{animation:"".concat(V," 2s linear 0.5s infinite")}}}]}})),C=h.forwardRef(function(t,e){let r=(0,i.b)({props:t,name:"MuiSkeleton"}),{animation:c="pulse",className:h,component:n="span",height:s,style:o,variant:v="text",width:d,...p}=r,u={...r,animation:c,component:n,variant:v,hasChildren:!!p.children},z=(t=>{let{classes:e,variant:r,animation:c,hasChildren:h,width:a,height:n}=t;return(0,l.A)({root:["root",r,c,h&&"withChildren",h&&!a&&"fitContent",h&&!n&&"heightAuto"]},A,e)})(u);return(0,m.jsx)(L,{as:n,ref:e,className:(0,a.A)(z.root,h),ownerState:u,...p,style:{width:d,height:s,...o}})})},22590:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M19.3 16.9c.4-.7.7-1.5.7-2.4 0-2.5-2-4.5-4.5-4.5S11 12 11 14.5s2 4.5 4.5 4.5c.9 0 1.7-.3 2.4-.7l3.2 3.2 1.4-1.4zm-3.8.1c-1.4 0-2.5-1.1-2.5-2.5s1.1-2.5 2.5-2.5 2.5 1.1 2.5 2.5-1.1 2.5-2.5 2.5M12 20v2C6.48 22 2 17.52 2 12S6.48 2 12 2c4.84 0 8.87 3.44 9.8 8h-2.07c-.64-2.46-2.4-4.47-4.73-5.41V5c0 1.1-.9 2-2 2h-2v2c0 .55-.45 1-1 1H8v2h2v3H9l-4.79-4.79C4.08 10.79 4 11.38 4 12c0 4.41 3.59 8 8 8"}),"TravelExplore")},24610:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)([(0,h.jsx)("path",{d:"M13 8.57c-.79 0-1.43.64-1.43 1.43s.64 1.43 1.43 1.43 1.43-.64 1.43-1.43-.64-1.43-1.43-1.43"},"0"),(0,h.jsx)("path",{d:"M13 3C9.25 3 6.2 5.94 6.02 9.64L4.1 12.2c-.25.33-.01.8.4.8H6v3c0 1.1.9 2 2 2h1v3h7v-4.68c2.36-1.12 4-3.53 4-6.32 0-3.87-3.13-7-7-7m3 7c0 .13-.01.26-.02.39l.83.66c.08.06.1.16.05.25l-.8 1.39c-.05.09-.16.12-.24.09l-.99-.4c-.21.16-.43.29-.67.39L14 13.83c-.01.1-.1.17-.2.17h-1.6c-.1 0-.18-.07-.2-.17l-.15-1.06c-.25-.1-.47-.23-.68-.39l-.99.4c-.09.03-.2 0-.25-.09l-.8-1.39c-.05-.08-.03-.19.05-.25l.84-.66c-.01-.13-.02-.26-.02-.39s.02-.27.04-.39l-.85-.66c-.08-.06-.1-.16-.05-.26l.8-1.38c.05-.09.15-.12.24-.09l1 .4c.2-.15.43-.29.67-.39L12 6.17c.02-.1.1-.17.2-.17h1.6c.1 0 .18.07.2.17l.15 1.06c.24.1.46.23.67.39l1-.4c.09-.03.2 0 .24.09l.8 1.38c.05.09.03.2-.05.26l-.85.66c.03.12.04.25.04.39"},"1")],"Psychology")},26188:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M13 13v8h8v-8zM3 21h8v-8H3zM3 3v8h8V3zm13.66-1.31L11 7.34 16.66 13l5.66-5.66z"}),"Widgets")},36741:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8z"}),"CheckCircle")},36944:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"}),"Home")},40171:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"m4 12 1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8z"}),"ArrowUpward")},40520:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M10 15h5.88c.27-.31.67-.5 1.12-.5.83 0 1.5.67 1.5 1.5s-.67 1.5-1.5 1.5c-.44 0-.84-.19-1.12-.5H11.9c-.46 2.28-2.48 4-4.9 4-2.76 0-5-2.24-5-5 0-2.42 1.72-4.44 4-4.9v2.07c-1.16.41-2 1.53-2 2.83 0 1.65 1.35 3 3 3s3-1.35 3-3zm2.5-11c1.65 0 3 1.35 3 3h2c0-2.76-2.24-5-5-5s-5 2.24-5 5c0 1.43.6 2.71 1.55 3.62l-2.35 3.9c-.68.14-1.2.75-1.2 1.48 0 .83.67 1.5 1.5 1.5s1.5-.67 1.5-1.5c0-.16-.02-.31-.07-.45l3.38-5.63C10.49 9.61 9.5 8.42 9.5 7c0-1.65 1.35-3 3-3m4.5 9c-.64 0-1.23.2-1.72.54l-3.05-5.07C11.53 8.35 11 7.74 11 7c0-.83.67-1.5 1.5-1.5S14 6.17 14 7c0 .15-.02.29-.06.43l2.19 3.65c.28-.05.57-.08.87-.08 2.76 0 5 2.24 5 5s-2.24 5-5 5c-1.85 0-3.47-1.01-4.33-2.5h2.67c.48.32 1.05.5 1.66.5 1.65 0 3-1.35 3-3s-1.35-3-3-3"}),"Webhook")},41356:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M18 23H4c-1.1 0-2-.9-2-2V7h2v14h14zM15 1H8c-1.1 0-1.99.9-1.99 2L6 17c0 1.1.89 2 1.99 2H19c1.1 0 2-.9 2-2V7zm1.5 14h-6v-2h6zm0-6h-2v2h-2V9h-2V7h2V5h2v2h2z"}),"Difference")},47529:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"m22 9.24-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28z"}),"StarBorder")},52277:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2m0 16H8V7h11z"}),"ContentCopy")},53657:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2m6.93 6h-2.95c-.32-1.25-.78-2.45-1.38-3.56 1.84.63 3.37 1.91 4.33 3.56M12 4.04c.83 1.2 1.48 2.53 1.91 3.96h-3.82c.43-1.43 1.08-2.76 1.91-3.96M4.26 14C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2s.06 1.34.14 2zm.82 2h2.95c.32 1.25.78 2.45 1.38 3.56-1.84-.63-3.37-1.9-4.33-3.56m2.95-8H5.08c.96-1.66 2.49-2.93 4.33-3.56C8.81 5.55 8.35 6.75 8.03 8M12 19.96c-.83-1.2-1.48-2.53-1.91-3.96h3.82c-.43 1.43-1.08 2.76-1.91 3.96M14.34 14H9.66c-.09-.66-.16-1.32-.16-2s.07-1.35.16-2h4.68c.09.65.16 1.32.16 2s-.07 1.34-.16 2m.25 5.56c.6-1.11 1.06-2.31 1.38-3.56h2.95c-.96 1.65-2.49 2.93-4.33 3.56M16.36 14c.08-.66.14-1.32.14-2s-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2z"}),"Language")},55406:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M8 5v14l11-7z"}),"PlayArrow")},56350:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6"}),"Settings")},56900:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M22 11V3h-7v3H9V3H2v8h7V8h2v10h4v3h7v-8h-7v3h-2V8h2v3zM7 9H4V5h3zm10 6h3v4h-3zm0-10h3v4h-3z"}),"AccountTreeOutlined")},59323:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zm2 16H8v-2h8zm0-4H8v-2h8zm-3-5V3.5L18.5 9z"}),"Description")},59652:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M4 7v2c0 .55-.45 1-1 1H2v4h1c.55 0 1 .45 1 1v2c0 1.65 1.35 3 3 3h3v-2H7c-.55 0-1-.45-1-1v-2c0-1.3-.84-2.42-2-2.83v-.34C5.16 11.42 6 10.3 6 9V7c0-.55.45-1 1-1h3V4H7C5.35 4 4 5.35 4 7m17 3c-.55 0-1-.45-1-1V7c0-1.65-1.35-3-3-3h-3v2h3c.55 0 1 .45 1 1v2c0 1.3.84 2.42 2 2.83v.34c-1.16.41-2 1.52-2 2.83v2c0 .55-.45 1-1 1h-3v2h3c1.65 0 3-1.35 3-3v-2c0-.55.45-1 1-1h1v-4z"}),"DataObject")},60691:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2M12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8"}),"ErrorOutline")},62291:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"}),"Star")},62962:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"}),"ExpandLess")},67891:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M20 4H4c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.89-2-2-2m0 14H4V8h16zm-2-1h-6v-2h6zM7.5 17l-1.41-1.41L8.67 13l-2.59-2.59L7.5 9l4 4z"}),"Terminal")},70583:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)([(0,h.jsx)("path",{d:"M20 4H4c-1.1 0-2 .9-2 2v3h2V6h16v3h2V6c0-1.1-.9-2-2-2m0 14H4v-3H2v3c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2v-3h-2z"},"0"),(0,h.jsx)("path",{d:"M14.89 7.55c-.34-.68-1.45-.68-1.79 0L10 13.76l-1.11-2.21A.988.988 0 0 0 8 11H2v2h5.38l1.72 3.45c.18.34.52.55.9.55s.72-.21.89-.55L14 10.24l1.11 2.21c.17.34.51.55.89.55h6v-2h-5.38z"},"1")],"MonitorHeartOutlined")},74482:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zM6 20V4h7v5h5v11z"}),"InsertDriveFileOutlined")},76808:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)([(0,h.jsx)("path",{d:"M12 5.99 19.53 19H4.47zM12 2 1 21h22z"},"0"),(0,h.jsx)("path",{d:"M13 16h-2v2h2zm0-6h-2v5h2z"},"1")],"WarningAmber")},77073:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close")},77842:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)([(0,h.jsx)("path",{d:"m17 17 5-5-5-5-1.41 1.41L18.17 11H9v2h9.17l-2.58 2.59z"},"0"),(0,h.jsx)("path",{d:"M19 19H5V5h14v2h2V5c0-1.1-.89-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.11 0 2-.9 2-2v-2h-2z"},"1")],"Output")},79299:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2m0 12H4V8h16z"}),"FolderOpen")},80007:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M10 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8z"}),"Folder")},80412:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2m-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2m3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1s3.1 1.39 3.1 3.1z"}),"Lock")},84318:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"m1 9 2 2c4.97-4.97 13.03-4.97 18 0l2-2C16.93 2.93 7.08 2.93 1 9m8 8 3 3 3-3c-1.65-1.66-4.34-1.66-6 0m-4-4 2 2c2.76-2.76 7.24-2.76 10 0l2-2C15.14 9.14 8.87 9.14 5 13"}),"Wifi")},89296:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2m0 12H4V6h5.17l1.41 1.41.59.59H20zm-7.84-6H8v2h4.16l-1.59 1.59L11.99 17 16 13.01 11.99 9l-1.41 1.41z"}),"DriveFileMoveOutlined")},89538:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"M11 21h-1l1-7H7.5c-.88 0-.33-.75-.31-.78C8.48 10.94 10.42 7.54 13.01 3h1l-1 7h3.51c.4 0 .62.19.4.66C12.97 17.55 11 21 11 21"}),"BoltOutlined")},91665:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"m9.17 6 2 2H20v10H4V6zM10 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8z"}),"FolderOutlined")},97714:(t,e,r)=>{r.d(e,{A:()=>a});var c=r(15485),h=r(95155);let a=(0,c.A)((0,h.jsx)("path",{d:"m12 16.5 4-4h-3v-9h-2v9H8zm9-13h-6v1.99h6v14.03H3V5.49h6V3.5H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2v-14c0-1.1-.9-2-2-2"}),"SystemUpdateAlt")}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8124],{14368:(e,t,l)=>{l.d(t,{A:()=>d});var a=l(95155);l(12115);var n=l(94049),o=l(9562),r=l(25635),s=l(22003),i=l(84765);let d=e=>{let{config:t,onChange:l}=e;return(0,a.jsxs)(n.default,{sx:{mt:1},children:[(0,a.jsx)(o.A,{fullWidth:!0,label:"URL to watch",value:t.url,onChange:e=>l({...t,url:e.target.value}),placeholder:"https://example.com/status or an API/feed URL",margin:"normal",type:"url"}),(0,a.jsx)(r.default,{variant:"subtitle2",sx:{mt:1},children:"How often to check"}),(0,a.jsx)(i.A,{verb:"Check",cron:t.cron,timezone:t.timezone,onChange:e=>{let{cron:a,timezone:n}=e;return l({...t,cron:a,timezone:n})}}),(0,a.jsx)(s.A,{severity:"info",sx:{mt:1},children:"The first check only takes a snapshot; the flow runs when a later check finds different content, and the fetched content is handed to the flow. Pages that embed ever-changing bits (timestamps, session tokens) look “changed” on every check — plain APIs, feeds, and raw files work best."})]})}},21997:(e,t,l)=>{l.d(t,{A:()=>j});var a=l(95155),n=l(12115),o=l(94049),r=l(9562),s=l(56422),i=l(78470),d=l(41983),c=l(25635),u=l(17325),h=l(99944),m=l(22822),x=l(22003),f=l(98267),p=l(20537),g=l(37960),v=l(63186),w=l(80007),y=l(62640);let b=[{value:"add",label:"A file appears"},{value:"change",label:"A file changes"},{value:"unlink",label:"A file is deleted"}],j=e=>{var t;let{config:l,onChange:j}=e,[A,k]=(0,n.useState)(!1);return(0,a.jsxs)(o.default,{sx:{mt:1},children:[(0,a.jsx)(r.A,{fullWidth:!0,label:"Folder (or file) to watch",value:l.path,onChange:e=>j({...l,path:e.target.value}),placeholder:"e.g. C:\\Users\\me\\Documents\\inbox",margin:"normal",InputProps:{endAdornment:(0,a.jsx)(s.A,{position:"end",children:(0,a.jsx)(i.A,{title:"Browse folders (on the FLUJO machine)",children:(0,a.jsx)(d.A,{edge:"end",onClick:()=>k(!0),children:(0,a.jsx)(w.A,{})})})})}}),(0,a.jsx)(y.A,{open:A,title:"Choose what to watch",selectFiles:!0,initialPath:l.path||void 0,onClose:()=>k(!1),onSelect:e=>j({...l,path:e})}),(0,a.jsx)(r.A,{fullWidth:!0,label:"Only files matching (optional)",value:l.glob||"",onChange:e=>j({...l,glob:e.target.value||void 0}),placeholder:"e.g. *.pdf or reports/**/*.csv",helperText:"Simple patterns: * matches within a folder, ** across folders, ? one character.",margin:"normal"}),(0,a.jsx)(c.default,{variant:"subtitle2",sx:{mt:1},children:"Run when…"}),(0,a.jsx)(u.A,{row:!0,children:b.map(e=>(0,a.jsx)(h.A,{control:(0,a.jsx)(m.A,{checked:l.events.includes(e.value),onChange:t=>((e,t)=>{let a=t?[...l.events,e]:l.events.filter(t=>t!==e);j({...l,events:a})})(e.value,t.target.checked)}),label:e.label},e.value))}),(0,a.jsx)(x.A,{severity:"info",sx:{mt:1},children:"Bursts are batched: many files changing at once produce one run with all changes listed. If this flow writes into the watched folder, it will trigger itself in a loop — point its output somewhere else."}),(0,a.jsxs)(f.A,{disableGutters:!0,elevation:0,sx:{mt:1,"&:before":{display:"none"}},children:[(0,a.jsx)(p.A,{expandIcon:(0,a.jsx)(v.A,{}),sx:{px:0},children:(0,a.jsx)(c.default,{variant:"body2",color:"text.secondary",children:"Advanced"})}),(0,a.jsx)(g.A,{sx:{px:0},children:(0,a.jsx)(r.A,{label:"Quiet window (ms)",type:"number",value:null!=(t=l.debounceMs)?t:2e3,onChange:e=>j({...l,debounceMs:Math.max(0,Number(e.target.value)||0)}),helperText:"How long to wait after the last change before running.",inputProps:{min:0,step:500},sx:{width:220}})})]})]})}},23143:(e,t,l)=>{l.d(t,{A:()=>s});var a=l(95155);l(12115);var n=l(94049),o=l(25635),r=l(36741);let s=e=>{let{selected:t,icon:l,title:s,description:i,onClick:d}=e;return(0,a.jsxs)(n.default,{role:"radio","aria-checked":t,tabIndex:0,onClick:d,onKeyDown:e=>{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),d())},sx:{flex:1,minWidth:200,position:"relative",p:2,borderRadius:2,border:2,borderColor:t?"primary.main":"divider",bgcolor:t?"action.selected":"background.paper",cursor:"pointer",transition:"border-color 120ms, background-color 120ms","&:hover":{borderColor:t?"primary.main":"text.disabled"},outline:"none","&:focus-visible":{boxShadow:e=>"0 0 0 3px ".concat(e.palette.primary.light)}},children:[t&&(0,a.jsx)(r.A,{color:"primary",fontSize:"small",sx:{position:"absolute",top:8,right:8}}),(0,a.jsxs)(n.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:.5,color:t?"primary.main":"text.secondary"},children:[l,(0,a.jsx)(o.default,{variant:"subtitle1",sx:{fontWeight:600,color:"text.primary"},children:s})]}),(0,a.jsx)(o.default,{variant:"body2",color:"text.secondary",children:i})]})}},23833:(e,t,l)=>{l.d(t,{A:()=>b});var a=l(95155),n=l(12115),o=l(94049),r=l(25635),s=l(52641),i=l(95436),d=l(55606),c=l(86973),u=l(63109),h=l(9562),m=l(17325),x=l(99944),f=l(22822),p=l(21067),g=l(22003),v=l(93632);function w(e){if(!e||!Array.isArray(e.nodes))return[];let t=[];for(let n of e.nodes){var l,a;if((null==n||null==(l=n.data)?void 0:l.type)!=="signal")continue;let e=null==(a=n.data.properties)?void 0:a.topic;"string"==typeof e&&e.trim()&&t.push(e.trim())}return t}let y=(0,l(87021).h)("frontend/components/PlannedExecutions/FlowEventPanel"),b=e=>{var t,l,b,j,A,k,C,S,I,N,M,T,P,W,E,O,R,F;let{config:z,onChange:D,flows:L,currentExecutionId:U}=e,[J,H]=(0,n.useState)([]),[G,$]=(0,n.useState)(void 0!==z.maxChainDepth||void 0!==z.minIntervalMs),_=(null==(t=z.source)?void 0:t.topic)!==void 0?"topic":(null==(l=z.source)?void 0:l.executionId)!==void 0?"execution":"flow",q="topic"===_,B=(0,n.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 a=new Map,n=(e,t)=>{a.has(e)||a.set(e,[]),a.get(e).push(t)};for(let a of e){if(!a||"string"!=typeof a.id)continue;let e=new Map;for(let t of w(a)){var o;e.set(t,(null!=(o=e.get(t))?o:0)+1)}for(let[t,l]of e)n(t,{flowId:a.id,flowName:a.name,signalNodeCount:l,viaSubflow:!1});for(let o of function(e,t){let l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,a=new Set,n=new Set,o=(e,r)=>{if(n.has(e)||r>l)return;n.add(e);let s=t.get(e);for(let e of w(s))a.add(e);for(let e of function(e){if(!e||!Array.isArray(e.nodes))return[];let t=[];for(let n of e.nodes){var l,a;if((null==n||null==(l=n.data)?void 0:l.type)!=="subflow")continue;let e=null!=(a=n.data.properties)?a:{};if("string"==typeof e.subflowId&&e.subflowId.trim()&&t.push(e.subflowId.trim()),Array.isArray(e.parallelSubflowIds))for(let l of e.parallelSubflowIds)"string"==typeof l&&l.trim()&&t.push(l.trim())}return Array.from(new Set(t))}(s))o(e,r+1)};return o(e,0),a}(a.id,l,t))e.has(o)||n(o,{flowId:a.id,flowName:a.name,signalNodeCount:0,viaSubflow:!0})}return a})(L),[L]),K=(0,n.useMemo)(()=>{let e=new Map;for(let t of L)(null==t?void 0:t.id)&&e.set(t.id,t.name);return e},[L]),Q=(0,n.useMemo)(()=>{let e=new Map;for(let a of J){var t,l;let n=a.execution;if(n.id===U||(null==(t=n.trigger)?void 0:t.type)!=="flow-event")continue;let o=null==(l=n.trigger.source)?void 0:l.topic;if("string"!=typeof o||!o.trim())continue;let r=o.trim();e.has(r)||e.set(r,[]),e.get(r).push({executionId:n.id,executionName:n.name,flowId:n.flowId,flowName:K.get(n.flowId)})}return e},[J,U,K]),V=(0,n.useMemo)(()=>Array.from(new Set([...B.keys(),...Q.keys()])).sort((e,t)=>e.localeCompare(t)),[B,Q]),X=e=>{let t=B.get(e);if(!t||0===t.length)return null;let l=Array.from(new Set(t.map(e=>(e.flowName||e.flowId)+(e.viaSubflow?" (via subflow)":""))));return"Emitted in: ".concat(l.join(", "))},Y=(null!=(I=null==(b=z.source)?void 0:b.topic)?I:"").trim(),Z=!Y||B.has(Y);(0,n.useEffect)(()=>{let e=!1;return v.P.list().then(t=>{e||H(t.executions||[])}).catch(t=>{y.warn("Failed to load planned executions for source picker",t),e||H([])}),()=>{e=!0}},[]);let ee=(e,t)=>{var l;let a=new Set(null!=(l=z.on)?l:[]);t?a.add(e):a.delete(e),D({...z,on:Array.from(a)})};return(0,a.jsxs)(o.default,{sx:{mt:1},children:[(0,a.jsx)(r.default,{variant:"subtitle2",sx:{mt:1},children:"React to"}),(0,a.jsxs)(o.default,{sx:{display:"flex",gap:2,mt:1},children:[(0,a.jsxs)(s.A,{sx:{minWidth:180},children:[(0,a.jsx)(i.A,{id:"flow-event-source-kind",children:"Source"}),(0,a.jsxs)(d.A,{labelId:"flow-event-source-kind",label:"Source",value:_,onChange:e=>(e=>{D({...z,source:"flow"===e?{flowId:""}:"execution"===e?{executionId:""}:{topic:""}})})(e.target.value),children:[(0,a.jsx)(c.A,{value:"flow",children:"A flow (any run)"}),(0,a.jsx)(c.A,{value:"execution",children:"A planned execution"}),(0,a.jsx)(c.A,{value:"topic",children:"A signal topic"})]})]}),"topic"===_?(0,a.jsx)(s.A,{fullWidth:!0,children:(0,a.jsx)(u.A,{freeSolo:!0,autoHighlight:!0,options:V,value:null!=(N=null==(j=z.source)?void 0:j.topic)?N:"",inputValue:null!=(M=null==(A=z.source)?void 0:A.topic)?M:"",onInputChange:(e,t)=>D({...z,source:{topic:t}}),renderOption:(e,t)=>{let l=X(t),s=(e=>{let t=Q.get(e);if(!t||0===t.length)return null;let l=Array.from(new Set(t.map(e=>e.flowName||e.flowId)));return"Used by ".concat(t.length," trigger").concat(1===t.length?"":"s"," → starts ").concat(l.join(", "))})(t);return(0,n.createElement)(o.default,{component:"li",...e,key:t},(0,a.jsxs)(o.default,{sx:{display:"flex",flexDirection:"column",py:.25},children:[(0,a.jsx)(r.default,{variant:"body2",sx:{fontWeight:600},children:t}),l&&(0,a.jsx)(r.default,{variant:"caption",color:"text.secondary",children:l}),s&&(0,a.jsx)(r.default,{variant:"caption",color:"text.secondary",children:s}),!l&&(0,a.jsx)(r.default,{variant:"caption",color:"warning.main",children:"No flow currently emits this signal"})]}))},renderInput:e=>{var t;return(0,a.jsx)(h.A,{...e,label:"Signal topic",placeholder:"e.g. review-blocked",helperText:Y?Z?null!=(t=X(Y))?t:"React when this signal is emitted.":"No flow currently emits this signal — the trigger will stay idle until one does.":"React when a signal node in any flow emits this topic. Suggestions come from your existing flows."})}})}):"flow"===_?(0,a.jsxs)(s.A,{fullWidth:!0,children:[(0,a.jsx)(i.A,{id:"flow-event-flow",children:"Flow to watch"}),(0,a.jsxs)(d.A,{labelId:"flow-event-flow",label:"Flow to watch",value:null!=(T=null==(k=z.source)?void 0:k.flowId)?T:"",onChange:e=>D({...z,source:{flowId:e.target.value}}),displayEmpty:!0,children:[0===L.length&&(0,a.jsx)(c.A,{value:"",disabled:!0,children:"No flows available"}),L.map(e=>(0,a.jsx)(c.A,{value:e.id,children:e.name},e.id))]})]}):(0,a.jsxs)(s.A,{fullWidth:!0,children:[(0,a.jsx)(i.A,{id:"flow-event-execution",children:"Planned execution to watch"}),(0,a.jsxs)(d.A,{labelId:"flow-event-execution",label:"Planned execution to watch",value:null!=(P=null==(C=z.source)?void 0:C.executionId)?P:"",onChange:e=>D({...z,source:{executionId:e.target.value}}),displayEmpty:!0,children:[0===J.filter(e=>e.execution.id!==U).length&&(0,a.jsx)(c.A,{value:"",disabled:!0,children:"No other planned executions"}),J.filter(e=>e.execution.id!==U).map(e=>(0,a.jsx)(c.A,{value:e.execution.id,children:e.execution.name},e.execution.id))]})]})]}),!q&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(r.default,{variant:"subtitle2",sx:{mt:2},children:"When it…"}),(0,a.jsxs)(m.A,{row:!0,children:[(0,a.jsx)(x.A,{control:(0,a.jsx)(f.A,{checked:(null!=(W=z.on)?W:[]).includes("completed"),onChange:e=>ee("completed",e.target.checked)}),label:"completes"}),(0,a.jsx)(x.A,{control:(0,a.jsx)(f.A,{checked:(null!=(E=z.on)?E:[]).includes("error"),onChange:e=>ee("error",e.target.checked)}),label:"errors"})]})]}),(0,a.jsx)(h.A,{fullWidth:!0,label:q?"Only when the payload contains (optional)":"Only when the output contains (optional)",value:null!=(O=null==(S=z.outputMatch)?void 0:S.contains)?O:"",onChange:e=>{let t=e.target.value,l={...z.outputMatch,contains:t||void 0},a=l.contains||l.regex?l:void 0;D({...z,outputMatch:a})},margin:"normal",placeholder:"e.g. FAILED, or leave empty to react to every matching run"}),(0,a.jsx)(x.A,{sx:{mt:1},control:(0,a.jsx)(f.A,{checked:G,onChange:e=>$(e.target.checked)}),label:"Advanced (loop safety)"}),G&&(0,a.jsxs)(o.default,{sx:{display:"flex",gap:2,mt:1},children:[(0,a.jsx)(h.A,{label:"Max chain depth",type:"number",value:null!=(R=z.maxChainDepth)?R:"",onChange:e=>D({...z,maxChainDepth:""===e.target.value?void 0:Number(e.target.value)}),helperText:"Stop after this many hops (default 5)",inputProps:{min:1}}),(0,a.jsx)(h.A,{label:"Cooldown (ms)",type:"number",value:null!=(F=z.minIntervalMs)?F:"",onChange:e=>D({...z,minIntervalMs:""===e.target.value?void 0:Number(e.target.value)}),helperText:"Minimum gap between fires",inputProps:{min:0}})]}),(0,a.jsx)(p.A,{sx:{mt:2}}),(0,a.jsx)(g.A,{severity:"info",sx:{mt:2},children:q?"The signal’s payload is handed to this flow. Emit a signal from a signal node in any flow to fire this one — fire-and-forget. To avoid runaway loops, a chain of fires stops at the max depth above, and the overlap-skip prevents a single execution from re-triggering itself while it’s still running.":"The upstream run’s output is handed to this flow, so it can build on what the other flow produced. To avoid runaway loops, a chain of flow-event fires stops at the max depth above, and the existing overlap-skip prevents a single execution from re-triggering itself while it’s still running."})]})}},43673:(e,t,l)=>{l.d(t,{A:()=>p});var a=l(95155),n=l(12115),o=l(94049),r=l(22003),s=l(9562),i=l(78470),d=l(41983),c=l(91871),u=l(25635),h=l(99944),m=l(22822),x=l(52277),f=l(9693);let p=e=>{let{config:t,onChange:l,executionId:p,saved:g}=e,[v,w]=(0,n.useState)(null),y=window.location.origin,b="".concat(y,"/api/webhooks/").concat(p),j=async(e,t)=>{try{await navigator.clipboard.writeText(t),w(e),setTimeout(()=>w(null),1500)}catch(e){}};return(0,a.jsxs)(o.default,{sx:{mt:1},children:[!g&&(0,a.jsx)(r.A,{severity:"info",sx:{mb:2},children:"This URL and token are ready to copy now — they become active when you save."}),(0,a.jsxs)(o.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,a.jsx)(s.A,{fullWidth:!0,label:"Webhook URL",value:b,InputProps:{readOnly:!0},size:"small"}),(0,a.jsx)(i.A,{title:"Copy URL",children:(0,a.jsx)(d.A,{onClick:()=>j("url",b),children:"url"===v?(0,a.jsx)(f.A,{color:"success"}):(0,a.jsx)(x.A,{})})})]}),(0,a.jsxs)(o.default,{sx:{display:"flex",alignItems:"center",gap:1,mt:2},children:[(0,a.jsx)(s.A,{fullWidth:!0,label:"Secret token",value:t.token,InputProps:{readOnly:!0},size:"small",type:"password"}),(0,a.jsx)(i.A,{title:"Copy token",children:(0,a.jsx)(d.A,{onClick:()=>j("token",t.token),disabled:!t.token,children:"token"===v?(0,a.jsx)(f.A,{color:"success"}):(0,a.jsx)(x.A,{})})}),(0,a.jsx)(c.A,{size:"small",onClick:()=>l({...t,token:crypto.randomUUID()}),sx:{whiteSpace:"nowrap"},children:"New token"})]}),(0,a.jsx)(u.default,{variant:"caption",color:"text.secondary",children:g?"A new token takes effect when you save — callers using the old one are cut off.":""}),(0,a.jsxs)(u.default,{variant:"body2",color:"text.secondary",sx:{mt:1.5},children:["Callers send a POST with the token in the ",(0,a.jsx)("code",{children:"X-Flujo-Token"})," ","header (or ",(0,a.jsx)("code",{children:"?token=…"}),"). The request body becomes part of the flow's input — treat it as untrusted data in your prompt."]}),(0,a.jsx)(h.A,{sx:{mt:1,display:"flex"},control:(0,a.jsx)(m.A,{checked:!0===t.allowExternal,onChange:e=>l({...t,allowExternal:e.target.checked})}),label:"Allow calls from other machines (default: this computer only)"}),t.allowExternal&&(0,a.jsx)(r.A,{severity:"warning",children:"FLUJO assumes a single user on this machine. If you expose it beyond localhost (port forwarding, tunnels), securing that access is your responsibility — anyone with the URL and token can run this flow."})]})}},80811:(e,t,l)=>{l.d(t,{A:()=>N});var a=l(95155),n=l(12115),o=l(94049),r=l(25635),s=l(91871),i=l(52641),d=l(95436),c=l(55606),u=l(86973),h=l(9562),m=l(4474),x=l(22003),f=l(41356),p=l(24610),g=l(17897),v=l(43076),w=l(90057),y=l(87021),b=l(23143),j=l(84765),A=l(17427),k=l(96362),C=l(40962),S=l(68503);let I=(0,y.h)("frontend/components/PlannedExecutions/WatchToolPanel"),N=e=>{var t,l;let{config:y,onChange:N}=e,[M,T]=(0,n.useState)([]),[P,W]=(0,n.useState)(!1),[E,O]=(0,n.useState)([]),[R,F]=(0,n.useState)(!1),[z,D]=(0,n.useState)(Object.keys(y.args||{}).length>0?JSON.stringify(y.args,null,2):""),[L,U]=(0,n.useState)(null),[J,H]=(0,n.useState)(!1),[G,$]=(0,n.useState)(null),[_,q]=(0,n.useState)(null),[B,K]=(0,n.useState)([]),[Q,V]=(0,n.useState)([]);(0,n.useEffect)(()=>{let e=!1;return g.S.loadServerConfigs().then(t=>{e||(Array.isArray(t)?T(t.filter(e=>!e.disabled)):(I.warn("Failed to load MCP servers for watch-tool panel",t),T([])))}),()=>{e=!0}},[]),(0,n.useEffect)(()=>{if(!y.serverName)return void O([]);let e=!1;return F(!0),g.S.listServerTools(y.serverName).then(t=>{let{tools:l}=t;e||O(l||[])}).finally(()=>{e||F(!1)}),()=>{e=!0}},[y.serverName]),(0,n.useEffect)(()=>{let e=!1;return v.N.loadModels().then(t=>{e||K(Array.isArray(t)?t:[])}).catch(()=>{e||K([])}),w.g.loadFlows().then(t=>{e||V(t||[])}).catch(()=>{e||V([])}),()=>{e=!0}},[]);let X=async()=>{H(!0),$(null),q(null);try{let l=await g.S.callTool(y.serverName,y.toolName,y.args||{});if(null==l?void 0:l.error)q("string"==typeof l.error?l.error:"Tool call failed");else{var e,t;let a=null!=(e=null==l?void 0:l.data)?e:l,n=null!=(t=JSON.stringify(a,null,2))?t:"";$(n.length>6e3?"".concat(n.slice(0,6e3),"\n… (truncated)"):n)}}catch(e){q(e instanceof Error?e.message:"Tool call failed")}finally{H(!1)}},Y=y.evaluate,Z=E.find(e=>e.name===y.toolName),ee=(0,S.E)("mcp",M),et=e=>({key:e.name,content:(e=>(0,a.jsx)(C.A,{name:e.name,status:e.status||"disconnected",path:e.rootPath||"",enabled:!e.disabled,transport:e.transport||"stdio",pickerMode:!0,selected:y.serverName===e.name,onClick:()=>{var t;return t=e.name,void(N({...y,serverName:t,toolName:""}),W(!1))}}))(e)}),el=ee.items.map(et),ea=ee.groups?ee.groups.map(e=>({...e,items:e.items.map(et)})):null;return(0,a.jsxs)(o.default,{sx:{mt:1},children:[(0,a.jsxs)(o.default,{sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,a.jsxs)(o.default,{sx:{minWidth:220,flex:1,mt:2,mb:1},children:[(0,a.jsx)(r.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:.5},children:"Server"}),(0,a.jsx)(s.A,{variant:"outlined",fullWidth:!0,onClick:()=>W(!0),sx:{justifyContent:"flex-start",textTransform:"none"},children:y.serverName?"".concat(y.serverName," — change"):"Choose an MCP server…"}),(0,a.jsx)(k.A,{open:P,onClose:()=>W(!1),title:"Choose an MCP server",description:"Pick the server whose tool you want to watch.",emptyMessage:"No MCP servers configured.",searchable:!0,searchPlaceholder:"Search servers…",searchTerm:ee.searchTerm,onSearchChange:ee.setSearchTerm,columns:{xs:12,sm:6},items:el,groups:ea,collapsedKeys:ee.collapsedKeys,onToggleGroup:ee.toggleGroup})]}),(0,a.jsxs)(i.A,{sx:{minWidth:220,flex:1},margin:"normal",disabled:!y.serverName,children:[(0,a.jsx)(d.A,{id:"watch-tool-label",children:"Tool"}),(0,a.jsxs)(c.A,{labelId:"watch-tool-label",label:"Tool",value:E.some(e=>e.name===y.toolName)?y.toolName:"",onChange:e=>N({...y,toolName:e.target.value,args:{}}),children:[0===E.length&&(0,a.jsx)(u.A,{value:"",disabled:!0,children:R?"Loading tools…":"Pick a server first"}),E.map(e=>(0,a.jsx)(u.A,{value:e.name,children:e.name},e.name))]})]})]}),(0,a.jsx)(r.default,{variant:"subtitle2",sx:{mt:1},children:"How often to check"}),(0,a.jsx)(j.A,{verb:"Check",cron:null!=(t=y.cron)?t:function(e){let t=Math.max(5,Math.round((null!=e?e:6e4)/1e3));if(t<60)return"*/".concat(t," * * * * *");let l=Math.max(1,Math.round(t/60));if(l<60)return"*/".concat(l," * * * *");let a=Math.max(1,Math.min(23,Math.round(l/60)));return"0 */".concat(a," * * *")}(y.intervalMs),timezone:y.timezone,onChange:e=>{let{cron:t,timezone:l}=e;return N({...y,cron:t,timezone:l})}}),Z?(0,a.jsxs)(o.default,{sx:{my:1.5},children:[(0,a.jsx)(r.default,{variant:"subtitle2",sx:{mb:1.5},children:"Tool parameters — sent on every check"}),(0,a.jsx)(A.A,{schema:Z.inputSchema,values:y.args||{},onChange:e=>N({...y,args:e})})]}):(0,a.jsx)(h.A,{fullWidth:!0,label:"Tool arguments (JSON, optional)",value:z,onChange:e=>(e=>{if(D(e),!e.trim()){U(null),N({...y,args:{}});return}try{let t=JSON.parse(e);if(null===t||"object"!=typeof t||Array.isArray(t))return void U('Arguments must be a JSON object, e.g. { "query": "…" }');U(null),N({...y,args:t})}catch(e){U("Not valid JSON yet")}})(e.target.value),margin:"normal",multiline:!0,minRows:2,placeholder:'{ "query": "is:unread" }',error:!!L,helperText:null!=L?L:"Sent to the tool on every check.",slotProps:{input:{sx:{fontFamily:"monospace",fontSize:14}}}}),(0,a.jsxs)(o.default,{sx:{display:"flex",alignItems:"center",gap:2,mb:1},children:[(0,a.jsx)(s.A,{variant:"outlined",size:"small",onClick:X,disabled:!y.serverName||!y.toolName||J||!!L,startIcon:J?(0,a.jsx)(m.default,{size:16}):void 0,children:"Test: call the tool now"}),(0,a.jsx)(r.default,{variant:"caption",color:"text.secondary",children:"See what the result looks like — useful for the settings below."})]}),_&&(0,a.jsx)(x.A,{severity:"error",sx:{mb:1},children:_}),G&&(0,a.jsx)(o.default,{component:"pre",sx:{maxHeight:240,overflow:"auto",bgcolor:"action.hover",borderRadius:1,p:1.5,fontSize:12,m:0,mb:1},children:G}),(0,a.jsx)(r.default,{variant:"subtitle2",sx:{mt:2,mb:1},children:"Run the flow when…"}),(0,a.jsxs)(o.default,{role:"radiogroup","aria-label":"Poll condition",sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,a.jsx)(b.A,{selected:"on-change"===Y.mode,onClick:()=>N({...y,evaluate:{mode:"on-change"}}),icon:(0,a.jsx)(f.A,{}),title:"The result changes",description:"Any difference from the last check runs the flow. Simplest — no setup."}),(0,a.jsx)(b.A,{selected:"llm-gate"===Y.mode||"flow-gate"===Y.mode,onClick:()=>{"llm-gate"!==Y.mode&&"flow-gate"!==Y.mode&&N({...y,evaluate:{mode:"llm-gate",condition:"",modelId:""}})},icon:(0,a.jsx)(p.A,{}),title:"AI decides",description:"Describe the condition in plain language; a model — or one of your flows — checks the result whenever it changes."})]}),("llm-gate"===Y.mode||"flow-gate"===Y.mode)&&(0,a.jsxs)(o.default,{sx:{mt:1},children:[(0,a.jsx)(h.A,{fullWidth:!0,label:"Run the flow if…",value:Y.condition,onChange:e=>N({...y,evaluate:{...Y,condition:e.target.value}}),multiline:!0,minRows:2,margin:"normal",placeholder:"e.g. any email mentions an invoice or a payment reminder"}),(0,a.jsxs)(o.default,{sx:{display:"flex",gap:2,flexWrap:"wrap",alignItems:"flex-start"},children:[(0,a.jsxs)(i.A,{sx:{minWidth:170},children:[(0,a.jsx)(d.A,{id:"gate-checker-label",children:"Checked by"}),(0,a.jsxs)(c.A,{labelId:"gate-checker-label",label:"Checked by",value:Y.mode,onChange:e=>{let t=e.target.value;if(t===Y.mode)return;let l={condition:Y.condition,maxCallsPerDay:Y.maxCallsPerDay};N({...y,evaluate:"llm-gate"===t?{mode:t,...l,modelId:""}:{mode:t,...l,flowId:""}})},children:[(0,a.jsx)(u.A,{value:"llm-gate",children:"A model"}),(0,a.jsx)(u.A,{value:"flow-gate",children:"One of my flows"})]})]}),"llm-gate"===Y.mode&&(0,a.jsxs)(i.A,{sx:{minWidth:240,flex:1},children:[(0,a.jsx)(d.A,{id:"gate-model-label",children:"Model that checks"}),(0,a.jsxs)(c.A,{labelId:"gate-model-label",label:"Model that checks",value:B.some(e=>e.id===Y.modelId)?Y.modelId:"",onChange:e=>N({...y,evaluate:{...Y,modelId:e.target.value}}),children:[0===B.length&&(0,a.jsx)(u.A,{value:"",disabled:!0,children:"No models configured"}),B.map(e=>(0,a.jsx)(u.A,{value:e.id,children:e.displayName||e.name},e.id))]})]}),"flow-gate"===Y.mode&&(0,a.jsxs)(i.A,{sx:{minWidth:240,flex:1},children:[(0,a.jsx)(d.A,{id:"gate-flow-label",children:"Flow that checks"}),(0,a.jsxs)(c.A,{labelId:"gate-flow-label",label:"Flow that checks",value:Q.some(e=>e.id===Y.flowId)?Y.flowId:"",onChange:e=>N({...y,evaluate:{...Y,flowId:e.target.value}}),children:[0===Q.length&&(0,a.jsx)(u.A,{value:"",disabled:!0,children:"No flows available"}),Q.map(e=>(0,a.jsx)(u.A,{value:e.id,children:e.name},e.id))]})]}),(0,a.jsx)(h.A,{label:"Max checks per day",type:"number",value:null!=(l=Y.maxCallsPerDay)?l:500,onChange:e=>N({...y,evaluate:{...Y,maxCallsPerDay:Math.max(1,Number(e.target.value)||1)}}),inputProps:{min:1},helperText:"Cost guard per check.",sx:{width:180}})]}),(0,a.jsx)(r.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:.5},children:"flow-gate"===Y.mode?'The checker flow runs invisibly (never in the chat), gets the condition + tool result, and must answer with {"fire": true/false, "reason": "…"} — it can use its own tools to verify before deciding.':"The model is only asked when the result actually changed since the last check — an idle feed costs nothing. Pick a small, cheap model."})]}),(0,a.jsx)(x.A,{severity:"info",sx:{mt:2},children:"The first check only takes a snapshot — the flow runs from the second check onwards, when something actually changed. FLUJO must be running for checks to happen."})]})}},84765:(e,t,l)=>{l.d(t,{A:()=>b});var a=l(95155),n=l(12115),o=l(94049),r=l(52641),s=l(95436),i=l(55606),d=l(86973),c=l(9562),u=l(22003),h=l(25635),m=l(99944),x=l(22822),f=l(98267),p=l(20537),g=l(37960),v=l(63186),w=l(93632);let y=e=>String(e).padStart(2,"0"),b=e=>{let{cron:t,timezone:l,onChange:b,verb:j="Runs",catchUp:A,onCatchUpChange:k}=e,C=(0,n.useMemo)(()=>(function(e){let t=/^\*\/(\d+) \* \* \* \* \*$/.exec(e);return t?{mode:"seconds",n:Number(t[1]),time:"09:00"}:(t=/^\*\/(\d+) \* \* \* \*$/.exec(e))?{mode:"minutes",n:Number(t[1]),time:"09:00"}:(t=/^0 \*\/(\d+) \* \* \*$/.exec(e))?{mode:"hours",n:Number(t[1]),time:"09:00"}:(t=/^(\d+) (\d+) \* \* \*$/.exec(e))?{mode:"daily",n:1,time:"".concat(y(Number(t[2])),":").concat(y(Number(t[1])))}:(t=/^(\d+) (\d+) \* \* 1-5$/.exec(e))?{mode:"weekdays",n:1,time:"".concat(y(Number(t[2])),":").concat(y(Number(t[1])))}:{mode:"custom",n:15,time:"09:00"}})(t),[]),[S,I]=(0,n.useState)(C.mode),[N,M]=(0,n.useState)(C.n),[T,P]=(0,n.useState)(C.time),[W,E]=(0,n.useState)(t),[O,R]=(0,n.useState)(null),F=function(e,t,l,a){let[n,o]=l.split(":").map(Number);switch(e){case"seconds":return"*/".concat(Math.max(1,Math.min(59,Math.floor(t)||1))," * * * * *");case"minutes":return"*/".concat(Math.max(1,Math.min(59,Math.floor(t)||1))," * * * *");case"hours":return"0 */".concat(Math.max(1,Math.min(23,Math.floor(t)||1))," * * *");case"daily":return"".concat(o||0," ").concat(n||0," * * *");case"weekdays":return"".concat(o||0," ").concat(n||0," * * 1-5");default:return a}}(S,N,T,W);return(0,n.useEffect)(()=>{F!==t&&b({cron:F,timezone:l})},[F]),(0,n.useEffect)(()=>{let e=!1,t=setTimeout(()=>{w.P.previewSchedule(F,l).then(t=>{e||R(t)})},300);return()=>{e=!0,clearTimeout(t)}},[F,l]),(0,a.jsxs)(o.default,{children:[(0,a.jsxs)(o.default,{sx:{display:"flex",gap:2,flexWrap:"wrap",alignItems:"center",mt:1},children:[(0,a.jsxs)(r.A,{sx:{minWidth:180},children:[(0,a.jsx)(s.A,{id:"schedule-preset-label",children:j}),(0,a.jsxs)(i.A,{labelId:"schedule-preset-label",label:j,value:S,onChange:e=>I(e.target.value),children:[(0,a.jsx)(d.A,{value:"seconds",children:"Every N seconds"}),(0,a.jsx)(d.A,{value:"minutes",children:"Every N minutes"}),(0,a.jsx)(d.A,{value:"hours",children:"Every N hours"}),(0,a.jsx)(d.A,{value:"daily",children:"Daily at a time"}),(0,a.jsx)(d.A,{value:"weekdays",children:"Weekdays at a time"}),(0,a.jsx)(d.A,{value:"custom",children:"Custom (cron)"})]})]}),("seconds"===S||"minutes"===S||"hours"===S)&&(0,a.jsx)(c.A,{label:"seconds"===S?"Seconds":"minutes"===S?"Minutes":"Hours",type:"number",value:N,onChange:e=>M(Number(e.target.value)),inputProps:{min:1,max:"hours"===S?23:59},sx:{width:120}}),("daily"===S||"weekdays"===S)&&(0,a.jsx)(c.A,{label:"Time",type:"time",value:T,onChange:e=>P(e.target.value),sx:{width:150},InputLabelProps:{shrink:!0}}),"custom"===S&&(0,a.jsx)(c.A,{label:"Cron pattern",value:W,onChange:e=>E(e.target.value),sx:{minWidth:220},placeholder:"*/15 * * * *"})]}),O&&!O.valid&&(0,a.jsx)(u.A,{severity:"error",sx:{mt:2},children:O.error||"This schedule is not valid."}),O&&O.valid&&O.nextRuns.length>0&&(0,a.jsxs)(h.default,{variant:"body2",color:"text.secondary",sx:{mt:2},children:["Next: ",O.nextRuns.map(e=>new Date(e).toLocaleString()).join(" \xb7 ")]}),k&&(0,a.jsx)(m.A,{sx:{mt:1,display:"flex"},control:(0,a.jsx)(x.A,{checked:!0===A,onChange:e=>k(e.target.checked)}),label:"If FLUJO was closed at a scheduled time, run once on startup"}),(0,a.jsxs)(f.A,{disableGutters:!0,elevation:0,sx:{mt:1,"&:before":{display:"none"}},children:[(0,a.jsx)(p.A,{expandIcon:(0,a.jsx)(v.A,{}),sx:{px:0},children:(0,a.jsx)(h.default,{variant:"body2",color:"text.secondary",children:"Advanced"})}),(0,a.jsx)(g.A,{sx:{px:0},children:(0,a.jsxs)(o.default,{sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,a.jsx)(c.A,{label:"Timezone (optional)",value:l||"",onChange:e=>b({cron:F,timezone:e.target.value||void 0}),placeholder:"e.g. Europe/Berlin",helperText:"IANA timezone name. Empty = this computer's timezone.",sx:{minWidth:260}}),(0,a.jsx)(c.A,{label:"Generated cron pattern",value:F,InputProps:{readOnly:"custom"!==S},onChange:e=>{I("custom"),E(e.target.value)},helperText:"Editing switches to Custom mode.",sx:{minWidth:220}})]})})]})]})}}}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8345],{2411:(e,t,o)=>{o.d(t,{A:()=>R});var r=o(12115),a=o(2821),n=o(57001),s=o(2300),i=o(81852),l=o(52005),p=o(48116),d=o(66964),c=o(16625),u=o(5356),g=o(85795),v=o(95195);function m(e){return(0,v.Ay)("MuiMobileStepper",e)}(0,g.A)("MuiMobileStepper",["root","positionBottom","positionTop","positionStatic","dots","dot","dotActive","progress"]);var y=o(77765),A=o(95155);let h=(0,p.Ay)(s.A,{name:"MuiMobileStepper",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:o}=e;return[t.root,t["position".concat((0,i.A)(o.position))]]}})((0,d.A)(e=>{let{theme:t}=e;return{display:"flex",flexDirection:"row",justifyContent:"space-between",alignItems:"center",background:(t.vars||t).palette.background.default,padding:8,variants:[{props:e=>{let{position:t}=e;return"top"===t||"bottom"===t},style:{position:"fixed",left:0,right:0,zIndex:(t.vars||t).zIndex.mobileStepper}},{props:{position:"top"},style:{top:0}},{props:{position:"bottom"},style:{bottom:0}}]}})),b=(0,p.Ay)("div",{name:"MuiMobileStepper",slot:"Dots",overridesResolver:(e,t)=>t.dots})({variants:[{props:{variant:"dots"},style:{display:"flex",flexDirection:"row"}}]}),f=(0,p.Ay)("div",{name:"MuiMobileStepper",slot:"Dot",shouldForwardProp:e=>(0,u.A)(e)&&"dotActive"!==e,overridesResolver:(e,t)=>{let{dotActive:o}=e;return[t.dot,o&&t.dotActive]}})((0,d.A)(e=>{let{theme:t}=e;return{variants:[{props:{variant:"dots"},style:{transition:t.transitions.create("background-color",{duration:t.transitions.duration.shortest}),backgroundColor:(t.vars||t).palette.action.disabled,borderRadius:"50%",width:8,height:8,margin:"0 2px"}},{props:{variant:"dots",dotActive:!0},style:{backgroundColor:(t.vars||t).palette.primary.main}}]}})),x=(0,p.Ay)(l.A,{name:"MuiMobileStepper",slot:"Progress",overridesResolver:(e,t)=>t.progress})({variants:[{props:{variant:"progress"},style:{width:"50%"}}]}),R=r.forwardRef(function(e,t){let o,s=(0,c.b)({props:e,name:"MuiMobileStepper"}),{activeStep:l=0,backButton:p,className:d,LinearProgressProps:u,nextButton:g,position:v="bottom",steps:R,variant:M="dots",slots:I={},slotProps:S={},...z}=s,P={...s,activeStep:l,position:v,variant:M};"progress"===M&&(o=1===R?100:Math.ceil(l/(R-1)*100));let w=(e=>{let{classes:t,position:o}=e,r={root:["root","position".concat((0,i.A)(o))],dots:["dots"],dot:["dot"],dotActive:["dotActive"],progress:["progress"]};return(0,n.A)(r,m,t)})(P),C={slots:I,slotProps:{progress:u,...S}},[j,k]=(0,y.A)("root",{ref:t,elementType:h,shouldForwardComponentProp:!0,className:(0,a.A)(w.root,d),externalForwardedProps:{...C,...z},ownerState:P,additionalProps:{square:!0,elevation:0}}),[B,N]=(0,y.A)("dots",{className:w.dots,elementType:b,externalForwardedProps:C,ownerState:P}),[T,O]=(0,y.A)("dot",{elementType:f,externalForwardedProps:C,ownerState:P}),[F,W]=(0,y.A)("progress",{className:w.progress,elementType:x,shouldForwardComponentProp:!0,externalForwardedProps:C,ownerState:P,additionalProps:{value:o,variant:"determinate"}});return(0,A.jsxs)(j,{...k,children:[p,"text"===M&&(0,A.jsxs)(r.Fragment,{children:[l+1," / ",R]}),"dots"===M&&(0,A.jsx)(B,{...N,children:[...Array(R)].map((e,t)=>(0,A.jsx)(T,{...O,className:(0,a.A)(w.dot,O.className,t===l&&w.dotActive),dotActive:t===l},t))}),"progress"===M&&(0,A.jsx)(F,{...W}),g]})})},20063:(e,t,o)=>{var r=o(47260);o.o(r,"usePathname")&&o.d(t,{usePathname:function(){return r.usePathname}}),o.o(r,"useRouter")&&o.d(t,{useRouter:function(){return r.useRouter}}),o.o(r,"useSearchParams")&&o.d(t,{useSearchParams:function(){return r.useSearchParams}})},41983:(e,t,o)=>{o.d(t,{A:()=>R});var r=o(12115),a=o(2821),n=o(57001),s=o(61952),i=o(8532),l=o(48116),p=o(66964),d=o(74798),c=o(16625),u=o(95070),g=o(4474),v=o(81852),m=o(85795),y=o(95195);function A(e){return(0,y.Ay)("MuiIconButton",e)}let h=(0,m.A)("MuiIconButton",["root","disabled","colorInherit","colorPrimary","colorSecondary","colorError","colorInfo","colorSuccess","colorWarning","edgeStart","edgeEnd","sizeSmall","sizeMedium","sizeLarge","loading","loadingIndicator","loadingWrapper"]);var b=o(95155);let f=(0,l.Ay)(u.A,{name:"MuiIconButton",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:o}=e;return[t.root,o.loading&&t.loading,"default"!==o.color&&t["color".concat((0,v.A)(o.color))],o.edge&&t["edge".concat((0,v.A)(o.edge))],t["size".concat((0,v.A)(o.size))]]}})((0,p.A)(e=>{let{theme:t}=e;return{textAlign:"center",flex:"0 0 auto",fontSize:t.typography.pxToRem(24),padding:8,borderRadius:"50%",color:(t.vars||t).palette.action.active,transition:t.transitions.create("background-color",{duration:t.transitions.duration.shortest}),variants:[{props:e=>!e.disableRipple,style:{"--IconButton-hoverBg":t.vars?"rgba(".concat(t.vars.palette.action.activeChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,i.X4)(t.palette.action.active,t.palette.action.hoverOpacity),"&:hover":{backgroundColor:"var(--IconButton-hoverBg)","@media (hover: none)":{backgroundColor:"transparent"}}}},{props:{edge:"start"},style:{marginLeft:-12}},{props:{edge:"start",size:"small"},style:{marginLeft:-3}},{props:{edge:"end"},style:{marginRight:-12}},{props:{edge:"end",size:"small"},style:{marginRight:-3}}]}}),(0,p.A)(e=>{let{theme:t}=e;return{variants:[{props:{color:"inherit"},style:{color:"inherit"}},...Object.entries(t.palette).filter((0,d.A)()).map(e=>{let[o]=e;return{props:{color:o},style:{color:(t.vars||t).palette[o].main}}}),...Object.entries(t.palette).filter((0,d.A)()).map(e=>{let[o]=e;return{props:{color:o},style:{"--IconButton-hoverBg":t.vars?"rgba(".concat((t.vars||t).palette[o].mainChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,i.X4)((t.vars||t).palette[o].main,t.palette.action.hoverOpacity)}}}),{props:{size:"small"},style:{padding:5,fontSize:t.typography.pxToRem(18)}},{props:{size:"large"},style:{padding:12,fontSize:t.typography.pxToRem(28)}}],["&.".concat(h.disabled)]:{backgroundColor:"transparent",color:(t.vars||t).palette.action.disabled},["&.".concat(h.loading)]:{color:"transparent"}}})),x=(0,l.Ay)("span",{name:"MuiIconButton",slot:"LoadingIndicator",overridesResolver:(e,t)=>t.loadingIndicator})(e=>{let{theme:t}=e;return{display:"none",position:"absolute",visibility:"visible",top:"50%",left:"50%",transform:"translate(-50%, -50%)",color:(t.vars||t).palette.action.disabled,variants:[{props:{loading:!0},style:{display:"flex"}}]}}),R=r.forwardRef(function(e,t){let o=(0,c.b)({props:e,name:"MuiIconButton"}),{edge:r=!1,children:i,className:l,color:p="default",disabled:d=!1,disableFocusRipple:u=!1,size:m="medium",id:y,loading:h=null,loadingIndicator:R,...M}=o,I=(0,s.A)(y),S=null!=R?R:(0,b.jsx)(g.default,{"aria-labelledby":I,color:"inherit",size:16}),z={...o,edge:r,color:p,disabled:d,disableFocusRipple:u,loading:h,loadingIndicator:S,size:m},P=(e=>{let{classes:t,disabled:o,color:r,edge:a,size:s,loading:i}=e,l={root:["root",i&&"loading",o&&"disabled","default"!==r&&"color".concat((0,v.A)(r)),a&&"edge".concat((0,v.A)(a)),"size".concat((0,v.A)(s))],loadingIndicator:["loadingIndicator"],loadingWrapper:["loadingWrapper"]};return(0,n.A)(l,A,t)})(z);return(0,b.jsxs)(f,{id:h?I:y,className:(0,a.A)(P.root,l),centerRipple:!0,focusRipple:!u,disabled:d||h,ref:t,...M,ownerState:z,children:["boolean"==typeof h&&(0,b.jsx)("span",{className:P.loadingWrapper,style:{display:"contents"},children:(0,b.jsx)(x,{className:P.loadingIndicator,ownerState:z,children:h&&S})}),i]})})},46320:(e,t,o)=>{o.d(t,{A:()=>i,I:()=>s});var r=o(12115),a=o(95155);let n=r.createContext(),s=()=>{let e=r.useContext(n);return null!=e&&e},i=function(e){let{value:t,...o}=e;return(0,a.jsx)(n.Provider,{value:null==t||t,...o})}},77073:(e,t,o)=>{o.d(t,{A:()=>n});var r=o(15485),a=o(95155);let n=(0,r.A)((0,a.jsx)("path",{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close")}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8404],{9226:(e,t,o)=>{o.d(t,{A:()=>L,o:()=>O});var r=o(95155),l=o(12115),a=o(48116),n=o(29767),s=o(94049),i=o(8532),d=o(33567),c=o(25635),u=o(78470),p=o(41983),h=o(53062),f=o(84578),m=o(28548),g=o(1702),x=o(20699),w=o(4484),y=o(52277),b=o(14915),v=o(89296),j=o(62291),k=o(47529),A=o(12313),C=o(60691),F=o(76808),S=o(33420),T=o(81956);let I=(0,o(87021).h)("components/Flow/FlowDashboard/FlowCard"),E=(0,a.Ay)(n.A,{shouldForwardProp:e=>"selected"!==e})(e=>{let{theme:t,selected:o}=e;return{display:"flex",flexDirection:"column",height:"100%",transition:"all 0.3s cubic-bezier(0.4, 0, 0.2, 1)",position:"relative",border:o?"2px solid ".concat(t.palette.primary.main):"none",boxShadow:o?t.shadows[4]:t.shadows[1],"&:hover":{boxShadow:t.shadows[6],transform:"translateY(-4px)"},"&::before":o?{content:'""',position:"absolute",top:0,left:0,width:"100%",height:"4px",backgroundColor:t.palette.primary.main}:{}}}),N=(0,a.Ay)(s.default)(e=>{let{theme:t}=e;return{height:"140px",backgroundColor:(0,i.X4)(t.palette.background.default,.7),borderRadius:t.shape.borderRadius,display:"flex",alignItems:"center",justifyContent:"center",margin:t.spacing(1),overflow:"hidden",position:"relative"}}),O=()=>(0,r.jsxs)(n.A,{sx:{height:"100%",display:"flex",flexDirection:"column"},children:[(0,r.jsx)(s.default,{sx:{p:1},children:(0,r.jsx)(x.A,{variant:"rectangular",height:140})}),(0,r.jsxs)(f.A,{sx:{flexGrow:1},children:[(0,r.jsx)(x.A,{variant:"text",width:"80%",height:30}),(0,r.jsxs)(s.default,{sx:{display:"flex",gap:1,mt:1},children:[(0,r.jsx)(x.A,{variant:"rectangular",width:60,height:20}),(0,r.jsx)(x.A,{variant:"rectangular",width:90,height:20})]})]}),(0,r.jsxs)(g.A,{sx:{justifyContent:"flex-end",p:1},children:[(0,r.jsx)(x.A,{variant:"circular",width:28,height:28}),(0,r.jsx)(x.A,{variant:"circular",width:28,height:28}),(0,r.jsx)(x.A,{variant:"circular",width:28,height:28})]})]}),L=e=>{var t,o;let{flow:a,selected:n,onSelect:x,onDelete:O,onCopy:L,onEdit:P,onOpenInChat:U,onSetFolder:R,onToggleFavorite:z,folders:B=[],validation:D,pickerMode:X=!1}=e;I.debug("Rendering FlowCard",{flowId:a.id,flowName:a.name});let M=(0,d.A)(),[W,K]=(0,l.useState)(null),H=null!=(t=null==D?void 0:D.errorCount)?t:0,q=null!=(o=null==D?void 0:D.warningCount)?o:0,G=H>0?"error":q>0?"warning":null,J=D?(0,r.jsxs)(s.default,{children:[(0,r.jsx)(c.default,{variant:"caption",sx:{fontWeight:600,display:"block",mb:.5},children:H>0?"".concat(H," problem").concat(1===H?"":"s"," — won't run"):"".concat(q," warning").concat(1===q?"":"s")}),D.issues.slice(0,5).map((e,t)=>(0,r.jsxs)(c.default,{variant:"caption",sx:{display:"block"},children:["• ",e.message]},t)),D.issues.length>5&&(0,r.jsxs)(c.default,{variant:"caption",sx:{display:"block",fontStyle:"italic"},children:["…and ",D.issues.length-5," more"]})]}):null;return(0,r.jsxs)(E,{selected:n,children:[z&&(0,r.jsx)(u.A,{title:a.favorite?"Remove from favorites":"Add to favorites",arrow:!0,placement:"top",children:(0,r.jsx)(p.A,{size:"small",onClick:e=>{e.stopPropagation(),z&&z(a.id)},sx:{position:"absolute",top:4,left:4,zIndex:2,color:a.favorite?M.palette.warning.main:M.palette.text.secondary,backgroundColor:(0,i.X4)(M.palette.background.paper,.6),"&:hover":{backgroundColor:(0,i.X4)(M.palette.background.paper,.9)}},children:a.favorite?(0,r.jsx)(j.A,{fontSize:"small"}):(0,r.jsx)(k.A,{fontSize:"small"})})}),G&&(0,r.jsx)(u.A,{title:J,arrow:!0,placement:"top",children:(0,r.jsxs)(s.default,{sx:{position:"absolute",top:8,right:8,zIndex:2,display:"flex",alignItems:"center",gap:.5,px:.75,py:.25,borderRadius:1,color:"#fff",backgroundColor:"error"===G?M.palette.error.main:M.palette.warning.main,boxShadow:M.shadows[2],pointerEvents:"auto"},children:["error"===G?(0,r.jsx)(C.A,{sx:{fontSize:16}}):(0,r.jsx)(F.A,{sx:{fontSize:16}}),(0,r.jsx)(c.default,{variant:"caption",sx:{fontWeight:700,lineHeight:1},children:"error"===G?H:q})]})}),(0,r.jsxs)(h.A,{onClick:()=>x(a.id),sx:{display:"flex",flexDirection:"column",alignItems:"stretch",height:"100%",position:"relative"},children:[(0,r.jsx)(N,{children:(()=>{if(0===a.nodes.length)return(0,r.jsx)(s.default,{sx:{width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center"},children:(0,r.jsx)(c.default,{color:"textSecondary",align:"center",children:"Empty Flow"})});let e=a.nodes.map(e=>{var t,o;return null!=(o=null==(t=e.position)?void 0:t.x)?o:0}),t=a.nodes.map(e=>{var t,o;return null!=(o=null==(t=e.position)?void 0:t.y)?o:0}),o=Math.min(...e),l=Math.min(...t),n=Math.max(...e)+180,i=Math.max(...t)+70,d="".concat(o-40," ").concat(l-40," ").concat(n-o+80," ").concat(i-l+80),u=e=>{var t,o,r,l;return{cx:(null!=(r=null==(t=e.position)?void 0:t.x)?r:0)+90,cy:(null!=(l=null==(o=e.position)?void 0:o.y)?l:0)+35}};return(0,r.jsx)(s.default,{sx:{width:"100%",height:"100%",p:1},children:(0,r.jsxs)("svg",{width:"100%",height:"100%",viewBox:d,preserveAspectRatio:"xMidYMid meet",style:{display:"block"},children:[a.edges.map((e,t)=>{let o=a.nodes.find(t=>t.id===e.source),l=a.nodes.find(t=>t.id===e.target);if(!o||!l)return null;let n=u(o),s=u(l);return(0,r.jsx)("line",{x1:n.cx,y1:n.cy,x2:s.cx,y2:s.cy,stroke:M.palette.text.secondary,strokeWidth:2,opacity:.5,vectorEffect:"non-scaling-stroke"},e.id||t)}),a.nodes.map(e=>{var t,o,l,a,n,s;let i=null!=(a=null==(t=e.position)?void 0:t.x)?a:0,d=null!=(n=null==(o=e.position)?void 0:o.y)?n:0,c=null!=(s=null==(l=e.data)?void 0:l.type)?s:"process",u=(0,S.M6)(c,M);return(0,r.jsxs)("g",{children:[(0,r.jsx)("rect",{x:i,y:d,width:180,height:70,rx:12,fill:u,opacity:.85,stroke:M.palette.background.paper,strokeWidth:2,vectorEffect:"non-scaling-stroke"}),(0,r.jsx)("text",{x:i+90,y:d+35,textAnchor:"middle",dominantBaseline:"central",fill:"#fff",fontSize:35,fontWeight:"bold",children:c.substring(0,1).toUpperCase()})]},e.id)})]})})})()}),(0,r.jsxs)(f.A,{sx:{flexGrow:1,pb:0},children:[(0,r.jsx)(c.default,{variant:"h6",component:"div",noWrap:!0,children:a.name}),a.description&&(0,r.jsx)(u.A,{title:a.description,placement:"bottom-start",children:(0,r.jsx)(c.default,{variant:"body2",color:"text.secondary",sx:{mt:.5,display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden"},children:a.description})}),(0,r.jsxs)(s.default,{sx:{display:"flex",gap:.5,mt:1,flexWrap:"wrap"},children:[(0,r.jsx)(m.A,{size:"small",label:"".concat(a.nodes.length," nodes"),color:"primary",variant:"outlined",sx:{fontSize:"0.7rem",height:20}}),(0,r.jsx)(m.A,{size:"small",label:"".concat(a.edges.length," connections"),color:"secondary",variant:"outlined",sx:{fontSize:"0.7rem",height:20}})]})]})]}),!X&&(0,r.jsxs)(g.A,{sx:{justifyContent:"flex-end",p:1,opacity:.7,"&:hover":{opacity:1}},children:[U&&(0,r.jsx)(u.A,{title:"Start a conversation with this flow",children:(0,r.jsx)(p.A,{size:"small",onClick:e=>{e.stopPropagation(),U&&U(a.id)},color:"primary",children:(0,r.jsx)(A.A,{fontSize:"small"})})}),P&&(0,r.jsx)(u.A,{title:"Edit flow metadata",children:(0,r.jsx)(p.A,{size:"small",onClick:e=>{e.stopPropagation(),P&&P(a.id)},children:(0,r.jsx)(b.A,{fontSize:"small"})})}),L&&(0,r.jsx)(u.A,{title:"Copy flow",children:(0,r.jsx)(p.A,{size:"small",onClick:e=>{e.stopPropagation(),L&&L(a.id)},children:(0,r.jsx)(y.A,{fontSize:"small"})})}),R&&(0,r.jsx)(u.A,{title:a.folder?"Folder: ".concat(a.folder):"Move to folder",children:(0,r.jsx)(p.A,{size:"small",onClick:e=>{e.stopPropagation(),K(e.currentTarget)},color:a.folder?"primary":"default",children:(0,r.jsx)(v.A,{fontSize:"small"})})}),O&&(0,r.jsx)(u.A,{title:"Delete flow",children:(0,r.jsx)(p.A,{size:"small",onClick:e=>{e.stopPropagation(),O&&O(a.id)},color:"error",children:(0,r.jsx)(w.A,{fontSize:"small"})})})]}),!X&&R&&(0,r.jsx)(T.A,{anchorEl:W,open:!!W,currentFolder:a.folder,folders:B,onClose:()=>K(null),onAssign:e=>R(a.id,e)})]})}},33420:(e,t,o)=>{o.d(t,{$Q:()=>C,C2:()=>F,IK:()=>W,M6:()=>P,Uw:()=>M,lA:()=>H,nH:()=>k,pF:()=>J,v2:()=>K,vm:()=>X,vp:()=>A,z3:()=>G,z9:()=>q});var r=o(95155),l=o(12115),a=o(22539),n=o(76122),s=o(48116),i=o(33567),d=o(2300),c=o(94049),u=o(25635),p=o(41983),h=o(50430),f=o(12313),m=o(56350),g=o(77842),x=o(55930),w=o(59323),y=o(20195),b=o(11096),v=o(63186),j=o(62962);let k="#009688",A="#7E57C2",C="#E91E63",F="#F48FB1",S={start:{main:()=>"#795548",light:()=>"#A1887F"},process:{main:e=>e.palette.secondary.main,light:e=>e.palette.secondary.light},finish:{main:e=>e.palette.success.main,light:e=>e.palette.success.light},mcp:{main:e=>e.palette.info.main,light:e=>e.palette.info.light},subflow:{main:e=>e.palette.warning.main,light:e=>e.palette.warning.light},resource:{main:()=>k,light:()=>"#4DB6AC"},signal:{main:()=>A,light:()=>"#B39DDB"},trigger:{main:()=>C,light:()=>F}},T=(e,t)=>{var o;return(null!=(o=S[e])?o:S.start).main(t)},I=(0,s.Ay)(d.A,{shouldForwardProp:e=>!["nodeType","selected"].includes(e)})(e=>{let{theme:t,nodeType:o,selected:r}=e;return{padding:t.spacing(1.5),width:"200px",borderRadius:"8px",backgroundColor:t.palette.background.paper,border:"2px solid ".concat(T(o,t)),boxShadow:r?"0 0 0 2px ".concat(t.palette.primary.main,", 0 3px 10px rgba(0,0,0,0.2)"):t.shadows[2],transition:"all 0.2s ease","&:hover":{boxShadow:"0 0 0 1px ".concat(T(o,t),", 0 3px 10px rgba(0,0,0,0.1)")}}}),E=(0,s.Ay)(c.default,{shouldForwardProp:e=>"nodeType"!==e})(e=>{let{theme:t,nodeType:o}=e;return{display:"flex",alignItems:"center",justifyContent:"space-between",borderBottom:"1px solid ".concat(((e,t)=>{var o;return(null!=(o=S[e])?o:S.start).light(t)})(o,t)),marginBottom:t.spacing(1),paddingBottom:t.spacing(.5)}}),N=(0,s.Ay)(c.default)({display:"flex",alignItems:"center",gap:"8px"}),O=(0,s.Ay)(c.default)(e=>{let{theme:t}=e;return{marginTop:t.spacing(1),fontSize:"0.8rem"}}),L=(0,s.Ay)(c.default)(e=>{let{theme:t}=e;return{display:"flex",justifyContent:"space-between",padding:t.spacing(.5,0),borderBottom:"1px dashed ".concat("dark"===t.palette.mode?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.1)")}}),P=(e,t)=>T(e,t),U=e=>({backgroundColor:e.palette.info.main,borderColor:"dark"===e.palette.mode?e.palette.background.paper:"white",width:16,height:16,borderRadius:8,borderWidth:2}),R=e=>({backgroundColor:e.palette.secondary.main,borderColor:"dark"===e.palette.mode?e.palette.background.paper:"white",width:16,height:16,borderRadius:8,borderWidth:2}),z=e=>({backgroundColor:e.palette.primary.main,borderColor:"dark"===e.palette.mode?e.palette.background.paper:"white",width:16,height:16,borderRadius:8,borderWidth:2}),B=e=>({backgroundColor:k,borderColor:"dark"===e.palette.mode?e.palette.background.paper:"white",width:16,height:16,borderRadius:8,borderWidth:2}),D=e=>{let{data:t,nodeType:o,selected:s}=e,d=(0,i.A)(),[c,F]=(0,l.useState)(!1),S=t||{label:"No Label",properties:{}},T=S.properties||{},P="signal"===o?"string"==typeof T.topic&&T.topic.trim()?T.topic.trim():"string"==typeof S.label&&S.label?S.label:"Signal":"string"==typeof S.label?S.label:"No Label",D="signal"===o?Object.fromEntries(Object.entries(T).filter(e=>{let[t]=e;return"topic"!==t})):T,X=Object.keys(D).length;return(0,r.jsx)(r.Fragment,{children:(0,r.jsxs)(I,{elevation:2,nodeType:o,selected:s,children:[(()=>{if("mcp"===o)return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(a.h7,{id:"mcp-top",type:"target",position:n.yX.Top,style:U(d)}),(0,r.jsx)(a.h7,{id:"mcp-right",type:"target",position:n.yX.Right,style:U(d)}),(0,r.jsx)(a.h7,{id:"mcp-bottom",type:"source",position:n.yX.Bottom,style:U(d)}),(0,r.jsx)(a.h7,{id:"mcp-left",type:"target",position:n.yX.Left,style:U(d)})]});if("process"===o)return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(a.h7,{id:"process-top",type:"target",position:n.yX.Top,style:R(d)}),(0,r.jsx)(a.h7,{id:"process-bottom",type:"source",position:n.yX.Bottom,style:R(d)}),(0,r.jsx)(a.h7,{id:"process-left-mcp",type:"source",position:n.yX.Left,style:{...z(d),top:"30%"}}),(0,r.jsx)(a.h7,{id:"process-right-mcp",type:"source",position:n.yX.Right,style:{...z(d),top:"30%"}}),(0,r.jsx)(a.h7,{id:"process-left-resource",type:"source",position:n.yX.Left,style:{...B(d),top:"70%"}}),(0,r.jsx)(a.h7,{id:"process-right-resource",type:"source",position:n.yX.Right,style:{...B(d),top:"70%"}})]});if("resource"===o)return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(a.h7,{id:"resource-in",type:"target",position:n.yX.Left,style:B(d)}),(0,r.jsx)(a.h7,{id:"resource-out",type:"source",position:n.yX.Right,style:B(d)})]});if("start"===o)return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(a.h7,{id:"start-top",type:"target",position:n.yX.Top,style:R(d)}),(0,r.jsx)(a.h7,{id:"start-bottom",type:"source",position:n.yX.Bottom,style:R(d)})]});if("finish"===o)return(0,r.jsx)(a.h7,{id:"finish-top",type:"target",position:n.yX.Top,style:R(d)});else if("subflow"===o)return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(a.h7,{id:"subflow-top",type:"target",position:n.yX.Top,style:R(d)}),(0,r.jsx)(a.h7,{id:"subflow-bottom",type:"source",position:n.yX.Bottom,style:R(d)})]});else if("signal"===o)return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(a.h7,{id:"signal-top",type:"target",position:n.yX.Top,style:R(d)}),(0,r.jsx)(a.h7,{id:"signal-bottom",type:"source",position:n.yX.Bottom,style:R(d)})]});else if("trigger"===o)return(0,r.jsx)(a.h7,{id:"trigger-bottom",type:"source",position:n.yX.Bottom,style:{...R(d),backgroundColor:C}});return null})(),(0,r.jsxs)(E,{nodeType:o,children:[(0,r.jsxs)(N,{children:[(e=>{switch(e){case"start":default:return(0,r.jsx)(f.A,{sx:{color:"#795548"}});case"process":return(0,r.jsx)(m.A,{color:"secondary"});case"finish":return(0,r.jsx)(g.A,{color:"success"});case"mcp":return(0,r.jsx)(m.A,{color:"info"});case"subflow":return(0,r.jsx)(x.A,{sx:{color:"warning.main"}});case"resource":return(0,r.jsx)(w.A,{sx:{color:k}});case"signal":return(0,r.jsx)(y.A,{sx:{color:A}});case"trigger":return(0,r.jsx)(b.A,{sx:{color:C}})}})(o),(0,r.jsx)(u.default,{variant:"subtitle2",fontWeight:"bold",children:P})]}),X>0&&(0,r.jsx)(p.A,{size:"small",onClick:e=>{e.stopPropagation(),F(!c)},sx:{padding:.5},children:c?(0,r.jsx)(j.A,{fontSize:"small"}):(0,r.jsx)(v.A,{fontSize:"small"})})]}),(0,r.jsx)(h.A,{in:c,children:(0,r.jsx)(O,{children:Object.entries(D).map(e=>{let[t,o]=e;return(0,r.jsxs)(L,{children:[(0,r.jsxs)(u.default,{variant:"caption",sx:{fontWeight:"bold"},children:[t,":"]}),(0,r.jsxs)(u.default,{variant:"caption",children:[String(o).substring(0,30),String(o).length>30?"...":""]})]},t)})})}),X>0&&!c&&(0,r.jsx)(u.default,{variant:"caption",color:"text.secondary",children:"".concat(X," properties configured")})]})})},X=(0,l.memo)(function(e){return(0,r.jsx)(D,{...e,nodeType:"start",selected:e.selected})}),M=(0,l.memo)(function(e){return(0,r.jsx)(D,{...e,nodeType:"process",selected:e.selected})}),W=(0,l.memo)(function(e){return(0,r.jsx)(D,{...e,nodeType:"finish",selected:e.selected})}),K=(0,l.memo)(function(e){return(0,r.jsx)(D,{...e,nodeType:"mcp",selected:e.selected})}),H=(0,l.memo)(function(e){return(0,r.jsx)(D,{...e,nodeType:"subflow",selected:e.selected})}),q=(0,l.memo)(function(e){return(0,r.jsx)(D,{...e,nodeType:"resource",selected:e.selected})}),G=(0,l.memo)(function(e){return(0,r.jsx)(D,{...e,nodeType:"signal",selected:e.selected})}),J=(0,l.memo)(function(e){return(0,r.jsx)(D,{...e,nodeType:"trigger",selected:e.selected})})},48072:(e,t,o)=>{o.d(t,{CR:()=>d,Lg:()=>n,eZ:()=>i,fC:()=>a});var r=o(88107),l=o(38459);let a={"name-asc":"Name (A-Z)","name-desc":"Name (Z-A)",provider:"Provider","context-desc":"Context (largest)","context-asc":"Context (smallest)"},n=e=>e.displayName||e.name||"",s=e=>(0,r.T_)(e.provider,e.adapter).label;function i(e,t){switch(t){case"provider":{let t=s(e);return{key:"provider:".concat(t),label:t}}case"context-asc":case"context-desc":var o;return"number"!=typeof(o=e.contextWindow)||Number.isNaN(o)?{key:"ctx:unknown",label:"Unknown context"}:o<=8e3?{key:"ctx:<=8k",label:"≤ 8K tokens"}:o<=32e3?{key:"ctx:8k-32k",label:"8K–32K tokens"}:o<=128e3?{key:"ctx:32k-128k",label:"32K–128K tokens"}:o<=1e6?{key:"ctx:128k-1m",label:"128K–1M tokens"}:{key:"ctx:>1m",label:"> 1M tokens"};default:return(0,l.po)(n(e))}}function d(e,t){let o=(e,o)=>{switch(t){case"name-asc":return n(e).localeCompare(n(o));case"name-desc":return n(o).localeCompare(n(e));case"provider":return s(e).localeCompare(s(o))||n(e).localeCompare(n(o));case"context-desc":case"context-asc":{let r="number"!=typeof e.contextWindow||Number.isNaN(e.contextWindow)?void 0:e.contextWindow,l="number"!=typeof o.contextWindow||Number.isNaN(o.contextWindow)?void 0:o.contextWindow;if(void 0===r&&void 0===l)return n(e).localeCompare(n(o));if(void 0===r)return 1;if(void 0===l)return -1;let a="context-desc"===t?l-r:r-l;return 0!==a?a:n(e).localeCompare(n(o))}default:return 0}};return[...e].sort((e,t)=>{let r=Number(!!t.favorite)-Number(!!e.favorite);return 0!==r?r:o(e,t)})}},68503:(e,t,o)=>{o.d(t,{E:()=>c});var r=o(12115),l=o(97104),a=o(38459),n=o(48072),s=o(65818),i=o(88377);let d={models:{defaultSort:"name-asc",sort:(e,t)=>(0,n.CR)(e,t),deriveSortGroup:(e,t)=>(0,n.eZ)(e,t),getFolder:e=>e.folder,getSearchText:e=>{var t;return"".concat((0,n.Lg)(e)," ").concat(null!=(t=e.name)?t:"")}},mcp:{defaultSort:"name-asc",sort:(e,t)=>(0,s.oO)(e,t),deriveSortGroup:(e,t)=>(0,s.mO)(e,t),getFolder:e=>e.folder,getSearchText:e=>{var t,o,r;return"".concat(null!=(t=e.name)?t:""," ").concat(null!=(r=null!=(o=e.rootPath)?o:e.path)?r:"")}},flows:{defaultSort:"name-asc",sort:(e,t)=>(0,i.NP)(e,t),deriveSortGroup:(e,t)=>(0,i.ts)(e,t),getFolder:e=>e.folder,getSearchText:e=>{var t;return null!=(t=e.name)?t:""}}};function c(e,t){let o=d[e],[n,s]=(0,r.useState)(""),[i]=(0,l.Xk)("flujo-ui:".concat(e,":sort"),o.defaultSort),[c]=(0,l.Xk)("flujo-ui:".concat(e,":group"),a.FM),[u,p]=(0,l.Xk)("flujo-ui:".concat(e,":collapsed"),[]),h=(0,r.useMemo)(()=>new Set(u),[u]),f=(0,r.useMemo)(()=>{let e=n.trim().toLowerCase(),r=e?t.filter(t=>o.getSearchText(t).toLowerCase().includes(e)):t;return o.sort([...r],i)},[t,n,i,o]),m=(0,r.useMemo)(()=>"folder"===c?(0,a.Je)(f,e=>o.getFolder(e)):"sort"===c?(0,a.Az)(f,e=>o.deriveSortGroup(e,i)):null,[c,f,i,o]);return{searchTerm:n,setSearchTerm:s,sortOption:i,groupMode:c,items:f,groups:m,collapsedKeys:h,toggleGroup:(0,r.useCallback)(e=>{p(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},[p])}}},88107:(e,t,o)=>{o.d(t,{T_:()=>i,g3:()=>n,xx:()=>s});let r=/(^|[/_-])(o[1-9]|gpt-5)(?:[./_-]|$)/i,l=/claude-(?:fable|mythos)-5|claude-opus-4-(?:[7-9]|\d{2,})|claude-sonnet-5/i,a=/^(?:opus|sonnet|fable)$|claude-(?:fable|mythos)-5|claude-opus-4-(?:[6-9]|\d{2,})|claude-sonnet-4-6/i;function n(e,t){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",n=t||"openai",s=o.trim();if("codex-cli"===n)return{effortLevels:/^gpt-5\.6-(?:sol|terra)$/i.test(s)?["low","medium","high","xhigh","max","ultra"]:/^gpt-5\.6-/i.test(s)?["low","medium","high","xhigh","max"]:["low","medium","high","xhigh"],priority:!/(?:mini|spark|review)/i.test(s),maxOutputTokens:!1};if("claude-cli"===n)return{...a.test(s)?{effortLevels:["low","medium","high","xhigh","max"]}:{},maxOutputTokens:!1};if("anthropic"===n)return{...!l.test(s)?{creativity:{min:0,max:1,step:.1}}:{},...a.test(s)?{effortLevels:["low","medium","high","xhigh","max"]}:{},maxOutputTokens:!0};if("gemini"===n)return{creativity:{min:0,max:2,step:.1},.../^gemini-2\.5/i.test(s)?{thinkingBudget:!0}:!/^gemini-2\.0/i.test(s)?{thinkingLevels:["minimal","low","medium","high"]}:{},maxOutputTokens:!0};let i="openai"===(e||"openai")&&r.test(s);return{...!i?{creativity:{min:0,max:2,step:.1}}:{},...i?{effortLevels:["low","medium","high"]}:{},maxOutputTokens:!0}}let s=[{id:"openai",label:"OpenAI",provider:"openai",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.openai.com/v1",showBaseUrl:!0},{id:"openai-responses",label:"OpenAI (Responses API)",provider:"openai",adapter:"openai-responses",sdkLabel:"OpenAI SDK (Responses)",baseUrl:"https://api.openai.com/v1",showBaseUrl:!0,defaultModels:["gpt-5","gpt-5-mini","o4-mini","o3"]},{id:"openrouter",label:"OpenRouter",provider:"openrouter",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://openrouter.ai/api/v1",showBaseUrl:!0},{id:"requesty",label:"Requesty",provider:"requesty",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://router.requesty.ai/v1",showBaseUrl:!0},{id:"xai",label:"X.ai",provider:"xai",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.x.ai/v1",showBaseUrl:!0},{id:"ollama",label:"Ollama",provider:"ollama",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"http://localhost:11434/v1",showBaseUrl:!0},{id:"litellm",label:"LiteLLM",provider:"litellm",adapter:"openai",sdkLabel:"OpenAI SDK (via LiteLLM Proxy)",baseUrl:"http://localhost:4000/v1",showBaseUrl:!0},{id:"gemini-openai",label:"Gemini (OpenAI Format)",provider:"gemini",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://generativelanguage.googleapis.com/v1beta/openai/",showBaseUrl:!0},{id:"gemini-native",label:"Gemini (Native)",provider:"gemini",adapter:"gemini",sdkLabel:"GenAI SDK",baseUrl:"",showBaseUrl:!1,defaultModels:["gemini-2.5-pro","gemini-2.5-flash","gemini-2.5-flash-lite","gemini-2.0-flash"]},{id:"anthropic-openai",label:"Anthropic (OpenAI Format)",provider:"anthropic",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.anthropic.com/v1/",showBaseUrl:!0},{id:"anthropic-native",label:"Anthropic (Native)",provider:"anthropic",adapter:"anthropic",sdkLabel:"Anthropic SDK",baseUrl:"",showBaseUrl:!1,defaultModels:["claude-opus-4-8","claude-sonnet-4-6","claude-haiku-4-5-20251001","claude-fable-5"]},{id:"claude-subscription",label:"Claude Subscription",provider:"claude-subscription",adapter:"claude-cli",sdkLabel:"Claude CLI",baseUrl:"",showBaseUrl:!1,defaultModels:["opus","sonnet","haiku","fable"]},{id:"codex",label:"Codex (OpenAI)",provider:"codex",adapter:"codex-cli",sdkLabel:"Codex SDK",baseUrl:"",showBaseUrl:!1,defaultModels:["gpt-5.6-sol","gpt-5.6-terra","gpt-5.6-luna","gpt-5.5","gpt-5.4","gpt-5.4-mini"]}];function i(e,t){let o=e||"openai",r=t||"openai";return s.find(e=>e.provider===o&&e.adapter===r)||s.find(e=>e.provider===o)||s[0]}},88377:(e,t,o)=>{o.d(t,{K:()=>a,NP:()=>i,ts:()=>n});var r=o(38459);function l(e){var t,o;return null!=(o=null!=(t=e.updatedAt)?t:e.createdAt)?o:0}function a(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Date.now();if(!e)return{key:"recency:unknown",label:"No date"};let o=t-e;return o<864e5?{key:"recency:today",label:"Today"}:o<6048e5?{key:"recency:week",label:"This week"}:o<2592e6?{key:"recency:month",label:"This month"}:{key:"recency:older",label:"Older"}}function n(e,t){switch(t){case"name-asc":case"name-desc":return(0,r.po)(e.name);case"most-nodes":case"least-nodes":var o;return 0===(o=e.nodes.length)?{key:"nodes:0",label:"0 nodes"}:o<=2?{key:"nodes:1-2",label:"1–2 nodes"}:o<=5?{key:"nodes:3-5",label:"3–5 nodes"}:o<=10?{key:"nodes:6-10",label:"6–10 nodes"}:{key:"nodes:11+",label:"11+ nodes"};case"newest":case"oldest":return a(l(e));default:return{key:"all",label:"All flows"}}}function s(e,t){return e.name.localeCompare(t.name)||e.id.localeCompare(t.id)}function i(e,t){let o=(e,o)=>{switch(t){case"name-asc":return e.name.localeCompare(o.name);case"name-desc":return o.name.localeCompare(e.name);case"most-nodes":return o.nodes.length-e.nodes.length;case"least-nodes":return e.nodes.length-o.nodes.length;case"newest":{let t=l(o)-l(e);return 0!==t?t:s(e,o)}case"oldest":{let t=l(e)-l(o);return 0!==t?t:s(e,o)}default:return 0}};return[...e].sort((e,t)=>{let r=Number(!!t.favorite)-Number(!!e.favorite);return 0!==r?r:o(e,t)})}},90057:(e,t,o)=>{o.d(t,{g:()=>n});var r=o(74879);let l=(0,o(87021).h)("frontend/services/flow/index");class a{async loadFlows(){l.debug("loadFlows: Entering method");try{if(this.flowsCache)return l.debug("loadFlows: Using cached flows",{count:this.flowsCache.length}),this.flowsCache;let e=await fetch("/api/flow");if(!e.ok){let t=await e.json();throw Error(t.error||"Failed to load flows")}let t=await e.json();return l.debug("loadFlows: Loaded flows from API",{count:t.length}),this.flowsCache=t,t}catch(e){return l.warn("loadFlows: Failed to load flows:",e),[]}}async getFlow(e){l.debug("getFlow: Entering method",{flowId:e});try{if(this.flowsCache){let t=this.flowsCache.find(t=>t.id===e);if(t)return l.debug("getFlow: Using cached flow",{flowId:e}),t}let t=await fetch("/api/flow/".concat(encodeURIComponent(e)));if(!t.ok){if(404===t.status)return l.debug("getFlow: Flow ".concat(e," not found")),null;let o=await t.json();throw Error(o.error||"Failed to get flow: ".concat(e))}let o=await t.json();return l.debug("getFlow: Retrieved flow from API",{flowId:e}),o}catch(t){return l.warn("getFlow: Failed to get flow ".concat(e,":"),t),null}}async addFlow(e){l.debug("addFlow: Entering method",{flowId:e.id,flowName:e.name,nodeCount:e.nodes.length,edgeCount:e.edges.length});try{let t=await fetch("/api/flow",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){let e=await t.json();return{success:!1,error:e.error||"Failed to add flow"}}let o=await t.json();return this.flowsCache&&this.flowsCache.push(o),l.debug("addFlow: Flow added successfully",{flowId:e.id}),{success:!0}}catch(e){return l.warn("addFlow: Failed to add flow:",e),{success:!1,error:e instanceof Error?e.message:"Failed to add flow"}}}async generateFlow(e,t,o){l.debug("generateFlow: Entering method",{modelId:t,allowInstall:null==o?void 0:o.allowInstall,allowSubflows:null==o?void 0:o.allowSubflows,maxDepth:null==o?void 0:o.maxDepth});try{var r,a,n,s,i,d,c;let u=await fetch("/api/flow/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({description:e,modelId:t,allowInstall:(null==o?void 0:o.allowInstall)===!0,allowSubflows:(null==o?void 0:o.allowSubflows)!==!1,..."number"==typeof(null==o?void 0:o.maxDepth)?{maxDepth:o.maxDepth}:{}})}),p=await u.json().catch(()=>null);if(!u.ok)return{success:!1,error:(null==p?void 0:p.error)||"Failed to generate flow"};let h=Array.isArray(p.flows)&&p.flows.length>0?p.flows:[{flow:p.flow,validation:p.validation}];return l.debug("generateFlow: Draft generated",{flowId:null==(r=p.flow)?void 0:r.id,flowCount:h.length,attempts:p.attempts,errorCount:null==(a=p.validation)?void 0:a.errorCount,installedServers:null!=(i=null==(n=p.installedServers)?void 0:n.length)?i:0}),{success:!0,flow:p.flow,validation:p.validation,flows:h,rootFlowId:null!=(d=p.rootFlowId)?d:null==(s=p.flow)?void 0:s.id,attempts:p.attempts,installedServers:null!=(c=p.installedServers)?c:[]}}catch(e){return l.warn("generateFlow: Failed to generate flow:",e),{success:!1,error:e instanceof Error?e.message:"Failed to generate flow"}}}async improveFlow(e,t,o,r){l.debug("improveFlow: Entering method",{flowId:null==e?void 0:e.id,modelId:o,allowInstall:null==r?void 0:r.allowInstall});try{var a,n,s,i,d,c,u;let p=await fetch("/api/flow/improve",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({flow:e,relatedFlows:null==r?void 0:r.relatedFlows,description:t,modelId:o,allowInstall:(null==r?void 0:r.allowInstall)===!0})}),h=await p.json().catch(()=>null);if(!p.ok)return{success:!1,error:(null==h?void 0:h.error)||"Failed to improve flow"};return l.debug("improveFlow: Draft revised",{flowId:null==(a=h.flow)?void 0:a.id,attempts:h.attempts,errorCount:null==(n=h.validation)?void 0:n.errorCount,installedServers:null!=(d=null==(s=h.installedServers)?void 0:s.length)?d:0}),{success:!0,flow:h.flow,validation:h.validation,flows:Array.isArray(h.flows)&&h.flows.length>0?h.flows:[{flow:h.flow,validation:h.validation}],rootFlowId:null!=(c=h.rootFlowId)?c:null==(i=h.flow)?void 0:i.id,attempts:h.attempts,installedServers:null!=(u=h.installedServers)?u:[]}}catch(e){return l.warn("improveFlow: Failed to improve flow:",e),{success:!1,error:e instanceof Error?e.message:"Failed to improve flow"}}}async updateFlow(e){l.debug("updateFlow: Entering method",{flowId:e.id,flowName:e.name,nodeCount:e.nodes.length,edgeCount:e.edges.length});try{let t=await fetch("/api/flow/".concat(encodeURIComponent(e.id)),{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)});if(!t.ok){let e=await t.json();return{success:!1,error:e.error||"Failed to update flow"}}let o=await t.json();if(this.flowsCache){let t=this.flowsCache.findIndex(t=>t.id===e.id);t>=0?this.flowsCache[t]=o:this.flowsCache.push(o)}return l.debug("updateFlow: Flow updated successfully",{flowId:e.id}),{success:!0}}catch(e){return l.warn("updateFlow: Failed to update flow:",e),{success:!1,error:e instanceof Error?e.message:"Failed to update flow"}}}async deleteFlow(e){l.debug("deleteFlow: Entering method",{flowId:e});try{let t=await fetch("/api/flow/".concat(encodeURIComponent(e)),{method:"DELETE"});if(!t.ok){let e=await t.json();return{success:!1,error:e.error||"Failed to delete flow"}}return this.flowsCache&&(this.flowsCache=this.flowsCache.filter(t=>t.id!==e)),l.debug("deleteFlow: Flow deleted successfully",{flowId:e}),{success:!0}}catch(e){return l.warn("deleteFlow: Failed to delete flow:",e),{success:!1,error:e instanceof Error?e.message:"Failed to delete flow"}}}async listFlowVersions(e){l.debug("listFlowVersions: Entering method",{flowId:e});try{let t=await fetch("/api/flow/".concat(encodeURIComponent(e),"/versions"));if(!t.ok){let e=await t.json().catch(()=>null);throw Error((null==e?void 0:e.error)||"Failed to list flow versions")}let o=await t.json();return Array.isArray(o.versions)?o.versions:[]}catch(t){return l.warn("listFlowVersions: Failed for flow ".concat(e,":"),t),[]}}async getFlowVersion(e,t){l.debug("getFlowVersion: Entering method",{flowId:e,versionId:t});try{let o=await fetch("/api/flow/".concat(encodeURIComponent(e),"/versions/").concat(encodeURIComponent(t)));if(!o.ok){if(404===o.status)return null;let e=await o.json().catch(()=>null);throw Error((null==e?void 0:e.error)||"Failed to get flow version")}return await o.json()}catch(o){return l.warn("getFlowVersion: Failed for ".concat(e,"/").concat(t,":"),o),null}}createNode(e,t){return l.debug("createNode: Entering method",{type:e,position:t}),{id:(0,r.A)(),type:e,position:t,data:{label:"".concat("mcp"===e?"MCP":e.charAt(0).toUpperCase()+e.slice(1)," Node"),type:e,properties:"process"===e?{inputMode:"full-history"}:{}}}}createStartNode(){return{id:(0,r.A)(),type:"start",position:{x:250,y:150},data:{label:"Start Node",type:"start",properties:{promptTemplate:""}}}}createNewFlow(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"NewFlow";l.debug("createNewFlow: Entering method",{name:e});let t=Date.now();return{id:(0,r.A)(),name:e,createdAt:t,updatedAt:t,nodes:[this.createStartNode()],edges:[]}}createHistoryEntry(e,t){return l.debug("createHistoryEntry: Entering method"),{nodes:[...e],edges:[...t]}}generateSampleFlow(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Sample Flow";return l.debug("generateSampleFlow: Entering method",{name:e}),{id:(0,r.A)(),name:e,nodes:[{id:"1",type:"start",position:{x:250,y:50},data:{label:"Start Node",type:"start",properties:{prompt:"Enter your query here",systemMessage:"You are a helpful assistant",temperature:0}}},{id:"2",type:"process",position:{x:250,y:200},data:{label:"Process Node",type:"process",properties:{operation:"transform",enabled:!0}}},{id:"3",type:"finish",position:{x:250,y:350},data:{label:"Finish Node",type:"finish",properties:{format:"json",template:'{ "result": {{data}} }'}}},{id:"4",type:"mcp",position:{x:450,y:200},data:{label:"MCP Node",type:"mcp",properties:{channels:2,mode:"parallel"}}}],edges:[{id:"e1-2",source:"1",target:"2",type:"custom"},{id:"e2-3",source:"2",target:"3",type:"custom"}]}}constructor(){this.flowsCache=null}}let n=new a},93632:(e,t,o)=>{o.d(t,{P:()=>a});let r=(0,o(87021).h)("frontend/services/plannedExecutions");class l{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 r.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)}),o=await t.json();if(!t.ok)return{success:!1,error:(null==o?void 0:o.error)||"HTTP ".concat(t.status)};return{success:!0,execution:o.execution}}catch(e){return{success:!1,error:e instanceof Error?e.message:"Request failed"}}}async update(e,t){try{let o=await fetch("/api/planned-executions/".concat(e),{method:"PATCH",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),r=await o.json();if(!o.ok)return{success:!1,error:(null==r?void 0:r.error)||"HTTP ".concat(o.status)};return{success:!0,execution:r.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"}),o=await t.json();if(!t.ok)return{success:!1,error:(null==o?void 0:o.error)||"HTTP ".concat(t.status)};return{success:!0,record:o.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 o=await t.json();return Array.isArray(null==o?void 0:o.runs)?o.runs:[]}catch(t){return r.warn("Failed to load runs for ".concat(e),t),[]}}async previewSchedule(e,t){try{let o=await fetch("/api/planned-executions/preview-schedule",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({cron:e,timezone:t})});if(!o.ok)throw Error("HTTP ".concat(o.status));return await o.json()}catch(e){return{valid:!1,error:e instanceof Error?e.message:"Preview failed",nextRuns:[]}}}}let a=new l},96362:(e,t,o)=>{o.d(t,{A:()=>m});var r=o(95155);o(12115);var l=o(2778),a=o(52363),n=o(94049),s=o(25635),i=o(41983),d=o(21067),c=o(65036),u=o(75912),p=o(91871),h=o(77073),f=o(99162);let m=e=>{let{open:t,onClose:o,title:m,description:g,maxWidth:x="md",...w}=e;return(0,r.jsxs)(l.A,{open:t,onClose:o,maxWidth:x,fullWidth:!0,children:[(0,r.jsx)(a.A,{component:"div",children:(0,r.jsxs)(n.default,{display:"flex",alignItems:"center",justifyContent:"space-between",children:[(0,r.jsx)(s.default,{variant:"h6",children:m}),(0,r.jsx)(i.A,{edge:"end",color:"inherit",onClick:o,"aria-label":"close",children:(0,r.jsx)(h.A,{})})]})}),(0,r.jsx)(d.A,{}),(0,r.jsxs)(c.A,{sx:{p:3},children:[g&&(0,r.jsx)(s.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:g}),(0,r.jsx)(f.A,{...w})]}),(0,r.jsx)(u.A,{children:(0,r.jsx)(p.A,{onClick:o,children:"Cancel"})})]})}},99162:(e,t,o)=>{o.d(t,{A:()=>f});var r=o(95155),l=o(12115),a=o(33077),n=o(94049),s=o(9562),i=o(56422),d=o(4474),c=o(25635),u=o(51611),p=o(22573);let h={xs:12,sm:6,md:4},f=e=>{let{isLoading:t=!1,error:o=null,emptyMessage:f="Nothing to choose from.",loadingMessage:m="Loading…",skeleton:g,skeletonCount:x=4,columns:w=h,items:y,searchable:b=!1,searchPlaceholder:v="Search…",searchTerm:j,onSearchChange:k,groups:A,collapsedKeys:C,onToggleGroup:F}=e,S={...h,...w},[T,I]=(0,l.useState)(""),E=void 0!==j,N=E?j:T,[O,L]=(0,l.useState)(new Set),P=null!=C?C:O,U=e=>(0,r.jsx)(a.Ay,{container:!0,spacing:2,alignItems:"stretch",children:e.map(e=>(0,r.jsx)(a.Ay,{item:!0,xs:S.xs,sm:S.sm,md:S.md,lg:S.lg,sx:{display:"flex"},children:(0,r.jsx)(n.default,{sx:{width:"100%"},children:e.content})},e.key))}),R=b?(0,r.jsx)(s.A,{placeholder:v,variant:"outlined",size:"small",fullWidth:!0,value:N,onChange:e=>(e=>{null==k||k(e),E||I(e)})(e.target.value),sx:{mb:2},InputProps:{startAdornment:(0,r.jsx)(i.A,{position:"start",children:(0,r.jsx)(u.A,{fontSize:"small"})})}}):null,z=e=>(0,r.jsxs)(n.default,{children:[R,e]});if(t)return z(g?(0,r.jsx)(a.Ay,{container:!0,spacing:2,children:Array.from({length:x}).map((e,t)=>(0,r.jsx)(a.Ay,{item:!0,xs:S.xs,sm:S.sm,md:S.md,lg:S.lg,children:g},"skeleton-".concat(t)))}):(0,r.jsxs)(n.default,{sx:{display:"flex",alignItems:"center",gap:1,py:2},children:[(0,r.jsx)(d.default,{size:20}),(0,r.jsx)(c.default,{variant:"body2",color:"text.secondary",children:m})]}));if(o)return z((0,r.jsx)(c.default,{color:"error",variant:"body2",sx:{py:2},children:o}));let B=E?"":N.trim().toLowerCase(),D=e=>{var t;return!B||(null!=(t=e.searchText)?t:"").toLowerCase().includes(B)},X=(0,r.jsx)(c.default,{variant:"body2",color:"text.secondary",sx:{py:2},children:f});if(A){let e=A.map(e=>({...e,items:e.items.filter(D)})).filter(e=>e.items.length>0);return z(0===e.length?X:(0,r.jsx)(r.Fragment,{children:e.map(e=>(0,r.jsx)(p.A,{label:e.label,count:e.items.length,expanded:!P.has(e.key),onToggle:()=>(e=>{if(F)return void F(e);L(t=>{let o=new Set(t);return o.has(e)?o.delete(e):o.add(e),o})})(e.key),children:U(e.items)},e.key))}))}let M=(null!=y?y:[]).filter(D);return z(0===M.length?X:U(M))}}}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8405],{748:(e,t,r)=>{r.d(t,{kY:()=>n,Ic:()=>d});var o=r(26796),a=r(87021);let n={light:{background:"#FFFFFF",foreground:"#2C3E50",surface:"#F5F6FA",surfaceRaised:"#FFFFFF",paperBackground:"#F5F6FA",textSecondary:"#7F8C8D",textDisabled:"#9CA3AF",border:"#e5e7eb",heading:"#111",text:"#333",secondaryText:"#666",error:{background:"#fef2f2",border:"#fecaca",text:"#dc2626"},domain:{resource:"#009688",resourceSoft:"#4DB6AC",signal:"#7E57C2",startNode:"#795548",codeBackground:"#f5f5f5",http:{get:"#2e7d32",post:"#1565c0",put:"#e65100",patch:"#6a1b9a",delete:"#c62828"},transport:{stdio:{fg:"#1976d2",bg:"#e3f2fd"},websocket:{fg:"#2e7d32",bg:"#e8f5e8"},sse:{fg:"#f57c00",bg:"#fff3e0"},streamable:{fg:"#00796b",bg:"#e0f2f1"},default:{fg:"#757575",bg:"#f5f5f5"}}}},dark:{background:"#0f1319",foreground:"#eef1f5",surface:"#1a212b",surfaceRaised:"#242d3a",paperBackground:"#1a212b",textSecondary:"#b4bdca",textDisabled:"#6b7280",border:"#37404e",heading:"#f5f7fa",text:"#eef1f5",secondaryText:"#b4bdca",error:{background:"#2a1618",border:"#5a2a2e",text:"#ff6b6b"},domain:{resource:"#26a69a",resourceSoft:"#4DB6AC",signal:"#9575CD",startNode:"#a1887f",codeBackground:"#242d3a",http:{get:"#66bb6a",post:"#5b9dff",put:"#ffa726",patch:"#ba68c8",delete:"#ef5350"},transport:{stdio:{fg:"#90caf9",bg:"#1e2a3a"},websocket:{fg:"#a5d6a7",bg:"#1e2e22"},sse:{fg:"#ffcc80",bg:"#33281a"},streamable:{fg:"#80cbc4",bg:"#17322e"},default:{fg:"#b4bdca",bg:"#242d3a"}}}}},s=(0,a.h)("frontend/utils/theme");function d(){let{isDarkMode:e}=(0,o.useTheme)();return s.debug("useThemeUtils called with isDarkMode: ".concat(e)),{getThemeValue:(t,r)=>e?r:t,getThemeColor:t=>{let r=t.split("."),o=n[e?"dark":"light"];for(let e of r)if(!o||"object"!=typeof o||!(e in o))return s.warn("Theme color path not found: ".concat(t)),"";else o=o[e];return o},colors:e?n.dark:n.light,isDarkMode:e}}},2226:(e,t,r)=>{r.d(t,{Dp:()=>c,Dg:()=>u}),r(12115);var o=r(33065),a=r(95695),n=r(50361),s=r(46892),d=r(95155);let i=function(e){return(0,d.jsx)(a.A,{...e,defaultTheme:n.A,themeId:s.A})};function c(e){return function(t){return(0,d.jsx)(i,{styles:"function"==typeof e?r=>e({theme:r,...t}):e})}}function u(){return o.A}},26796:(e,t,r)=>{r.r(t),r.d(t,{ThemeProvider:()=>g,useTheme:()=>h});var o=r(95155),a=r(12115),n=r(87021),s=r(7160),d=r(29197),i=r(748),c=r(84563),u=r(29692);let l=(0,n.h)("frontend/contexts/ThemeContext"),f=(0,a.createContext)(void 0),g=e=>{let{children:t}=e,[r,n]=(0,a.useState)(!1),[g,h]=(0,a.useState)(!1);(0,a.useEffect)(()=>{(async()=>{l.debug("Loading theme preference from storage");let e=await (0,u.YM)(u.Zg.THEME,"light");l.info("Theme loaded from storage: ".concat(e));let t="dark"===e;h(t),t?document.documentElement.classList.add("dark-theme"):document.documentElement.classList.remove("dark-theme"),n(!0)})()},[]);let
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8405],{748:(e,t,r)=>{r.d(t,{kY:()=>n,Ic:()=>d});var o=r(26796),a=r(87021);let n={light:{background:"#FFFFFF",foreground:"#2C3E50",surface:"#F5F6FA",surfaceRaised:"#FFFFFF",paperBackground:"#F5F6FA",textSecondary:"#7F8C8D",textDisabled:"#9CA3AF",border:"#e5e7eb",heading:"#111",text:"#333",secondaryText:"#666",error:{background:"#fef2f2",border:"#fecaca",text:"#dc2626"},domain:{resource:"#009688",resourceSoft:"#4DB6AC",signal:"#7E57C2",startNode:"#795548",codeBackground:"#f5f5f5",http:{get:"#2e7d32",post:"#1565c0",put:"#e65100",patch:"#6a1b9a",delete:"#c62828"},transport:{stdio:{fg:"#1976d2",bg:"#e3f2fd"},websocket:{fg:"#2e7d32",bg:"#e8f5e8"},sse:{fg:"#f57c00",bg:"#fff3e0"},streamable:{fg:"#00796b",bg:"#e0f2f1"},default:{fg:"#757575",bg:"#f5f5f5"}}}},dark:{background:"#0f1319",foreground:"#eef1f5",surface:"#1a212b",surfaceRaised:"#242d3a",paperBackground:"#1a212b",textSecondary:"#b4bdca",textDisabled:"#6b7280",border:"#37404e",heading:"#f5f7fa",text:"#eef1f5",secondaryText:"#b4bdca",error:{background:"#2a1618",border:"#5a2a2e",text:"#ff6b6b"},domain:{resource:"#26a69a",resourceSoft:"#4DB6AC",signal:"#9575CD",startNode:"#a1887f",codeBackground:"#242d3a",http:{get:"#66bb6a",post:"#5b9dff",put:"#ffa726",patch:"#ba68c8",delete:"#ef5350"},transport:{stdio:{fg:"#90caf9",bg:"#1e2a3a"},websocket:{fg:"#a5d6a7",bg:"#1e2e22"},sse:{fg:"#ffcc80",bg:"#33281a"},streamable:{fg:"#80cbc4",bg:"#17322e"},default:{fg:"#b4bdca",bg:"#242d3a"}}}}},s=(0,a.h)("frontend/utils/theme");function d(){let{isDarkMode:e}=(0,o.useTheme)();return s.debug("useThemeUtils called with isDarkMode: ".concat(e)),{getThemeValue:(t,r)=>e?r:t,getThemeColor:t=>{let r=t.split("."),o=n[e?"dark":"light"];for(let e of r)if(!o||"object"!=typeof o||!(e in o))return s.warn("Theme color path not found: ".concat(t)),"";else o=o[e];return o},colors:e?n.dark:n.light,isDarkMode:e}}},2226:(e,t,r)=>{r.d(t,{Dp:()=>c,Dg:()=>u}),r(12115);var o=r(33065),a=r(95695),n=r(50361),s=r(46892),d=r(95155);let i=function(e){return(0,d.jsx)(a.A,{...e,defaultTheme:n.A,themeId:s.A})};function c(e){return function(t){return(0,d.jsx)(i,{styles:"function"==typeof e?r=>e({theme:r,...t}):e})}}function u(){return o.A}},26796:(e,t,r)=>{r.r(t),r.d(t,{ThemeProvider:()=>g,useTheme:()=>h});var o=r(95155),a=r(12115),n=r(87021),s=r(7160),d=r(29197),i=r(748),c=r(84563),u=r(29692);let l=(0,n.h)("frontend/contexts/ThemeContext"),f=(0,a.createContext)(void 0),g=e=>{let{children:t}=e,[r,n]=(0,a.useState)(!1),[g,h]=(0,a.useState)(!1);(0,a.useEffect)(()=>{(async()=>{l.debug("Loading theme preference from storage");let e=await (0,u.YM)(u.Zg.THEME,"light");l.info("Theme loaded from storage: ".concat(e));let t="dark"===e;h(t),t?document.documentElement.classList.add("dark-theme"):document.documentElement.classList.remove("dark-theme"),n(!0)})()},[]);let m=(0,a.useMemo)(()=>(function(e){let t="dark"===e?i.kY.dark:i.kY.light,r="dark"===e;return(0,d.A)({palette:{mode:e,primary:{main:r?"#4f93f5":"#007bff",light:r?"#6aa6f7":"#3395ff",dark:r?"#3a7ad4":"#0056b3"},secondary:{main:r?"#a3adba":"#6c757d"},error:{main:r?"#ff6b6b":"#dc2626",light:r?"#5a2a2e":"#fecaca",dark:r?"#2a1618":"#b91c1c"},warning:{main:r?"#e0a23c":"#f59e0b"},info:{main:r?"#56b6d6":"#3b82f6"},success:{main:r?"#3fae72":"#16a34a"},divider:t.border,background:{default:t.background,paper:t.surface},text:{primary:t.foreground,secondary:t.textSecondary,disabled:t.textDisabled}},typography:{fontFamily:"var(--font-geist-sans), Arial, sans-serif",h1:{fontWeight:700},h2:{fontWeight:700},h3:{fontWeight:600},h4:{fontWeight:600},h5:{fontWeight:600},h6:{fontWeight:600}},components:{MuiButton:{styleOverrides:{root:{textTransform:"none",borderRadius:"0.375rem"}}},MuiPaper:{styleOverrides:{root:{borderRadius:"0.5rem",backgroundImage:"none"}}},MuiTextField:{styleOverrides:{root:{"& .MuiOutlinedInput-root":{borderRadius:"0.375rem"}}}},MuiCard:{styleOverrides:{root:{borderRadius:"0.5rem",border:r?"1px solid ".concat(t.border):void 0,boxShadow:r?"0 4px 6px -1px rgba(0, 0, 0, 0.4), 0 2px 4px -1px rgba(0, 0, 0, 0.3)":"0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06)"}}},MuiMenu:{styleOverrides:{paper:{backgroundColor:t.surfaceRaised,backgroundImage:"none"}}},MuiPopover:{styleOverrides:{paper:{backgroundColor:t.surfaceRaised,backgroundImage:"none"}}},MuiTooltip:{styleOverrides:{tooltip:r?{backgroundColor:t.surfaceRaised,border:"1px solid ".concat(t.border),color:t.foreground}:void 0}}}})})(g?"dark":"light"),[g]);return l.debug("Rendering ThemeProvider with isDarkMode: ".concat(g)),(0,o.jsx)(f.Provider,{value:{toggleTheme:()=>{h(e=>{let t=!e,r=t?"dark":"light";return l.info("Toggling theme to: ".concat(r)),t?document.documentElement.classList.add("dark-theme"):document.documentElement.classList.remove("dark-theme"),(0,u.VH)(u.Zg.THEME,r),t})},isDarkMode:g},children:(0,o.jsxs)(s.A,{theme:m,children:[(0,o.jsx)(c.Ay,{}),t]})})},h=()=>{let e=(0,a.useContext)(f);if(!e)throw l.error("useTheme hook used outside of ThemeProvider"),Error("useTheme must be used within a ThemeProvider");return l.debug("useTheme hook accessed"),e}},27156:(e,t,r)=>{r.d(t,{Z:()=>o});var o=function(e){return e.MODELS="models",e.FLOWS="flows",e.CHAT_HISTORY="history",e.THEME="theme",e.ENCRYPTION_KEY="encryption_key",e.MCP_SERVERS="mcp_servers",e.GLOBAL_ENV_VARS="global_env_vars",e.CURRENT_CONVERSATION_ID="current_conversation_id",e.SELECTED_FLOW_ID="selected_flow_id",e.LAST_PICKED_FLOW_ID="last_picked_flow_id",e.SPEECH_SETTINGS="speech_settings",e.SPOTLIGHT_SERVERS="spotlight_servers",e.PLANNED_EXECUTIONS="planned_executions",e.MCP_AUTO_INSTALL_SETTINGS="mcp_auto_install_settings",e.MCP_QUALITY_SETTINGS="mcp_quality_settings",e.RUN_RESOURCE_SETTINGS="run_resource_settings",e.KV_STORE_SETTINGS="kv_store_settings",e.PENDING_APPROVALS="pending_approvals",e.MCP_INTERNAL_OVERRIDES="mcp_internal_overrides",e.PACKAGE_INSTALLS="package_installs",e.EXPERIMENTAL_SETTINGS="experimental_settings",e.REGISTRY_ACCOUNT="registry_account",e.REGISTRY_SETTINGS="registry_settings",e.TELEMETRY_STATE="telemetry_state",e}({})},29692:(e,t,r)=>{r.d(t,{Zg:()=>o.Z,YM:()=>i,VH:()=>d,Mj:()=>s});var o=r(27156),a=r(12115);let n=(0,r(87021).h)("utils/storage/frontend.ts");function s(e,t){n.verbose("useLocalStorage: Entering method");let[r,o]=(0,a.useState)(t),[s,d]=(0,a.useState)(!0),i=(0,a.useRef)(r);return(0,a.useEffect)(()=>{i.current=r},[r]),(0,a.useEffect)(()=>{(async()=>{n.verbose("loadValue: Entering method");try{let r=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t)))),a=await r.json();r.ok&&o(a.value)}catch(t){n.warn('Error reading storage key "'.concat(e,'":'),t)}finally{d(!1)}})()},[e]),[r,(0,a.useCallback)(async t=>{n.verbose("setValue: Entering method");try{let r=t instanceof Function?t(i.current):t;if(o(r),!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:r})})).ok)throw Error("Failed to save value")}catch(t){n.warn('Error setting storage key "'.concat(e,'":'),t)}},[e]),s]}let d=async(e,t)=>{n.verbose("saveItem: Entering method");try{if(!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:t})})).ok)throw Error("Failed to save item")}catch(e){throw n.error("Error saving to storage:",e),e}},i=async(e,t)=>{n.verbose("loadItem: Entering method");try{let r=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t))));if(!r.ok)throw Error("Failed to load item");return(await r.json()).value}catch(e){return n.error("Error loading from storage:",e),t}}},44102:(e,t,r)=>{r.d(t,{A:()=>n}),r(12115);var o=r(10225),a=r(95155);function n(e){let{styles:t,defaultTheme:r={}}=e,n="function"==typeof t?e=>t(null==e||0===Object.keys(e).length?r:e):t;return(0,a.jsx)(o.mL,{styles:n})}},46320:(e,t,r)=>{r.d(t,{A:()=>d,I:()=>s});var o=r(12115),a=r(95155);let n=o.createContext(),s=()=>{let e=o.useContext(n);return null!=e&&e},d=function(e){let{value:t,...r}=e;return(0,a.jsx)(n.Provider,{value:null==t||t,...r})}},89255:(e,t,r)=>{r.d(t,{A:()=>a});var o=r(12115);let a="undefined"!=typeof window?o.useLayoutEffect:o.useEffect},95695:(e,t,r)=>{r.d(t,{A:()=>i}),r(12115);var o=r(54211),a=r(44102),n=r(89505),s=r(95155);function d(e){let t=(0,o.tT)(e);return e!==t&&t.styles?(t.styles.match(/^@layer\s+[^{]*$/)||(t.styles="@layer global{".concat(t.styles,"}")),t):e}let i=function(e){let{styles:t,themeId:r,defaultTheme:o={}}=e,i=(0,n.A)(o),c=r&&i[r]||i,u="function"==typeof t?t(c):t;return c.modularCssLayers&&(u=Array.isArray(u)?u.map(e=>"function"==typeof e?d(e(c)):d(e)):d(u)),(0,s.jsx)(a.A,{styles:u})}},99347:(e,t,r)=>{r.d(t,{A:()=>d});var o,a=r(12115);let n=0,s={...o||(o=r.t(a,2))}.useId;function d(e){if(void 0!==s){let t=s();return null!=e?e:t}let[t,r]=a.useState(e),o=e||t;return a.useEffect(()=>{null==t&&(n+=1,r("mui-".concat(n)))},[t]),o}}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8551],{23820:(e,t,r)=>{r.d(t,{Ay:()=>C});var a=r(12115),o=r(2821),n=r(57001),i=r(86251),s=r(48116),l=r(66964),d=r(16625),c=r(43850),p=r(69582),u=r(14028),m=r(85795),g=r(95195);function v(e){return(0,g.Ay)("MuiListItem",e)}(0,m.A)("MuiListItem",["root","container","dense","alignItemsFlexStart","divider","gutters","padding","secondaryAction"]);var y=r(58081);function A(e){return(0,g.Ay)("MuiListItemSecondaryAction",e)}(0,m.A)("MuiListItemSecondaryAction",["root","disableGutters"]);var b=r(95155);let f=(0,s.Ay)("div",{name:"MuiListItemSecondaryAction",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:r}=e;return[t.root,r.disableGutters&&t.disableGutters]}})({position:"absolute",right:16,top:"50%",transform:"translateY(-50%)",variants:[{props:e=>{let{ownerState:t}=e;return t.disableGutters},style:{right:0}}]}),h=a.forwardRef(function(e,t){let r=(0,d.b)({props:e,name:"MuiListItemSecondaryAction"}),{className:i,...s}=r,l=a.useContext(u.A),c={...r,disableGutters:l.disableGutters},p=(e=>{let{disableGutters:t,classes:r}=e;return(0,n.A)({root:["root",t&&"disableGutters"]},A,r)})(c);return(0,b.jsx)(f,{className:(0,o.A)(p.root,i),ownerState:c,ref:t,...s})});h.muiName="ListItemSecondaryAction";let x=(0,s.Ay)("div",{name:"MuiListItem",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:r}=e;return[t.root,r.dense&&t.dense,"flex-start"===r.alignItems&&t.alignItemsFlexStart,r.divider&&t.divider,!r.disableGutters&&t.gutters,!r.disablePadding&&t.padding,r.hasSecondaryAction&&t.secondaryAction]}})((0,l.A)(e=>{let{theme:t}=e;return{display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",width:"100%",boxSizing:"border-box",textAlign:"left",variants:[{props:e=>{let{ownerState:t}=e;return!t.disablePadding},style:{paddingTop:8,paddingBottom:8}},{props:e=>{let{ownerState:t}=e;return!t.disablePadding&&t.dense},style:{paddingTop:4,paddingBottom:4}},{props:e=>{let{ownerState:t}=e;return!t.disablePadding&&!t.disableGutters},style:{paddingLeft:16,paddingRight:16}},{props:e=>{let{ownerState:t}=e;return!t.disablePadding&&!!t.secondaryAction},style:{paddingRight:48}},{props:e=>{let{ownerState:t}=e;return!!t.secondaryAction},style:{["& > .".concat(y.A.root)]:{paddingRight:48}}},{props:{alignItems:"flex-start"},style:{alignItems:"flex-start"}},{props:e=>{let{ownerState:t}=e;return t.divider},style:{borderBottom:"1px solid ".concat((t.vars||t).palette.divider),backgroundClip:"padding-box"}},{props:e=>{let{ownerState:t}=e;return t.button},style:{transition:t.transitions.create("background-color",{duration:t.transitions.duration.shortest}),"&:hover":{textDecoration:"none",backgroundColor:(t.vars||t).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}}}},{props:e=>{let{ownerState:t}=e;return t.hasSecondaryAction},style:{paddingRight:48}}]}})),I=(0,s.Ay)("li",{name:"MuiListItem",slot:"Container",overridesResolver:(e,t)=>t.container})({position:"relative"}),C=a.forwardRef(function(e,t){let r=(0,d.b)({props:e,name:"MuiListItem"}),{alignItems:s="center",children:l,className:m,component:g,components:y={},componentsProps:A={},ContainerComponent:f="li",ContainerProps:{className:C,...S}={},dense:R=!1,disableGutters:L=!1,disablePadding:k=!1,divider:M=!1,secondaryAction:w,slotProps:O={},slots:j={},...G}=r,B=a.useContext(u.A),N=a.useMemo(()=>({dense:R||B.dense||!1,alignItems:s,disableGutters:L}),[s,B.dense,R,L]),P=a.useRef(null),F=a.Children.toArray(l),V=F.length&&(0,c.A)(F[F.length-1],["ListItemSecondaryAction"]),D={...r,alignItems:s,dense:N.dense,disableGutters:L,disablePadding:k,divider:M,hasSecondaryAction:V},T=(e=>{let{alignItems:t,classes:r,dense:a,disableGutters:o,disablePadding:i,divider:s,hasSecondaryAction:l}=e;return(0,n.A)({root:["root",a&&"dense",!o&&"gutters",!i&&"padding",s&&"divider","flex-start"===t&&"alignItemsFlexStart",l&&"secondaryAction"],container:["container"]},v,r)})(D),X=(0,p.A)(P,t),_=j.root||y.Root||x,z=O.root||A.root||{},Y={className:(0,o.A)(T.root,z.className,m),...G},E=g||"li";return V?(E=Y.component||g?E:"div","li"===f&&("li"===E?E="div":"li"===Y.component&&(Y.component="div")),(0,b.jsx)(u.A.Provider,{value:N,children:(0,b.jsxs)(I,{as:f,className:(0,o.A)(T.container,C),ref:X,ownerState:D,...S,children:[(0,b.jsx)(_,{...z,...!(0,i.A)(_)&&{as:E,ownerState:{...D,...z.ownerState}},...Y,children:F}),F.pop()]})})):(0,b.jsx)(u.A.Provider,{value:N,children:(0,b.jsxs)(_,{...z,as:E,ref:X,...!(0,i.A)(_)&&{ownerState:{...D,...z.ownerState}},...Y,children:[F,w&&(0,b.jsx)(h,{children:w})]})})})},58081:(e,t,r)=>{r.d(t,{A:()=>i,Y:()=>n});var a=r(85795),o=r(95195);function n(e){return(0,o.Ay)("MuiListItemButton",e)}let i=(0,a.A)("MuiListItemButton",["root","focusVisible","dense","alignItemsFlexStart","disabled","divider","gutters","selected"])},73707:(e,t,r)=>{r.d(t,{A:()=>b});var a=r(12115),o=r(2821),n=r(57001),i=r(8532),s=r(48116),l=r(66964),d=r(16625),c=r(30424),p=r(95070),u=r(36766),m=r(69582),g=r(14028),v=r(58081),y=r(95155);let A=(0,s.Ay)(p.A,{shouldForwardProp:e=>(0,c.A)(e)||"classes"===e,name:"MuiListItemButton",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:r}=e;return[t.root,r.dense&&t.dense,"flex-start"===r.alignItems&&t.alignItemsFlexStart,r.divider&&t.divider,!r.disableGutters&&t.gutters]}})((0,l.A)(e=>{let{theme:t}=e;return{display:"flex",flexGrow:1,justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",minWidth:0,boxSizing:"border-box",textAlign:"left",paddingTop:8,paddingBottom:8,transition:t.transitions.create("background-color",{duration:t.transitions.duration.shortest}),"&:hover":{textDecoration:"none",backgroundColor:(t.vars||t).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},["&.".concat(v.A.selected)]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / ").concat(t.vars.palette.action.selectedOpacity,")"):(0,i.X4)(t.palette.primary.main,t.palette.action.selectedOpacity),["&.".concat(v.A.focusVisible)]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / calc(").concat(t.vars.palette.action.selectedOpacity," + ").concat(t.vars.palette.action.focusOpacity,"))"):(0,i.X4)(t.palette.primary.main,t.palette.action.selectedOpacity+t.palette.action.focusOpacity)}},["&.".concat(v.A.selected,":hover")]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / calc(").concat(t.vars.palette.action.selectedOpacity," + ").concat(t.vars.palette.action.hoverOpacity,"))"):(0,i.X4)(t.palette.primary.main,t.palette.action.selectedOpacity+t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / ").concat(t.vars.palette.action.selectedOpacity,")"):(0,i.X4)(t.palette.primary.main,t.palette.action.selectedOpacity)}},["&.".concat(v.A.focusVisible)]:{backgroundColor:(t.vars||t).palette.action.focus},["&.".concat(v.A.disabled)]:{opacity:(t.vars||t).palette.action.disabledOpacity},variants:[{props:e=>{let{ownerState:t}=e;return t.divider},style:{borderBottom:"1px solid ".concat((t.vars||t).palette.divider),backgroundClip:"padding-box"}},{props:{alignItems:"flex-start"},style:{alignItems:"flex-start"}},{props:e=>{let{ownerState:t}=e;return!t.disableGutters},style:{paddingLeft:16,paddingRight:16}},{props:e=>{let{ownerState:t}=e;return t.dense},style:{paddingTop:4,paddingBottom:4}}]}})),b=a.forwardRef(function(e,t){let r=(0,d.b)({props:e,name:"MuiListItemButton"}),{alignItems:i="center",autoFocus:s=!1,component:l="div",children:c,dense:p=!1,disableGutters:b=!1,divider:f=!1,focusVisibleClassName:h,selected:x=!1,className:I,...C}=r,S=a.useContext(g.A),R=a.useMemo(()=>({dense:p||S.dense||!1,alignItems:i,disableGutters:b}),[i,S.dense,p,b]),L=a.useRef(null);(0,u.A)(()=>{s&&L.current&&L.current.focus()},[s]);let k={...r,alignItems:i,dense:R.dense,disableGutters:b,divider:f,selected:x},M=(e=>{let{alignItems:t,classes:r,dense:a,disabled:o,disableGutters:i,divider:s,selected:l}=e,d=(0,n.A)({root:["root",a&&"dense",!i&&"gutters",s&&"divider",o&&"disabled","flex-start"===t&&"alignItemsFlexStart",l&&"selected"]},v.Y,r);return{...r,...d}})(k),w=(0,m.A)(L,t);return(0,y.jsx)(g.A.Provider,{value:R,children:(0,y.jsx)(A,{ref:w,href:C.href||C.to,component:(C.href||C.to)&&"div"===l?"button":l,focusVisibleClassName:(0,o.A)(M.focusVisible,h),ownerState:k,className:(0,o.A)(M.root,I),...C,classes:M,children:c})})})},76530:(e,t,r)=>{r.d(t,{A:()=>n});var a=r(15485),o=r(95155);let n=(0,a.A)((0,o.jsx)("path",{d:"M17.65 6.35C16.2 4.9 14.21 4 12 4c-4.42 0-7.99 3.58-7.99 8s3.57 8 7.99 8c3.73 0 6.84-2.55 7.73-6h-2.08c-.82 2.33-3.04 4-5.65 4-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4z"}),"Refresh")}}]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8650],{1877:(e,t,r)=>{r.d(t,{Hm:()=>i,xc:()=>o,yo:()=>a});let n=["key","secret","token","password"],o=e=>n.some(t=>e.toLowerCase().includes(t)),i=e=>o(e)||"authorization"===e.trim().toLowerCase(),a=e=>{if(!e)return e;if(e.includes("_-_-_")){let t=e.split("_-_-_");return 3===t.length?t[2]:e}let t=/^mcp_(.+)_[0-9a-z]+$/.exec(e);if(t&&t[1])return t[1];let r=e.indexOf("__");return r>0&&r+2<e.length?e.slice(r+2):e}},9164:(e,t,r)=>{r.r(t),r.d(t,{StorageProvider:()=>p,default:()=>f,useStorage:()=>d});var n=r(95155),o=r(12115),i=r(29692),a=r(1877),s=r(87021),l=r(31373);let c=(0,s.h)("frontend/contexts/StorageContext"),u=(0,o.createContext)({setKey:async()=>{},changeKey:async()=>!1,verifyKey:async()=>!1,isEncryptionInitialized:async()=>!1,globalEnvVars:{},setGlobalEnvVars:async()=>{},deleteGlobalEnvVar:async()=>{},encryptValue:async()=>null,decryptValue:async()=>null,isUserEncryptionEnabled:async()=>!1,isLoading:!0,settings:{speech:{enabled:!0},update:{checkOnStartup:!1}},settingsHydrated:!1,updateSettings:async()=>{}}),d=()=>(0,o.useContext)(u),p=e=>{let{children:t}=e,[r,s]=(0,o.useState)(!1),[d,p]=(0,o.useState)(!1),[f,h]=(0,o.useState)({}),[y,m]=(0,o.useState)({speech:{enabled:!0},update:{checkOnStartup:!1}}),g=(0,o.useCallback)(async()=>{c.debug("isEncryptionInitialized: Entering method");try{let e=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"check_initialized"})});if(!e.ok)throw Error("Failed to check encryption status");let t=await e.json();return!0===t.initialized}catch(e){return c.warn("isEncryptionInitialized: Failed to check encryption status:",e),!1}},[]),v=(0,o.useCallback)(async e=>{c.debug("setKey: Entering method");try{if(!(await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"initialize",password:e})})).ok)throw Error("Failed to set encryption key")}catch(e){c.warn("setKey: Failed to set encryption key:",e)}},[]),w=(0,o.useCallback)(async(e,t)=>{c.debug("changeKey: Entering method");try{let r=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"change_password",oldPassword:e,newPassword:t})});if(!r.ok)throw Error("Failed to change encryption key");let n=await r.json();if(n.success&&sessionStorage.getItem("encryption_token")){let e=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"authenticate",password:t})});if(e.ok){let t=await e.json();t.success&&t.token&&(sessionStorage.setItem("encryption_token",t.token),sessionStorage.setItem("encryption_authenticated","true"),sessionStorage.removeItem("encryption_key"))}}return!0===n.success}catch(e){return c.warn("changeKey: Failed to change encryption key:",e),!1}},[]),b=(0,o.useCallback)(async e=>{c.debug("verifyKey: Entering method");try{let t=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"verify_password",password:e})});if(!t.ok)throw Error("Failed to verify encryption key");let r=await t.json();return r.valid&&r.token&&(sessionStorage.setItem("encryption_token",r.token),sessionStorage.setItem("encryption_authenticated","true"),sessionStorage.removeItem("encryption_key")),!0===r.valid}catch(e){return c.warn("verifyKey: Failed to verify encryption key:",e),!1}},[]),x=(0,o.useCallback)(async()=>{let e={speech:{enabled:!0},update:{checkOnStartup:!1}};try{var t;let r=await fetch("/api/storage?key=".concat(encodeURIComponent(i.Zg.SPEECH_SETTINGS),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(e))));if(!r.ok)return void c.debug("loadSettings: settings read not ok, keeping defaults",{status:r.status});let n=await r.json();c.debug("Loaded settings from storage",{settings:n.value}),m(null!=(t=n.value)?t:e),p(!0)}catch(e){c.warn("loadSettings: failed to load settings:",e)}},[]);(0,o.useEffect)(()=>{let e=()=>{c.info("Encryption unlocked signal received; reloading settings"),x()};return window.addEventListener(l.ZB,e),()=>window.removeEventListener(l.ZB,e)},[x]),(0,o.useEffect)(()=>{(async()=>{c.debug("loadData: Entering method");try{c.info("Calling initialization API to verify storage");let e=await fetch("/api/init");if(e.ok)c.info("Storage initialization completed successfully");else{let t=await e.json();c.warn("Storage initialization warning:",t.error)}await g()||await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"initialize_default"})});let t=await fetch("/api/env?includeSecrets=false");if(t.ok){let e=await t.json();c.debug("Loaded environment variables",{count:Object.keys(e.variables||{}).length}),h(e.variables||{})}else c.error("loadData: Failed to load environment variables"),h({});await x(),s(!0)}catch(e){c.error("loadData: Error loading data:",e),s(!0)}})()},[g,x]);let E=(0,o.useCallback)(async(e,t)=>{c.debug("encryptValue: Entering method");try{let r=sessionStorage.getItem("encryption_token"),n=sessionStorage.getItem("encryption_key"),o={action:"encrypt",data:e};r?o.token=r:t?o.password=t:n&&(o.password=n);let i=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)});if(!i.ok)throw Error("Failed to encrypt value");return(await i.json()).result}catch(e){return c.warn("encryptValue: Failed to encrypt value:",e),null}},[]),C=(0,o.useCallback)(async(e,t)=>(c.debug("decryptValue: Entering method - THIS METHOD IS DEPRECATED"),c.warn("decryptValue: Frontend decryption is deprecated for security reasons"),null),[]),S=(0,o.useCallback)(async()=>{c.debug("isUserEncryptionEnabled: Entering method");try{let e=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"check_user_encryption"})});if(!e.ok)throw Error("Failed to check user encryption status");let t=await e.json();return!0===t.userEncryption}catch(e){return c.warn("isUserEncryptionEnabled: Failed to check user encryption status:",e),!1}},[]),k=(0,o.useCallback)(async e=>{c.debug("setGlobalEnvVars: Entering method");try{await g()||await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"initialize_default"})});let t=await fetch("/api/env",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"setAll",variables:e})});if(!t.ok){let e=await t.json();c.error("setGlobalEnvVars: Failed to set environment variables:",e.error);return}let r={};for(let[t,n]of Object.entries(e)){let e="object"==typeof n&&null!==n&&"value"in n?n.value:n,o="object"==typeof n&&null!==n&&"metadata"in n?n.metadata:{isSecret:(0,a.xc)(t)};o.isSecret?r[t]={value:"********",metadata:o}:r[t]={value:e,metadata:o}}h(r)}catch(e){c.error("setGlobalEnvVars: Error setting environment variables:",e)}},[g]),j=(0,o.useCallback)(async e=>{c.debug("deleteGlobalEnvVar: Deleting environment variable: ".concat(e));try{let t=await fetch("/api/env",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"delete",key:e})});if(!t.ok){let e=await t.json();c.error("deleteGlobalEnvVar: Failed to delete environment variable:",e.error);return}h(t=>{let r={...t};return delete r[e],r})}catch(e){c.error("deleteGlobalEnvVar: Error deleting environment variable:",e)}},[]),A=(0,o.useCallback)(async e=>{c.debug("updateSettings: Updating settings",{newSettings:e});try{await (0,i.VH)(i.Zg.SPEECH_SETTINGS,e),m(e)}catch(e){c.error("updateSettings: Error updating settings:",e)}},[]);return(0,n.jsx)(u.Provider,{value:{setKey:v,changeKey:w,verifyKey:b,isEncryptionInitialized:g,globalEnvVars:f,setGlobalEnvVars:k,deleteGlobalEnvVar:j,encryptValue:E,decryptValue:C,isUserEncryptionEnabled:S,isLoading:!r,settings:y,settingsHydrated:d,updateSettings:A},children:t})},f=u},23731:(e,t,r)=>{r.d(t,{uJ:()=>A,Ay:()=>F,Yw:()=>T});var n=r(95155),o=r(12115),i=r(33567),a=r(94049),s=r(4474),l=r(25635),c=r(22003),u=r(78470),d=r(91871),p=r(50430),f=r(26188),h=r(38952),y=r(63186),m=r(62962),g=r(39486),v=r(82446),w=r(9127),b=r(17897),x=r(41080);let E=(0,r(87021).h)("frontend/components/Chat/McpAppFrame"),C={name:"FLUJO",version:"3.34.0"},S=new Set(["https:","http:"]),k=["inline","fullscreen","pip"],j=new Set(["text"]),A=262144;function T(e){try{return new TextEncoder().encode(JSON.stringify(e)).length}catch(e){return 1/0}}let R=null;async function P(){return R||(R=fetch("/api/mcp/app-sandbox").then(async e=>{if(!e.ok)throw Error("Sandbox endpoint discovery failed (".concat(e.status,")"));return await e.json()}).catch(e=>{throw R=null,e})),function(e,t){let r;if("string"!=typeof e.token||0===e.token.length)throw Error("Sandbox endpoint discovery returned invalid credentials");if(void 0!==e.url){if("string"!=typeof e.url)throw Error("Sandbox endpoint discovery returned an invalid public URL");try{r=new URL(e.url)}catch(e){throw Error("Sandbox endpoint discovery returned an invalid public URL")}if("http:"!==r.protocol&&"https:"!==r.protocol||r.username||r.password)throw Error("Sandbox public URL must be an absolute HTTP(S) URL without credentials");if("https:"===t.protocol&&"https:"!==r.protocol)throw Error("HTTPS FLUJO deployments require an HTTPS MCP Apps sandbox URL")}else{if("http:"!==t.protocol)throw Error("MCP Apps on HTTPS require FLUJO_MCP_APP_SANDBOX_PUBLIC_URL to be configured");if(!Number.isInteger(e.port)||e.port<1||e.port>65535)throw Error("Sandbox endpoint discovery returned an invalid port");(r=new URL("/sandbox.html",t.origin)).port=String(e.port)}if(r.origin===t.origin)throw Error("MCP Apps sandbox must use a distinct origin from FLUJO");return r.searchParams.set("token",e.token),r.href}(await R,window.location)}function M(e,t){let r=[],n=new Set;for(let o of null!=e?e:[]){if(0===o.length||o.length>2048||/[^\x21-\x7e]/.test(o))continue;let e=/^(https|wss):\/\/(\*\.)?([^/:?#]+)(?::(\d{1,5}))?$/i.exec(o);if(!e||!t.includes(e[1].toLowerCase()))continue;let i=e[3].split(".");if(e[3].length>253||i.some(e=>0===e.length||e.length>63||!/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i.test(e)))continue;let a=e[4]?Number(e[4]):void 0;if(void 0!==a&&(!Number.isInteger(a)||a<1||a>65535))continue;let s=o.toLowerCase();if(!n.has(s)&&(n.add(s),r.push(o),r.length>=64))break}return r}function O(e){if(e)try{return JSON.parse(e)}catch(e){return}}async function L(e,t,r,n){let o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:void 0;if(await e.sendToolInput({arguments:function(e){let t=O(e);return t&&"object"==typeof t&&!Array.isArray(t)?t:{}}(t)}),void 0!==n)return void await e.sendToolCancelled({reason:n});let i=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;if(void 0===e)return!0===t?{content:[],isError:!0}:null;let r=O(e);return r&&"object"==typeof r&&Array.isArray(r.content)?{...r,...!0===t?{isError:!0}:{}}:{content:[{type:"text",text:e}],...!0===t?{isError:!0}:{}}}(r,o);i&&await e.sendToolResult(i)}function _(e,t,r){return t.includes(e)&&r.includes(e)}function I(e,t){let r=e.getBoundingClientRect(),n=Math.max(1,Math.round(r.width||e.clientWidth||1));return t?{width:n,height:Math.max(1,Math.round(r.height||e.clientHeight||1))}:{width:n,maxHeight:6e3}}async function U(e,t,r){try{let n=await b.S.listServerTools(e),o=Array.isArray(n.tools)?n.tools:[],i=r?o.find(e=>(null==e?void 0:e.name)===r):o.find(e=>(0,x.Gt)(null==e?void 0:e._meta)===t);if((null==i?void 0:i.name)&&(null==i?void 0:i.inputSchema)&&(0,x.Gt)(i._meta)===t)return{tool:i}}catch(e){E.debug("Could not resolve the full MCP App tool definition",e)}}let F=e=>{let{serverName:t,uri:r,toolName:R,toolArgs:O,toolResultContent:F,toolUpdateId:z,toolCancelledReason:N,toolIsError:H,onAppMessage:D,onUpdateModelContext:J,onRequestDock:V,onDockable:G,onAvailableDisplayModes:B,hostDisplayMode:K,onRequestDisplayMode:W,onRequestClose:q,onRegisterTeardown:Z,teardownRegistrationKey:$,docked:X=!1,visible:Y=!0}=e,Q=(0,i.A)(),[ee,et]=(0,o.useState)(!1),[er,en]=(0,o.useState)(!1),[eo,ei]=(0,o.useState)(null),[ea,es]=(0,o.useState)(X?"pip":"inline"),[el,ec]=(0,o.useState)([]),eu=null!=K?K:ea,ed=(0,o.useMemo)(()=>X?["pip","fullscreen"]:["inline","fullscreen",...V?["pip"]:[]],[X,V]),ep=(0,o.useRef)(null),ef=(0,o.useRef)(null),eh=(0,o.useRef)(null),ey=(0,o.useRef)(!1),em=(0,o.useRef)(0),eg=(0,o.useRef)(!1),ev=(0,o.useRef)(null),ew=(0,o.useRef)(null),eb=(0,o.useRef)(!1),ex=(0,o.useRef)(!0),eE=(0,o.useRef)([]),eC=(0,o.useRef)(eu),eS=(0,o.useRef)(ed),ek=(0,o.useRef)(Promise.resolve()),ej=(0,o.useRef)(void 0),eA=(0,o.useRef)({args:O,resultContent:F,cancelledReason:N,isError:H,updateId:z});eA.current={args:O,resultContent:F,cancelledReason:N,isError:H,updateId:z};let eT=(0,o.useRef)(D);(0,o.useEffect)(()=>{eT.current=D},[D]);let eR=(0,o.useRef)(J);(0,o.useEffect)(()=>{eR.current=J},[J]);let eP=(0,o.useRef)(V);(0,o.useEffect)(()=>{eP.current=V},[V]);let eM=(0,o.useRef)(G);(0,o.useEffect)(()=>{eM.current=G},[G]);let eO=(0,o.useRef)(B);(0,o.useEffect)(()=>{eO.current=B},[B]);let eL=(0,o.useRef)(W);(0,o.useEffect)(()=>{eL.current=W},[W]);let e_=(0,o.useRef)(q);(0,o.useEffect)(()=>{e_.current=q},[q]);let eI=(0,o.useRef)(X);(0,o.useEffect)(()=>{eI.current=X},[X]),(0,o.useEffect)(()=>{eC.current=eu},[eu]),(0,o.useEffect)(()=>{eS.current=ed},[ed]);let eU=(0,o.useCallback)(()=>{var e;if(ew.current)return ew.current;em.current+=1;let t=eh.current,r=ef.current,n=eg.current;eh.current=null,ef.current=null,eg.current=!1,ey.current=!1,eE.current=[],null==(e=ev.current)||e.disconnect(),ev.current=null;let o=(async()=>{if(t&&n){let e;try{await Promise.race([t.teardownResource({},{timeout:1e3}),new Promise(t=>{e=setTimeout(t,1e3)})])}catch(e){E.debug("MCP App did not acknowledge resource teardown",e)}finally{e&&clearTimeout(e)}}try{await (null==t?void 0:t.close())}catch(e){}null==r||r.remove()})();return ew.current=o,o.finally(()=>{ew.current===o&&(ew.current=null)}),o},[]),eF=(0,o.useCallback)(()=>{!eb.current&&eP.current&&(eb.current=!0,eU().then(()=>{var e;ex.current&&(null==(e=eP.current)||e.call(eP),et(!1))}).finally(()=>{eb.current=!1}))},[eU]),ez=(0,o.useCallback)((e,t,r,n,o)=>{ek.current=ek.current.catch(()=>void 0).then(async()=>{eh.current===e&&eg.current&&await L(e,t,r,n,o)}).catch(e=>{E.warn("MCP App tool delivery failed",e)})},[]),eN=(0,o.useCallback)(async()=>{if(ew.current&&await ew.current,ey.current||!ep.current)return;let e=em.current+1;em.current=e;let n=()=>em.current===e&&ey.current;ey.current=!0,ec([]),en(!0),ei(null);try{var o,i,a;let s,[l,c]=await Promise.all([b.S.readResourceFromApp(t,r),U(t,r,R)]);if(!n())return;if((null==l?void 0:l.httpStatus)===403)throw Error((null==l?void 0:l.error)||"MCP Apps access was disabled for this server");if(!l||!1===l.success)throw Error((null==l?void 0:l.error)||"Failed to read the UI resource.");let u=function(e,t){var r,n,o;let i,a=null==e?void 0:e.contents;if(!Array.isArray(a)||0===a.length)throw Error("Resource has no contents");let s=a.find(e=>e.uri===t&&"string"==typeof e.mimeType&&(0,x.q$)(e.mimeType)&&("string"==typeof e.text||"string"==typeof e.blob));if(!s)throw Error("Resource ".concat(t," did not return MCP App HTML"));try{i="string"==typeof s.text?s.text:function(e){let t=Uint8Array.from(atob(e),e=>e.charCodeAt(0));return new TextDecoder("utf-8",{fatal:!0}).decode(t)}(s.blob)}catch(e){throw Error("Resource ".concat(t," contains invalid base64 UTF-8 HTML"))}if(new TextEncoder().encode(i).length>x.Pt)throw Error("Resource exceeds the ".concat(Math.round(x.Pt/1024)," KiB size cap"));let l=null==(r=null!=(n=s._meta)?n:s.meta)?void 0:r.ui,c=w.c0.safeParse(null==l?void 0:l.csp);if((null==l?void 0:l.csp)!==void 0&&!c.success)throw Error("Resource ".concat(t," declares an invalid CSP policy"));let u=w.Ml.safeParse(null==l?void 0:l.permissions);if((null==l?void 0:l.permissions)!==void 0&&!u.success)throw Error("Resource ".concat(t," declares invalid sandbox permissions"));return{html:i,csp:c.success?{connectDomains:M((o=c.data).connectDomains,["https","wss"]),resourceDomains:M(o.resourceDomains,["https"]),frameDomains:M(o.frameDomains,["https"]),baseUriDomains:M(o.baseUriDomains,["https"])}:void 0,permissions:u.success&&u.data.clipboardWrite?{clipboardWrite:{}}:void 0}}(l.data,r),d=await P();if(!n()||!ep.current)return;let p=document.createElement("iframe");p.title="MCP App: ".concat(r),p.setAttribute("sandbox","allow-scripts allow-same-origin"),p.referrerPolicy="origin";let f=(0,w.Sy)(u.permissions);f&&p.setAttribute("allow",f),p.style.cssText=eI.current?"width:100%;height:100%;border:none;background:#fff;":"width:100%;min-height:120px;height:200px;border:none;border-radius:4px;background:#fff;",ep.current.appendChild(p),ef.current=p;let h=new URL(d);u.csp&&h.searchParams.set("csp",JSON.stringify(u.csp));let y=h.origin,m=new Promise((e,t)=>{let r=setTimeout(()=>{window.removeEventListener("message",n),t(Error("Timed out waiting for the sandbox proxy."))},1e4),n=t=>{var o,i;t.source===p.contentWindow&&t.origin===y&&(null==(o=t.data)?void 0:o.jsonrpc)==="2.0"&&(null==(i=t.data)?void 0:i.method)==="ui/notifications/sandbox-proxy-ready"&&(clearTimeout(r),window.removeEventListener("message",n),e())};window.addEventListener("message",n)});if(p.src=h.href,await m,!n()||ef.current!==p)return;let g=eC.current,v="inline";eC.current=v,s=new w.T1(function(e,t){return{getServerCapabilities:()=>({tools:{},resources:{}}),setNotificationHandler:()=>{},request:async(r,n,o)=>{let{method:i,params:a}=r;if("tools/call"===i){var s;E.info("MCP App tools/call: ".concat(e,"/").concat(null==a?void 0:a.name));let r=await b.S.callToolFromApp(e,a.name,null!=(s=a.arguments)?s:{},void 0,null==o?void 0:o.signal);if((null==r?void 0:r.httpStatus)===403){let e=(null==r?void 0:r.error)||"MCP Apps access was disabled for this server";throw t(e),Error(e)}if(!r||!1===r.success)throw Error((null==r?void 0:r.error)||"Tool call failed: ".concat(null==a?void 0:a.name));return r.data}if("resources/read"===i){let r=await b.S.readResourceFromApp(e,a.uri);if((null==r?void 0:r.httpStatus)===403){let e=(null==r?void 0:r.error)||"MCP Apps access was disabled for this server";throw t(e),Error(e)}if(!r||!1===r.success)throw Error((null==r?void 0:r.error)||"Resource read failed: ".concat(null==a?void 0:a.uri));return r.data}if("resources/list"===i)return{resources:[]};if("resources/templates/list"===i)return{resourceTemplates:[]};throw Error("MCP App requested unsupported method: ".concat(i))}}}(t,t=>{em.current===e&&eh.current===s&&(ei(t),en(!1),eU())}),C,{openLinks:{},serverTools:{},serverResources:{},logging:{},...eT.current?{message:{text:{}}}:{},...eR.current?{updateModelContext:{text:{},structuredContent:{}}}:{},sandbox:{csp:u.csp,permissions:u.permissions}},{hostContext:{...c?{toolInfo:c}:{},theme:"dark"===Q.palette.mode?"dark":"light",platform:"web",displayMode:v,availableDisplayModes:eS.current,containerDimensions:I(ep.current,eI.current),locale:navigator.language,timeZone:Intl.DateTimeFormat().resolvedOptions().timeZone,userAgent:navigator.userAgent,deviceCapabilities:{touch:navigator.maxTouchPoints>0,hover:null!=(a=null==(o=(i=window).matchMedia)?void 0:o.call(i,"(hover: hover)").matches)&&a}}}),eh.current=s;let O=()=>n()&&eh.current===s;if(s.onopenlink=async e=>{let{url:n}=e;if(!O())return{isError:!0};let o=function(e){try{let t=new URL(e);if(!S.has(t.protocol)||t.username||t.password)return null;return t.href}catch(e){return null}}(n);if(!o)return E.warn("MCP App open-link rejected by URL policy",{serverName:t,uri:r}),{isError:!0};let i=window.open(o,"_blank","noopener,noreferrer");return i?(i.opener=null,{}):{isError:!0}},s.ondownloadfile=async e=>{let{contents:t}=e;if(!O())return{isError:!0};try{for(let e of null!=t?t:[]){let t,n=null==e?void 0:e.resource;if(!n)continue;let o=("string"==typeof n.uri?n.uri.split("/").pop():"")||"download",i="string"==typeof n.mimeType?n.mimeType:"application/octet-stream";if("string"==typeof n.blob){let e=Uint8Array.from(atob(n.blob),e=>e.charCodeAt(0));t=new Blob([e],{type:i})}else{var r;t=new Blob([String(null!=(r=n.text)?r:"")],{type:i})}let a=URL.createObjectURL(t),s=document.createElement("a");s.href=a,s.download=o,document.body.appendChild(s),s.click(),s.remove(),setTimeout(()=>URL.revokeObjectURL(a),4e3)}return{}}catch(e){return E.warn("MCP App download failed",e),{isError:!0}}},s.onloggingmessage=e=>{O()&&E.debug("MCP App log",null==e?void 0:e.data)},s.onmessage=async e=>{if(!O())return{};if(!eT.current)throw Error("This host cannot deliver ui/message in this surface");let t=function(e){if((null==e?void 0:e.role)!=="user")throw Error('This host accepts ui/message only with role "user"');let t=null==e?void 0:e.content,r=Array.isArray(t)?t:t&&"object"==typeof t?[t]:[];if(0===r.length||r.some(e=>(null==e?void 0:e.type)!=="text"||"string"!=typeof e.text))throw Error("This host accepts text-only ui/message content");let n=r.map(e=>e.text).join("\n").trim();if(!n)throw Error("ui/message text must not be empty");return n}(e);if(!await eT.current(t))throw Error("ui/message was not delivered");return{}},s.onupdatemodelcontext=async e=>{if(!O())return{};let n=function(e){if(!e||"object"!=typeof e||Array.isArray(e))return"ui/update-model-context params must be an object";if(void 0!==e.content){if(!Array.isArray(e.content))return"Model context content must be an array";for(let t of e.content)if(!t||"object"!=typeof t||Array.isArray(t)||!j.has(t.type))return"Model context contains a modality this host did not advertise"}return void 0!==e.structuredContent&&(!e.structuredContent||"object"!=typeof e.structuredContent||Array.isArray(e.structuredContent))?"Model structuredContent must be an object":T(e)>A?"Model context exceeds ".concat(A," bytes"):null}(e);if(n)throw Error(n);let o="".concat(t,"::").concat(r);if(!eR.current)throw Error("This host cannot preserve model context in this surface");if(!await eR.current(o,e))throw Error("MCP App model context was not stored");return{}},s.onsizechange=async e=>{var t,r;let{width:n,height:o}=e;if(!O()||eI.current)return;let i=(null==(t=ep.current)?void 0:t.getBoundingClientRect().width)||(null==(r=ep.current)?void 0:r.clientWidth)||0,a=function(e,t){let r={};if(Number.isFinite(e.width)&&e.width>0){let n=Number.isFinite(t)&&t>0?t:6e3;r.width=Math.min(e.width,n,6e3)}return Number.isFinite(e.height)&&e.height>0&&(r.height=Math.min(e.height,6e3)),r}({width:n,height:o},i);void 0!==a.height&&(p.style.height="".concat(a.height,"px")),void 0!==a.width&&(p.style.width="".concat(a.width,"px"),p.style.maxWidth="100%")},s.onrequestdisplaymode=async e=>{let{mode:t}=e;if(!O())return{mode:eC.current};let r=eC.current,n=eE.current;if(!_(t,eS.current,n))return{mode:r};if("pip"===t&&!eI.current&&eP.current)return setTimeout(eF,0),{mode:r};let o=r;return(o=eL.current?await eL.current(t,[...n]):t)===r||_(o,eS.current,n)||(o=r),o!==r&&(eC.current=o,es(o),await s.sendHostContextChange({displayMode:o})),{mode:o}},s.onrequestteardown=()=>{O()&&eU().finally(()=>{e_.current?e_.current():(eC.current="inline",es("inline"),et(!1))})},s.oninitialized=()=>{var e,t,r,n,o,i,a,l,c;if(!O())return;let u=null==(e=s.getAppCapabilities())?void 0:e.availableDisplayModes,d=Array.isArray(u)?[...new Set(u.filter(e=>k.includes(e)))]:[];eE.current=d,ec(d),null==(t=eM.current)||t.call(eM,d.includes("pip")),null==(r=eO.current)||r.call(eO,[...d]),eg.current=!0;let p=function(e,t,r,n){return t?_("pip",r,n)?"fullscreen"===e&&_("fullscreen",r,n)?"fullscreen":"pip":null:"fullscreen"===e&&_("fullscreen",r,n)?"fullscreen":"inline"}(g,eI.current,eS.current,d);if(null===p){ei("This app does not declare support for the canvas (pip) display mode."),en(!1),eU();return}eC.current=p,es(p),p!==v&&s.sendHostContextChange({displayMode:p});let f=ep.current;if(f&&"undefined"!=typeof ResizeObserver){let e=()=>{if(!O()||!eg.current)return;let e=f.getBoundingClientRect();e.width<=0||eI.current&&e.height<=0||s.sendHostContextChange({containerDimensions:I(f,eI.current)})};null==(n=ev.current)||n.disconnect(),ev.current=new ResizeObserver(e),ev.current.observe(f),e()}let h=eA.current;ej.current=null!=(c=h.updateId)?c:"".concat(null!=(o=h.args)?o:"","\0").concat(null!=(i=h.resultContent)?i:"","\0").concat(null!=(a=h.cancelledReason)?a:"","\0").concat(null!=(l=h.isError)?l:""),(void 0!==h.args||void 0!==h.resultContent||void 0!==h.cancelledReason||!0===h.isError)&&ez(s,h.args,h.resultContent,h.cancelledReason,h.isError),en(!1)},await s.connect(function(e,t){let r=new w.hJ(e,t),n={start:async()=>{r.onmessage=(e,t)=>{var r;null==(r=n.onmessage)||r.call(n,"ui/message"!==e.method||!e.params||Array.isArray(e.params.content)||!e.params.content||"object"!=typeof e.params.content?e:{...e,params:{...e.params,content:[e.params.content]}},t)},r.onerror=e=>{var t;return null==(t=n.onerror)?void 0:t.call(n,e)},r.onclose=()=>{var e;return null==(e=n.onclose)?void 0:e.call(n)},await r.start()},send:(e,t)=>r.send(e,t),close:()=>r.close(),setProtocolVersion:e=>{var t;return null==(t=r.setProtocolVersion)?void 0:t.call(r,e)}};return n}(p.contentWindow,p.contentWindow)),!O())return;await s.sendSandboxResourceReady({html:u.html,csp:u.csp,permissions:u.permissions})}catch(e){if(!n())return;E.warn("Failed to mount MCP App ".concat(r," from ").concat(t),e),ei(e instanceof Error?e.message:"Failed to load the app."),en(!1),eU()}},[eF,ez,t,eU,Q.palette.mode,R,r]),eH=(0,o.useCallback)(()=>{let e=!ee;if(!e&&"fullscreen"===eC.current){var t;eC.current="inline",es("inline"),null==(t=eh.current)||t.sendHostContextChange({displayMode:"inline"})}et(e),e&&setTimeout(()=>{eN()},0)},[ee,eN]);if((0,o.useEffect)(()=>{X&&!ey.current&&eN()},[X,eN]),(0,o.useEffect)(()=>{let e=null!=z?z:"".concat(null!=O?O:"","\0").concat(null!=F?F:"","\0").concat(null!=N?N:"","\0").concat(null!=H?H:"");eg.current&&eh.current&&e!==ej.current&&(ej.current=e,eU().then(()=>{ex.current&&(eI.current||ee)&&eN()}))},[ee,eN,eU,O,N,H,F,z]),(0,o.useEffect)(()=>{K&&eg.current&&eh.current&&eC.current!==K&&_(K,eS.current,eE.current)&&(eC.current=K,es(K),eh.current.sendHostContextChange({displayMode:K}))},[K]),(0,o.useEffect)(()=>{var e;eg.current&&eh.current&&(null==(e=eh.current)||e.sendHostContextChange({theme:"dark"===Q.palette.mode?"dark":"light"}))},[Q.palette.mode]),(0,o.useEffect)(()=>{let e=null!=$?$:"".concat(t,"::").concat(r);return null==Z||Z(e,eU),()=>null==Z?void 0:Z(e,null)},[Z,t,eU,$,r]),(0,o.useEffect)(()=>{let e=e=>{var r,n;let o=e.detail;(null==o?void 0:o.serverName)===t&&((null==(r=o.config)?void 0:r.enableMcpApps)===!1||(null==(n=o.config)?void 0:n.disabled)===!0)&&(ei("MCP Apps access was disabled for this server."),en(!1),eU().finally(()=>{var e;eI.current&&(null==(e=e_.current)||e.call(e_))}))};return window.addEventListener("flujo:mcp-server-config-changed",e),()=>{window.removeEventListener("flujo:mcp-server-config-changed",e)}},[t,eU]),(0,o.useEffect)(()=>(ex.current=!0,()=>{ex.current=!1,eU()}),[eU]),X)return(0,n.jsxs)(a.default,{sx:{height:"100%",width:"100%",minHeight:0,display:"flex",visibility:Y?"visible":"hidden",pointerEvents:Y?"auto":"none",flexDirection:"column"},children:[er&&(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1,py:2,justifyContent:"center"},children:[(0,n.jsx)(s.default,{size:16,thickness:6}),(0,n.jsx)(l.default,{variant:"body2",color:"text.secondary",children:"Loading the app…"})]}),eo&&(0,n.jsx)(c.A,{severity:"error",sx:{m:1},children:eo}),(0,n.jsx)(a.default,{ref:ep,sx:{flex:1,minHeight:0,width:"100%",display:eo?"none":"block"}})]});let eD=el.includes("inline")&&el.includes("fullscreen")&&ed.includes("fullscreen"),eJ=el.includes("inline")&&el.includes("pip")&&ed.includes("pip")&&!!V;return(0,n.jsxs)(a.default,{sx:{mt:1,border:"1px solid",borderColor:"divider",borderRadius:1,overflow:"hidden",..."fullscreen"===ea?{position:"fixed",inset:16,zIndex:1300,bgcolor:"background.paper",boxShadow:6}:{}},children:[(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1,px:1,py:.5,bgcolor:"action.hover"},children:[(0,n.jsx)(f.A,{fontSize:"small",color:"primary"}),(0,n.jsxs)(l.default,{variant:"body2",sx:{fontWeight:500},children:["Interactive app from ",t]}),(0,n.jsx)(u.A,{title:"Runs in a separate-origin sandbox (no access to FLUJO's origin, cookies, storage, or DOM). Its tool calls are brokered through this server only.",children:(0,n.jsx)(h.A,{fontSize:"small",color:"action"})}),(0,n.jsx)(a.default,{sx:{flex:1}}),ee&&eJ&&(0,n.jsx)(d.A,{size:"small",onClick:eF,children:"Canvas"}),ee&&(0,n.jsx)(u.A,{title:eD?"fullscreen"===ea?"Exit fullscreen":"Fullscreen":"This app did not declare inline and fullscreen support",children:(0,n.jsx)("span",{children:(0,n.jsx)(d.A,{size:"small",disabled:!eD,onClick:()=>{var e;let t="fullscreen"===ea?"inline":"fullscreen";_(t,ed,el)&&(eC.current=t,es(t),null==(e=eh.current)||e.sendHostContextChange({displayMode:t}))},sx:{minWidth:0},children:"fullscreen"===ea?(0,n.jsx)(v.A,{fontSize:"small"}):(0,n.jsx)(g.A,{fontSize:"small"})})})}),(0,n.jsx)(d.A,{size:"small",onClick:eH,startIcon:ee?(0,n.jsx)(m.A,{}):(0,n.jsx)(y.A,{}),children:ee?"Hide":"Open app"})]}),(0,n.jsx)(p.A,{in:ee,onExited:()=>{eU()},children:(0,n.jsxs)(a.default,{sx:{p:1,height:"fullscreen"===ea?"calc(100vh - 100px)":"auto"},children:[er&&(0,n.jsxs)(a.default,{sx:{display:"flex",alignItems:"center",gap:1,py:2,justifyContent:"center"},children:[(0,n.jsx)(s.default,{size:16,thickness:6}),(0,n.jsx)(l.default,{variant:"body2",color:"text.secondary",children:"Loading the app…"})]}),eo&&(0,n.jsx)(c.A,{severity:"error",sx:{my:1},children:eo}),(0,n.jsx)(a.default,{ref:ep,sx:{width:"100%",height:"fullscreen"===ea?"100%":"auto",display:eo?"none":"block"}})]})})]})}},31373:(e,t,r)=>{r.d(t,{UJ:()=>n,ZB:()=>o,bx:()=>a});let n="flujo:encryption-locked",o="flujo:encryption-unlocked",i=!1;function a(){if(i||"function"!=typeof window.fetch)return;i=!0;let e=window.fetch.bind(window);window.fetch=async function(){for(var t=arguments.length,r=Array(t),o=0;o<t;o++)r[o]=arguments[o];let i=await e(...r);return 423===i.status&&function(){try{sessionStorage.removeItem("encryption_authenticated"),sessionStorage.removeItem("encryption_token")}catch(e){}window.dispatchEvent(new CustomEvent(n))}(),i}}},41080:(e,t,r)=>{r.d(t,{Gt:()=>s,Pt:()=>o,q$:()=>a}),r(81029).hp;let n="ui://",o=2097152;function i(e){return"string"==typeof e&&e.length>n.length&&e.slice(0,n.length).toLowerCase()===n&&!/\s/.test(e)}function a(e){if("string"!=typeof e)return!1;let[t,...r]=e.toLowerCase().split(";");if("text/html"!==t.trim())return!1;let n=!1;for(let e of r){let t=e.indexOf("=");if(t<=0)return!1;let r=e.slice(0,t).trim(),o=e.slice(t+1).trim();if(!r||!o)return!1;if("profile"===r){if(n||"mcp-app"!==o)return!1;n=!0}}return n}function s(e){if(!e||"object"!=typeof e)return;let t=e["ui/resourceUri"];if(i(t))return t;for(let t of[e.ui,e["io.modelcontextprotocol/ui"]])if(t&&"object"==typeof t){let e=t.resourceUri;if(i(e))return e}}}}]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9164],{1877:(e,t,n)=>{n.d(t,{Hm:()=>o,xc:()=>r,yo:()=>i});let a=["key","secret","token","password"],r=e=>a.some(t=>e.toLowerCase().includes(t)),o=e=>r(e)||"authorization"===e.trim().toLowerCase(),i=e=>{if(!e)return e;if(e.includes("_-_-_")){let t=e.split("_-_-_");return 3===t.length?t[2]:e}let t=/^mcp_(.+)_[0-9a-z]+$/.exec(e);if(t&&t[1])return t[1];let n=e.indexOf("__");return n>0&&n+2<e.length?e.slice(n+2):e}},9164:(e,t,n)=>{n.r(t),n.d(t,{StorageProvider:()=>u,default:()=>p,useStorage:()=>y});var a=n(95155),r=n(12115),o=n(29692),i=n(1877),s=n(87021),c=n(31373);let l=(0,s.h)("frontend/contexts/StorageContext"),d=(0,r.createContext)({setKey:async()=>{},changeKey:async()=>!1,verifyKey:async()=>!1,isEncryptionInitialized:async()=>!1,globalEnvVars:{},setGlobalEnvVars:async()=>{},deleteGlobalEnvVar:async()=>{},encryptValue:async()=>null,decryptValue:async()=>null,isUserEncryptionEnabled:async()=>!1,isLoading:!0,settings:{speech:{enabled:!0},update:{checkOnStartup:!1}},settingsHydrated:!1,updateSettings:async()=>{}}),y=()=>(0,r.useContext)(d),u=e=>{let{children:t}=e,[n,s]=(0,r.useState)(!1),[y,u]=(0,r.useState)(!1),[p,g]=(0,r.useState)({}),[h,f]=(0,r.useState)({speech:{enabled:!0},update:{checkOnStartup:!1}}),E=(0,r.useCallback)(async()=>{l.debug("isEncryptionInitialized: Entering method");try{let e=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"check_initialized"})});if(!e.ok)throw Error("Failed to check encryption status");let t=await e.json();return!0===t.initialized}catch(e){return l.warn("isEncryptionInitialized: Failed to check encryption status:",e),!1}},[]),S=(0,r.useCallback)(async e=>{l.debug("setKey: Entering method");try{if(!(await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"initialize",password:e})})).ok)throw Error("Failed to set encryption key")}catch(e){l.warn("setKey: Failed to set encryption key:",e)}},[]),_=(0,r.useCallback)(async(e,t)=>{l.debug("changeKey: Entering method");try{let n=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"change_password",oldPassword:e,newPassword:t})});if(!n.ok)throw Error("Failed to change encryption key");let a=await n.json();if(a.success&&sessionStorage.getItem("encryption_token")){let e=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"authenticate",password:t})});if(e.ok){let t=await e.json();t.success&&t.token&&(sessionStorage.setItem("encryption_token",t.token),sessionStorage.setItem("encryption_authenticated","true"),sessionStorage.removeItem("encryption_key"))}}return!0===a.success}catch(e){return l.warn("changeKey: Failed to change encryption key:",e),!1}},[]),w=(0,r.useCallback)(async e=>{l.debug("verifyKey: Entering method");try{let t=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"verify_password",password:e})});if(!t.ok)throw Error("Failed to verify encryption key");let n=await t.json();return n.valid&&n.token&&(sessionStorage.setItem("encryption_token",n.token),sessionStorage.setItem("encryption_authenticated","true"),sessionStorage.removeItem("encryption_key")),!0===n.valid}catch(e){return l.warn("verifyKey: Failed to verify encryption key:",e),!1}},[]),v=(0,r.useCallback)(async()=>{let e={speech:{enabled:!0},update:{checkOnStartup:!1}};try{var t;let n=await fetch("/api/storage?key=".concat(encodeURIComponent(o.Zg.SPEECH_SETTINGS),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(e))));if(!n.ok)return void l.debug("loadSettings: settings read not ok, keeping defaults",{status:n.status});let a=await n.json();l.debug("Loaded settings from storage",{settings:a.value}),f(null!=(t=a.value)?t:e),u(!0)}catch(e){l.warn("loadSettings: failed to load settings:",e)}},[]);(0,r.useEffect)(()=>{let e=()=>{l.info("Encryption unlocked signal received; reloading settings"),v()};return window.addEventListener(c.ZB,e),()=>window.removeEventListener(c.ZB,e)},[v]),(0,r.useEffect)(()=>{(async()=>{l.debug("loadData: Entering method");try{l.info("Calling initialization API to verify storage");let e=await fetch("/api/init");if(e.ok)l.info("Storage initialization completed successfully");else{let t=await e.json();l.warn("Storage initialization warning:",t.error)}await E()||await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"initialize_default"})});let t=await fetch("/api/env?includeSecrets=false");if(t.ok){let e=await t.json();l.debug("Loaded environment variables",{count:Object.keys(e.variables||{}).length}),g(e.variables||{})}else l.error("loadData: Failed to load environment variables"),g({});await v(),s(!0)}catch(e){l.error("loadData: Error loading data:",e),s(!0)}})()},[E,v]);let b=(0,r.useCallback)(async(e,t)=>{l.debug("encryptValue: Entering method");try{let n=sessionStorage.getItem("encryption_token"),a=sessionStorage.getItem("encryption_key"),r={action:"encrypt",data:e};n?r.token=n:t?r.password=t:a&&(r.password=a);let o=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!o.ok)throw Error("Failed to encrypt value");return(await o.json()).result}catch(e){return l.warn("encryptValue: Failed to encrypt value:",e),null}},[]),k=(0,r.useCallback)(async(e,t)=>(l.debug("decryptValue: Entering method - THIS METHOD IS DEPRECATED"),l.warn("decryptValue: Frontend decryption is deprecated for security reasons"),null),[]),m=(0,r.useCallback)(async()=>{l.debug("isUserEncryptionEnabled: Entering method");try{let e=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"check_user_encryption"})});if(!e.ok)throw Error("Failed to check user encryption status");let t=await e.json();return!0===t.userEncryption}catch(e){return l.warn("isUserEncryptionEnabled: Failed to check user encryption status:",e),!1}},[]),T=(0,r.useCallback)(async e=>{l.debug("setGlobalEnvVars: Entering method");try{await E()||await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"initialize_default"})});let t=await fetch("/api/env",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"setAll",variables:e})});if(!t.ok){let e=await t.json();l.error("setGlobalEnvVars: Failed to set environment variables:",e.error);return}let n={};for(let[t,a]of Object.entries(e)){let e="object"==typeof a&&null!==a&&"value"in a?a.value:a,r="object"==typeof a&&null!==a&&"metadata"in a?a.metadata:{isSecret:(0,i.xc)(t)};r.isSecret?n[t]={value:"********",metadata:r}:n[t]={value:e,metadata:r}}g(n)}catch(e){l.error("setGlobalEnvVars: Error setting environment variables:",e)}},[E]),C=(0,r.useCallback)(async e=>{l.debug("deleteGlobalEnvVar: Deleting environment variable: ".concat(e));try{let t=await fetch("/api/env",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"delete",key:e})});if(!t.ok){let e=await t.json();l.error("deleteGlobalEnvVar: Failed to delete environment variable:",e.error);return}g(t=>{let n={...t};return delete n[e],n})}catch(e){l.error("deleteGlobalEnvVar: Error deleting environment variable:",e)}},[]),O=(0,r.useCallback)(async e=>{l.debug("updateSettings: Updating settings",{newSettings:e});try{await (0,o.VH)(o.Zg.SPEECH_SETTINGS,e),f(e)}catch(e){l.error("updateSettings: Error updating settings:",e)}},[]);return(0,a.jsx)(d.Provider,{value:{setKey:S,changeKey:_,verifyKey:w,isEncryptionInitialized:E,globalEnvVars:p,setGlobalEnvVars:T,deleteGlobalEnvVar:C,encryptValue:b,decryptValue:k,isUserEncryptionEnabled:m,isLoading:!n,settings:h,settingsHydrated:y,updateSettings:O},children:t})},p=d},27156:(e,t,n)=>{n.d(t,{Z:()=>a});var a=function(e){return e.MODELS="models",e.FLOWS="flows",e.CHAT_HISTORY="history",e.THEME="theme",e.ENCRYPTION_KEY="encryption_key",e.MCP_SERVERS="mcp_servers",e.GLOBAL_ENV_VARS="global_env_vars",e.CURRENT_CONVERSATION_ID="current_conversation_id",e.SELECTED_FLOW_ID="selected_flow_id",e.LAST_PICKED_FLOW_ID="last_picked_flow_id",e.SPEECH_SETTINGS="speech_settings",e.SPOTLIGHT_SERVERS="spotlight_servers",e.PLANNED_EXECUTIONS="planned_executions",e.MCP_AUTO_INSTALL_SETTINGS="mcp_auto_install_settings",e.MCP_QUALITY_SETTINGS="mcp_quality_settings",e.RUN_RESOURCE_SETTINGS="run_resource_settings",e.KV_STORE_SETTINGS="kv_store_settings",e.PENDING_APPROVALS="pending_approvals",e.MCP_INTERNAL_OVERRIDES="mcp_internal_overrides",e.PACKAGE_INSTALLS="package_installs",e.EXPERIMENTAL_SETTINGS="experimental_settings",e.REGISTRY_ACCOUNT="registry_account",e.REGISTRY_SETTINGS="registry_settings",e}({})},29692:(e,t,n)=>{n.d(t,{Zg:()=>a.Z,YM:()=>c,VH:()=>s,Mj:()=>i});var a=n(27156),r=n(12115);let o=(0,n(87021).h)("utils/storage/frontend.ts");function i(e,t){o.verbose("useLocalStorage: Entering method");let[n,a]=(0,r.useState)(t),[i,s]=(0,r.useState)(!0),c=(0,r.useRef)(n);return(0,r.useEffect)(()=>{c.current=n},[n]),(0,r.useEffect)(()=>{(async()=>{o.verbose("loadValue: Entering method");try{let n=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t)))),r=await n.json();n.ok&&a(r.value)}catch(t){o.warn('Error reading storage key "'.concat(e,'":'),t)}finally{s(!1)}})()},[e]),[n,(0,r.useCallback)(async t=>{o.verbose("setValue: Entering method");try{let n=t instanceof Function?t(c.current):t;if(a(n),!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:n})})).ok)throw Error("Failed to save value")}catch(t){o.warn('Error setting storage key "'.concat(e,'":'),t)}},[e]),i]}let s=async(e,t)=>{o.verbose("saveItem: Entering method");try{if(!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:t})})).ok)throw Error("Failed to save item")}catch(e){throw o.error("Error saving to storage:",e),e}},c=async(e,t)=>{o.verbose("loadItem: Entering method");try{let n=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t))));if(!n.ok)throw Error("Failed to load item");return(await n.json()).value}catch(e){return o.error("Error loading from storage:",e),t}}},31373:(e,t,n)=>{n.d(t,{UJ:()=>a,ZB:()=>r,bx:()=>i});let a="flujo:encryption-locked",r="flujo:encryption-unlocked",o=!1;function i(){if(o||"function"!=typeof window.fetch)return;o=!0;let e=window.fetch.bind(window);window.fetch=async function(){for(var t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];let o=await e(...n);return 423===o.status&&function(){try{sessionStorage.removeItem("encryption_authenticated"),sessionStorage.removeItem("encryption_token")}catch(e){}window.dispatchEvent(new CustomEvent(a))}(),o}}}}]);
|
|
1
|
+
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[9164],{1877:(e,t,n)=>{n.d(t,{Hm:()=>o,xc:()=>r,yo:()=>i});let a=["key","secret","token","password"],r=e=>a.some(t=>e.toLowerCase().includes(t)),o=e=>r(e)||"authorization"===e.trim().toLowerCase(),i=e=>{if(!e)return e;if(e.includes("_-_-_")){let t=e.split("_-_-_");return 3===t.length?t[2]:e}let t=/^mcp_(.+)_[0-9a-z]+$/.exec(e);if(t&&t[1])return t[1];let n=e.indexOf("__");return n>0&&n+2<e.length?e.slice(n+2):e}},9164:(e,t,n)=>{n.r(t),n.d(t,{StorageProvider:()=>u,default:()=>p,useStorage:()=>y});var a=n(95155),r=n(12115),o=n(29692),i=n(1877),s=n(87021),c=n(31373);let l=(0,s.h)("frontend/contexts/StorageContext"),d=(0,r.createContext)({setKey:async()=>{},changeKey:async()=>!1,verifyKey:async()=>!1,isEncryptionInitialized:async()=>!1,globalEnvVars:{},setGlobalEnvVars:async()=>{},deleteGlobalEnvVar:async()=>{},encryptValue:async()=>null,decryptValue:async()=>null,isUserEncryptionEnabled:async()=>!1,isLoading:!0,settings:{speech:{enabled:!0},update:{checkOnStartup:!1}},settingsHydrated:!1,updateSettings:async()=>{}}),y=()=>(0,r.useContext)(d),u=e=>{let{children:t}=e,[n,s]=(0,r.useState)(!1),[y,u]=(0,r.useState)(!1),[p,g]=(0,r.useState)({}),[h,E]=(0,r.useState)({speech:{enabled:!0},update:{checkOnStartup:!1}}),f=(0,r.useCallback)(async()=>{l.debug("isEncryptionInitialized: Entering method");try{let e=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"check_initialized"})});if(!e.ok)throw Error("Failed to check encryption status");let t=await e.json();return!0===t.initialized}catch(e){return l.warn("isEncryptionInitialized: Failed to check encryption status:",e),!1}},[]),S=(0,r.useCallback)(async e=>{l.debug("setKey: Entering method");try{if(!(await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"initialize",password:e})})).ok)throw Error("Failed to set encryption key")}catch(e){l.warn("setKey: Failed to set encryption key:",e)}},[]),_=(0,r.useCallback)(async(e,t)=>{l.debug("changeKey: Entering method");try{let n=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"change_password",oldPassword:e,newPassword:t})});if(!n.ok)throw Error("Failed to change encryption key");let a=await n.json();if(a.success&&sessionStorage.getItem("encryption_token")){let e=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"authenticate",password:t})});if(e.ok){let t=await e.json();t.success&&t.token&&(sessionStorage.setItem("encryption_token",t.token),sessionStorage.setItem("encryption_authenticated","true"),sessionStorage.removeItem("encryption_key"))}}return!0===a.success}catch(e){return l.warn("changeKey: Failed to change encryption key:",e),!1}},[]),w=(0,r.useCallback)(async e=>{l.debug("verifyKey: Entering method");try{let t=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"verify_password",password:e})});if(!t.ok)throw Error("Failed to verify encryption key");let n=await t.json();return n.valid&&n.token&&(sessionStorage.setItem("encryption_token",n.token),sessionStorage.setItem("encryption_authenticated","true"),sessionStorage.removeItem("encryption_key")),!0===n.valid}catch(e){return l.warn("verifyKey: Failed to verify encryption key:",e),!1}},[]),v=(0,r.useCallback)(async()=>{let e={speech:{enabled:!0},update:{checkOnStartup:!1}};try{var t;let n=await fetch("/api/storage?key=".concat(encodeURIComponent(o.Zg.SPEECH_SETTINGS),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(e))));if(!n.ok)return void l.debug("loadSettings: settings read not ok, keeping defaults",{status:n.status});let a=await n.json();l.debug("Loaded settings from storage",{settings:a.value}),E(null!=(t=a.value)?t:e),u(!0)}catch(e){l.warn("loadSettings: failed to load settings:",e)}},[]);(0,r.useEffect)(()=>{let e=()=>{l.info("Encryption unlocked signal received; reloading settings"),v()};return window.addEventListener(c.ZB,e),()=>window.removeEventListener(c.ZB,e)},[v]),(0,r.useEffect)(()=>{(async()=>{l.debug("loadData: Entering method");try{l.info("Calling initialization API to verify storage");let e=await fetch("/api/init");if(e.ok)l.info("Storage initialization completed successfully");else{let t=await e.json();l.warn("Storage initialization warning:",t.error)}await f()||await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"initialize_default"})});let t=await fetch("/api/env?includeSecrets=false");if(t.ok){let e=await t.json();l.debug("Loaded environment variables",{count:Object.keys(e.variables||{}).length}),g(e.variables||{})}else l.error("loadData: Failed to load environment variables"),g({});await v(),s(!0)}catch(e){l.error("loadData: Error loading data:",e),s(!0)}})()},[f,v]);let b=(0,r.useCallback)(async(e,t)=>{l.debug("encryptValue: Entering method");try{let n=sessionStorage.getItem("encryption_token"),a=sessionStorage.getItem("encryption_key"),r={action:"encrypt",data:e};n?r.token=n:t?r.password=t:a&&(r.password=a);let o=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(r)});if(!o.ok)throw Error("Failed to encrypt value");return(await o.json()).result}catch(e){return l.warn("encryptValue: Failed to encrypt value:",e),null}},[]),m=(0,r.useCallback)(async(e,t)=>(l.debug("decryptValue: Entering method - THIS METHOD IS DEPRECATED"),l.warn("decryptValue: Frontend decryption is deprecated for security reasons"),null),[]),k=(0,r.useCallback)(async()=>{l.debug("isUserEncryptionEnabled: Entering method");try{let e=await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"check_user_encryption"})});if(!e.ok)throw Error("Failed to check user encryption status");let t=await e.json();return!0===t.userEncryption}catch(e){return l.warn("isUserEncryptionEnabled: Failed to check user encryption status:",e),!1}},[]),T=(0,r.useCallback)(async e=>{l.debug("setGlobalEnvVars: Entering method");try{await f()||await fetch("/api/encryption/secure",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"initialize_default"})});let t=await fetch("/api/env",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"setAll",variables:e})});if(!t.ok){let e=await t.json();l.error("setGlobalEnvVars: Failed to set environment variables:",e.error);return}let n={};for(let[t,a]of Object.entries(e)){let e="object"==typeof a&&null!==a&&"value"in a?a.value:a,r="object"==typeof a&&null!==a&&"metadata"in a?a.metadata:{isSecret:(0,i.xc)(t)};r.isSecret?n[t]={value:"********",metadata:r}:n[t]={value:e,metadata:r}}g(n)}catch(e){l.error("setGlobalEnvVars: Error setting environment variables:",e)}},[f]),C=(0,r.useCallback)(async e=>{l.debug("deleteGlobalEnvVar: Deleting environment variable: ".concat(e));try{let t=await fetch("/api/env",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({action:"delete",key:e})});if(!t.ok){let e=await t.json();l.error("deleteGlobalEnvVar: Failed to delete environment variable:",e.error);return}g(t=>{let n={...t};return delete n[e],n})}catch(e){l.error("deleteGlobalEnvVar: Error deleting environment variable:",e)}},[]),O=(0,r.useCallback)(async e=>{l.debug("updateSettings: Updating settings",{newSettings:e});try{await (0,o.VH)(o.Zg.SPEECH_SETTINGS,e),E(e)}catch(e){l.error("updateSettings: Error updating settings:",e)}},[]);return(0,a.jsx)(d.Provider,{value:{setKey:S,changeKey:_,verifyKey:w,isEncryptionInitialized:f,globalEnvVars:p,setGlobalEnvVars:T,deleteGlobalEnvVar:C,encryptValue:b,decryptValue:m,isUserEncryptionEnabled:k,isLoading:!n,settings:h,settingsHydrated:y,updateSettings:O},children:t})},p=d},27156:(e,t,n)=>{n.d(t,{Z:()=>a});var a=function(e){return e.MODELS="models",e.FLOWS="flows",e.CHAT_HISTORY="history",e.THEME="theme",e.ENCRYPTION_KEY="encryption_key",e.MCP_SERVERS="mcp_servers",e.GLOBAL_ENV_VARS="global_env_vars",e.CURRENT_CONVERSATION_ID="current_conversation_id",e.SELECTED_FLOW_ID="selected_flow_id",e.LAST_PICKED_FLOW_ID="last_picked_flow_id",e.SPEECH_SETTINGS="speech_settings",e.SPOTLIGHT_SERVERS="spotlight_servers",e.PLANNED_EXECUTIONS="planned_executions",e.MCP_AUTO_INSTALL_SETTINGS="mcp_auto_install_settings",e.MCP_QUALITY_SETTINGS="mcp_quality_settings",e.RUN_RESOURCE_SETTINGS="run_resource_settings",e.KV_STORE_SETTINGS="kv_store_settings",e.PENDING_APPROVALS="pending_approvals",e.MCP_INTERNAL_OVERRIDES="mcp_internal_overrides",e.PACKAGE_INSTALLS="package_installs",e.EXPERIMENTAL_SETTINGS="experimental_settings",e.REGISTRY_ACCOUNT="registry_account",e.REGISTRY_SETTINGS="registry_settings",e.TELEMETRY_STATE="telemetry_state",e}({})},29692:(e,t,n)=>{n.d(t,{Zg:()=>a.Z,YM:()=>c,VH:()=>s,Mj:()=>i});var a=n(27156),r=n(12115);let o=(0,n(87021).h)("utils/storage/frontend.ts");function i(e,t){o.verbose("useLocalStorage: Entering method");let[n,a]=(0,r.useState)(t),[i,s]=(0,r.useState)(!0),c=(0,r.useRef)(n);return(0,r.useEffect)(()=>{c.current=n},[n]),(0,r.useEffect)(()=>{(async()=>{o.verbose("loadValue: Entering method");try{let n=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t)))),r=await n.json();n.ok&&a(r.value)}catch(t){o.warn('Error reading storage key "'.concat(e,'":'),t)}finally{s(!1)}})()},[e]),[n,(0,r.useCallback)(async t=>{o.verbose("setValue: Entering method");try{let n=t instanceof Function?t(c.current):t;if(a(n),!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:n})})).ok)throw Error("Failed to save value")}catch(t){o.warn('Error setting storage key "'.concat(e,'":'),t)}},[e]),i]}let s=async(e,t)=>{o.verbose("saveItem: Entering method");try{if(!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:e,value:t})})).ok)throw Error("Failed to save item")}catch(e){throw o.error("Error saving to storage:",e),e}},c=async(e,t)=>{o.verbose("loadItem: Entering method");try{let n=await fetch("/api/storage?key=".concat(encodeURIComponent(e),"&defaultValue=").concat(encodeURIComponent(JSON.stringify(t))));if(!n.ok)throw Error("Failed to load item");return(await n.json()).value}catch(e){return o.error("Error loading from storage:",e),t}}},31373:(e,t,n)=>{n.d(t,{UJ:()=>a,ZB:()=>r,bx:()=>i});let a="flujo:encryption-locked",r="flujo:encryption-unlocked",o=!1;function i(){if(o||"function"!=typeof window.fetch)return;o=!0;let e=window.fetch.bind(window);window.fetch=async function(){for(var t=arguments.length,n=Array(t),r=0;r<t;r++)n[r]=arguments[r];let o=await e(...n);return 423===o.status&&function(){try{sessionStorage.removeItem("encryption_authenticated"),sessionStorage.removeItem("encryption_token")}catch(e){}window.dispatchEvent(new CustomEvent(a))}(),o}}}}]);
|