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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=4771,exports.ids=[4771],exports.modules={4771:(a,b,c)=>{c.d(b,{getSchedulerService:()=>F});var d=c(32524),e=c(92372),f=c(38844),g=c(50846),h=c(58739),i=c(52189),j=c(33873),k=c.n(j),l=c(29021),m=c(9794);let n=(0,g.h)("backend/services/scheduler/triggers/fileWatch");var o=c(73736),p=c(10960),q=c(51875);let r=(0,g.h)("backend/services/scheduler/triggers/mcpPoll"),s=(0,g.h)("backend/services/scheduler/triggers/urlWatch");var t=c(56793);let u=(0,g.h)("backend/services/scheduler/triggers/flowEvent");function v(a){return a&&a.length>8192?`${a.slice(0,8192)}… (truncated)`:a}var w=c(59911);let x=(0,g.h)("backend/services/scheduler/state"),y=a=>`planned-execution-state/${a}`;async function z(a){try{return await (0,e.YM)(y(a),{})}catch(b){return x.error(`Failed to load trigger state for ${a}:`,b),{}}}async function A(a,b){await (0,e.VH)(y(a),b)}async function B(a){await (0,e.N2)(y(a))}let C=(0,g.h)("backend/services/scheduler/index"),D={version:1,paused:!1,executions:[]};class E{static{this.MAX_QUEUE_DEPTH=50}async start(){this.started||(this.started=!0,C.info("Starting scheduler"),await this.reconcile())}reconcile(){let a=this.reconcileChain.catch(()=>{}).then(()=>this.doReconcile());return this.reconcileChain=a,a}async doReconcile(){for(let[a,b]of this.armed)try{b.dispose()}catch(b){C.warn(`Failed to dispose trigger for ${a}:`,b)}this.armed.clear();let a=await this.loadFile();if(this.pausedCache=a.paused,a.paused)return void C.info("Scheduler is paused — nothing armed");for(let b of a.executions)if(b.enabled)try{await this.armExecution(b)}catch(c){let a=c instanceof Error?c.message:String(c);this.lastTriggerErrors.set(b.id,a),C.error(`Failed to arm "${b.name}" (${b.id}):`,c)}C.info(`Scheduler armed ${this.armed.size} execution(s)`)}async armExecution(a){let b=a.trigger;switch(b.type){case"schedule":{let c=await z(a.id);c.lastScheduledFireAt?b.catchUp&&(0,i.hk)(b,c.lastScheduledFireAt)&&(await A(a.id,{...c,lastScheduledFireAt:new Date().toISOString()}),C.info(`Catch-up run for "${a.name}" (missed while closed)`),this.fire(a,{kind:"schedule-catchup",summary:"Schedule (missed while FLUJO was closed — ran once at startup)"})):await A(a.id,{...c,lastScheduledFireAt:new Date().toISOString()}),this.armed.set(a.id,(0,i.wv)(b,()=>{(async()=>{let b=await z(a.id);await A(a.id,{...b,lastScheduledFireAt:new Date().toISOString()}),await this.fire(a,{kind:"schedule",summary:"Schedule"})})().catch(b=>C.error(`Scheduled fire failed for ${a.id}:`,b))}));break}case"webhook":break;case"file-watch":this.armed.set(a.id,function(a,b,c){let d,e=a.debounceMs??2e3,f=new Set(a.events),g=a.glob?.trim()?function(a){let b=a.replace(/\\/g,"/"),c="";for(let a=0;a<b.length;a++){let d=b[a];"*"===d?"*"===b[a+1]?"/"===b[++a+1]?(a++,c+="(?:.*/)?"):c+=".*":c+="[^/]*":"?"===d?c+="[^/]":c+=d.replace(/[.+^${}()|[\]\\]/g,"\\$&")}return RegExp(`^${c}$`)}(a.glob.trim()):null;try{d=l.realpathSync.native(a.path)}catch(d){let b=d instanceof Error?d.message:String(d);return n.warn(`Cannot watch "${a.path}": ${b}`),c(`Cannot watch "${a.path}": ${b}`),{dispose:()=>void 0}}let h=[],i=!1,j=null,o=!1,p=()=>{if(j=null,o||0===h.length)return;let a=h;i&&n.info("File-watch batch overflowed; reporting first 50 events"),h=[],i=!1,b({events:a})},q=(0,m.wB)(d,{ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:500,pollInterval:100}});return q.on("all",(a,b)=>{if(!o&&("add"===a||"change"===a||"unlink"===a)&&f.has(a)){if(g){let a=k().relative(d,b).replace(/\\/g,"/")||k().basename(b);if(!g.test(a))return}h.length>=50?i=!0:h.push({event:a,path:b}),j&&clearTimeout(j),j=setTimeout(p,e),j.unref?.()}}),q.on("error",a=>{let b=a instanceof Error?a.message:String(a);n.warn(`Watcher error for ${d}: ${b}`),c(b)}),{dispose:()=>{o=!0,j&&(clearTimeout(j),j=null),h=[],q.close().catch(a=>n.warn(`Failed to close watcher for ${d}:`,a))}}}(b,({events:c})=>{this.lastTriggerErrors.delete(a.id),this.fire(a,{kind:"file",summary:1===c.length?`File ${"unlink"===c[0].event?"deleted":"add"===c[0].event?"added":"changed"}`:`${c.length} file changes`,context:{watchedPath:b.path,events:c}})},b=>this.lastTriggerErrors.set(a.id,b)));break;case"mcp-poll":Promise.all([c.e(3128),c.e(4322),c.e(5067),c.e(6034),c.e(7821),c.e(5096),c.e(544),c.e(1925)]).then(c.bind(c,60453)).then(async({mcpService:c})=>{await c.isServerDisabled(b.serverName)&&this.lastTriggerErrors.set(a.id,`MCP server '${b.serverName}' is disabled — enable it on the MCP page or change the trigger`)}).catch(b=>C.warn(`Arm-time disabled-server check failed for ${a.id}:`,b)),this.armed.set(a.id,function(a,b){let c=a.cron||(0,p.X)(a.intervalMs),d=!1,e=!1,f=0,g=0,h=async()=>{if(!e&&!d){if(g>0)return void g--;d=!0;try{let c,d=await b.callTool(a.serverName,a.toolName,a.args);if(!d.success)throw Error(d.error||"Tool call failed");f=0;let g=await b.loadState(),h=a.evaluate;if(c="on-change"===h.mode?(0,q.Jl)(d.data,g):"new-items"===h.mode?(0,q.A1)(d.data,h.itemsPath,h.idField,g):b.evaluateAiGate?await b.evaluateAiGate(d.data,h,g):{fire:!1,newState:{},error:'The "AI decides" condition is not available yet'},e)return;if(Object.keys(c.newState).length>0&&await b.saveState(c.newState),c.error)b.onError(c.error);else if(c.fire){let{status:d}=await b.onFire({summary:`Watched tool: ${c.summary??"condition met"}`,context:{server:a.serverName,tool:a.toolName,..."object"==typeof c.context&&null!==c.context?c.context:{result:c.context}}});if(e)return;if(c.pendingState){let{giveUpError:a}=await (0,q.vV)({status:d,pendingState:c.pendingState,priorFailures:g.pendingFailures??0,saveState:b.saveState});a&&b.onError(a)}}else b.onSuccess?.()}catch(d){f++,g=Math.min(2**(f-1),8);let c=d instanceof Error?d.message:String(d);r.warn(`Poll failed for ${a.serverName}/${a.toolName} (backing off ${g} check(s)): ${c}`),b.onError(c)}finally{d=!1}}},i=new o.l4(c,{timezone:a.timezone,unref:!0},()=>void h());return h(),{dispose:()=>{e=!0,i.stop()},nextRun:()=>i.nextRun()?.toISOString()??null}}(b,{callTool:async(a,b,d)=>{let{mcpService:e}=await Promise.all([c.e(3128),c.e(4322),c.e(5067),c.e(6034),c.e(7821),c.e(5096),c.e(544),c.e(1925)]).then(c.bind(c,60453)),f=await e.callTool(a,b,d);return{success:!0===f.success,data:f.data,error:"string"==typeof f.error?f.error:void 0}},loadState:()=>z(a.id),saveState:async b=>{let c=await z(a.id);await A(a.id,{...c,...b})},onFire:async({summary:b,context:c})=>(this.lastTriggerErrors.delete(a.id),{status:(await this.fire(a,{kind:"mcp-poll",summary:b,context:c})).status}),onError:b=>this.lastTriggerErrors.set(a.id,b),onSuccess:()=>this.lastTriggerErrors.delete(a.id),evaluateAiGate:async(a,b,d)=>{let{evaluateAiGate:e}=await c.e(7506).then(c.bind(c,47506));return e(a,b,d)}}));break;case"url-watch":this.armed.set(a.id,function(a,b){let c=b.fetchImpl??fetch,d=!1,e=!1,f=async()=>{if(!e&&!d){d=!0;try{let d=await c(a.url,{redirect:"follow",headers:{"User-Agent":"FLUJO-url-watch"},signal:AbortSignal.timeout(3e4)});if(!d.ok)return void b.onError(`The URL answered with HTTP ${d.status}`);let f=await d.text(),g=(0,q.qq)(f),h=await b.loadState();if(e)return;if(!h.lastHash){await b.saveState({lastHash:g}),b.onSuccess?.();return}if(h.lastHash===g)return void b.onSuccess?.();let{status:i}=await b.onFire({summary:"Online content changed",context:{url:a.url,status:d.status,contentType:d.headers.get("content-type")??void 0,content:f.length>8192?`${f.slice(0,8192)}… (truncated, ${f.length} chars total)`:f}});if(e)return;let{giveUpError:j}=await (0,q.vV)({status:i,pendingState:{lastHash:g},priorFailures:h.pendingFailures??0,saveState:b.saveState});j&&b.onError(j)}catch(d){let c=d instanceof Error&&"TimeoutError"===d.name?"The URL did not answer within 30s":d instanceof Error?d.message:String(d);s.warn(`URL check failed for ${a.url}: ${c}`),b.onError(c)}finally{d=!1}}},g=new o.l4(a.cron,{timezone:a.timezone,unref:!0},()=>void f());return f(),{dispose:()=>{e=!0,g.stop()},nextRun:()=>g.nextRun()?.toISOString()??null}}(b,{loadState:()=>z(a.id),saveState:async b=>{let c=await z(a.id);await A(a.id,{...c,...b})},onFire:async({summary:b,context:c})=>(this.lastTriggerErrors.delete(a.id),{status:(await this.fire(a,{kind:"url-watch",summary:b,context:c})).status}),onError:b=>this.lastTriggerErrors.set(a.id,b),onSuccess:()=>this.lastTriggerErrors.delete(a.id)}));break;case"flow-event":this.armed.set(a.id,function(a,b){let c=a.maxChainDepth??5,d="string"==typeof a.source.topic?a.source.topic.trim():"",e=d.length>0,f=0,g=null,h=!1;if(a.outputMatch?.regex)try{g=new RegExp(a.outputMatch.regex)}catch(c){h=!0;let a=`Invalid output-match regex: ${c instanceof Error?c.message:String(c)}`;u.warn(a),b.onError(a)}let i=b=>{if(!a.outputMatch)return!0;if(h)return!1;let c=(b??"").slice(0,16384);return(!a.outputMatch.contains||!!c.includes(a.outputMatch.contains))&&(!g||!!g.test(c))},j=(d,e,g,h)=>{if(d>=c){let a=`Flow-event chain reached the depth limit (${c}); not firing again`;u.info(a),b.onSkip(a);return}let i=Date.now();if(a.minIntervalMs&&i-f<a.minIntervalMs)return void u.debug(`Flow-event cooldown active (${a.minIntervalMs}ms); ignoring event`);f=i,b.onFire({summary:e,context:g,chainDepth:d+1,sourceConversationId:h})},k=(0,t.eh)().subscribe(c=>{try{if(e){if(!(0,t.ru)(c)||c.topic!==d||!i(c.payload))return;j(c.chainDepth,`Signal "${c.topic}"`,{topic:c.topic,payload:v(c.payload),emitterFlowId:c.emitterFlowId,flowName:c.flowName,runId:c.runId,conversationId:c.conversationId,firedBy:c.firedBy},c.conversationId);return}if((0,t.ru)(c)||!(b=>{let c=a.source;return c.executionId?b.executionId===c.executionId:c.flowId?b.flowId===c.flowId:!!c.flowName&&b.flowName===c.flowName})(c)||!c.status||!(a.on??[]).includes(c.status)||!i(c.outputText))return;let b=c.flowName??c.flowId;j(c.chainDepth,`Flow "${b}" ${c.status}`,{flowId:c.flowId,flowName:c.flowName,executionId:c.executionId,runId:c.runId,conversationId:c.conversationId,status:c.status,firedBy:c.firedBy,outputText:v(c.outputText),error:c.error},c.conversationId)}catch(c){let a=c instanceof Error?c.message:String(c);u.warn(`Flow-event handling failed: ${a}`),b.onError(a)}});return{dispose:()=>k(),nextRun:()=>null}}(b,{onFire:({summary:b,context:c,chainDepth:d,sourceConversationId:e})=>{this.lastTriggerErrors.delete(a.id),this.fire(a,{kind:"flow-event",summary:b,context:c,chainDepth:d,parentConversationId:e}).catch(b=>C.error(`Flow-event fire failed for ${a.id}:`,b))},onSkip:b=>{let c=new Date().toISOString();(0,w.Hy)(a.id,{runId:(0,d.A)(),conversationId:"",firedAt:c,finishedAt:c,status:"skipped",triggerSummary:"Flow event",error:b}).catch(b=>C.warn(`Failed to record flow-event skip for ${a.id}:`,b))},onError:b=>this.lastTriggerErrors.set(a.id,b)}));break;default:C.warn(`Trigger type "${b.type}" is not implemented — "${a.name}" not armed`)}}async loadFile(){let a=await (0,e.YM)(f.Z.PLANNED_EXECUTIONS,D);return{version:1,paused:!0===a.paused,executions:Array.isArray(a.executions)?a.executions:[]}}async saveFile(a){await (0,e.VH)(f.Z.PLANNED_EXECUTIONS,a)}async isPaused(){return(await this.loadFile()).paused}async setPaused(a){let b=await this.loadFile();if(await this.saveFile({...b,paused:a}),await this.reconcile(),a){for(let a of[...this.queued.keys()])await this.cancelQueued(a,"scheduler paused",!0);await this.cancelAllExclusiveWaiting("scheduler paused",!0)}}async list(){return Promise.all((await this.loadFile()).executions.map(async a=>({execution:a,status:this.getStatus(a),lastRun:await (0,w.tl)(a.id)})))}async get(a){return(await this.loadFile()).executions.find(b=>b.id===a)??null}async create(a){let b=this.validateInput(a);if(b)return{error:b};if(void 0!==a.id&&!/^[A-Za-z0-9._:-]{1,128}$/.test(a.id))return{error:"The id must be 1-128 characters of letters, digits, dot, underscore, colon or hyphen"};if("."===a.id||".."===a.id)return{error:'The id must be a safe identifier, not "." or ".."'};let c=new Date().toISOString(),e={...a,trigger:this.normalizeTrigger(a.trigger),id:a.id??(0,d.A)(),createdAt:c,updatedAt:c},f=await this.loadFile();return f.executions.some(a=>a.id===e.id)?{error:`A planned execution with id "${e.id}" already exists`,conflict:!0}:(await this.saveFile({...f,executions:[...f.executions,e]}),await this.reconcile(),{execution:e})}async update(a,b){let c=await this.loadFile(),d=c.executions.findIndex(b=>b.id===a);if(d<0)return{error:`No planned execution with id "${a}"`};let e={...c.executions[d],...b,...b.trigger?{trigger:this.normalizeTrigger(b.trigger)}:{},id:a,createdAt:c.executions[d].createdAt,updatedAt:new Date().toISOString()},f=this.validateInput(e);if(f)return{error:f};let g=[...c.executions];return g[d]=e,await this.saveFile({...c,executions:g}),await this.reconcile(),await this.cancelQueued(a,"execution updated",!0),await this.cancelExclusiveWaiting(a,"execution updated",!0),{execution:e}}async delete(a){let b=await this.loadFile();return b.executions.some(b=>b.id===a)?(await this.saveFile({...b,executions:b.executions.filter(b=>b.id!==a)}),await this.reconcile(),this.lastTriggerErrors.delete(a),await this.cancelQueued(a,"execution deleted",!1),await this.cancelExclusiveWaiting(a,"execution deleted",!1),await (0,w.xC)(a),await B(a),{success:!0}):{success:!1,error:`No planned execution with id "${a}"`}}normalizeTrigger(a){return a?.type!=="webhook"||a.token?a?.type!=="mcp-poll"||a.cron?a:{...a,cron:(0,p.X)(a.intervalMs)}:{...a,token:(0,d.A)()}}validateInput(a){if(!a.name?.trim())return"A name is required";if(!a.flowId)return"A flow is required";if("string"!=typeof a.prompt)return"A prompt is required (may be empty)";if(void 0!==a.overlapStrategy&&!["skip","queue","parallel","error"].includes(a.overlapStrategy))return"Overlap strategy must be one of: skip, queue, parallel, error";if(void 0!==a.exclusive&&"boolean"!=typeof a.exclusive)return"Exclusive must be true or false";if(void 0!==a.nonExclusiveBehavior&&!["queue","skip","error"].includes(a.nonExclusiveBehavior))return"When exclusive is on, other triggers must be one of: queue, skip, error";let b=a.trigger;if(!b||"object"!=typeof b)return"A trigger is required";switch(b.type){case"schedule":{let a=(0,i.O9)(b.cron,b.timezone);return a.valid?null:`Invalid schedule: ${a.error}`}case"webhook":return null;case"file-watch":if(!b.path?.trim())return"A folder or file path to watch is required";if(!Array.isArray(b.events)||0===b.events.length)return"At least one file event is required";return null;case"mcp-poll":if(!b.serverName||!b.toolName)return"A server and tool are required";if(b.cron){let a=(0,i.O9)(b.cron,b.timezone);if(!a.valid)return`Invalid schedule: ${a.error}`}if(b.evaluate?.mode==="new-items"&&!b.evaluate.idField?.trim())return"An id field is required to detect new items";if((b.evaluate?.mode==="llm-gate"||b.evaluate?.mode==="flow-gate")&&!b.evaluate.condition?.trim())return"A condition is required for the AI to check";if(b.evaluate?.mode==="llm-gate"&&!b.evaluate.modelId)return"A model is required to check the condition";if(b.evaluate?.mode==="flow-gate"&&!b.evaluate.flowId)return"A flow is required to check the condition";return null;case"url-watch":{try{let a=new URL(b.url??"");if("http:"!==a.protocol&&"https:"!==a.protocol)return"The URL must start with http:// or https://"}catch{return"A valid URL is required"}let a=(0,i.O9)(b.cron,b.timezone);return a.valid?null:`Invalid schedule: ${a.error}`}case"flow-event":{let a=b.source;if(1!==[a?.executionId,a?.flowId,a?.flowName,a?.topic].filter(a=>"string"==typeof a&&a.trim().length>0).length)return"Choose exactly one source: a flow, a planned execution, or a signal topic";if(!("string"==typeof a?.topic&&a.topic.trim().length>0)){if(!Array.isArray(b.on)||0===b.on.length)return"Select at least one outcome to react to (completed or error)";if(b.on.some(a=>"completed"!==a&&"error"!==a))return'Outcomes must be "completed" or "error"'}if(b.outputMatch?.regex)try{new RegExp(b.outputMatch.regex)}catch(a){return`Invalid output-match regex: ${a instanceof Error?a.message:String(a)}`}if(void 0!==b.maxChainDepth&&(!Number.isInteger(b.maxChainDepth)||b.maxChainDepth<1))return"Max chain depth must be a positive whole number";if(void 0!==b.minIntervalMs&&(!Number.isFinite(b.minIntervalMs)||b.minIntervalMs<0))return"Minimum interval must be zero or more milliseconds";return null}default:return"Unknown trigger type"}}isRunning(a){let b=this.running.get(a);return void 0!==b&&b.size>0}addRunning(a,b,c){let d=this.running.get(a);d||(d=new Map,this.running.set(a,d)),d.set(b,c)}removeRunning(a,b){let c=this.running.get(a);c&&(c.delete(b),0===c.size&&this.running.delete(a))}earliestRunningSince(a){let b,c=this.running.get(a);if(c&&0!==c.size){for(let a of c.values())(void 0===b||a<b)&&(b=a);return b}}skippedRecord(a,b){let c=new Date().toISOString();return{runId:a.runId,conversationId:"",firedAt:c,finishedAt:c,status:"skipped",triggerSummary:a.payload.summary,error:b}}async cancelQueued(a,b,c){let d=this.queued.get(a);if(d&&0!==d.length){for(let e of(this.queued.delete(a),d)){let d=this.skippedRecord(e,b);if(c)try{await (0,w.Hy)(a,d)}catch(b){C.warn(`Failed to record cancelled queued fire for ${a}:`,b)}e.resolve(d)}C.info(`Cancelled ${d.length} queued fire(s) for ${a}: ${b}`)}}drainQueue(a){let b=this.queued.get(a);if(!b||0===b.length||this.isRunning(a))return;let c=b.shift();0===b.length&&this.queued.delete(a),c&&(async()=>{let b=await this.get(a);if(!b||!b.enabled||this.pausedCache){let a=b?b.enabled?"scheduler paused":"execution disabled":"execution deleted";c.resolve(this.skippedRecord(c,a));return}let d=await this.fire(b,c.payload,c.runId);c.resolve(d)})().catch(b=>C.error(`Queued fire failed for ${a}:`,b))}isSchedulerIdle(){for(let a of this.running.values())if(a.size>0)return!1;return!0}isExclusiveActive(){return null!==this.exclusiveHolder||this.exclusiveWaiting.length>0}currentExclusiveBehavior(){return null!==this.exclusiveHolder?this.exclusiveHolderBehavior:this.exclusiveWaiting[0]?.execution.nonExclusiveBehavior??"queue"}exclusiveGateFor(a){return!0!==a.exclusive&&this.isExclusiveActive()?this.currentExclusiveBehavior():null}drainExclusive(){if(null===this.exclusiveHolder&&this.exclusiveWaiting.length>0&&this.isSchedulerIdle())return void this.acquireNextExclusive();this.isExclusiveActive()||this.drainBlockedByExclusive()}acquireNextExclusive(){if(null!==this.exclusiveHolder||!this.isSchedulerIdle())return;let a=this.exclusiveWaiting.shift();if(!a)return;let b=a.execution.id;this.exclusiveHolder=b,this.exclusiveHolderBehavior=a.execution.nonExclusiveBehavior??"queue",(async()=>{let c=await this.get(b);if(!c||!c.enabled||this.pausedCache||!0!==c.exclusive){let d=c?c.enabled?this.pausedCache?"scheduler paused":"no longer exclusive":"execution disabled":"execution deleted";this.exclusiveHolder===b&&(this.exclusiveHolder=null),a.resolve(this.skippedRecord(a,d)),this.drainExclusive();return}this.exclusiveHolderBehavior=c.nonExclusiveBehavior??"queue";let d=await this.fire(c,a.payload,a.runId);a.resolve(d)})().catch(c=>{this.exclusiveHolder===b&&(this.exclusiveHolder=null),C.error(`Exclusive acquire failed for ${b}:`,c),a.resolve(this.skippedRecord(a,"exclusive acquire failed")),this.drainExclusive()})}drainBlockedByExclusive(){if(0===this.blockedByExclusive.length)return;let a=this.blockedByExclusive;for(let b of(this.blockedByExclusive=[],a))(async()=>{let a=await this.get(b.execution.id);if(!a||!a.enabled||this.pausedCache){let c=a?a.enabled?"scheduler paused":"execution disabled":"execution deleted";b.resolve(this.skippedRecord(b,c));return}let c=await this.fire(a,b.payload,b.runId);b.resolve(c)})().catch(a=>C.error(`Deferred non-exclusive fire failed for ${b.execution.id}:`,a))}async cancelExclusiveWaiting(a,b,c){let d=[];if(this.exclusiveWaiting=this.exclusiveWaiting.filter(b=>b.execution.id!==a||(d.push(b),!1)),this.blockedByExclusive=this.blockedByExclusive.filter(b=>b.execution.id!==a||(d.push(b),!1)),0!==d.length){for(let e of d){let d=this.skippedRecord(e,b);if(c)try{await (0,w.Hy)(a,d)}catch(b){C.warn(`Failed to record cancelled exclusive fire for ${a}:`,b)}e.resolve(d)}C.info(`Cancelled ${d.length} exclusive-related fire(s) for ${a}: ${b}`)}}async cancelAllExclusiveWaiting(a,b){let c=[...this.exclusiveWaiting,...this.blockedByExclusive];if(this.exclusiveWaiting=[],this.blockedByExclusive=[],0!==c.length){for(let d of c){let c=this.skippedRecord(d,a);if(b)try{await (0,w.Hy)(d.execution.id,c)}catch(a){C.warn(`Failed to record cancelled exclusive fire for ${d.execution.id}:`,a)}d.resolve(c)}C.info(`Cancelled ${c.length} exclusive-related fire(s): ${a}`)}}getStatus(a){let b=this.armed.get(a.id),c=void 0!==b||a.enabled&&"webhook"===a.trigger.type&&this.started&&!this.pausedCache,d=this.earliestRunningSince(a.id),e=c?void 0:a.enabled?this.pausedCache?"paused":void 0:"disabled",f=this.exclusiveHolder??void 0,g=!0!==a.exclusive&&this.isExclusiveActive();return{armed:c,notArmedReason:e,nextRun:b?.nextRun?b.nextRun():void 0,lastTriggerError:this.lastTriggerErrors.get(a.id),running:void 0!==d,runningSince:d,exclusiveHolderId:f,blockedByExclusive:g}}async runNow(a){let b=await this.get(a);return b?{record:await this.fire(b,{kind:"manual",summary:"Manual run"},(0,d.A)(),!0)}:{error:`No planned execution with id "${a}"`}}async fire(a,b,e=(0,d.A)(),f=!1){let g,i=new Date().toISOString();if(await (0,h.isEncryptionLocked)()){let c={runId:e,conversationId:"",firedAt:i,finishedAt:i,status:"skipped",triggerSummary:b.summary,error:"encryption locked"};return await (0,w.Hy)(a.id,c),C.info(`Skipped fire for "${a.name}" — encryption locked`),c}let j="flow-event"===b.kind;if(!f&&!j){if(!0===a.exclusive){if(this.exclusiveHolder!==a.id){if(null!==this.exclusiveHolder||!this.isSchedulerIdle()){let c=this.exclusiveWaiting.length;if(c>=E.MAX_QUEUE_DEPTH){let c={runId:e,conversationId:"",firedAt:i,finishedAt:i,status:"skipped",triggerSummary:b.summary,error:`Exclusive wait queue full (cap ${E.MAX_QUEUE_DEPTH}) — fire dropped`};return await (0,w.Hy)(a.id,c),C.warn(`Exclusive wait queue full for "${a.name}" — dropped fire`),c}return C.info(`Exclusive "${a.name}" waiting for scheduler to idle (depth ${c+1})`),new Promise(c=>{this.exclusiveWaiting.push({execution:a,payload:b,runId:e,resolve:c})})}this.exclusiveHolder=a.id,this.exclusiveHolderBehavior=a.nonExclusiveBehavior??"queue",C.info(`Exclusive "${a.name}" acquired the scheduler lock`)}}else if(this.isExclusiveActive()){let c=this.currentExclusiveBehavior();if("skip"===c){let c={runId:e,conversationId:"",firedAt:i,finishedAt:i,status:"skipped",triggerSummary:b.summary,error:"Skipped — an exclusive execution holds the scheduler lock"};return await (0,w.Hy)(a.id,c),C.info(`Skipped non-exclusive fire for "${a.name}" — exclusive lock held`),c}if("error"===c){let c={runId:e,conversationId:"",firedAt:i,finishedAt:i,status:"error",triggerSummary:b.summary,error:"Rejected — an exclusive execution holds the scheduler lock"};return await (0,w.Hy)(a.id,c),C.info(`Rejected non-exclusive fire for "${a.name}" — exclusive lock held`),c}let d=this.blockedByExclusive.length;if(d>=E.MAX_QUEUE_DEPTH){let c={runId:e,conversationId:"",firedAt:i,finishedAt:i,status:"skipped",triggerSummary:b.summary,error:`Exclusive-block queue full (cap ${E.MAX_QUEUE_DEPTH}) — fire dropped`};return await (0,w.Hy)(a.id,c),C.warn(`Exclusive-block queue full for "${a.name}" — dropped fire`),c}return C.info(`Deferred non-exclusive fire for "${a.name}" — exclusive lock held (depth ${d+1})`),new Promise(c=>{this.blockedByExclusive.push({execution:a,payload:b,runId:e,resolve:c})})}}let k=a.overlapStrategy??"skip";if(!f&&this.isRunning(a.id)){if("skip"===k){let c={runId:e,conversationId:"",firedAt:i,finishedAt:i,status:"skipped",triggerSummary:b.summary,error:"Previous run still in progress"};return await (0,w.Hy)(a.id,c),C.info(`Skipped overlapping fire for "${a.name}"`),c}if("error"===k){let c={runId:e,conversationId:"",firedAt:i,finishedAt:i,status:"error",triggerSummary:b.summary,error:"Overlapping run rejected (overlapStrategy=error)"};return await (0,w.Hy)(a.id,c),C.info(`Rejected overlapping fire for "${a.name}" (overlapStrategy=error)`),c}if("queue"===k){let c=this.queued.get(a.id)?.length??0;if(c>=E.MAX_QUEUE_DEPTH){let c={runId:e,conversationId:"",firedAt:i,finishedAt:i,status:"skipped",triggerSummary:b.summary,error:`Overlap queue full (cap ${E.MAX_QUEUE_DEPTH}) — fire dropped`};return await (0,w.Hy)(a.id,c),C.warn(`Overlap queue full for "${a.name}" — dropped fire`),c}return C.info(`Queued overlapping fire for "${a.name}" (depth ${c+1})`),new Promise(c=>{let d=this.queued.get(a.id)??[];d.push({execution:a,payload:b,runId:e,resolve:c}),this.queued.set(a.id,d)})}}this.addRunning(a.id,e,i);let l=(0,d.A)();try{C.info(`Firing "${a.name}" (${b.kind})`);let d=await (0,w.Sw)(a.id),f=d.length>0?d[d.length-1]:null,h={executionName:a.name,trigger:b.kind,now:i,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,lastRun:f?{at:f.firedAt,status:f.status}:null,nextPlannedRun:this.getStatus(a).nextRun??null},j=a.approvalPolicy??"auto",k=a.saveConversations||"pause"===j?"conversation":"ephemeral",{runFlow:m}=await Promise.all([c.e(3128),c.e(4322),c.e(5067),c.e(6034),c.e(7821),c.e(5096),c.e(544),c.e(4671),c.e(6226),c.e(4306)]).then(c.bind(c,16226)),n=await m({flowId:a.flowId,prompt:this.composePrompt(a.prompt,b,h),mode:k,conversationId:l,source:"schedule",plannedExecutionId:a.id,parentRunId:b.parentConversationId,chainDepth:b.chainDepth??0,requireApproval:"auto"!==j,onApprovalRequired:j,debug:!1,userTurn:!0});g=await this.recordFromResult(a,n,{runId:e,conversationId:l,firedAt:i,payload:b})}catch(c){g={runId:e,conversationId:l,firedAt:i,finishedAt:new Date().toISOString(),status:"error",triggerSummary:b.summary,error:c instanceof Error?c.message:String(c)},C.error(`Run crashed for "${a.name}":`,c)}finally{this.removeRunning(a.id,e),this.exclusiveHolder!==a.id||this.isRunning(a.id)||(this.exclusiveHolder=null,C.info(`Exclusive "${a.name}" released the scheduler lock`)),this.drainExclusive(),this.drainQueue(a.id)}return await this.get(a.id)===null?C.info(`Dropping run record for deleted execution ${a.id}`):(await (0,w.Hy)(a.id,g),("completed"===g.status||"error"===g.status)&&await this.publishFlowRunEvent(a,g,b)),g}async recordFromResult(a,b,c){let{runId:d,conversationId:e,firedAt:f,payload:g}=c,h=new Date().toISOString(),i="awaiting_tool_approval"===b.status,j="error"===b.status&&b.error?.details?.type==="approval_required";if(i||j){let c=(b.pendingToolCalls??[]).map(a=>({id:a.id,name:"function"===a.type?a.function.name:String(a.type)})),k={runId:d,conversationId:e,firedAt:f,finishedAt:h,status:"needs_approval",triggerSummary:g.summary,outputText:this.truncateOutput(b.outputText),usage:b.usage,error:j?b.error?.message??"Tool approval required":"Awaiting tool approval",pendingApproval:{tool:c[0]?.name??b.error?.details?.name,toolCallId:c[0]?.id,pendingToolCalls:c.length>0?c:void 0}};return i&&await this.registerPendingApproval(a,k,c),k}return{runId:d,conversationId:e,firedAt:f,finishedAt:h,status:"completed"===b.status?"completed":"capped"===b.status?"capped":"error",triggerSummary:g.summary,outputText:this.truncateOutput(b.outputText),usage:b.usage,error:"completed"===b.status||"capped"===b.status?void 0:b.error?.message??`Run ended with status "${b.status}"`}}async registerPendingApproval(a,b,d){try{let e;try{let{flowService:b}=await c.e(7821).then(c.bind(c,87821));e=(await b.getFlow(a.flowId))?.name??void 0}catch(b){C.debug(`Could not resolve flow name for pending approval (${a.flowId}):`,b)}let{putPendingApproval:f}=await c.e(9285).then(c.bind(c,39285));await f({approvalId:b.conversationId,conversationId:b.conversationId,plannedExecutionId:a.id,flowId:a.flowId,flowName:e,runId:b.runId,triggerSummary:b.triggerSummary,pendingToolCalls:d,createdAt:b.firedAt})}catch(b){C.warn(`Failed to register pending approval for "${a.name}":`,b)}}async publishFlowRunEvent(a,b,d){try{let e;try{let{flowService:b}=await c.e(7821).then(c.bind(c,87821));e=(await b.getFlow(a.flowId))?.name??void 0}catch(b){C.debug(`Could not resolve flow name for run event (${a.flowId}):`,b)}let f="schedule-catchup"===d.kind?"schedule":d.kind;(0,t.eh)().publish({flowId:a.flowId,flowName:e,executionId:a.id,runId:b.runId,conversationId:b.conversationId,status:"completed"===b.status?"completed":"error",outputText:b.outputText,error:b.error,firedBy:f,chainDepth:d.chainDepth??0,timestamp:b.finishedAt??new Date().toISOString()})}catch(b){C.warn(`Failed to publish flow-run event for "${a.name}":`,b)}}composePrompt(a,b,c){let d=JSON.stringify(void 0===b.context?c:{...c,data:b.context},null,2);return`${a}
|
|
1
|
+
"use strict";exports.id=4771,exports.ids=[4771],exports.modules={4771:(a,b,c)=>{c.d(b,{getSchedulerService:()=>F});var d=c(32524),e=c(92372),f=c(38844),g=c(50846),h=c(58739),i=c(52189),j=c(33873),k=c.n(j),l=c(29021),m=c(9794);let n=(0,g.h)("backend/services/scheduler/triggers/fileWatch");var o=c(73736),p=c(10960),q=c(51875);let r=(0,g.h)("backend/services/scheduler/triggers/mcpPoll"),s=(0,g.h)("backend/services/scheduler/triggers/urlWatch");var t=c(56793);let u=(0,g.h)("backend/services/scheduler/triggers/flowEvent");function v(a){return a&&a.length>8192?`${a.slice(0,8192)}… (truncated)`:a}var w=c(59911);let x=(0,g.h)("backend/services/scheduler/state"),y=a=>`planned-execution-state/${a}`;async function z(a){try{return await (0,e.YM)(y(a),{})}catch(b){return x.error(`Failed to load trigger state for ${a}:`,b),{}}}async function A(a,b){await (0,e.VH)(y(a),b)}async function B(a){await (0,e.N2)(y(a))}let C=(0,g.h)("backend/services/scheduler/index"),D={version:1,paused:!1,executions:[]};class E{static{this.MAX_QUEUE_DEPTH=50}async start(){this.started||(this.started=!0,C.info("Starting scheduler"),await this.reconcile())}reconcile(){let a=this.reconcileChain.catch(()=>{}).then(()=>this.doReconcile());return this.reconcileChain=a,a}async doReconcile(){for(let[a,b]of this.armed)try{b.dispose()}catch(b){C.warn(`Failed to dispose trigger for ${a}:`,b)}this.armed.clear();let a=await this.loadFile();if(this.pausedCache=a.paused,a.paused)return void C.info("Scheduler is paused — nothing armed");for(let b of a.executions)if(b.enabled)try{await this.armExecution(b)}catch(c){let a=c instanceof Error?c.message:String(c);this.lastTriggerErrors.set(b.id,a),C.error(`Failed to arm "${b.name}" (${b.id}):`,c)}C.info(`Scheduler armed ${this.armed.size} execution(s)`)}async armExecution(a){let b=a.trigger;switch(b.type){case"schedule":{let c=await z(a.id);c.lastScheduledFireAt?b.catchUp&&(0,i.hk)(b,c.lastScheduledFireAt)&&(await A(a.id,{...c,lastScheduledFireAt:new Date().toISOString()}),C.info(`Catch-up run for "${a.name}" (missed while closed)`),this.fire(a,{kind:"schedule-catchup",summary:"Schedule (missed while FLUJO was closed — ran once at startup)"})):await A(a.id,{...c,lastScheduledFireAt:new Date().toISOString()}),this.armed.set(a.id,(0,i.wv)(b,()=>{(async()=>{let b=await z(a.id);await A(a.id,{...b,lastScheduledFireAt:new Date().toISOString()}),await this.fire(a,{kind:"schedule",summary:"Schedule"})})().catch(b=>C.error(`Scheduled fire failed for ${a.id}:`,b))}));break}case"webhook":break;case"file-watch":this.armed.set(a.id,function(a,b,c){let d,e=a.debounceMs??2e3,f=new Set(a.events),g=a.glob?.trim()?function(a){let b=a.replace(/\\/g,"/"),c="";for(let a=0;a<b.length;a++){let d=b[a];"*"===d?"*"===b[a+1]?"/"===b[++a+1]?(a++,c+="(?:.*/)?"):c+=".*":c+="[^/]*":"?"===d?c+="[^/]":c+=d.replace(/[.+^${}()|[\]\\]/g,"\\$&")}return RegExp(`^${c}$`)}(a.glob.trim()):null;try{d=l.realpathSync.native(a.path)}catch(d){let b=d instanceof Error?d.message:String(d);return n.warn(`Cannot watch "${a.path}": ${b}`),c(`Cannot watch "${a.path}": ${b}`),{dispose:()=>void 0}}let h=[],i=!1,j=null,o=!1,p=()=>{if(j=null,o||0===h.length)return;let a=h;i&&n.info("File-watch batch overflowed; reporting first 50 events"),h=[],i=!1,b({events:a})},q=(0,m.wB)(d,{ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:500,pollInterval:100}});return q.on("all",(a,b)=>{if(!o&&("add"===a||"change"===a||"unlink"===a)&&f.has(a)){if(g){let a=k().relative(d,b).replace(/\\/g,"/")||k().basename(b);if(!g.test(a))return}h.length>=50?i=!0:h.push({event:a,path:b}),j&&clearTimeout(j),j=setTimeout(p,e),j.unref?.()}}),q.on("error",a=>{let b=a instanceof Error?a.message:String(a);n.warn(`Watcher error for ${d}: ${b}`),c(b)}),{dispose:()=>{o=!0,j&&(clearTimeout(j),j=null),h=[],q.close().catch(a=>n.warn(`Failed to close watcher for ${d}:`,a))}}}(b,({events:c})=>{this.lastTriggerErrors.delete(a.id),this.fire(a,{kind:"file",summary:1===c.length?`File ${"unlink"===c[0].event?"deleted":"add"===c[0].event?"added":"changed"}`:`${c.length} file changes`,context:{watchedPath:b.path,events:c}})},b=>this.lastTriggerErrors.set(a.id,b)));break;case"mcp-poll":Promise.all([c.e(3128),c.e(4322),c.e(5067),c.e(6034),c.e(7821),c.e(5096),c.e(544),c.e(1925)]).then(c.bind(c,60453)).then(async({mcpService:c})=>{await c.isServerDisabled(b.serverName)&&this.lastTriggerErrors.set(a.id,`MCP server '${b.serverName}' is disabled — enable it on the MCP page or change the trigger`)}).catch(b=>C.warn(`Arm-time disabled-server check failed for ${a.id}:`,b)),this.armed.set(a.id,function(a,b){let c=a.cron||(0,p.X)(a.intervalMs),d=!1,e=!1,f=0,g=0,h=async()=>{if(!e&&!d){if(g>0)return void g--;d=!0;try{let c,d=await b.callTool(a.serverName,a.toolName,a.args);if(!d.success)throw Error(d.error||"Tool call failed");f=0;let g=await b.loadState(),h=a.evaluate;if(c="on-change"===h.mode?(0,q.Jl)(d.data,g):"new-items"===h.mode?(0,q.A1)(d.data,h.itemsPath,h.idField,g):b.evaluateAiGate?await b.evaluateAiGate(d.data,h,g):{fire:!1,newState:{},error:'The "AI decides" condition is not available yet'},e)return;if(Object.keys(c.newState).length>0&&await b.saveState(c.newState),c.error)b.onError(c.error);else if(c.fire){let{status:d}=await b.onFire({summary:`Watched tool: ${c.summary??"condition met"}`,context:{server:a.serverName,tool:a.toolName,..."object"==typeof c.context&&null!==c.context?c.context:{result:c.context}}});if(e)return;if(c.pendingState){let{giveUpError:a}=await (0,q.vV)({status:d,pendingState:c.pendingState,priorFailures:g.pendingFailures??0,saveState:b.saveState});a&&b.onError(a)}}else b.onSuccess?.()}catch(d){f++,g=Math.min(2**(f-1),8);let c=d instanceof Error?d.message:String(d);r.warn(`Poll failed for ${a.serverName}/${a.toolName} (backing off ${g} check(s)): ${c}`),b.onError(c)}finally{d=!1}}},i=new o.l4(c,{timezone:a.timezone,unref:!0},()=>void h());return h(),{dispose:()=>{e=!0,i.stop()},nextRun:()=>i.nextRun()?.toISOString()??null}}(b,{callTool:async(a,b,d)=>{let{mcpService:e}=await Promise.all([c.e(3128),c.e(4322),c.e(5067),c.e(6034),c.e(7821),c.e(5096),c.e(544),c.e(1925)]).then(c.bind(c,60453)),f=await e.callTool(a,b,d);return{success:!0===f.success,data:f.data,error:"string"==typeof f.error?f.error:void 0}},loadState:()=>z(a.id),saveState:async b=>{let c=await z(a.id);await A(a.id,{...c,...b})},onFire:async({summary:b,context:c})=>(this.lastTriggerErrors.delete(a.id),{status:(await this.fire(a,{kind:"mcp-poll",summary:b,context:c})).status}),onError:b=>this.lastTriggerErrors.set(a.id,b),onSuccess:()=>this.lastTriggerErrors.delete(a.id),evaluateAiGate:async(a,b,d)=>{let{evaluateAiGate:e}=await c.e(7506).then(c.bind(c,47506));return e(a,b,d)}}));break;case"url-watch":this.armed.set(a.id,function(a,b){let c=b.fetchImpl??fetch,d=!1,e=!1,f=async()=>{if(!e&&!d){d=!0;try{let d=await c(a.url,{redirect:"follow",headers:{"User-Agent":"FLUJO-url-watch"},signal:AbortSignal.timeout(3e4)});if(!d.ok)return void b.onError(`The URL answered with HTTP ${d.status}`);let f=await d.text(),g=(0,q.qq)(f),h=await b.loadState();if(e)return;if(!h.lastHash){await b.saveState({lastHash:g}),b.onSuccess?.();return}if(h.lastHash===g)return void b.onSuccess?.();let{status:i}=await b.onFire({summary:"Online content changed",context:{url:a.url,status:d.status,contentType:d.headers.get("content-type")??void 0,content:f.length>8192?`${f.slice(0,8192)}… (truncated, ${f.length} chars total)`:f}});if(e)return;let{giveUpError:j}=await (0,q.vV)({status:i,pendingState:{lastHash:g},priorFailures:h.pendingFailures??0,saveState:b.saveState});j&&b.onError(j)}catch(d){let c=d instanceof Error&&"TimeoutError"===d.name?"The URL did not answer within 30s":d instanceof Error?d.message:String(d);s.warn(`URL check failed for ${a.url}: ${c}`),b.onError(c)}finally{d=!1}}},g=new o.l4(a.cron,{timezone:a.timezone,unref:!0},()=>void f());return f(),{dispose:()=>{e=!0,g.stop()},nextRun:()=>g.nextRun()?.toISOString()??null}}(b,{loadState:()=>z(a.id),saveState:async b=>{let c=await z(a.id);await A(a.id,{...c,...b})},onFire:async({summary:b,context:c})=>(this.lastTriggerErrors.delete(a.id),{status:(await this.fire(a,{kind:"url-watch",summary:b,context:c})).status}),onError:b=>this.lastTriggerErrors.set(a.id,b),onSuccess:()=>this.lastTriggerErrors.delete(a.id)}));break;case"flow-event":this.armed.set(a.id,function(a,b){let c=a.maxChainDepth??5,d="string"==typeof a.source.topic?a.source.topic.trim():"",e=d.length>0,f=0,g=null,h=!1;if(a.outputMatch?.regex)try{g=new RegExp(a.outputMatch.regex)}catch(c){h=!0;let a=`Invalid output-match regex: ${c instanceof Error?c.message:String(c)}`;u.warn(a),b.onError(a)}let i=b=>{if(!a.outputMatch)return!0;if(h)return!1;let c=(b??"").slice(0,16384);return(!a.outputMatch.contains||!!c.includes(a.outputMatch.contains))&&(!g||!!g.test(c))},j=(d,e,g,h)=>{if(d>=c){let a=`Flow-event chain reached the depth limit (${c}); not firing again`;u.info(a),b.onSkip(a);return}let i=Date.now();if(a.minIntervalMs&&i-f<a.minIntervalMs)return void u.debug(`Flow-event cooldown active (${a.minIntervalMs}ms); ignoring event`);f=i,b.onFire({summary:e,context:g,chainDepth:d+1,sourceConversationId:h})},k=(0,t.eh)().subscribe(c=>{try{if(e){if(!(0,t.ru)(c)||c.topic!==d||!i(c.payload))return;j(c.chainDepth,`Signal "${c.topic}"`,{topic:c.topic,payload:v(c.payload),emitterFlowId:c.emitterFlowId,flowName:c.flowName,runId:c.runId,conversationId:c.conversationId,firedBy:c.firedBy},c.conversationId);return}if((0,t.ru)(c)||!(b=>{let c=a.source;return c.executionId?b.executionId===c.executionId:c.flowId?b.flowId===c.flowId:!!c.flowName&&b.flowName===c.flowName})(c)||!c.status||!(a.on??[]).includes(c.status)||!i(c.outputText))return;let b=c.flowName??c.flowId;j(c.chainDepth,`Flow "${b}" ${c.status}`,{flowId:c.flowId,flowName:c.flowName,executionId:c.executionId,runId:c.runId,conversationId:c.conversationId,status:c.status,firedBy:c.firedBy,outputText:v(c.outputText),error:c.error},c.conversationId)}catch(c){let a=c instanceof Error?c.message:String(c);u.warn(`Flow-event handling failed: ${a}`),b.onError(a)}});return{dispose:()=>k(),nextRun:()=>null}}(b,{onFire:({summary:b,context:c,chainDepth:d,sourceConversationId:e})=>{this.lastTriggerErrors.delete(a.id),this.fire(a,{kind:"flow-event",summary:b,context:c,chainDepth:d,parentConversationId:e}).catch(b=>C.error(`Flow-event fire failed for ${a.id}:`,b))},onSkip:b=>{let c=new Date().toISOString();(0,w.Hy)(a.id,{runId:(0,d.A)(),conversationId:"",firedAt:c,finishedAt:c,status:"skipped",triggerSummary:"Flow event",error:b}).catch(b=>C.warn(`Failed to record flow-event skip for ${a.id}:`,b))},onError:b=>this.lastTriggerErrors.set(a.id,b)}));break;default:C.warn(`Trigger type "${b.type}" is not implemented — "${a.name}" not armed`)}}async loadFile(){let a=await (0,e.YM)(f.Z.PLANNED_EXECUTIONS,D);return{version:1,paused:!0===a.paused,executions:Array.isArray(a.executions)?a.executions:[]}}async saveFile(a){await (0,e.VH)(f.Z.PLANNED_EXECUTIONS,a)}async isPaused(){return(await this.loadFile()).paused}async setPaused(a){let b=await this.loadFile();if(await this.saveFile({...b,paused:a}),await this.reconcile(),a){for(let a of[...this.queued.keys()])await this.cancelQueued(a,"scheduler paused",!0);await this.cancelAllExclusiveWaiting("scheduler paused",!0)}}async list(){return Promise.all((await this.loadFile()).executions.map(async a=>({execution:a,status:this.getStatus(a),lastRun:await (0,w.tl)(a.id)})))}async get(a){return(await this.loadFile()).executions.find(b=>b.id===a)??null}async create(a){let b=this.validateInput(a);if(b)return{error:b};if(void 0!==a.id&&!/^[A-Za-z0-9._:-]{1,128}$/.test(a.id))return{error:"The id must be 1-128 characters of letters, digits, dot, underscore, colon or hyphen"};if("."===a.id||".."===a.id)return{error:'The id must be a safe identifier, not "." or ".."'};let c=new Date().toISOString(),e={...a,folder:a.folder?.trim()||void 0,trigger:this.normalizeTrigger(a.trigger),id:a.id??(0,d.A)(),createdAt:c,updatedAt:c},f=await this.loadFile();return f.executions.some(a=>a.id===e.id)?{error:`A planned execution with id "${e.id}" already exists`,conflict:!0}:(await this.saveFile({...f,executions:[...f.executions,e]}),await this.reconcile(),{execution:e})}async update(a,b){let c=await this.loadFile(),d=c.executions.findIndex(b=>b.id===a);if(d<0)return{error:`No planned execution with id "${a}"`};let e=b.folder;if(Object.prototype.hasOwnProperty.call(b,"folder")&&void 0!==e&&"string"!=typeof e)return{error:"Folder must be text"};let f={...c.executions[d],...b,...Object.prototype.hasOwnProperty.call(b,"folder")?{folder:"string"==typeof e&&e.trim()||void 0}:{},...b.trigger?{trigger:this.normalizeTrigger(b.trigger)}:{},id:a,createdAt:c.executions[d].createdAt,updatedAt:new Date().toISOString()},g=this.validateInput(f);if(g)return{error:g};let h=[...c.executions];return h[d]=f,await this.saveFile({...c,executions:h}),Object.keys(b).some(a=>"folder"!==a)&&(await this.reconcile(),await this.cancelQueued(a,"execution updated",!0),await this.cancelExclusiveWaiting(a,"execution updated",!0)),{execution:f}}async delete(a){let b=await this.loadFile();return b.executions.some(b=>b.id===a)?(await this.saveFile({...b,executions:b.executions.filter(b=>b.id!==a)}),await this.reconcile(),this.lastTriggerErrors.delete(a),await this.cancelQueued(a,"execution deleted",!1),await this.cancelExclusiveWaiting(a,"execution deleted",!1),await (0,w.xC)(a),await B(a),{success:!0}):{success:!1,error:`No planned execution with id "${a}"`}}normalizeTrigger(a){return a?.type!=="webhook"||a.token?a?.type!=="mcp-poll"||a.cron?a:{...a,cron:(0,p.X)(a.intervalMs)}:{...a,token:(0,d.A)()}}validateInput(a){if(!a.name?.trim())return"A name is required";if(void 0!==a.folder&&"string"!=typeof a.folder)return"Folder must be text";if(a.folder&&a.folder.trim().length>120)return"Folder must be 120 characters or fewer";if(!a.flowId)return"A flow is required";if("string"!=typeof a.prompt)return"A prompt is required (may be empty)";if(void 0!==a.overlapStrategy&&!["skip","queue","parallel","error"].includes(a.overlapStrategy))return"Overlap strategy must be one of: skip, queue, parallel, error";if(void 0!==a.exclusive&&"boolean"!=typeof a.exclusive)return"Exclusive must be true or false";if(void 0!==a.nonExclusiveBehavior&&!["queue","skip","error"].includes(a.nonExclusiveBehavior))return"When exclusive is on, other triggers must be one of: queue, skip, error";let b=a.trigger;if(!b||"object"!=typeof b)return"A trigger is required";switch(b.type){case"schedule":{let a=(0,i.O9)(b.cron,b.timezone);return a.valid?null:`Invalid schedule: ${a.error}`}case"webhook":return null;case"file-watch":if(!b.path?.trim())return"A folder or file path to watch is required";if(!Array.isArray(b.events)||0===b.events.length)return"At least one file event is required";return null;case"mcp-poll":if(!b.serverName||!b.toolName)return"A server and tool are required";if(b.cron){let a=(0,i.O9)(b.cron,b.timezone);if(!a.valid)return`Invalid schedule: ${a.error}`}if(b.evaluate?.mode==="new-items"&&!b.evaluate.idField?.trim())return"An id field is required to detect new items";if((b.evaluate?.mode==="llm-gate"||b.evaluate?.mode==="flow-gate")&&!b.evaluate.condition?.trim())return"A condition is required for the AI to check";if(b.evaluate?.mode==="llm-gate"&&!b.evaluate.modelId)return"A model is required to check the condition";if(b.evaluate?.mode==="flow-gate"&&!b.evaluate.flowId)return"A flow is required to check the condition";return null;case"url-watch":{try{let a=new URL(b.url??"");if("http:"!==a.protocol&&"https:"!==a.protocol)return"The URL must start with http:// or https://"}catch{return"A valid URL is required"}let a=(0,i.O9)(b.cron,b.timezone);return a.valid?null:`Invalid schedule: ${a.error}`}case"flow-event":{let a=b.source;if(1!==[a?.executionId,a?.flowId,a?.flowName,a?.topic].filter(a=>"string"==typeof a&&a.trim().length>0).length)return"Choose exactly one source: a flow, a planned execution, or a signal topic";if(!("string"==typeof a?.topic&&a.topic.trim().length>0)){if(!Array.isArray(b.on)||0===b.on.length)return"Select at least one outcome to react to (completed or error)";if(b.on.some(a=>"completed"!==a&&"error"!==a))return'Outcomes must be "completed" or "error"'}if(b.outputMatch?.regex)try{new RegExp(b.outputMatch.regex)}catch(a){return`Invalid output-match regex: ${a instanceof Error?a.message:String(a)}`}if(void 0!==b.maxChainDepth&&(!Number.isInteger(b.maxChainDepth)||b.maxChainDepth<1))return"Max chain depth must be a positive whole number";if(void 0!==b.minIntervalMs&&(!Number.isFinite(b.minIntervalMs)||b.minIntervalMs<0))return"Minimum interval must be zero or more milliseconds";return null}default:return"Unknown trigger type"}}isRunning(a){let b=this.running.get(a);return void 0!==b&&b.size>0}addRunning(a,b,c){let d=this.running.get(a);d||(d=new Map,this.running.set(a,d)),d.set(b,c)}removeRunning(a,b){let c=this.running.get(a);c&&(c.delete(b),0===c.size&&this.running.delete(a))}earliestRunningSince(a){let b,c=this.running.get(a);if(c&&0!==c.size){for(let a of c.values())(void 0===b||a<b)&&(b=a);return b}}skippedRecord(a,b){let c=new Date().toISOString();return{runId:a.runId,conversationId:"",firedAt:c,finishedAt:c,status:"skipped",triggerSummary:a.payload.summary,error:b}}async cancelQueued(a,b,c){let d=this.queued.get(a);if(d&&0!==d.length){for(let e of(this.queued.delete(a),d)){let d=this.skippedRecord(e,b);if(c)try{await (0,w.Hy)(a,d)}catch(b){C.warn(`Failed to record cancelled queued fire for ${a}:`,b)}e.resolve(d)}C.info(`Cancelled ${d.length} queued fire(s) for ${a}: ${b}`)}}drainQueue(a){let b=this.queued.get(a);if(!b||0===b.length||this.isRunning(a))return;let c=b.shift();0===b.length&&this.queued.delete(a),c&&(async()=>{let b=await this.get(a);if(!b||!b.enabled||this.pausedCache){let a=b?b.enabled?"scheduler paused":"execution disabled":"execution deleted";c.resolve(this.skippedRecord(c,a));return}let d=await this.fire(b,c.payload,c.runId);c.resolve(d)})().catch(b=>C.error(`Queued fire failed for ${a}:`,b))}isSchedulerIdle(){for(let a of this.running.values())if(a.size>0)return!1;return!0}isExclusiveActive(){return null!==this.exclusiveHolder||this.exclusiveWaiting.length>0}currentExclusiveBehavior(){return null!==this.exclusiveHolder?this.exclusiveHolderBehavior:this.exclusiveWaiting[0]?.execution.nonExclusiveBehavior??"queue"}exclusiveGateFor(a){return!0!==a.exclusive&&this.isExclusiveActive()?this.currentExclusiveBehavior():null}drainExclusive(){if(null===this.exclusiveHolder&&this.exclusiveWaiting.length>0&&this.isSchedulerIdle())return void this.acquireNextExclusive();this.isExclusiveActive()||this.drainBlockedByExclusive()}acquireNextExclusive(){if(null!==this.exclusiveHolder||!this.isSchedulerIdle())return;let a=this.exclusiveWaiting.shift();if(!a)return;let b=a.execution.id;this.exclusiveHolder=b,this.exclusiveHolderBehavior=a.execution.nonExclusiveBehavior??"queue",(async()=>{let c=await this.get(b);if(!c||!c.enabled||this.pausedCache||!0!==c.exclusive){let d=c?c.enabled?this.pausedCache?"scheduler paused":"no longer exclusive":"execution disabled":"execution deleted";this.exclusiveHolder===b&&(this.exclusiveHolder=null),a.resolve(this.skippedRecord(a,d)),this.drainExclusive();return}this.exclusiveHolderBehavior=c.nonExclusiveBehavior??"queue";let d=await this.fire(c,a.payload,a.runId);a.resolve(d)})().catch(c=>{this.exclusiveHolder===b&&(this.exclusiveHolder=null),C.error(`Exclusive acquire failed for ${b}:`,c),a.resolve(this.skippedRecord(a,"exclusive acquire failed")),this.drainExclusive()})}drainBlockedByExclusive(){if(0===this.blockedByExclusive.length)return;let a=this.blockedByExclusive;for(let b of(this.blockedByExclusive=[],a))(async()=>{let a=await this.get(b.execution.id);if(!a||!a.enabled||this.pausedCache){let c=a?a.enabled?"scheduler paused":"execution disabled":"execution deleted";b.resolve(this.skippedRecord(b,c));return}let c=await this.fire(a,b.payload,b.runId);b.resolve(c)})().catch(a=>C.error(`Deferred non-exclusive fire failed for ${b.execution.id}:`,a))}async cancelExclusiveWaiting(a,b,c){let d=[];if(this.exclusiveWaiting=this.exclusiveWaiting.filter(b=>b.execution.id!==a||(d.push(b),!1)),this.blockedByExclusive=this.blockedByExclusive.filter(b=>b.execution.id!==a||(d.push(b),!1)),0!==d.length){for(let e of d){let d=this.skippedRecord(e,b);if(c)try{await (0,w.Hy)(a,d)}catch(b){C.warn(`Failed to record cancelled exclusive fire for ${a}:`,b)}e.resolve(d)}C.info(`Cancelled ${d.length} exclusive-related fire(s) for ${a}: ${b}`)}}async cancelAllExclusiveWaiting(a,b){let c=[...this.exclusiveWaiting,...this.blockedByExclusive];if(this.exclusiveWaiting=[],this.blockedByExclusive=[],0!==c.length){for(let d of c){let c=this.skippedRecord(d,a);if(b)try{await (0,w.Hy)(d.execution.id,c)}catch(a){C.warn(`Failed to record cancelled exclusive fire for ${d.execution.id}:`,a)}d.resolve(c)}C.info(`Cancelled ${c.length} exclusive-related fire(s): ${a}`)}}getStatus(a){let b=this.armed.get(a.id),c=void 0!==b||a.enabled&&"webhook"===a.trigger.type&&this.started&&!this.pausedCache,d=this.earliestRunningSince(a.id),e=c?void 0:a.enabled?this.pausedCache?"paused":void 0:"disabled",f=this.exclusiveHolder??void 0,g=!0!==a.exclusive&&this.isExclusiveActive();return{armed:c,notArmedReason:e,nextRun:b?.nextRun?b.nextRun():void 0,lastTriggerError:this.lastTriggerErrors.get(a.id),running:void 0!==d,runningSince:d,exclusiveHolderId:f,blockedByExclusive:g}}async runNow(a){let b=await this.get(a);return b?{record:await this.fire(b,{kind:"manual",summary:"Manual run"},(0,d.A)(),!0)}:{error:`No planned execution with id "${a}"`}}async fire(a,b,e=(0,d.A)(),f=!1){let g,i=new Date().toISOString();if(await (0,h.isEncryptionLocked)()){let c={runId:e,conversationId:"",firedAt:i,finishedAt:i,status:"skipped",triggerSummary:b.summary,error:"encryption locked"};return await (0,w.Hy)(a.id,c),C.info(`Skipped fire for "${a.name}" — encryption locked`),c}let j="flow-event"===b.kind;if(!f&&!j){if(!0===a.exclusive){if(this.exclusiveHolder!==a.id){if(null!==this.exclusiveHolder||!this.isSchedulerIdle()){let c=this.exclusiveWaiting.length;if(c>=E.MAX_QUEUE_DEPTH){let c={runId:e,conversationId:"",firedAt:i,finishedAt:i,status:"skipped",triggerSummary:b.summary,error:`Exclusive wait queue full (cap ${E.MAX_QUEUE_DEPTH}) — fire dropped`};return await (0,w.Hy)(a.id,c),C.warn(`Exclusive wait queue full for "${a.name}" — dropped fire`),c}return C.info(`Exclusive "${a.name}" waiting for scheduler to idle (depth ${c+1})`),new Promise(c=>{this.exclusiveWaiting.push({execution:a,payload:b,runId:e,resolve:c})})}this.exclusiveHolder=a.id,this.exclusiveHolderBehavior=a.nonExclusiveBehavior??"queue",C.info(`Exclusive "${a.name}" acquired the scheduler lock`)}}else if(this.isExclusiveActive()){let c=this.currentExclusiveBehavior();if("skip"===c){let c={runId:e,conversationId:"",firedAt:i,finishedAt:i,status:"skipped",triggerSummary:b.summary,error:"Skipped — an exclusive execution holds the scheduler lock"};return await (0,w.Hy)(a.id,c),C.info(`Skipped non-exclusive fire for "${a.name}" — exclusive lock held`),c}if("error"===c){let c={runId:e,conversationId:"",firedAt:i,finishedAt:i,status:"error",triggerSummary:b.summary,error:"Rejected — an exclusive execution holds the scheduler lock"};return await (0,w.Hy)(a.id,c),C.info(`Rejected non-exclusive fire for "${a.name}" — exclusive lock held`),c}let d=this.blockedByExclusive.length;if(d>=E.MAX_QUEUE_DEPTH){let c={runId:e,conversationId:"",firedAt:i,finishedAt:i,status:"skipped",triggerSummary:b.summary,error:`Exclusive-block queue full (cap ${E.MAX_QUEUE_DEPTH}) — fire dropped`};return await (0,w.Hy)(a.id,c),C.warn(`Exclusive-block queue full for "${a.name}" — dropped fire`),c}return C.info(`Deferred non-exclusive fire for "${a.name}" — exclusive lock held (depth ${d+1})`),new Promise(c=>{this.blockedByExclusive.push({execution:a,payload:b,runId:e,resolve:c})})}}let k=a.overlapStrategy??"skip";if(!f&&this.isRunning(a.id)){if("skip"===k){let c={runId:e,conversationId:"",firedAt:i,finishedAt:i,status:"skipped",triggerSummary:b.summary,error:"Previous run still in progress"};return await (0,w.Hy)(a.id,c),C.info(`Skipped overlapping fire for "${a.name}"`),c}if("error"===k){let c={runId:e,conversationId:"",firedAt:i,finishedAt:i,status:"error",triggerSummary:b.summary,error:"Overlapping run rejected (overlapStrategy=error)"};return await (0,w.Hy)(a.id,c),C.info(`Rejected overlapping fire for "${a.name}" (overlapStrategy=error)`),c}if("queue"===k){let c=this.queued.get(a.id)?.length??0;if(c>=E.MAX_QUEUE_DEPTH){let c={runId:e,conversationId:"",firedAt:i,finishedAt:i,status:"skipped",triggerSummary:b.summary,error:`Overlap queue full (cap ${E.MAX_QUEUE_DEPTH}) — fire dropped`};return await (0,w.Hy)(a.id,c),C.warn(`Overlap queue full for "${a.name}" — dropped fire`),c}return C.info(`Queued overlapping fire for "${a.name}" (depth ${c+1})`),new Promise(c=>{let d=this.queued.get(a.id)??[];d.push({execution:a,payload:b,runId:e,resolve:c}),this.queued.set(a.id,d)})}}this.addRunning(a.id,e,i);let l=(0,d.A)();try{C.info(`Firing "${a.name}" (${b.kind})`);let d=await (0,w.Sw)(a.id),f=d.length>0?d[d.length-1]:null,h={executionName:a.name,trigger:b.kind,now:i,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,lastRun:f?{at:f.firedAt,status:f.status}:null,nextPlannedRun:this.getStatus(a).nextRun??null},j=a.approvalPolicy??"auto",k=a.saveConversations||"pause"===j?"conversation":"ephemeral",{runFlow:m}=await Promise.all([c.e(3128),c.e(4322),c.e(5067),c.e(6034),c.e(7821),c.e(5096),c.e(544),c.e(4671),c.e(6226),c.e(4306)]).then(c.bind(c,16226)),n=await m({flowId:a.flowId,prompt:this.composePrompt(a.prompt,b,h),mode:k,conversationId:l,source:"schedule",plannedExecutionId:a.id,parentRunId:b.parentConversationId,chainDepth:b.chainDepth??0,requireApproval:"auto"!==j,onApprovalRequired:j,debug:!1,userTurn:!0});g=await this.recordFromResult(a,n,{runId:e,conversationId:l,firedAt:i,payload:b})}catch(c){g={runId:e,conversationId:l,firedAt:i,finishedAt:new Date().toISOString(),status:"error",triggerSummary:b.summary,error:c instanceof Error?c.message:String(c)},C.error(`Run crashed for "${a.name}":`,c)}finally{this.removeRunning(a.id,e),this.exclusiveHolder!==a.id||this.isRunning(a.id)||(this.exclusiveHolder=null,C.info(`Exclusive "${a.name}" released the scheduler lock`)),this.drainExclusive(),this.drainQueue(a.id)}return await this.get(a.id)===null?C.info(`Dropping run record for deleted execution ${a.id}`):(await (0,w.Hy)(a.id,g),("completed"===g.status||"error"===g.status)&&await this.publishFlowRunEvent(a,g,b)),g}async recordFromResult(a,b,c){let{runId:d,conversationId:e,firedAt:f,payload:g}=c,h=new Date().toISOString(),i="awaiting_tool_approval"===b.status,j="error"===b.status&&b.error?.details?.type==="approval_required";if(i||j){let c=(b.pendingToolCalls??[]).map(a=>({id:a.id,name:"function"===a.type?a.function.name:String(a.type)})),k={runId:d,conversationId:e,firedAt:f,finishedAt:h,status:"needs_approval",triggerSummary:g.summary,outputText:this.truncateOutput(b.outputText),usage:b.usage,error:j?b.error?.message??"Tool approval required":"Awaiting tool approval",pendingApproval:{tool:c[0]?.name??b.error?.details?.name,toolCallId:c[0]?.id,pendingToolCalls:c.length>0?c:void 0}};return i&&await this.registerPendingApproval(a,k,c),k}return{runId:d,conversationId:e,firedAt:f,finishedAt:h,status:"completed"===b.status?"completed":"capped"===b.status?"capped":"error",triggerSummary:g.summary,outputText:this.truncateOutput(b.outputText),usage:b.usage,error:"completed"===b.status||"capped"===b.status?void 0:b.error?.message??`Run ended with status "${b.status}"`}}async registerPendingApproval(a,b,d){try{let e;try{let{flowService:b}=await c.e(7821).then(c.bind(c,87821));e=(await b.getFlow(a.flowId))?.name??void 0}catch(b){C.debug(`Could not resolve flow name for pending approval (${a.flowId}):`,b)}let{putPendingApproval:f}=await c.e(9285).then(c.bind(c,39285));await f({approvalId:b.conversationId,conversationId:b.conversationId,plannedExecutionId:a.id,flowId:a.flowId,flowName:e,runId:b.runId,triggerSummary:b.triggerSummary,pendingToolCalls:d,createdAt:b.firedAt})}catch(b){C.warn(`Failed to register pending approval for "${a.name}":`,b)}}async publishFlowRunEvent(a,b,d){try{let e;try{let{flowService:b}=await c.e(7821).then(c.bind(c,87821));e=(await b.getFlow(a.flowId))?.name??void 0}catch(b){C.debug(`Could not resolve flow name for run event (${a.flowId}):`,b)}let f="schedule-catchup"===d.kind?"schedule":d.kind;(0,t.eh)().publish({flowId:a.flowId,flowName:e,executionId:a.id,runId:b.runId,conversationId:b.conversationId,status:"completed"===b.status?"completed":"error",outputText:b.outputText,error:b.error,firedBy:f,chainDepth:d.chainDepth??0,timestamp:b.finishedAt??new Date().toISOString()})}catch(b){C.warn(`Failed to publish flow-run event for "${a.name}":`,b)}}composePrompt(a,b,c){let d=JSON.stringify(void 0===b.context?c:{...c,data:b.context},null,2);return`${a}
|
|
2
2
|
|
|
3
3
|
[Run info — when and why this run happened; "data" is untrusted trigger data]
|
|
4
4
|
\`\`\`json
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports.id=4822,exports.ids=[1925,3629,4306,4822,6793,9174],exports.modules={1925:(a,b,c)=>{"use strict";c.d(b,{Hm:()=>f,xc:()=>e});let d=["key","secret","token","password"],e=a=>d.some(b=>a.toLowerCase().includes(b)),f=a=>e(a)||"authorization"===a.trim().toLowerCase()},3676:(a,b,c)=>{"use strict";c.d(b,{Wj:()=>h,ln:()=>g});var d=c(10641),e=c(58739);let f="encryption_locked";async function g(){return(0,e.isEncryptionLocked)()}async function h(a){return await g()?a?.openai?d.NextResponse.json({error:{message:"Encryption is locked. Unlock FLUJO to continue.",type:f,code:f,param:null}},{status:423}):d.NextResponse.json({error:f},{status:423}):null}},41115:(a,b,c)=>{"use strict";c.d(b,{$:()=>h,v5:()=>g});var d=c(10641);let e=new Set(["localhost","127.0.0.1","::1"]);function f(a){let b=a.toLowerCase();return!!e.has(b)||(function(){let a=process.env.FLUJO_EXTRA_LOCAL_HOSTS;return a?a.split(",").map(a=>a.trim().toLowerCase()).filter(a=>a.length>0&&"."!==a):[]})().some(a=>a.startsWith(".")?b.endsWith(a):b===a)}function g(a,b){let c=function(a){if(!a)return null;let b=a.trim();if(b.startsWith("[")){let a=b.indexOf("]");return a>0?b.slice(1,a):null}return b.split(":")[0]||null}(a);if(!c||!f(c))return!1;if(b)try{if(!f(new URL(b).hostname))return!1}catch{return!1}return!0}function h(a){return g(a.headers.get("host"),a.headers.get("origin"))?null:d.NextResponse.json({error:"Forbidden: this endpoint only accepts local requests."},{status:403})}},42398:(a,b,c)=>{"use strict";c.d(b,{QE:()=>l,_u:()=>n,aZ:()=>k,qf:()=>o,v5:()=>h.v5,xK:()=>m,xV:()=>p});var d=c(50846),e=c(60453),f=c(3676),g=c(68780),h=c(41115);let i=(0,d.h)("backend/services/mcp/proxyForward"),j="FLUJO encryption is locked (encryption_locked). Unlock FLUJO to continue.";async function k(a){let b=await e.mcpService.loadServerConfigs();if(!Array.isArray(b))return i.warn("isServerExposed: failed to load server configs",{error:b.error}),!1;let c=b.find(b=>b.name===a);return!!c&&!c.disabled&&!0===c.exposeAsMcpServer}async function l(a){if(await (0,f.ln)())throw Error(j);let b=await e.mcpService.connectServer(a);if(!b.success)throw Error(`Failed to connect to MCP server '${a}': ${b.error}`);let c=await e.mcpService.listServerTools(a);if(c.error)throw Error(`Failed to list tools for '${a}': ${c.error}`);return{tools:c.tools??[]}}async function m(a,b,c){if(await (0,f.ln)())return{content:[{type:"text",text:j}],isError:!0};let d=await e.mcpService.connectServer(a);if(!d.success)return{content:[{type:"text",text:`Error connecting to '${a}': ${d.error}`}],isError:!0};let g=await e.mcpService.callTool(a,b,c,void 0,void 0,void 0,void 0,"model");return g.success?g.data:{content:[{type:"text",text:`Error: ${g.error??"Unknown error"}`}],isError:!0}}async function n(a){if(await (0,f.ln)())throw Error(j);let b=await e.mcpService.connectServer(a);if(!b.success)throw Error(`Failed to connect to MCP server '${a}': ${b.error}`);let c=await e.mcpService.listServerResources(a);if(c.error)throw Error(`Failed to list resources for '${a}': ${c.error}`);return{resources:c.resources??[]}}async function o(a){if(await (0,f.ln)())throw Error(j);let b=await e.mcpService.connectServer(a);if(!b.success)throw Error(`Failed to connect to MCP server '${a}': ${b.error}`);let c=await e.mcpService.listServerResourceTemplates(a);if(c.error)throw Error(`Failed to list resource templates for '${a}': ${c.error}`);return{resourceTemplates:c.resourceTemplates??[]}}async function p(a,b){if(await (0,f.ln)())throw Error(j);let c=await e.mcpService.connectServer(a);if(!c.success)throw Error(`Failed to connect to MCP server '${a}': ${c.error}`);let d=await e.mcpService.readResource(a,b);if(!d.success||!d.data)throw new g.Nh(g.O4.InvalidParams,`Resource not found: '${b}' on server '${a}': ${d.error??"unknown error"}`);return d.data}},56793:(a,b,c)=>{"use strict";c.d(b,{eh:()=>g,ru:()=>e});let d=(0,c(50846).h)("backend/services/scheduler/flowRunEventBus");function e(a){return"signal"===a.kind}class f{publish(a){if(0===this.listeners.size)return;let b=e(a)?`signal topic=${a.topic} emitter=${a.emitterFlowId}`:`flow=${a.flowId} status=${a.status}`;for(let c of(d.debug(`Publishing flow event: ${b} firedBy=${a.firedBy} depth=${a.chainDepth} listeners=${this.listeners.size}`),[...this.listeners]))try{c(a)}catch(a){d.warn("A flow-run event listener threw:",a)}}subscribe(a){return this.listeners.add(a),()=>{this.listeners.delete(a)}}get listenerCount(){return this.listeners.size}constructor(){this.listeners=new Set}}function g(){return global.__flujo_flow_run_event_bus||(global.__flujo_flow_run_event_bus=new f),global.__flujo_flow_run_event_bus}},73456:(a,b,c)=>{"use strict";c.d(b,{G:()=>m,V:()=>l,resolveGlobalVars:()=>k});var d=c(75879);c(68633);var e=c(50846),f=c(92372),g=c(38844),h=c(58739),i=c(51669);let j=(0,e.h)("backend/utils/resolveGlobalVars");async function k(a,b={}){j.debug("Entering resolveGlobalVars method");let c=!1!==b.resolveSecrets,d=await (0,f.YM)(g.Z.GLOBAL_ENV_VARS,{}),e=function(a){if(!a||"object"!=typeof a)return!1;let b=Object.keys(a);if(0===b.length)return!0;let c=a[b[0]];return c&&"object"==typeof c&&"value"in c&&"metadata"in c&&"object"==typeof c.metadata&&"isSecret"in c.metadata}(d);j.debug(`Loaded ${Object.keys(d).length} global environment variables (${e?"new":"old"} format)`);let i={},l=new Set;if(e)for(let[a,b]of Object.entries(d))i[a]=b.value,b.metadata.isSecret&&l.add(a);else i={...d};let m=async a=>{let b=a.match(/\$\{global:([^}]+)\}/g);if(!b)return a;let d=a;for(let a of b){let b=a.substring(9,a.length-1);if(void 0!==i[b]){let e=i[b];if(!c&&(l.has(b)||e.startsWith("encrypted:")||e.startsWith("encrypted_failed:"))){j.debug(`Keeping secret global variable unresolved: ${b}`);continue}if(e.startsWith("encrypted:")){j.debug(`Decrypting encrypted global variable: ${b}`);try{let a=e.substring(10),c=await (0,h.decryptWithPassword)(a);if(c)e=c,j.debug(`Successfully decrypted global variable: ${b}`);else{j.warn(`Failed to decrypt global variable: ${b}`);continue}}catch(a){j.error(`Error decrypting global variable: ${b}`,a);continue}}else if(e.startsWith("encrypted_failed:")){j.warn(`Skipping failed encrypted global variable: ${b}`);continue}j.debug(`Resolved global variable: ${b}`),d=d.replace(a,e)}else j.warn(`Global variable not found: ${b}`)}return d},n=async a=>{if("string"==typeof a)return await m(a);if(Array.isArray(a))return await Promise.all(a.map(a=>n(a)));if(null!==a&&"object"==typeof a){let b={};for(let[c,d]of Object.entries(a))b[c]=await n(d);return b}return a},o=await n(a);return"object"==typeof a&&null!==a&&j.debug("Resolved global variables result:",JSON.stringify(o,null,2)),j.debug("Completed global variable resolution"),o}async function l(a){return k(a,{resolveSecrets:!1})}async function m(a,b=0){if(j.debug(`Entering resolveAndDecryptApiKey method (depth: ${b})`),!a)return j.warn("Empty value provided"),null;if(b>=10)return j.warn(`Maximum resolution depth reached (10) for value: ${a}`),a;let c=a;if(c.startsWith("encrypted:")){j.debug(`Decrypting encrypted value at depth ${b}`);try{let a=c.substring(10),d=await (0,h.decryptWithPassword)(a);if(!d)return j.warn(`Failed to decrypt value at depth ${b}`),null;j.debug(`Successfully decrypted value at depth ${b}`),j.verbose(d),c=d}catch(a){return j.error(`Error decrypting value at depth ${b}:`,a),null}}else c.startsWith("encrypted_failed:")&&(j.warn(`Skipping failed encrypted value at depth ${b}`),c=c.substring(17));if(c.includes("${global:")){j.debug(`Resolving global variables at depth ${b}`);try{let a=await k(c);if(j.verbose(a),a!==c)return j.debug(`Value changed after resolving globals at depth ${b}, processing recursively`),m(a,b+1);c=a}catch(a){return j.error(`Error resolving global variables at depth ${b}:`,a),null}}return j.debug(`Completed resolveAndDecryptApiKey at depth ${b}`),c}(0,i.D)([k,l,m]),(0,d.A)(k,"605caa1e030009a4bc7e820854ff481d3e0295325d",null),(0,d.A)(l,"4003ce37366709f5add0c98a6e32e47a1006fd7c7d",null),(0,d.A)(m,"6061ed6d99a98b5d9f5d2d15065caab0a27d6a8987",null)},78335:()=>{},91959:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"4003ce37366709f5add0c98a6e32e47a1006fd7c7d":()=>d.V,"605caa1e030009a4bc7e820854ff481d3e0295325d":()=>d.resolveGlobalVars,"6061ed6d99a98b5d9f5d2d15065caab0a27d6a8987":()=>d.G});var d=c(73456)},96487:()=>{}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=5067,exports.ids=[5067],exports.modules={26961:(a,b,c)=>{c.r(b),c.d(b,{bigint:()=>i,boolean:()=>h,date:()=>j,number:()=>g,string:()=>f});var d=c(89901),e=c(10522);function f(a){return d.K_(e.ZodString,a)}function g(a){return d.qG(e.ZodNumber,a)}function h(a){return d.dN(e.ZodBoolean,a)}function i(a){return d.St(e.ZodBigInt,a)}function j(a){return d.B4(e.ZodDate,a)}},68780:(a,b,c)=>{c.d(b,{$9:()=>bE,Cs:()=>bP,Dn:()=>a1,EV:()=>j,FP:()=>a9,FT:()=>a6,GU:()=>bM,HM:()=>aZ,Iu:()=>i,K1:()=>bn,LW:()=>F,Mg:()=>ah,Nh:()=>bR,O$:()=>aC,O4:()=>d,OI:()=>az,OR:()=>G,PC:()=>h,Ql:()=>ak,R6:()=>aE,Rk:()=>X,Sc:()=>al,Sq:()=>J,TF:()=>a4,TI:()=>bo,UJ:()=>x,WK:()=>aX,WQ:()=>bO,WT:()=>a3,Yu:()=>aO,ZC:()=>Y,_r:()=>ab,a5:()=>ao,a8:()=>N,aE:()=>g,bZ:()=>s,b_:()=>bb,br:()=>a$,cL:()=>aK,cv:()=>aA,eK:()=>V,fH:()=>a7,gH:()=>aq,gW:()=>a2,gd:()=>ap,hh:()=>aG,ig:()=>D,ki:()=>aj,lg:()=>B,n_:()=>bH,oQ:()=>am,rk:()=>U,s:()=>aB,tC:()=>$,u$:()=>aW,u9:()=>bm,ve:()=>aF,vo:()=>z,w9:()=>aV,wR:()=>H,wU:()=>Z,xI:()=>a8,zR:()=>an});var d,e=c(10522),f=c(92139);let g="2025-11-25",h="2025-03-26",i=[g,"2025-06-18","2025-03-26","2024-11-05","2024-10-07"],j="io.modelcontextprotocol/related-task",k=e.custom(a=>null!==a&&("object"==typeof a||"function"==typeof a)),l=e.union([e.string(),e.number().int()]),m=e.string();e.looseObject({ttl:e.number().optional(),pollInterval:e.number().optional()});let n=e.object({ttl:e.number().optional()}),o=e.object({taskId:e.string()}),p=e.looseObject({progressToken:l.optional(),[j]:o.optional()}),q=e.object({_meta:p.optional()}),r=q.extend({task:n.optional()}),s=a=>r.safeParse(a).success,t=e.object({method:e.string(),params:q.loose().optional()}),u=e.object({_meta:p.optional()}),v=e.object({method:e.string(),params:u.loose().optional()}),w=e.looseObject({_meta:p.optional()}),x=e.union([e.string(),e.number().int()]),y=e.object({jsonrpc:e.literal("2.0"),id:x,...t.shape}).strict(),z=a=>y.safeParse(a).success,A=e.object({jsonrpc:e.literal("2.0"),...v.shape}).strict(),B=a=>A.safeParse(a).success,C=e.object({jsonrpc:e.literal("2.0"),id:x,result:w}).strict(),D=a=>C.safeParse(a).success;!function(a){a[a.ConnectionClosed=-32e3]="ConnectionClosed",a[a.RequestTimeout=-32001]="RequestTimeout",a[a.ParseError=-32700]="ParseError",a[a.InvalidRequest=-32600]="InvalidRequest",a[a.MethodNotFound=-32601]="MethodNotFound",a[a.InvalidParams=-32602]="InvalidParams",a[a.InternalError=-32603]="InternalError",a[a.UrlElicitationRequired=-32042]="UrlElicitationRequired"}(d||(d={}));let E=e.object({jsonrpc:e.literal("2.0"),id:x.optional(),error:e.object({code:e.number().int(),message:e.string(),data:e.unknown().optional()})}).strict(),F=a=>E.safeParse(a).success,G=e.union([y,A,C,E]);e.union([C,E]);let H=w.strict(),I=u.extend({requestId:x.optional(),reason:e.string().optional()}),J=v.extend({method:e.literal("notifications/cancelled"),params:I}),K=e.object({src:e.string(),mimeType:e.string().optional(),sizes:e.array(e.string()).optional(),theme:e.enum(["light","dark"]).optional()}),L=e.object({icons:e.array(K).optional()}),M=e.object({name:e.string(),title:e.string().optional()}),N=M.extend({...M.shape,...L.shape,version:e.string(),websiteUrl:e.string().optional(),description:e.string().optional()}),O=e.intersection(e.object({applyDefaults:e.boolean().optional()}),e.record(e.string(),e.unknown())),P=e.preprocess(a=>a&&"object"==typeof a&&!Array.isArray(a)&&0===Object.keys(a).length?{form:{}}:a,e.intersection(e.object({form:O.optional(),url:k.optional()}),e.record(e.string(),e.unknown()).optional())),Q=e.looseObject({list:k.optional(),cancel:k.optional(),requests:e.looseObject({sampling:e.looseObject({createMessage:k.optional()}).optional(),elicitation:e.looseObject({create:k.optional()}).optional()}).optional()}),R=e.looseObject({list:k.optional(),cancel:k.optional(),requests:e.looseObject({tools:e.looseObject({call:k.optional()}).optional()}).optional()}),S=e.object({experimental:e.record(e.string(),k).optional(),sampling:e.object({context:k.optional(),tools:k.optional()}).optional(),elicitation:P.optional(),roots:e.object({listChanged:e.boolean().optional()}).optional(),tasks:Q.optional(),extensions:e.record(e.string(),k).optional()}),T=q.extend({protocolVersion:e.string(),capabilities:S,clientInfo:N}),U=t.extend({method:e.literal("initialize"),params:T}),V=a=>U.safeParse(a).success,W=e.object({experimental:e.record(e.string(),k).optional(),logging:k.optional(),completions:k.optional(),prompts:e.object({listChanged:e.boolean().optional()}).optional(),resources:e.object({subscribe:e.boolean().optional(),listChanged:e.boolean().optional()}).optional(),tools:e.object({listChanged:e.boolean().optional()}).optional(),tasks:R.optional(),extensions:e.record(e.string(),k).optional()}),X=w.extend({protocolVersion:e.string(),capabilities:W,serverInfo:N,instructions:e.string().optional()}),Y=v.extend({method:e.literal("notifications/initialized"),params:u.optional()}),Z=a=>Y.safeParse(a).success,$=t.extend({method:e.literal("ping"),params:q.optional()}),_=e.object({progress:e.number(),total:e.optional(e.number()),message:e.optional(e.string())}),aa=e.object({...u.shape,..._.shape,progressToken:l}),ab=v.extend({method:e.literal("notifications/progress"),params:aa}),ac=q.extend({cursor:m.optional()}),ad=t.extend({params:ac.optional()}),ae=w.extend({nextCursor:m.optional()}),af=e.enum(["working","input_required","completed","failed","cancelled"]),ag=e.object({taskId:e.string(),status:af,ttl:e.union([e.number(),e.null()]),createdAt:e.string(),lastUpdatedAt:e.string(),pollInterval:e.optional(e.number()),statusMessage:e.optional(e.string())}),ah=w.extend({task:ag}),ai=u.merge(ag),aj=v.extend({method:e.literal("notifications/tasks/status"),params:ai}),ak=t.extend({method:e.literal("tasks/get"),params:q.extend({taskId:e.string()})}),al=w.merge(ag),am=t.extend({method:e.literal("tasks/result"),params:q.extend({taskId:e.string()})});w.loose();let an=ad.extend({method:e.literal("tasks/list")}),ao=ae.extend({tasks:e.array(ag)}),ap=t.extend({method:e.literal("tasks/cancel"),params:q.extend({taskId:e.string()})}),aq=w.merge(ag),ar=e.object({uri:e.string(),mimeType:e.optional(e.string()),_meta:e.record(e.string(),e.unknown()).optional()}),as=ar.extend({text:e.string()}),at=e.string().refine(a=>{try{return atob(a),!0}catch{return!1}},{message:"Invalid Base64 string"}),au=ar.extend({blob:at}),av=e.enum(["user","assistant"]),aw=e.object({audience:e.array(av).optional(),priority:e.number().min(0).max(1).optional(),lastModified:f.datetime({offset:!0}).optional()}),ax=e.object({...M.shape,...L.shape,uri:e.string(),description:e.optional(e.string()),mimeType:e.optional(e.string()),size:e.optional(e.number()),annotations:aw.optional(),_meta:e.optional(e.looseObject({}))}),ay=e.object({...M.shape,...L.shape,uriTemplate:e.string(),description:e.optional(e.string()),mimeType:e.optional(e.string()),annotations:aw.optional(),_meta:e.optional(e.looseObject({}))}),az=ad.extend({method:e.literal("resources/list")}),aA=ae.extend({resources:e.array(ax)}),aB=ad.extend({method:e.literal("resources/templates/list")}),aC=ae.extend({resourceTemplates:e.array(ay)}),aD=q.extend({uri:e.string()}),aE=t.extend({method:e.literal("resources/read"),params:aD}),aF=w.extend({contents:e.array(e.union([as,au]))}),aG=v.extend({method:e.literal("notifications/resources/list_changed"),params:u.optional()}),aH=t.extend({method:e.literal("resources/subscribe"),params:aD}),aI=t.extend({method:e.literal("resources/unsubscribe"),params:aD}),aJ=u.extend({uri:e.string()}),aK=v.extend({method:e.literal("notifications/resources/updated"),params:aJ}),aL=e.object({name:e.string(),description:e.optional(e.string()),required:e.optional(e.boolean())}),aM=e.object({...M.shape,...L.shape,description:e.optional(e.string()),arguments:e.optional(e.array(aL)),_meta:e.optional(e.looseObject({}))}),aN=ad.extend({method:e.literal("prompts/list")}),aO=ae.extend({prompts:e.array(aM)}),aP=q.extend({name:e.string(),arguments:e.record(e.string(),e.string()).optional()}),aQ=t.extend({method:e.literal("prompts/get"),params:aP}),aR=e.object({type:e.literal("text"),text:e.string(),annotations:aw.optional(),_meta:e.record(e.string(),e.unknown()).optional()}),aS=e.object({type:e.literal("image"),data:at,mimeType:e.string(),annotations:aw.optional(),_meta:e.record(e.string(),e.unknown()).optional()}),aT=e.object({type:e.literal("audio"),data:at,mimeType:e.string(),annotations:aw.optional(),_meta:e.record(e.string(),e.unknown()).optional()}),aU=e.object({type:e.literal("tool_use"),name:e.string(),id:e.string(),input:e.record(e.string(),e.unknown()),_meta:e.record(e.string(),e.unknown()).optional()}),aV=e.object({type:e.literal("resource"),resource:e.union([as,au]),annotations:aw.optional(),_meta:e.record(e.string(),e.unknown()).optional()}),aW=ax.extend({type:e.literal("resource_link")}),aX=e.union([aR,aS,aT,aW,aV]),aY=e.object({role:av,content:aX}),aZ=w.extend({description:e.string().optional(),messages:e.array(aY)}),a$=v.extend({method:e.literal("notifications/prompts/list_changed"),params:u.optional()}),a_=e.object({title:e.string().optional(),readOnlyHint:e.boolean().optional(),destructiveHint:e.boolean().optional(),idempotentHint:e.boolean().optional(),openWorldHint:e.boolean().optional()}),a0=e.object({taskSupport:e.enum(["required","optional","forbidden"]).optional()}),a1=e.object({...M.shape,...L.shape,description:e.string().optional(),inputSchema:e.object({type:e.literal("object"),properties:e.record(e.string(),k).optional(),required:e.array(e.string()).optional()}).catchall(e.unknown()),outputSchema:e.object({type:e.literal("object"),properties:e.record(e.string(),k).optional(),required:e.array(e.string()).optional()}).catchall(e.unknown()).optional(),annotations:a_.optional(),execution:a0.optional(),_meta:e.record(e.string(),e.unknown()).optional()}),a2=ad.extend({method:e.literal("tools/list")}),a3=ae.extend({tools:e.array(a1)}),a4=w.extend({content:e.array(aX).default([]),structuredContent:e.record(e.string(),e.unknown()).optional(),isError:e.boolean().optional()});a4.or(w.extend({toolResult:e.unknown()}));let a5=r.extend({name:e.string(),arguments:e.record(e.string(),e.unknown()).optional()}),a6=t.extend({method:e.literal("tools/call"),params:a5}),a7=v.extend({method:e.literal("notifications/tools/list_changed"),params:u.optional()}),a8=e.object({autoRefresh:e.boolean().default(!0),debounceMs:e.number().int().nonnegative().default(300)}),a9=e.enum(["debug","info","notice","warning","error","critical","alert","emergency"]),ba=q.extend({level:a9}),bb=t.extend({method:e.literal("logging/setLevel"),params:ba}),bc=u.extend({level:a9,logger:e.string().optional(),data:e.unknown()}),bd=v.extend({method:e.literal("notifications/message"),params:bc}),be=e.object({name:e.string().optional()}),bf=e.object({hints:e.array(be).optional(),costPriority:e.number().min(0).max(1).optional(),speedPriority:e.number().min(0).max(1).optional(),intelligencePriority:e.number().min(0).max(1).optional()}),bg=e.object({mode:e.enum(["auto","required","none"]).optional()}),bh=e.object({type:e.literal("tool_result"),toolUseId:e.string().describe("The unique identifier for the corresponding tool call."),content:e.array(aX).default([]),structuredContent:e.object({}).loose().optional(),isError:e.boolean().optional(),_meta:e.record(e.string(),e.unknown()).optional()}),bi=e.discriminatedUnion("type",[aR,aS,aT]),bj=e.discriminatedUnion("type",[aR,aS,aT,aU,bh]),bk=e.object({role:av,content:e.union([bj,e.array(bj)]),_meta:e.record(e.string(),e.unknown()).optional()}),bl=r.extend({messages:e.array(bk),modelPreferences:bf.optional(),systemPrompt:e.string().optional(),includeContext:e.enum(["none","thisServer","allServers"]).optional(),temperature:e.number().optional(),maxTokens:e.number().int(),stopSequences:e.array(e.string()).optional(),metadata:k.optional(),tools:e.array(a1).optional(),toolChoice:bg.optional()}),bm=t.extend({method:e.literal("sampling/createMessage"),params:bl}),bn=w.extend({model:e.string(),stopReason:e.optional(e.enum(["endTurn","stopSequence","maxTokens"]).or(e.string())),role:av,content:bi}),bo=w.extend({model:e.string(),stopReason:e.optional(e.enum(["endTurn","stopSequence","maxTokens","toolUse"]).or(e.string())),role:av,content:e.union([bj,e.array(bj)])}),bp=e.object({type:e.literal("boolean"),title:e.string().optional(),description:e.string().optional(),default:e.boolean().optional()}),bq=e.object({type:e.literal("string"),title:e.string().optional(),description:e.string().optional(),minLength:e.number().optional(),maxLength:e.number().optional(),format:e.enum(["email","uri","date","date-time"]).optional(),default:e.string().optional()}),br=e.object({type:e.enum(["number","integer"]),title:e.string().optional(),description:e.string().optional(),minimum:e.number().optional(),maximum:e.number().optional(),default:e.number().optional()}),bs=e.object({type:e.literal("string"),title:e.string().optional(),description:e.string().optional(),enum:e.array(e.string()),default:e.string().optional()}),bt=e.object({type:e.literal("string"),title:e.string().optional(),description:e.string().optional(),oneOf:e.array(e.object({const:e.string(),title:e.string()})),default:e.string().optional()}),bu=e.object({type:e.literal("string"),title:e.string().optional(),description:e.string().optional(),enum:e.array(e.string()),enumNames:e.array(e.string()).optional(),default:e.string().optional()}),bv=e.union([bs,bt]),bw=e.object({type:e.literal("array"),title:e.string().optional(),description:e.string().optional(),minItems:e.number().optional(),maxItems:e.number().optional(),items:e.object({type:e.literal("string"),enum:e.array(e.string())}),default:e.array(e.string()).optional()}),bx=e.object({type:e.literal("array"),title:e.string().optional(),description:e.string().optional(),minItems:e.number().optional(),maxItems:e.number().optional(),items:e.object({anyOf:e.array(e.object({const:e.string(),title:e.string()}))}),default:e.array(e.string()).optional()}),by=e.union([bw,bx]),bz=e.union([bu,bv,by]),bA=e.union([bz,bp,bq,br]),bB=r.extend({mode:e.literal("form").optional(),message:e.string(),requestedSchema:e.object({type:e.literal("object"),properties:e.record(e.string(),bA),required:e.array(e.string()).optional()})}),bC=r.extend({mode:e.literal("url"),message:e.string(),elicitationId:e.string(),url:e.string().url()}),bD=e.union([bB,bC]),bE=t.extend({method:e.literal("elicitation/create"),params:bD}),bF=u.extend({elicitationId:e.string()}),bG=v.extend({method:e.literal("notifications/elicitation/complete"),params:bF}),bH=w.extend({action:e.enum(["accept","decline","cancel"]),content:e.preprocess(a=>null===a?void 0:a,e.record(e.string(),e.union([e.string(),e.number(),e.boolean(),e.array(e.string())])).optional())}),bI=e.object({type:e.literal("ref/resource"),uri:e.string()}),bJ=e.object({type:e.literal("ref/prompt"),name:e.string()}),bK=q.extend({ref:e.union([bJ,bI]),argument:e.object({name:e.string(),value:e.string()}),context:e.object({arguments:e.record(e.string(),e.string()).optional()}).optional()}),bL=t.extend({method:e.literal("completion/complete"),params:bK}),bM=w.extend({completion:e.looseObject({values:e.array(e.string()).max(100),total:e.optional(e.number().int()),hasMore:e.optional(e.boolean())})}),bN=e.object({uri:e.string().startsWith("file://"),name:e.string().optional(),_meta:e.record(e.string(),e.unknown()).optional()}),bO=t.extend({method:e.literal("roots/list"),params:q.optional()}),bP=w.extend({roots:e.array(bN)}),bQ=v.extend({method:e.literal("notifications/roots/list_changed"),params:u.optional()});e.union([$,U,bL,bb,aQ,aN,az,aB,aE,aH,aI,a6,a2,ak,am,an,ap]),e.union([J,ab,Y,bQ,aj]),e.union([H,bn,bo,bH,bP,al,ao,ah]),e.union([$,bm,bE,bO,ak,am,an,ap]),e.union([J,ab,bd,aK,aG,a7,a$,aj,bG]),e.union([H,X,bM,aZ,aO,aA,aC,aF,a4,a3,al,ao,ah]);class bR extends Error{constructor(a,b,c){super(`MCP error ${a}: ${b}`),this.code=a,this.data=c,this.name="McpError"}static fromError(a,b,c){return a===d.UrlElicitationRequired&&c&&c.elicitations?new bS(c.elicitations,b):new bR(a,b,c)}}class bS extends bR{constructor(a,b=`URL elicitation${a.length>1?"s":""} required`){super(d.UrlElicitationRequired,b,{elicitations:a})}get elicitations(){return this.data?.elicitations??[]}}},83578:(a,b,c)=>{c.d(b,{eq:()=>f,kY:()=>d,pJ:()=>g,si:()=>h});var d,e=c(30902);let f={invalid_type:"invalid_type",too_big:"too_big",too_small:"too_small",invalid_format:"invalid_format",not_multiple_of:"not_multiple_of",unrecognized_keys:"unrecognized_keys",invalid_union:"invalid_union",invalid_key:"invalid_key",invalid_element:"invalid_element",invalid_value:"invalid_value",custom:"custom"};function g(a){e.$W({customError:a})}function h(){return e.$W().customError}d||(d={})},95067:(a,b,c)=>{c.d(b,{D_:()=>N,j2:()=>R,eH:()=>U});var d=c(96271),e=c(68780),f=c(10522),g=c(83578),h=c(30902),i=c(26961);let j=f.url().superRefine((a,b)=>{if(!URL.canParse(a))return b.addIssue({code:g.eq.custom,message:"URL must be parseable",fatal:!0}),h.tm}).refine(a=>{let b=new URL(a);return"javascript:"!==b.protocol&&"data:"!==b.protocol&&"vbscript:"!==b.protocol},{message:"URL cannot use javascript:, data:, or vbscript: scheme"}),k=f.looseObject({resource:f.string().url(),authorization_servers:f.array(j).optional(),jwks_uri:f.string().url().optional(),scopes_supported:f.array(f.string()).optional(),bearer_methods_supported:f.array(f.string()).optional(),resource_signing_alg_values_supported:f.array(f.string()).optional(),resource_name:f.string().optional(),resource_documentation:f.string().optional(),resource_policy_uri:f.string().url().optional(),resource_tos_uri:f.string().url().optional(),tls_client_certificate_bound_access_tokens:f.boolean().optional(),authorization_details_types_supported:f.array(f.string()).optional(),dpop_signing_alg_values_supported:f.array(f.string()).optional(),dpop_bound_access_tokens_required:f.boolean().optional()}),l=f.looseObject({issuer:f.string(),authorization_endpoint:j,token_endpoint:j,registration_endpoint:j.optional(),scopes_supported:f.array(f.string()).optional(),response_types_supported:f.array(f.string()),response_modes_supported:f.array(f.string()).optional(),grant_types_supported:f.array(f.string()).optional(),token_endpoint_auth_methods_supported:f.array(f.string()).optional(),token_endpoint_auth_signing_alg_values_supported:f.array(f.string()).optional(),service_documentation:j.optional(),revocation_endpoint:j.optional(),revocation_endpoint_auth_methods_supported:f.array(f.string()).optional(),revocation_endpoint_auth_signing_alg_values_supported:f.array(f.string()).optional(),introspection_endpoint:f.string().optional(),introspection_endpoint_auth_methods_supported:f.array(f.string()).optional(),introspection_endpoint_auth_signing_alg_values_supported:f.array(f.string()).optional(),code_challenge_methods_supported:f.array(f.string()).optional(),client_id_metadata_document_supported:f.boolean().optional()}),m=f.looseObject({issuer:f.string(),authorization_endpoint:j,token_endpoint:j,userinfo_endpoint:j.optional(),jwks_uri:j,registration_endpoint:j.optional(),scopes_supported:f.array(f.string()).optional(),response_types_supported:f.array(f.string()),response_modes_supported:f.array(f.string()).optional(),grant_types_supported:f.array(f.string()).optional(),acr_values_supported:f.array(f.string()).optional(),subject_types_supported:f.array(f.string()),id_token_signing_alg_values_supported:f.array(f.string()),id_token_encryption_alg_values_supported:f.array(f.string()).optional(),id_token_encryption_enc_values_supported:f.array(f.string()).optional(),userinfo_signing_alg_values_supported:f.array(f.string()).optional(),userinfo_encryption_alg_values_supported:f.array(f.string()).optional(),userinfo_encryption_enc_values_supported:f.array(f.string()).optional(),request_object_signing_alg_values_supported:f.array(f.string()).optional(),request_object_encryption_alg_values_supported:f.array(f.string()).optional(),request_object_encryption_enc_values_supported:f.array(f.string()).optional(),token_endpoint_auth_methods_supported:f.array(f.string()).optional(),token_endpoint_auth_signing_alg_values_supported:f.array(f.string()).optional(),display_values_supported:f.array(f.string()).optional(),claim_types_supported:f.array(f.string()).optional(),claims_supported:f.array(f.string()).optional(),service_documentation:f.string().optional(),claims_locales_supported:f.array(f.string()).optional(),ui_locales_supported:f.array(f.string()).optional(),claims_parameter_supported:f.boolean().optional(),request_parameter_supported:f.boolean().optional(),request_uri_parameter_supported:f.boolean().optional(),require_request_uri_registration:f.boolean().optional(),op_policy_uri:j.optional(),op_tos_uri:j.optional(),client_id_metadata_document_supported:f.boolean().optional()}),n=f.object({...m.shape,...l.pick({code_challenge_methods_supported:!0}).shape}),o=f.object({access_token:f.string(),id_token:f.string().optional(),token_type:f.string(),expires_in:i.number().optional(),scope:f.string().optional(),refresh_token:f.string().optional()}).strip(),p=f.object({error:f.string(),error_description:f.string().optional(),error_uri:f.string().optional()}),q=j.optional().or(f.literal("").transform(()=>void 0)),r=f.object({redirect_uris:f.array(j),token_endpoint_auth_method:f.string().optional(),grant_types:f.array(f.string()).optional(),response_types:f.array(f.string()).optional(),client_name:f.string().optional(),client_uri:j.optional(),logo_uri:q,scope:f.string().optional(),contacts:f.array(f.string()).optional(),tos_uri:q,policy_uri:f.string().optional(),jwks_uri:j.optional(),jwks:f.any().optional(),software_id:f.string().optional(),software_version:f.string().optional(),software_statement:f.string().optional()}).strip(),s=f.object({client_id:f.string(),client_secret:f.string().optional(),client_id_issued_at:f.number().optional(),client_secret_expires_at:f.number().optional()}).strip(),t=r.merge(s);f.object({error:f.string(),error_description:f.string().optional()}).strip(),f.object({token:f.string(),token_type_hint:f.string().optional()}).strip();class u extends Error{constructor(a,b){super(a),this.errorUri=b,this.name=this.constructor.name}toResponseObject(){let a={error:this.errorCode,error_description:this.message};return this.errorUri&&(a.error_uri=this.errorUri),a}get errorCode(){return this.constructor.errorCode}}class v extends u{}v.errorCode="invalid_request";class w extends u{}w.errorCode="invalid_client";class x extends u{}x.errorCode="invalid_grant";class y extends u{}y.errorCode="unauthorized_client";class z extends u{}z.errorCode="unsupported_grant_type";class A extends u{}A.errorCode="invalid_scope";class B extends u{}B.errorCode="access_denied";class C extends u{}C.errorCode="server_error";class D extends u{}D.errorCode="temporarily_unavailable";class E extends u{}E.errorCode="unsupported_response_type";class F extends u{}F.errorCode="unsupported_token_type";class G extends u{}G.errorCode="invalid_token";class H extends u{}H.errorCode="method_not_allowed";class I extends u{}I.errorCode="too_many_requests";class J extends u{}J.errorCode="invalid_client_metadata";class K extends u{}K.errorCode="insufficient_scope";class L extends u{}L.errorCode="invalid_target";let M={[v.errorCode]:v,[w.errorCode]:w,[x.errorCode]:x,[y.errorCode]:y,[z.errorCode]:z,[A.errorCode]:A,[B.errorCode]:B,[C.errorCode]:C,[D.errorCode]:D,[E.errorCode]:E,[F.errorCode]:F,[G.errorCode]:G,[H.errorCode]:H,[I.errorCode]:I,[J.errorCode]:J,[K.errorCode]:K,[L.errorCode]:L};class N extends Error{constructor(a){super(a??"Unauthorized")}}let O="code",P="S256";async function Q(a){let b=a instanceof Response?a.status:void 0,c=a instanceof Response?await a.text():a;try{let{error:a,error_description:b,error_uri:d}=p.parse(JSON.parse(c));return new(M[a]||C)(b||"",d)}catch(a){return new C(`${b?`HTTP ${b}: `:""}Invalid OAuth error response: ${a}. Raw body: ${c}`)}}async function R(a,b){try{return await S(a,b)}catch(c){if(c instanceof w||c instanceof y)return await a.invalidateCredentials?.("all"),await S(a,b);if(c instanceof x)return await a.invalidateCredentials?.("tokens"),await S(a,b);throw c}}async function S(a,{serverUrl:b,authorizationCode:c,scope:d,resourceMetadataUrl:e,fetchFn:f}){let g,h,i,j=await a.discoveryState?.(),k=e;if(!k&&j?.resourceMetadataUrl&&(k=new URL(j.resourceMetadataUrl)),j?.authorizationServerUrl){if(h=j.authorizationServerUrl,g=j.resourceMetadata,i=j.authorizationServerMetadata??await $(h,{fetchFn:f}),!g)try{g=await W(b,{resourceMetadataUrl:k},f)}catch{}(i!==j.authorizationServerMetadata||g!==j.resourceMetadata)&&await a.saveDiscoveryState?.({authorizationServerUrl:String(h),resourceMetadataUrl:k?.toString(),resourceMetadata:g,authorizationServerMetadata:i})}else{let c=await _(b,{resourceMetadataUrl:k,fetchFn:f});h=c.authorizationServerUrl,i=c.authorizationServerMetadata,g=c.resourceMetadata,await a.saveDiscoveryState?.({authorizationServerUrl:String(h),resourceMetadataUrl:k?.toString(),resourceMetadata:g,authorizationServerMetadata:i})}let l=await T(b,a,g),m=d||g?.scopes_supported?.join(" ")||a.clientMetadata.scope,n=await Promise.resolve(a.clientInformation());if(!n){if(void 0!==c)throw Error("Existing OAuth client information is required when exchanging an authorization code");let b=i?.client_id_metadata_document_supported===!0,d=a.clientMetadataUrl;if(d&&!function(a){if(!a)return!1;try{let b=new URL(a);return"https:"===b.protocol&&"/"!==b.pathname}catch{return!1}}(d))throw new J(`clientMetadataUrl must be a valid HTTPS URL with a non-root pathname, got: ${d}`);if(b&&d)n={client_id:d},await a.saveClientInformation?.(n);else{if(!a.saveClientInformation)throw Error("OAuth client information must be saveable for dynamic registration");let b=await ae(h,{metadata:i,clientMetadata:a.clientMetadata,scope:m,fetchFn:f});await a.saveClientInformation(b),n=b}}let o=!a.redirectUrl;if(void 0!==c||o){let b=await ad(a,h,{metadata:i,resource:l,authorizationCode:c,fetchFn:f});return await a.saveTokens(b),"AUTHORIZED"}let p=await a.tokens();if(p?.refresh_token)try{let b=await ac(h,{metadata:i,clientInformation:n,refreshToken:p.refresh_token,resource:l,addClientAuthentication:a.addClientAuthentication,fetchFn:f});return await a.saveTokens(b),"AUTHORIZED"}catch(a){if(!(a instanceof u)||a instanceof C);else throw a}let q=a.state?await a.state():void 0,{authorizationUrl:r,codeVerifier:s}=await aa(h,{metadata:i,clientInformation:n,state:q,redirectUrl:a.redirectUrl,scope:m,resource:l});return await a.saveCodeVerifier(s),await a.redirectToAuthorization(r),"REDIRECT"}async function T(a,b,c){let d=function(a){let b=new URL("string"==typeof a?a:a.href);return b.hash="",b}(a);if(b.validateResourceURL)return await b.validateResourceURL(d,c?.resource);if(c){if(!function({requestedResource:a,configuredResource:b}){let c=new URL("string"==typeof a?a:a.href),d=new URL("string"==typeof b?b:b.href);if(c.origin!==d.origin||c.pathname.length<d.pathname.length)return!1;let e=c.pathname.endsWith("/")?c.pathname:c.pathname+"/",f=d.pathname.endsWith("/")?d.pathname:d.pathname+"/";return e.startsWith(f)}({requestedResource:d,configuredResource:c.resource}))throw Error(`Protected resource ${c.resource} does not match expected ${d} (or origin)`);return new URL(c.resource)}}function U(a){let b,c=a.headers.get("WWW-Authenticate");if(!c)return{};let[d,e]=c.split(" ");if("bearer"!==d.toLowerCase()||!e)return{};let f=V(a,"resource_metadata")||void 0;if(f)try{b=new URL(f)}catch{}return{resourceMetadataUrl:b,scope:V(a,"scope")||void 0,error:V(a,"error")||void 0}}function V(a,b){let c=a.headers.get("WWW-Authenticate");if(!c)return null;let d=RegExp(`${b}=(?:"([^"]+)"|([^\\s,]+))`),e=c.match(d);return e?e[1]||e[2]:null}async function W(a,b,c=fetch){let d=await Z(a,"oauth-protected-resource",c,{protocolVersion:b?.protocolVersion,metadataUrl:b?.resourceMetadataUrl});if(!d||404===d.status)throw await d?.body?.cancel(),Error("Resource server does not implement OAuth 2.0 Protected Resource Metadata.");if(!d.ok)throw await d.body?.cancel(),Error(`HTTP ${d.status} trying to load well-known OAuth protected resource metadata.`);return k.parse(await d.json())}async function X(a,b,c=fetch){try{return await c(a,{headers:b})}catch(d){if(d instanceof TypeError)if(b)return X(a,void 0,c);else return;throw d}}async function Y(a,b,c=fetch){return await X(a,{"MCP-Protocol-Version":b},c)}async function Z(a,b,c,d){var f,g;let h,i=new URL(a),j=d?.protocolVersion??e.aE;d?.metadataUrl?h=new URL(d.metadataUrl):(h=new URL(function(a,b="",c={}){return b.endsWith("/")&&(b=b.slice(0,-1)),c.prependPathname?`${b}/.well-known/${a}`:`/.well-known/${a}${b}`}(b,i.pathname),d?.metadataServerUrl??i)).search=i.search;let k=await Y(h,j,c);if(!d?.metadataUrl&&(f=k,g=i.pathname,!f||f.status>=400&&f.status<500&&"/"!==g)){let a=new URL(`/.well-known/${b}`,i);k=await Y(a,j,c)}return k}async function $(a,{fetchFn:b=fetch,protocolVersion:c=e.aE}={}){let d={"MCP-Protocol-Version":c,Accept:"application/json"};for(let{url:c,type:e}of function(a){let b="string"==typeof a?new URL(a):a,c="/"!==b.pathname,d=[];if(!c)return d.push({url:new URL("/.well-known/oauth-authorization-server",b.origin),type:"oauth"}),d.push({url:new URL("/.well-known/openid-configuration",b.origin),type:"oidc"}),d;let e=b.pathname;return e.endsWith("/")&&(e=e.slice(0,-1)),d.push({url:new URL(`/.well-known/oauth-authorization-server${e}`,b.origin),type:"oauth"}),d.push({url:new URL(`/.well-known/openid-configuration${e}`,b.origin),type:"oidc"}),d.push({url:new URL(`${e}/.well-known/openid-configuration`,b.origin),type:"oidc"}),d}(a)){let a=await X(c,d,b);if(a){if(!a.ok){if(await a.body?.cancel(),a.status>=400&&a.status<500)continue;throw Error(`HTTP ${a.status} trying to load ${"oauth"===e?"OAuth":"OpenID provider"} metadata from ${c}`)}if("oauth"===e)return l.parse(await a.json());return n.parse(await a.json())}}}async function _(a,b){let c,d;try{(c=await W(a,{resourceMetadataUrl:b?.resourceMetadataUrl},b?.fetchFn)).authorization_servers&&c.authorization_servers.length>0&&(d=c.authorization_servers[0])}catch{}d||(d=String(new URL("/",a)));let e=await $(d,{fetchFn:b?.fetchFn});return{authorizationServerUrl:d,authorizationServerMetadata:e,resourceMetadata:c}}async function aa(a,{metadata:b,clientInformation:c,redirectUrl:e,scope:f,state:g,resource:h}){let i;if(b){if(i=new URL(b.authorization_endpoint),!b.response_types_supported.includes(O))throw Error(`Incompatible auth server: does not support response type ${O}`);if(b.code_challenge_methods_supported&&!b.code_challenge_methods_supported.includes(P))throw Error(`Incompatible auth server: does not support code challenge method ${P}`)}else i=new URL("/authorize",a);let j=await (0,d.Ay)(),k=j.code_verifier,l=j.code_challenge;return i.searchParams.set("response_type",O),i.searchParams.set("client_id",c.client_id),i.searchParams.set("code_challenge",l),i.searchParams.set("code_challenge_method",P),i.searchParams.set("redirect_uri",String(e)),g&&i.searchParams.set("state",g),f&&i.searchParams.set("scope",f),f?.includes("offline_access")&&i.searchParams.append("prompt","consent"),h&&i.searchParams.set("resource",h.href),{authorizationUrl:i,codeVerifier:k}}async function ab(a,{metadata:b,tokenRequestParams:c,clientInformation:d,addClientAuthentication:e,resource:f,fetchFn:g}){let h=b?.token_endpoint?new URL(b.token_endpoint):new URL("/token",a),i=new Headers({"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"});f&&c.set("resource",f.href),e?await e(i,c,h,b):d&&function(a,b,c,d){let{client_id:e,client_secret:f}=b;switch(a){case"client_secret_basic":var g,h,i,j,k=e,l=f,m=c;if(!l)throw Error("client_secret_basic authentication requires a client_secret");let n=btoa(`${k}:${l}`);m.set("Authorization",`Basic ${n}`);return;case"client_secret_post":g=e,h=f,(i=d).set("client_id",g),h&&i.set("client_secret",h);return;case"none":j=e,d.set("client_id",j);return;default:throw Error(`Unsupported client authentication method: ${a}`)}}(function(a,b){let c=void 0!==a.client_secret;return"token_endpoint_auth_method"in a&&a.token_endpoint_auth_method&&["client_secret_basic","client_secret_post","none"].includes(a.token_endpoint_auth_method)&&(0===b.length||b.includes(a.token_endpoint_auth_method))?a.token_endpoint_auth_method:0===b.length?c?"client_secret_basic":"none":c&&b.includes("client_secret_basic")?"client_secret_basic":c&&b.includes("client_secret_post")?"client_secret_post":b.includes("none")?"none":c?"client_secret_post":"none"}(d,b?.token_endpoint_auth_methods_supported??[]),d,i,c);let j=await (g??fetch)(h,{method:"POST",headers:i,body:c});if(!j.ok)throw await Q(j);return o.parse(await j.json())}async function ac(a,{metadata:b,clientInformation:c,refreshToken:d,resource:e,addClientAuthentication:f,fetchFn:g}){let h=new URLSearchParams({grant_type:"refresh_token",refresh_token:d});return{refresh_token:d,...await ab(a,{metadata:b,tokenRequestParams:h,clientInformation:c,addClientAuthentication:f,resource:e,fetchFn:g})}}async function ad(a,b,{metadata:c,resource:d,authorizationCode:e,fetchFn:f}={}){let g,h=a.clientMetadata.scope;if(a.prepareTokenRequest&&(g=await a.prepareTokenRequest(h)),!g){if(!e)throw Error("Either provider.prepareTokenRequest() or authorizationCode is required");if(!a.redirectUrl)throw Error("redirectUrl is required for authorization_code flow");g=new URLSearchParams({grant_type:"authorization_code",code:e,code_verifier:await a.codeVerifier(),redirect_uri:String(a.redirectUrl)})}return ab(b,{metadata:c,tokenRequestParams:g,clientInformation:await a.clientInformation()??void 0,addClientAuthentication:a.addClientAuthentication,resource:d,fetchFn:f})}async function ae(a,{metadata:b,clientMetadata:c,scope:d,fetchFn:e}){let f;if(b){if(!b.registration_endpoint)throw Error("Incompatible auth server: does not support dynamic client registration");f=new URL(b.registration_endpoint)}else f=new URL("/register",a);let g=await (e??fetch)(f,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...c,...void 0!==d?{scope:d}:{}})});if(!g.ok)throw await Q(g);return t.parse(await g.json())}},96271:(a,b,c)=>{let d;async function e(a){return(await d).getRandomValues(new Uint8Array(a))}async function f(a){let b="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~",c="",d=await e(a);for(let e=0;e<a;e++){let a=d[e]%b.length;c+=b[a]}return c}async function g(a){return await f(a)}async function h(a){return btoa(String.fromCharCode(...new Uint8Array(await (await d).subtle.digest("SHA-256",new TextEncoder().encode(a))))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}async function i(a){if(a||(a=43),a<43||a>128)throw`Expected a length between 43 and 128. Received ${a}.`;let b=await g(a),c=await h(b);return{code_verifier:b,code_challenge:c}}c.d(b,{Ay:()=>i}),d=globalThis.crypto?.webcrypto??globalThis.crypto??Promise.resolve().then(c.t.bind(c,77598,19)).then(a=>a.webcrypto)}};
|
|
1
|
+
"use strict";exports.id=5067,exports.ids=[5067],exports.modules={26961:(a,b,c)=>{c.d(b,{ai:()=>f});var d=c(89901),e=c(10522);function f(a){return d.qG(e.rS,a)}},68780:(a,b,c)=>{c.d(b,{$9:()=>bE,Cs:()=>bP,EV:()=>j,FP:()=>a9,FT:()=>a6,GU:()=>bM,HM:()=>aZ,Iu:()=>i,K1:()=>bn,LW:()=>F,Mg:()=>ah,Nh:()=>bR,O$:()=>aC,O4:()=>d,OI:()=>az,OR:()=>G,PC:()=>h,Ql:()=>ak,R6:()=>aE,Rk:()=>X,Sc:()=>al,Sq:()=>J,TF:()=>a4,TI:()=>bo,WQ:()=>bO,WT:()=>a3,Yu:()=>aO,ZC:()=>Y,_r:()=>ab,a5:()=>ao,aE:()=>g,bZ:()=>s,b_:()=>bb,br:()=>a$,cL:()=>aK,cv:()=>aA,eK:()=>V,fH:()=>a7,gH:()=>aq,gW:()=>a2,gd:()=>ap,hh:()=>aG,ig:()=>D,ki:()=>aj,lg:()=>B,n_:()=>bH,oQ:()=>am,rk:()=>U,s:()=>aB,tC:()=>$,u9:()=>bm,ve:()=>aF,vo:()=>z,wR:()=>H,wU:()=>Z,xI:()=>a8,zR:()=>an});var d,e=c(10522),f=c(92139);let g="2025-11-25",h="2025-03-26",i=[g,"2025-06-18","2025-03-26","2024-11-05","2024-10-07"],j="io.modelcontextprotocol/related-task",k=e.Ie(a=>null!==a&&("object"==typeof a||"function"==typeof a)),l=e.KC([e.Yj(),e.ai().int()]),m=e.Yj();e._H({ttl:e.ai().optional(),pollInterval:e.ai().optional()});let n=e.Ik({ttl:e.ai().optional()}),o=e.Ik({taskId:e.Yj()}),p=e._H({progressToken:l.optional(),[j]:o.optional()}),q=e.Ik({_meta:p.optional()}),r=q.extend({task:n.optional()}),s=a=>r.safeParse(a).success,t=e.Ik({method:e.Yj(),params:q.loose().optional()}),u=e.Ik({_meta:p.optional()}),v=e.Ik({method:e.Yj(),params:u.loose().optional()}),w=e._H({_meta:p.optional()}),x=e.KC([e.Yj(),e.ai().int()]),y=e.Ik({jsonrpc:e.eu("2.0"),id:x,...t.shape}).strict(),z=a=>y.safeParse(a).success,A=e.Ik({jsonrpc:e.eu("2.0"),...v.shape}).strict(),B=a=>A.safeParse(a).success,C=e.Ik({jsonrpc:e.eu("2.0"),id:x,result:w}).strict(),D=a=>C.safeParse(a).success;!function(a){a[a.ConnectionClosed=-32e3]="ConnectionClosed",a[a.RequestTimeout=-32001]="RequestTimeout",a[a.ParseError=-32700]="ParseError",a[a.InvalidRequest=-32600]="InvalidRequest",a[a.MethodNotFound=-32601]="MethodNotFound",a[a.InvalidParams=-32602]="InvalidParams",a[a.InternalError=-32603]="InternalError",a[a.UrlElicitationRequired=-32042]="UrlElicitationRequired"}(d||(d={}));let E=e.Ik({jsonrpc:e.eu("2.0"),id:x.optional(),error:e.Ik({code:e.ai().int(),message:e.Yj(),data:e.L5().optional()})}).strict(),F=a=>E.safeParse(a).success,G=e.KC([y,A,C,E]);e.KC([C,E]);let H=w.strict(),I=u.extend({requestId:x.optional(),reason:e.Yj().optional()}),J=v.extend({method:e.eu("notifications/cancelled"),params:I}),K=e.Ik({src:e.Yj(),mimeType:e.Yj().optional(),sizes:e.YO(e.Yj()).optional(),theme:e.k5(["light","dark"]).optional()}),L=e.Ik({icons:e.YO(K).optional()}),M=e.Ik({name:e.Yj(),title:e.Yj().optional()}),N=M.extend({...M.shape,...L.shape,version:e.Yj(),websiteUrl:e.Yj().optional(),description:e.Yj().optional()}),O=e.E$(e.Ik({applyDefaults:e.zM().optional()}),e.g1(e.Yj(),e.L5())),P=e.vk(a=>a&&"object"==typeof a&&!Array.isArray(a)&&0===Object.keys(a).length?{form:{}}:a,e.E$(e.Ik({form:O.optional(),url:k.optional()}),e.g1(e.Yj(),e.L5()).optional())),Q=e._H({list:k.optional(),cancel:k.optional(),requests:e._H({sampling:e._H({createMessage:k.optional()}).optional(),elicitation:e._H({create:k.optional()}).optional()}).optional()}),R=e._H({list:k.optional(),cancel:k.optional(),requests:e._H({tools:e._H({call:k.optional()}).optional()}).optional()}),S=e.Ik({experimental:e.g1(e.Yj(),k).optional(),sampling:e.Ik({context:k.optional(),tools:k.optional()}).optional(),elicitation:P.optional(),roots:e.Ik({listChanged:e.zM().optional()}).optional(),tasks:Q.optional(),extensions:e.g1(e.Yj(),k).optional()}),T=q.extend({protocolVersion:e.Yj(),capabilities:S,clientInfo:N}),U=t.extend({method:e.eu("initialize"),params:T}),V=a=>U.safeParse(a).success,W=e.Ik({experimental:e.g1(e.Yj(),k).optional(),logging:k.optional(),completions:k.optional(),prompts:e.Ik({listChanged:e.zM().optional()}).optional(),resources:e.Ik({subscribe:e.zM().optional(),listChanged:e.zM().optional()}).optional(),tools:e.Ik({listChanged:e.zM().optional()}).optional(),tasks:R.optional(),extensions:e.g1(e.Yj(),k).optional()}),X=w.extend({protocolVersion:e.Yj(),capabilities:W,serverInfo:N,instructions:e.Yj().optional()}),Y=v.extend({method:e.eu("notifications/initialized"),params:u.optional()}),Z=a=>Y.safeParse(a).success,$=t.extend({method:e.eu("ping"),params:q.optional()}),_=e.Ik({progress:e.ai(),total:e.lq(e.ai()),message:e.lq(e.Yj())}),aa=e.Ik({...u.shape,..._.shape,progressToken:l}),ab=v.extend({method:e.eu("notifications/progress"),params:aa}),ac=q.extend({cursor:m.optional()}),ad=t.extend({params:ac.optional()}),ae=w.extend({nextCursor:m.optional()}),af=e.k5(["working","input_required","completed","failed","cancelled"]),ag=e.Ik({taskId:e.Yj(),status:af,ttl:e.KC([e.ai(),e.ch()]),createdAt:e.Yj(),lastUpdatedAt:e.Yj(),pollInterval:e.lq(e.ai()),statusMessage:e.lq(e.Yj())}),ah=w.extend({task:ag}),ai=u.merge(ag),aj=v.extend({method:e.eu("notifications/tasks/status"),params:ai}),ak=t.extend({method:e.eu("tasks/get"),params:q.extend({taskId:e.Yj()})}),al=w.merge(ag),am=t.extend({method:e.eu("tasks/result"),params:q.extend({taskId:e.Yj()})});w.loose();let an=ad.extend({method:e.eu("tasks/list")}),ao=ae.extend({tasks:e.YO(ag)}),ap=t.extend({method:e.eu("tasks/cancel"),params:q.extend({taskId:e.Yj()})}),aq=w.merge(ag),ar=e.Ik({uri:e.Yj(),mimeType:e.lq(e.Yj()),_meta:e.g1(e.Yj(),e.L5()).optional()}),as=ar.extend({text:e.Yj()}),at=e.Yj().refine(a=>{try{return atob(a),!0}catch{return!1}},{message:"Invalid Base64 string"}),au=ar.extend({blob:at}),av=e.k5(["user","assistant"]),aw=e.Ik({audience:e.YO(av).optional(),priority:e.ai().min(0).max(1).optional(),lastModified:f.w$({offset:!0}).optional()}),ax=e.Ik({...M.shape,...L.shape,uri:e.Yj(),description:e.lq(e.Yj()),mimeType:e.lq(e.Yj()),size:e.lq(e.ai()),annotations:aw.optional(),_meta:e.lq(e._H({}))}),ay=e.Ik({...M.shape,...L.shape,uriTemplate:e.Yj(),description:e.lq(e.Yj()),mimeType:e.lq(e.Yj()),annotations:aw.optional(),_meta:e.lq(e._H({}))}),az=ad.extend({method:e.eu("resources/list")}),aA=ae.extend({resources:e.YO(ax)}),aB=ad.extend({method:e.eu("resources/templates/list")}),aC=ae.extend({resourceTemplates:e.YO(ay)}),aD=q.extend({uri:e.Yj()}),aE=t.extend({method:e.eu("resources/read"),params:aD}),aF=w.extend({contents:e.YO(e.KC([as,au]))}),aG=v.extend({method:e.eu("notifications/resources/list_changed"),params:u.optional()}),aH=t.extend({method:e.eu("resources/subscribe"),params:aD}),aI=t.extend({method:e.eu("resources/unsubscribe"),params:aD}),aJ=u.extend({uri:e.Yj()}),aK=v.extend({method:e.eu("notifications/resources/updated"),params:aJ}),aL=e.Ik({name:e.Yj(),description:e.lq(e.Yj()),required:e.lq(e.zM())}),aM=e.Ik({...M.shape,...L.shape,description:e.lq(e.Yj()),arguments:e.lq(e.YO(aL)),_meta:e.lq(e._H({}))}),aN=ad.extend({method:e.eu("prompts/list")}),aO=ae.extend({prompts:e.YO(aM)}),aP=q.extend({name:e.Yj(),arguments:e.g1(e.Yj(),e.Yj()).optional()}),aQ=t.extend({method:e.eu("prompts/get"),params:aP}),aR=e.Ik({type:e.eu("text"),text:e.Yj(),annotations:aw.optional(),_meta:e.g1(e.Yj(),e.L5()).optional()}),aS=e.Ik({type:e.eu("image"),data:at,mimeType:e.Yj(),annotations:aw.optional(),_meta:e.g1(e.Yj(),e.L5()).optional()}),aT=e.Ik({type:e.eu("audio"),data:at,mimeType:e.Yj(),annotations:aw.optional(),_meta:e.g1(e.Yj(),e.L5()).optional()}),aU=e.Ik({type:e.eu("tool_use"),name:e.Yj(),id:e.Yj(),input:e.g1(e.Yj(),e.L5()),_meta:e.g1(e.Yj(),e.L5()).optional()}),aV=e.Ik({type:e.eu("resource"),resource:e.KC([as,au]),annotations:aw.optional(),_meta:e.g1(e.Yj(),e.L5()).optional()}),aW=ax.extend({type:e.eu("resource_link")}),aX=e.KC([aR,aS,aT,aW,aV]),aY=e.Ik({role:av,content:aX}),aZ=w.extend({description:e.Yj().optional(),messages:e.YO(aY)}),a$=v.extend({method:e.eu("notifications/prompts/list_changed"),params:u.optional()}),a_=e.Ik({title:e.Yj().optional(),readOnlyHint:e.zM().optional(),destructiveHint:e.zM().optional(),idempotentHint:e.zM().optional(),openWorldHint:e.zM().optional()}),a0=e.Ik({taskSupport:e.k5(["required","optional","forbidden"]).optional()}),a1=e.Ik({...M.shape,...L.shape,description:e.Yj().optional(),inputSchema:e.Ik({type:e.eu("object"),properties:e.g1(e.Yj(),k).optional(),required:e.YO(e.Yj()).optional()}).catchall(e.L5()),outputSchema:e.Ik({type:e.eu("object"),properties:e.g1(e.Yj(),k).optional(),required:e.YO(e.Yj()).optional()}).catchall(e.L5()).optional(),annotations:a_.optional(),execution:a0.optional(),_meta:e.g1(e.Yj(),e.L5()).optional()}),a2=ad.extend({method:e.eu("tools/list")}),a3=ae.extend({tools:e.YO(a1)}),a4=w.extend({content:e.YO(aX).default([]),structuredContent:e.g1(e.Yj(),e.L5()).optional(),isError:e.zM().optional()});a4.or(w.extend({toolResult:e.L5()}));let a5=r.extend({name:e.Yj(),arguments:e.g1(e.Yj(),e.L5()).optional()}),a6=t.extend({method:e.eu("tools/call"),params:a5}),a7=v.extend({method:e.eu("notifications/tools/list_changed"),params:u.optional()}),a8=e.Ik({autoRefresh:e.zM().default(!0),debounceMs:e.ai().int().nonnegative().default(300)}),a9=e.k5(["debug","info","notice","warning","error","critical","alert","emergency"]),ba=q.extend({level:a9}),bb=t.extend({method:e.eu("logging/setLevel"),params:ba}),bc=u.extend({level:a9,logger:e.Yj().optional(),data:e.L5()}),bd=v.extend({method:e.eu("notifications/message"),params:bc}),be=e.Ik({name:e.Yj().optional()}),bf=e.Ik({hints:e.YO(be).optional(),costPriority:e.ai().min(0).max(1).optional(),speedPriority:e.ai().min(0).max(1).optional(),intelligencePriority:e.ai().min(0).max(1).optional()}),bg=e.Ik({mode:e.k5(["auto","required","none"]).optional()}),bh=e.Ik({type:e.eu("tool_result"),toolUseId:e.Yj().describe("The unique identifier for the corresponding tool call."),content:e.YO(aX).default([]),structuredContent:e.Ik({}).loose().optional(),isError:e.zM().optional(),_meta:e.g1(e.Yj(),e.L5()).optional()}),bi=e.gM("type",[aR,aS,aT]),bj=e.gM("type",[aR,aS,aT,aU,bh]),bk=e.Ik({role:av,content:e.KC([bj,e.YO(bj)]),_meta:e.g1(e.Yj(),e.L5()).optional()}),bl=r.extend({messages:e.YO(bk),modelPreferences:bf.optional(),systemPrompt:e.Yj().optional(),includeContext:e.k5(["none","thisServer","allServers"]).optional(),temperature:e.ai().optional(),maxTokens:e.ai().int(),stopSequences:e.YO(e.Yj()).optional(),metadata:k.optional(),tools:e.YO(a1).optional(),toolChoice:bg.optional()}),bm=t.extend({method:e.eu("sampling/createMessage"),params:bl}),bn=w.extend({model:e.Yj(),stopReason:e.lq(e.k5(["endTurn","stopSequence","maxTokens"]).or(e.Yj())),role:av,content:bi}),bo=w.extend({model:e.Yj(),stopReason:e.lq(e.k5(["endTurn","stopSequence","maxTokens","toolUse"]).or(e.Yj())),role:av,content:e.KC([bj,e.YO(bj)])}),bp=e.Ik({type:e.eu("boolean"),title:e.Yj().optional(),description:e.Yj().optional(),default:e.zM().optional()}),bq=e.Ik({type:e.eu("string"),title:e.Yj().optional(),description:e.Yj().optional(),minLength:e.ai().optional(),maxLength:e.ai().optional(),format:e.k5(["email","uri","date","date-time"]).optional(),default:e.Yj().optional()}),br=e.Ik({type:e.k5(["number","integer"]),title:e.Yj().optional(),description:e.Yj().optional(),minimum:e.ai().optional(),maximum:e.ai().optional(),default:e.ai().optional()}),bs=e.Ik({type:e.eu("string"),title:e.Yj().optional(),description:e.Yj().optional(),enum:e.YO(e.Yj()),default:e.Yj().optional()}),bt=e.Ik({type:e.eu("string"),title:e.Yj().optional(),description:e.Yj().optional(),oneOf:e.YO(e.Ik({const:e.Yj(),title:e.Yj()})),default:e.Yj().optional()}),bu=e.Ik({type:e.eu("string"),title:e.Yj().optional(),description:e.Yj().optional(),enum:e.YO(e.Yj()),enumNames:e.YO(e.Yj()).optional(),default:e.Yj().optional()}),bv=e.KC([bs,bt]),bw=e.Ik({type:e.eu("array"),title:e.Yj().optional(),description:e.Yj().optional(),minItems:e.ai().optional(),maxItems:e.ai().optional(),items:e.Ik({type:e.eu("string"),enum:e.YO(e.Yj())}),default:e.YO(e.Yj()).optional()}),bx=e.Ik({type:e.eu("array"),title:e.Yj().optional(),description:e.Yj().optional(),minItems:e.ai().optional(),maxItems:e.ai().optional(),items:e.Ik({anyOf:e.YO(e.Ik({const:e.Yj(),title:e.Yj()}))}),default:e.YO(e.Yj()).optional()}),by=e.KC([bw,bx]),bz=e.KC([bu,bv,by]),bA=e.KC([bz,bp,bq,br]),bB=r.extend({mode:e.eu("form").optional(),message:e.Yj(),requestedSchema:e.Ik({type:e.eu("object"),properties:e.g1(e.Yj(),bA),required:e.YO(e.Yj()).optional()})}),bC=r.extend({mode:e.eu("url"),message:e.Yj(),elicitationId:e.Yj(),url:e.Yj().url()}),bD=e.KC([bB,bC]),bE=t.extend({method:e.eu("elicitation/create"),params:bD}),bF=u.extend({elicitationId:e.Yj()}),bG=v.extend({method:e.eu("notifications/elicitation/complete"),params:bF}),bH=w.extend({action:e.k5(["accept","decline","cancel"]),content:e.vk(a=>null===a?void 0:a,e.g1(e.Yj(),e.KC([e.Yj(),e.ai(),e.zM(),e.YO(e.Yj())])).optional())}),bI=e.Ik({type:e.eu("ref/resource"),uri:e.Yj()}),bJ=e.Ik({type:e.eu("ref/prompt"),name:e.Yj()}),bK=q.extend({ref:e.KC([bJ,bI]),argument:e.Ik({name:e.Yj(),value:e.Yj()}),context:e.Ik({arguments:e.g1(e.Yj(),e.Yj()).optional()}).optional()}),bL=t.extend({method:e.eu("completion/complete"),params:bK}),bM=w.extend({completion:e._H({values:e.YO(e.Yj()).max(100),total:e.lq(e.ai().int()),hasMore:e.lq(e.zM())})}),bN=e.Ik({uri:e.Yj().startsWith("file://"),name:e.Yj().optional(),_meta:e.g1(e.Yj(),e.L5()).optional()}),bO=t.extend({method:e.eu("roots/list"),params:q.optional()}),bP=w.extend({roots:e.YO(bN)}),bQ=v.extend({method:e.eu("notifications/roots/list_changed"),params:u.optional()});e.KC([$,U,bL,bb,aQ,aN,az,aB,aE,aH,aI,a6,a2,ak,am,an,ap]),e.KC([J,ab,Y,bQ,aj]),e.KC([H,bn,bo,bH,bP,al,ao,ah]),e.KC([$,bm,bE,bO,ak,am,an,ap]),e.KC([J,ab,bd,aK,aG,a7,a$,aj,bG]),e.KC([H,X,bM,aZ,aO,aA,aC,aF,a4,a3,al,ao,ah]);class bR extends Error{constructor(a,b,c){super(`MCP error ${a}: ${b}`),this.code=a,this.data=c,this.name="McpError"}static fromError(a,b,c){return a===d.UrlElicitationRequired&&c&&c.elicitations?new bS(c.elicitations,b):new bR(a,b,c)}}class bS extends bR{constructor(a,b=`URL elicitation${a.length>1?"s":""} required`){super(d.UrlElicitationRequired,b,{elicitations:a})}get elicitations(){return this.data?.elicitations??[]}}},83578:(a,b,c)=>{var d;c.d(b,{eq:()=>e});let e={invalid_type:"invalid_type",too_big:"too_big",too_small:"too_small",invalid_format:"invalid_format",not_multiple_of:"not_multiple_of",unrecognized_keys:"unrecognized_keys",invalid_union:"invalid_union",invalid_key:"invalid_key",invalid_element:"invalid_element",invalid_value:"invalid_value",custom:"custom"};d||(d={})},95067:(a,b,c)=>{c.d(b,{D_:()=>N,j2:()=>R,eH:()=>U});var d=c(96271),e=c(68780),f=c(10522),g=c(83578),h=c(30902),i=c(26961);let j=f.OZ().superRefine((a,b)=>{if(!URL.canParse(a))return b.addIssue({code:g.eq.custom,message:"URL must be parseable",fatal:!0}),h.tm}).refine(a=>{let b=new URL(a);return"javascript:"!==b.protocol&&"data:"!==b.protocol&&"vbscript:"!==b.protocol},{message:"URL cannot use javascript:, data:, or vbscript: scheme"}),k=f._H({resource:f.Yj().url(),authorization_servers:f.YO(j).optional(),jwks_uri:f.Yj().url().optional(),scopes_supported:f.YO(f.Yj()).optional(),bearer_methods_supported:f.YO(f.Yj()).optional(),resource_signing_alg_values_supported:f.YO(f.Yj()).optional(),resource_name:f.Yj().optional(),resource_documentation:f.Yj().optional(),resource_policy_uri:f.Yj().url().optional(),resource_tos_uri:f.Yj().url().optional(),tls_client_certificate_bound_access_tokens:f.zM().optional(),authorization_details_types_supported:f.YO(f.Yj()).optional(),dpop_signing_alg_values_supported:f.YO(f.Yj()).optional(),dpop_bound_access_tokens_required:f.zM().optional()}),l=f._H({issuer:f.Yj(),authorization_endpoint:j,token_endpoint:j,registration_endpoint:j.optional(),scopes_supported:f.YO(f.Yj()).optional(),response_types_supported:f.YO(f.Yj()),response_modes_supported:f.YO(f.Yj()).optional(),grant_types_supported:f.YO(f.Yj()).optional(),token_endpoint_auth_methods_supported:f.YO(f.Yj()).optional(),token_endpoint_auth_signing_alg_values_supported:f.YO(f.Yj()).optional(),service_documentation:j.optional(),revocation_endpoint:j.optional(),revocation_endpoint_auth_methods_supported:f.YO(f.Yj()).optional(),revocation_endpoint_auth_signing_alg_values_supported:f.YO(f.Yj()).optional(),introspection_endpoint:f.Yj().optional(),introspection_endpoint_auth_methods_supported:f.YO(f.Yj()).optional(),introspection_endpoint_auth_signing_alg_values_supported:f.YO(f.Yj()).optional(),code_challenge_methods_supported:f.YO(f.Yj()).optional(),client_id_metadata_document_supported:f.zM().optional()}),m=f._H({issuer:f.Yj(),authorization_endpoint:j,token_endpoint:j,userinfo_endpoint:j.optional(),jwks_uri:j,registration_endpoint:j.optional(),scopes_supported:f.YO(f.Yj()).optional(),response_types_supported:f.YO(f.Yj()),response_modes_supported:f.YO(f.Yj()).optional(),grant_types_supported:f.YO(f.Yj()).optional(),acr_values_supported:f.YO(f.Yj()).optional(),subject_types_supported:f.YO(f.Yj()),id_token_signing_alg_values_supported:f.YO(f.Yj()),id_token_encryption_alg_values_supported:f.YO(f.Yj()).optional(),id_token_encryption_enc_values_supported:f.YO(f.Yj()).optional(),userinfo_signing_alg_values_supported:f.YO(f.Yj()).optional(),userinfo_encryption_alg_values_supported:f.YO(f.Yj()).optional(),userinfo_encryption_enc_values_supported:f.YO(f.Yj()).optional(),request_object_signing_alg_values_supported:f.YO(f.Yj()).optional(),request_object_encryption_alg_values_supported:f.YO(f.Yj()).optional(),request_object_encryption_enc_values_supported:f.YO(f.Yj()).optional(),token_endpoint_auth_methods_supported:f.YO(f.Yj()).optional(),token_endpoint_auth_signing_alg_values_supported:f.YO(f.Yj()).optional(),display_values_supported:f.YO(f.Yj()).optional(),claim_types_supported:f.YO(f.Yj()).optional(),claims_supported:f.YO(f.Yj()).optional(),service_documentation:f.Yj().optional(),claims_locales_supported:f.YO(f.Yj()).optional(),ui_locales_supported:f.YO(f.Yj()).optional(),claims_parameter_supported:f.zM().optional(),request_parameter_supported:f.zM().optional(),request_uri_parameter_supported:f.zM().optional(),require_request_uri_registration:f.zM().optional(),op_policy_uri:j.optional(),op_tos_uri:j.optional(),client_id_metadata_document_supported:f.zM().optional()}),n=f.Ik({...m.shape,...l.pick({code_challenge_methods_supported:!0}).shape}),o=f.Ik({access_token:f.Yj(),id_token:f.Yj().optional(),token_type:f.Yj(),expires_in:i.ai().optional(),scope:f.Yj().optional(),refresh_token:f.Yj().optional()}).strip(),p=f.Ik({error:f.Yj(),error_description:f.Yj().optional(),error_uri:f.Yj().optional()}),q=j.optional().or(f.eu("").transform(()=>void 0)),r=f.Ik({redirect_uris:f.YO(j),token_endpoint_auth_method:f.Yj().optional(),grant_types:f.YO(f.Yj()).optional(),response_types:f.YO(f.Yj()).optional(),client_name:f.Yj().optional(),client_uri:j.optional(),logo_uri:q,scope:f.Yj().optional(),contacts:f.YO(f.Yj()).optional(),tos_uri:q,policy_uri:f.Yj().optional(),jwks_uri:j.optional(),jwks:f.bz().optional(),software_id:f.Yj().optional(),software_version:f.Yj().optional(),software_statement:f.Yj().optional()}).strip(),s=f.Ik({client_id:f.Yj(),client_secret:f.Yj().optional(),client_id_issued_at:f.ai().optional(),client_secret_expires_at:f.ai().optional()}).strip(),t=r.merge(s);f.Ik({error:f.Yj(),error_description:f.Yj().optional()}).strip(),f.Ik({token:f.Yj(),token_type_hint:f.Yj().optional()}).strip();class u extends Error{constructor(a,b){super(a),this.errorUri=b,this.name=this.constructor.name}toResponseObject(){let a={error:this.errorCode,error_description:this.message};return this.errorUri&&(a.error_uri=this.errorUri),a}get errorCode(){return this.constructor.errorCode}}class v extends u{}v.errorCode="invalid_request";class w extends u{}w.errorCode="invalid_client";class x extends u{}x.errorCode="invalid_grant";class y extends u{}y.errorCode="unauthorized_client";class z extends u{}z.errorCode="unsupported_grant_type";class A extends u{}A.errorCode="invalid_scope";class B extends u{}B.errorCode="access_denied";class C extends u{}C.errorCode="server_error";class D extends u{}D.errorCode="temporarily_unavailable";class E extends u{}E.errorCode="unsupported_response_type";class F extends u{}F.errorCode="unsupported_token_type";class G extends u{}G.errorCode="invalid_token";class H extends u{}H.errorCode="method_not_allowed";class I extends u{}I.errorCode="too_many_requests";class J extends u{}J.errorCode="invalid_client_metadata";class K extends u{}K.errorCode="insufficient_scope";class L extends u{}L.errorCode="invalid_target";let M={[v.errorCode]:v,[w.errorCode]:w,[x.errorCode]:x,[y.errorCode]:y,[z.errorCode]:z,[A.errorCode]:A,[B.errorCode]:B,[C.errorCode]:C,[D.errorCode]:D,[E.errorCode]:E,[F.errorCode]:F,[G.errorCode]:G,[H.errorCode]:H,[I.errorCode]:I,[J.errorCode]:J,[K.errorCode]:K,[L.errorCode]:L};class N extends Error{constructor(a){super(a??"Unauthorized")}}let O="code",P="S256";async function Q(a){let b=a instanceof Response?a.status:void 0,c=a instanceof Response?await a.text():a;try{let{error:a,error_description:b,error_uri:d}=p.parse(JSON.parse(c));return new(M[a]||C)(b||"",d)}catch(a){return new C(`${b?`HTTP ${b}: `:""}Invalid OAuth error response: ${a}. Raw body: ${c}`)}}async function R(a,b){try{return await S(a,b)}catch(c){if(c instanceof w||c instanceof y)return await a.invalidateCredentials?.("all"),await S(a,b);if(c instanceof x)return await a.invalidateCredentials?.("tokens"),await S(a,b);throw c}}async function S(a,{serverUrl:b,authorizationCode:c,scope:d,resourceMetadataUrl:e,fetchFn:f}){let g,h,i,j=await a.discoveryState?.(),k=e;if(!k&&j?.resourceMetadataUrl&&(k=new URL(j.resourceMetadataUrl)),j?.authorizationServerUrl){if(h=j.authorizationServerUrl,g=j.resourceMetadata,i=j.authorizationServerMetadata??await $(h,{fetchFn:f}),!g)try{g=await W(b,{resourceMetadataUrl:k},f)}catch{}(i!==j.authorizationServerMetadata||g!==j.resourceMetadata)&&await a.saveDiscoveryState?.({authorizationServerUrl:String(h),resourceMetadataUrl:k?.toString(),resourceMetadata:g,authorizationServerMetadata:i})}else{let c=await _(b,{resourceMetadataUrl:k,fetchFn:f});h=c.authorizationServerUrl,i=c.authorizationServerMetadata,g=c.resourceMetadata,await a.saveDiscoveryState?.({authorizationServerUrl:String(h),resourceMetadataUrl:k?.toString(),resourceMetadata:g,authorizationServerMetadata:i})}let l=await T(b,a,g),m=d||g?.scopes_supported?.join(" ")||a.clientMetadata.scope,n=await Promise.resolve(a.clientInformation());if(!n){if(void 0!==c)throw Error("Existing OAuth client information is required when exchanging an authorization code");let b=i?.client_id_metadata_document_supported===!0,d=a.clientMetadataUrl;if(d&&!function(a){if(!a)return!1;try{let b=new URL(a);return"https:"===b.protocol&&"/"!==b.pathname}catch{return!1}}(d))throw new J(`clientMetadataUrl must be a valid HTTPS URL with a non-root pathname, got: ${d}`);if(b&&d)n={client_id:d},await a.saveClientInformation?.(n);else{if(!a.saveClientInformation)throw Error("OAuth client information must be saveable for dynamic registration");let b=await ae(h,{metadata:i,clientMetadata:a.clientMetadata,scope:m,fetchFn:f});await a.saveClientInformation(b),n=b}}let o=!a.redirectUrl;if(void 0!==c||o){let b=await ad(a,h,{metadata:i,resource:l,authorizationCode:c,fetchFn:f});return await a.saveTokens(b),"AUTHORIZED"}let p=await a.tokens();if(p?.refresh_token)try{let b=await ac(h,{metadata:i,clientInformation:n,refreshToken:p.refresh_token,resource:l,addClientAuthentication:a.addClientAuthentication,fetchFn:f});return await a.saveTokens(b),"AUTHORIZED"}catch(a){if(!(a instanceof u)||a instanceof C);else throw a}let q=a.state?await a.state():void 0,{authorizationUrl:r,codeVerifier:s}=await aa(h,{metadata:i,clientInformation:n,state:q,redirectUrl:a.redirectUrl,scope:m,resource:l});return await a.saveCodeVerifier(s),await a.redirectToAuthorization(r),"REDIRECT"}async function T(a,b,c){let d=function(a){let b=new URL("string"==typeof a?a:a.href);return b.hash="",b}(a);if(b.validateResourceURL)return await b.validateResourceURL(d,c?.resource);if(c){if(!function({requestedResource:a,configuredResource:b}){let c=new URL("string"==typeof a?a:a.href),d=new URL("string"==typeof b?b:b.href);if(c.origin!==d.origin||c.pathname.length<d.pathname.length)return!1;let e=c.pathname.endsWith("/")?c.pathname:c.pathname+"/",f=d.pathname.endsWith("/")?d.pathname:d.pathname+"/";return e.startsWith(f)}({requestedResource:d,configuredResource:c.resource}))throw Error(`Protected resource ${c.resource} does not match expected ${d} (or origin)`);return new URL(c.resource)}}function U(a){let b,c=a.headers.get("WWW-Authenticate");if(!c)return{};let[d,e]=c.split(" ");if("bearer"!==d.toLowerCase()||!e)return{};let f=V(a,"resource_metadata")||void 0;if(f)try{b=new URL(f)}catch{}return{resourceMetadataUrl:b,scope:V(a,"scope")||void 0,error:V(a,"error")||void 0}}function V(a,b){let c=a.headers.get("WWW-Authenticate");if(!c)return null;let d=RegExp(`${b}=(?:"([^"]+)"|([^\\s,]+))`),e=c.match(d);return e?e[1]||e[2]:null}async function W(a,b,c=fetch){let d=await Z(a,"oauth-protected-resource",c,{protocolVersion:b?.protocolVersion,metadataUrl:b?.resourceMetadataUrl});if(!d||404===d.status)throw await d?.body?.cancel(),Error("Resource server does not implement OAuth 2.0 Protected Resource Metadata.");if(!d.ok)throw await d.body?.cancel(),Error(`HTTP ${d.status} trying to load well-known OAuth protected resource metadata.`);return k.parse(await d.json())}async function X(a,b,c=fetch){try{return await c(a,{headers:b})}catch(d){if(d instanceof TypeError)if(b)return X(a,void 0,c);else return;throw d}}async function Y(a,b,c=fetch){return await X(a,{"MCP-Protocol-Version":b},c)}async function Z(a,b,c,d){var f,g;let h,i=new URL(a),j=d?.protocolVersion??e.aE;d?.metadataUrl?h=new URL(d.metadataUrl):(h=new URL(function(a,b="",c={}){return b.endsWith("/")&&(b=b.slice(0,-1)),c.prependPathname?`${b}/.well-known/${a}`:`/.well-known/${a}${b}`}(b,i.pathname),d?.metadataServerUrl??i)).search=i.search;let k=await Y(h,j,c);if(!d?.metadataUrl&&(f=k,g=i.pathname,!f||f.status>=400&&f.status<500&&"/"!==g)){let a=new URL(`/.well-known/${b}`,i);k=await Y(a,j,c)}return k}async function $(a,{fetchFn:b=fetch,protocolVersion:c=e.aE}={}){let d={"MCP-Protocol-Version":c,Accept:"application/json"};for(let{url:c,type:e}of function(a){let b="string"==typeof a?new URL(a):a,c="/"!==b.pathname,d=[];if(!c)return d.push({url:new URL("/.well-known/oauth-authorization-server",b.origin),type:"oauth"}),d.push({url:new URL("/.well-known/openid-configuration",b.origin),type:"oidc"}),d;let e=b.pathname;return e.endsWith("/")&&(e=e.slice(0,-1)),d.push({url:new URL(`/.well-known/oauth-authorization-server${e}`,b.origin),type:"oauth"}),d.push({url:new URL(`/.well-known/openid-configuration${e}`,b.origin),type:"oidc"}),d.push({url:new URL(`${e}/.well-known/openid-configuration`,b.origin),type:"oidc"}),d}(a)){let a=await X(c,d,b);if(a){if(!a.ok){if(await a.body?.cancel(),a.status>=400&&a.status<500)continue;throw Error(`HTTP ${a.status} trying to load ${"oauth"===e?"OAuth":"OpenID provider"} metadata from ${c}`)}if("oauth"===e)return l.parse(await a.json());return n.parse(await a.json())}}}async function _(a,b){let c,d;try{(c=await W(a,{resourceMetadataUrl:b?.resourceMetadataUrl},b?.fetchFn)).authorization_servers&&c.authorization_servers.length>0&&(d=c.authorization_servers[0])}catch{}d||(d=String(new URL("/",a)));let e=await $(d,{fetchFn:b?.fetchFn});return{authorizationServerUrl:d,authorizationServerMetadata:e,resourceMetadata:c}}async function aa(a,{metadata:b,clientInformation:c,redirectUrl:e,scope:f,state:g,resource:h}){let i;if(b){if(i=new URL(b.authorization_endpoint),!b.response_types_supported.includes(O))throw Error(`Incompatible auth server: does not support response type ${O}`);if(b.code_challenge_methods_supported&&!b.code_challenge_methods_supported.includes(P))throw Error(`Incompatible auth server: does not support code challenge method ${P}`)}else i=new URL("/authorize",a);let j=await (0,d.Ay)(),k=j.code_verifier,l=j.code_challenge;return i.searchParams.set("response_type",O),i.searchParams.set("client_id",c.client_id),i.searchParams.set("code_challenge",l),i.searchParams.set("code_challenge_method",P),i.searchParams.set("redirect_uri",String(e)),g&&i.searchParams.set("state",g),f&&i.searchParams.set("scope",f),f?.includes("offline_access")&&i.searchParams.append("prompt","consent"),h&&i.searchParams.set("resource",h.href),{authorizationUrl:i,codeVerifier:k}}async function ab(a,{metadata:b,tokenRequestParams:c,clientInformation:d,addClientAuthentication:e,resource:f,fetchFn:g}){let h=b?.token_endpoint?new URL(b.token_endpoint):new URL("/token",a),i=new Headers({"Content-Type":"application/x-www-form-urlencoded",Accept:"application/json"});f&&c.set("resource",f.href),e?await e(i,c,h,b):d&&function(a,b,c,d){let{client_id:e,client_secret:f}=b;switch(a){case"client_secret_basic":var g,h,i,j,k=e,l=f,m=c;if(!l)throw Error("client_secret_basic authentication requires a client_secret");let n=btoa(`${k}:${l}`);m.set("Authorization",`Basic ${n}`);return;case"client_secret_post":g=e,h=f,(i=d).set("client_id",g),h&&i.set("client_secret",h);return;case"none":j=e,d.set("client_id",j);return;default:throw Error(`Unsupported client authentication method: ${a}`)}}(function(a,b){let c=void 0!==a.client_secret;return"token_endpoint_auth_method"in a&&a.token_endpoint_auth_method&&["client_secret_basic","client_secret_post","none"].includes(a.token_endpoint_auth_method)&&(0===b.length||b.includes(a.token_endpoint_auth_method))?a.token_endpoint_auth_method:0===b.length?c?"client_secret_basic":"none":c&&b.includes("client_secret_basic")?"client_secret_basic":c&&b.includes("client_secret_post")?"client_secret_post":b.includes("none")?"none":c?"client_secret_post":"none"}(d,b?.token_endpoint_auth_methods_supported??[]),d,i,c);let j=await (g??fetch)(h,{method:"POST",headers:i,body:c});if(!j.ok)throw await Q(j);return o.parse(await j.json())}async function ac(a,{metadata:b,clientInformation:c,refreshToken:d,resource:e,addClientAuthentication:f,fetchFn:g}){let h=new URLSearchParams({grant_type:"refresh_token",refresh_token:d});return{refresh_token:d,...await ab(a,{metadata:b,tokenRequestParams:h,clientInformation:c,addClientAuthentication:f,resource:e,fetchFn:g})}}async function ad(a,b,{metadata:c,resource:d,authorizationCode:e,fetchFn:f}={}){let g,h=a.clientMetadata.scope;if(a.prepareTokenRequest&&(g=await a.prepareTokenRequest(h)),!g){if(!e)throw Error("Either provider.prepareTokenRequest() or authorizationCode is required");if(!a.redirectUrl)throw Error("redirectUrl is required for authorization_code flow");g=new URLSearchParams({grant_type:"authorization_code",code:e,code_verifier:await a.codeVerifier(),redirect_uri:String(a.redirectUrl)})}return ab(b,{metadata:c,tokenRequestParams:g,clientInformation:await a.clientInformation()??void 0,addClientAuthentication:a.addClientAuthentication,resource:d,fetchFn:f})}async function ae(a,{metadata:b,clientMetadata:c,scope:d,fetchFn:e}){let f;if(b){if(!b.registration_endpoint)throw Error("Incompatible auth server: does not support dynamic client registration");f=new URL(b.registration_endpoint)}else f=new URL("/register",a);let g=await (e??fetch)(f,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({...c,...void 0!==d?{scope:d}:{}})});if(!g.ok)throw await Q(g);return t.parse(await g.json())}},96271:(a,b,c)=>{let d;async function e(a){return(await d).getRandomValues(new Uint8Array(a))}async function f(a){let b="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~",c="",d=await e(a);for(let e=0;e<a;e++){let a=d[e]%b.length;c+=b[a]}return c}async function g(a){return await f(a)}async function h(a){return btoa(String.fromCharCode(...new Uint8Array(await (await d).subtle.digest("SHA-256",new TextEncoder().encode(a))))).replace(/\//g,"_").replace(/\+/g,"-").replace(/=/g,"")}async function i(a){if(a||(a=43),a<43||a>128)throw`Expected a length between 43 and 128. Received ${a}.`;let b=await g(a),c=await h(b);return{code_verifier:b,code_challenge:c}}c.d(b,{Ay:()=>i}),d=globalThis.crypto?.webcrypto??globalThis.crypto??Promise.resolve().then(c.t.bind(c,77598,19)).then(a=>a.webcrypto)}};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";exports.id=519,exports.ids=[519],exports.modules={3391:(a,b,c)=>{c.d(b,{A:()=>w});var d=c(21124),e=c(38301),f=c(81637),g=c(37674),h=c(67101),i=c(43312),j=c(44079),k=c(79515),l=c(73520),m=c(95587),n=c(77028),o=c(88745),p=c(61628),q=c(19787),r=c(95803),s=c(17332),t=c(30717),u=c(32720);let v=[{value:"add",label:"A file appears"},{value:"change",label:"A file changes"},{value:"unlink",label:"A file is deleted"}],w=({config:a,onChange:b})=>{let[c,w]=(0,e.useState)(!1);return(0,d.jsxs)(f.default,{sx:{mt:1},children:[(0,d.jsx)(g.A,{fullWidth:!0,label:"Folder (or file) to watch",value:a.path,onChange:c=>b({...a,path:c.target.value}),placeholder:"e.g. C:\\Users\\me\\Documents\\inbox",margin:"normal",InputProps:{endAdornment:(0,d.jsx)(h.A,{position:"end",children:(0,d.jsx)(i.A,{title:"Browse folders (on the FLUJO machine)",children:(0,d.jsx)(j.A,{edge:"end",onClick:()=>w(!0),children:(0,d.jsx)(t.A,{})})})})}}),(0,d.jsx)(u.A,{open:c,title:"Choose what to watch",selectFiles:!0,initialPath:a.path||void 0,onClose:()=>w(!1),onSelect:c=>b({...a,path:c})}),(0,d.jsx)(g.A,{fullWidth:!0,label:"Only files matching (optional)",value:a.glob||"",onChange:c=>b({...a,glob:c.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,d.jsx)(k.default,{variant:"subtitle2",sx:{mt:1},children:"Run when…"}),(0,d.jsx)(l.A,{row:!0,children:v.map(c=>(0,d.jsx)(m.A,{control:(0,d.jsx)(n.A,{checked:a.events.includes(c.value),onChange:d=>((c,d)=>{let e=d?[...a.events,c]:a.events.filter(a=>a!==c);b({...a,events:e})})(c.value,d.target.checked)}),label:c.label},c.value))}),(0,d.jsx)(o.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,d.jsxs)(p.A,{disableGutters:!0,elevation:0,sx:{mt:1,"&:before":{display:"none"}},children:[(0,d.jsx)(q.A,{expandIcon:(0,d.jsx)(s.A,{}),sx:{px:0},children:(0,d.jsx)(k.default,{variant:"body2",color:"text.secondary",children:"Advanced"})}),(0,d.jsx)(r.A,{sx:{px:0},children:(0,d.jsx)(g.A,{label:"Quiet window (ms)",type:"number",value:a.debounceMs??2e3,onChange:c=>b({...a,debounceMs:Math.max(0,Number(c.target.value)||0)}),helperText:"How long to wait after the last change before running.",inputProps:{min:0,step:500},sx:{width:220}})})]})]})}},17128:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.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")},21704:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.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")},34413:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.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")},62185:(a,b,c)=>{c.d(b,{A:()=>v});var d=c(21124),e=c(38301),f=c(81637),g=c(82605),h=c(50062),i=c(7675),j=c(94367),k=c(37674),l=c(88745),m=c(79515),n=c(95587),o=c(77028),p=c(61628),q=c(19787),r=c(95803),s=c(17332),t=c(63654);let u=a=>String(a).padStart(2,"0"),v=({cron:a,timezone:b,onChange:c,verb:v="Runs",catchUp:w,onCatchUpChange:x})=>{let y=(0,e.useMemo)(()=>(function(a){let b=/^\*\/(\d+) \* \* \* \* \*$/.exec(a);return b?{mode:"seconds",n:Number(b[1]),time:"09:00"}:(b=/^\*\/(\d+) \* \* \* \*$/.exec(a))?{mode:"minutes",n:Number(b[1]),time:"09:00"}:(b=/^0 \*\/(\d+) \* \* \*$/.exec(a))?{mode:"hours",n:Number(b[1]),time:"09:00"}:(b=/^(\d+) (\d+) \* \* \*$/.exec(a))?{mode:"daily",n:1,time:`${u(Number(b[2]))}:${u(Number(b[1]))}`}:(b=/^(\d+) (\d+) \* \* 1-5$/.exec(a))?{mode:"weekdays",n:1,time:`${u(Number(b[2]))}:${u(Number(b[1]))}`}:{mode:"custom",n:15,time:"09:00"}})(a),[]),[z,A]=(0,e.useState)(y.mode),[B,C]=(0,e.useState)(y.n),[D,E]=(0,e.useState)(y.time),[F,G]=(0,e.useState)(a),[H,I]=(0,e.useState)(null),J=function(a,b,c,d){let[e,f]=c.split(":").map(Number);switch(a){case"seconds":return`*/${Math.max(1,Math.min(59,Math.floor(b)||1))} * * * * *`;case"minutes":return`*/${Math.max(1,Math.min(59,Math.floor(b)||1))} * * * *`;case"hours":return`0 */${Math.max(1,Math.min(23,Math.floor(b)||1))} * * *`;case"daily":return`${f||0} ${e||0} * * *`;case"weekdays":return`${f||0} ${e||0} * * 1-5`;default:return d}}(z,B,D,F);return(0,e.useEffect)(()=>{J!==a&&c({cron:J,timezone:b})},[J]),(0,e.useEffect)(()=>{let a=!1,c=setTimeout(()=>{t.P.previewSchedule(J,b).then(b=>{a||I(b)})},300);return()=>{a=!0,clearTimeout(c)}},[J,b]),(0,d.jsxs)(f.default,{children:[(0,d.jsxs)(f.default,{sx:{display:"flex",gap:2,flexWrap:"wrap",alignItems:"center",mt:1},children:[(0,d.jsxs)(g.A,{sx:{minWidth:180},children:[(0,d.jsx)(h.A,{id:"schedule-preset-label",children:v}),(0,d.jsxs)(i.A,{labelId:"schedule-preset-label",label:v,value:z,onChange:a=>A(a.target.value),children:[(0,d.jsx)(j.A,{value:"seconds",children:"Every N seconds"}),(0,d.jsx)(j.A,{value:"minutes",children:"Every N minutes"}),(0,d.jsx)(j.A,{value:"hours",children:"Every N hours"}),(0,d.jsx)(j.A,{value:"daily",children:"Daily at a time"}),(0,d.jsx)(j.A,{value:"weekdays",children:"Weekdays at a time"}),(0,d.jsx)(j.A,{value:"custom",children:"Custom (cron)"})]})]}),("seconds"===z||"minutes"===z||"hours"===z)&&(0,d.jsx)(k.A,{label:"seconds"===z?"Seconds":"minutes"===z?"Minutes":"Hours",type:"number",value:B,onChange:a=>C(Number(a.target.value)),inputProps:{min:1,max:"hours"===z?23:59},sx:{width:120}}),("daily"===z||"weekdays"===z)&&(0,d.jsx)(k.A,{label:"Time",type:"time",value:D,onChange:a=>E(a.target.value),sx:{width:150},InputLabelProps:{shrink:!0}}),"custom"===z&&(0,d.jsx)(k.A,{label:"Cron pattern",value:F,onChange:a=>G(a.target.value),sx:{minWidth:220},placeholder:"*/15 * * * *"})]}),H&&!H.valid&&(0,d.jsx)(l.A,{severity:"error",sx:{mt:2},children:H.error||"This schedule is not valid."}),H&&H.valid&&H.nextRuns.length>0&&(0,d.jsxs)(m.default,{variant:"body2",color:"text.secondary",sx:{mt:2},children:["Next: ",H.nextRuns.map(a=>new Date(a).toLocaleString()).join(" \xb7 ")]}),x&&(0,d.jsx)(n.A,{sx:{mt:1,display:"flex"},control:(0,d.jsx)(o.A,{checked:!0===w,onChange:a=>x(a.target.checked)}),label:"If FLUJO was closed at a scheduled time, run once on startup"}),(0,d.jsxs)(p.A,{disableGutters:!0,elevation:0,sx:{mt:1,"&:before":{display:"none"}},children:[(0,d.jsx)(q.A,{expandIcon:(0,d.jsx)(s.A,{}),sx:{px:0},children:(0,d.jsx)(m.default,{variant:"body2",color:"text.secondary",children:"Advanced"})}),(0,d.jsx)(r.A,{sx:{px:0},children:(0,d.jsxs)(f.default,{sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,d.jsx)(k.A,{label:"Timezone (optional)",value:b||"",onChange:a=>c({cron:J,timezone:a.target.value||void 0}),placeholder:"e.g. Europe/Berlin",helperText:"IANA timezone name. Empty = this computer's timezone.",sx:{minWidth:260}}),(0,d.jsx)(k.A,{label:"Generated cron pattern",value:J,InputProps:{readOnly:"custom"!==z},onChange:a=>{A("custom"),G(a.target.value)},helperText:"Editing switches to Custom mode.",sx:{minWidth:220}})]})})]})]})}},62350:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.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")},72535:(a,b,c)=>{c.d(b,{A:()=>v});var d=c(21124),e=c(38301),f=c(81637),g=c(79515),h=c(82605),i=c(50062),j=c(7675),k=c(94367),l=c(19427),m=c(37674),n=c(73520),o=c(95587),p=c(77028),q=c(91059),r=c(88745),s=c(63654);function t(a){if(!a||!Array.isArray(a.nodes))return[];let b=[];for(let c of a.nodes){if(c?.data?.type!=="signal")continue;let a=c.data.properties?.topic;"string"==typeof a&&a.trim()&&b.push(a.trim())}return b}let u=(0,c(19815).h)("frontend/components/PlannedExecutions/FlowEventPanel"),v=({config:a,onChange:b,flows:c,currentExecutionId:v})=>{let[w,x]=(0,e.useState)([]),[y,z]=(0,e.useState)(void 0!==a.maxChainDepth||void 0!==a.minIntervalMs),A=a.source?.topic!==void 0?"topic":a.source?.executionId!==void 0?"execution":"flow",B="topic"===A,C=(0,e.useMemo)(()=>(function(a,b=10){let c=new Map;for(let b of a)b&&"string"==typeof b.id&&c.set(b.id,b);let d=new Map,e=(a,b)=>{d.has(a)||d.set(a,[]),d.get(a).push(b)};for(let d of a){if(!d||"string"!=typeof d.id)continue;let a=new Map;for(let b of t(d))a.set(b,(a.get(b)??0)+1);for(let[b,c]of a)e(b,{flowId:d.id,flowName:d.name,signalNodeCount:c,viaSubflow:!1});for(let f of function(a,b,c=10){let d=new Set,e=new Set,f=(a,g)=>{if(e.has(a)||g>c)return;e.add(a);let h=b.get(a);for(let a of t(h))d.add(a);for(let a of function(a){if(!a||!Array.isArray(a.nodes))return[];let b=[];for(let c of a.nodes){if(c?.data?.type!=="subflow")continue;let a=c.data.properties??{};if("string"==typeof a.subflowId&&a.subflowId.trim()&&b.push(a.subflowId.trim()),Array.isArray(a.parallelSubflowIds))for(let c of a.parallelSubflowIds)"string"==typeof c&&c.trim()&&b.push(c.trim())}return Array.from(new Set(b))}(h))f(a,g+1)};return f(a,0),d}(d.id,c,b))a.has(f)||e(f,{flowId:d.id,flowName:d.name,signalNodeCount:0,viaSubflow:!0})}return d})(c),[c]),D=(0,e.useMemo)(()=>{let a=new Map;for(let b of c)b?.id&&a.set(b.id,b.name);return a},[c]),E=(0,e.useMemo)(()=>{let a=new Map;for(let b of w){let c=b.execution;if(c.id===v||c.trigger?.type!=="flow-event")continue;let d=c.trigger.source?.topic;if("string"!=typeof d||!d.trim())continue;let e=d.trim();a.has(e)||a.set(e,[]),a.get(e).push({executionId:c.id,executionName:c.name,flowId:c.flowId,flowName:D.get(c.flowId)})}return a},[w,v,D]),F=(0,e.useMemo)(()=>Array.from(new Set([...C.keys(),...E.keys()])).sort((a,b)=>a.localeCompare(b)),[C,E]),G=a=>{let b=C.get(a);if(!b||0===b.length)return null;let c=Array.from(new Set(b.map(a=>(a.flowName||a.flowId)+(a.viaSubflow?" (via subflow)":""))));return`Emitted in: ${c.join(", ")}`},H=(a.source?.topic??"").trim(),I=!H||C.has(H);(0,e.useEffect)(()=>{let a=!1;return s.P.list().then(b=>{a||x(b.executions||[])}).catch(b=>{u.warn("Failed to load planned executions for source picker",b),a||x([])}),()=>{a=!0}},[]);let J=(c,d)=>{let e=new Set(a.on??[]);d?e.add(c):e.delete(c),b({...a,on:Array.from(e)})};return(0,d.jsxs)(f.default,{sx:{mt:1},children:[(0,d.jsx)(g.default,{variant:"subtitle2",sx:{mt:1},children:"React to"}),(0,d.jsxs)(f.default,{sx:{display:"flex",gap:2,mt:1},children:[(0,d.jsxs)(h.A,{sx:{minWidth:180},children:[(0,d.jsx)(i.A,{id:"flow-event-source-kind",children:"Source"}),(0,d.jsxs)(j.A,{labelId:"flow-event-source-kind",label:"Source",value:A,onChange:c=>(c=>{b({...a,source:"flow"===c?{flowId:""}:"execution"===c?{executionId:""}:{topic:""}})})(c.target.value),children:[(0,d.jsx)(k.A,{value:"flow",children:"A flow (any run)"}),(0,d.jsx)(k.A,{value:"execution",children:"A planned execution"}),(0,d.jsx)(k.A,{value:"topic",children:"A signal topic"})]})]}),"topic"===A?(0,d.jsx)(h.A,{fullWidth:!0,children:(0,d.jsx)(l.A,{freeSolo:!0,autoHighlight:!0,options:F,value:a.source?.topic??"",inputValue:a.source?.topic??"",onInputChange:(c,d)=>b({...a,source:{topic:d}}),renderOption:(a,b)=>{let c=G(b),h=(a=>{let b=E.get(a);if(!b||0===b.length)return null;let c=Array.from(new Set(b.map(a=>a.flowName||a.flowId)));return`Used by ${b.length} trigger${1===b.length?"":"s"} → starts ${c.join(", ")}`})(b);return(0,e.createElement)(f.default,{component:"li",...a,key:b},(0,d.jsxs)(f.default,{sx:{display:"flex",flexDirection:"column",py:.25},children:[(0,d.jsx)(g.default,{variant:"body2",sx:{fontWeight:600},children:b}),c&&(0,d.jsx)(g.default,{variant:"caption",color:"text.secondary",children:c}),h&&(0,d.jsx)(g.default,{variant:"caption",color:"text.secondary",children:h}),!c&&(0,d.jsx)(g.default,{variant:"caption",color:"warning.main",children:"No flow currently emits this signal"})]}))},renderInput:a=>(0,d.jsx)(m.A,{...a,label:"Signal topic",placeholder:"e.g. review-blocked",helperText:H?I?G(H)??"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"===A?(0,d.jsxs)(h.A,{fullWidth:!0,children:[(0,d.jsx)(i.A,{id:"flow-event-flow",children:"Flow to watch"}),(0,d.jsxs)(j.A,{labelId:"flow-event-flow",label:"Flow to watch",value:a.source?.flowId??"",onChange:c=>b({...a,source:{flowId:c.target.value}}),displayEmpty:!0,children:[0===c.length&&(0,d.jsx)(k.A,{value:"",disabled:!0,children:"No flows available"}),c.map(a=>(0,d.jsx)(k.A,{value:a.id,children:a.name},a.id))]})]}):(0,d.jsxs)(h.A,{fullWidth:!0,children:[(0,d.jsx)(i.A,{id:"flow-event-execution",children:"Planned execution to watch"}),(0,d.jsxs)(j.A,{labelId:"flow-event-execution",label:"Planned execution to watch",value:a.source?.executionId??"",onChange:c=>b({...a,source:{executionId:c.target.value}}),displayEmpty:!0,children:[0===w.filter(a=>a.execution.id!==v).length&&(0,d.jsx)(k.A,{value:"",disabled:!0,children:"No other planned executions"}),w.filter(a=>a.execution.id!==v).map(a=>(0,d.jsx)(k.A,{value:a.execution.id,children:a.execution.name},a.execution.id))]})]})]}),!B&&(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(g.default,{variant:"subtitle2",sx:{mt:2},children:"When it…"}),(0,d.jsxs)(n.A,{row:!0,children:[(0,d.jsx)(o.A,{control:(0,d.jsx)(p.A,{checked:(a.on??[]).includes("completed"),onChange:a=>J("completed",a.target.checked)}),label:"completes"}),(0,d.jsx)(o.A,{control:(0,d.jsx)(p.A,{checked:(a.on??[]).includes("error"),onChange:a=>J("error",a.target.checked)}),label:"errors"})]})]}),(0,d.jsx)(m.A,{fullWidth:!0,label:B?"Only when the payload contains (optional)":"Only when the output contains (optional)",value:a.outputMatch?.contains??"",onChange:c=>{let d=c.target.value,e={...a.outputMatch,contains:d||void 0},f=e.contains||e.regex?e:void 0;b({...a,outputMatch:f})},margin:"normal",placeholder:"e.g. FAILED, or leave empty to react to every matching run"}),(0,d.jsx)(o.A,{sx:{mt:1},control:(0,d.jsx)(p.A,{checked:y,onChange:a=>z(a.target.checked)}),label:"Advanced (loop safety)"}),y&&(0,d.jsxs)(f.default,{sx:{display:"flex",gap:2,mt:1},children:[(0,d.jsx)(m.A,{label:"Max chain depth",type:"number",value:a.maxChainDepth??"",onChange:c=>b({...a,maxChainDepth:""===c.target.value?void 0:Number(c.target.value)}),helperText:"Stop after this many hops (default 5)",inputProps:{min:1}}),(0,d.jsx)(m.A,{label:"Cooldown (ms)",type:"number",value:a.minIntervalMs??"",onChange:c=>b({...a,minIntervalMs:""===c.target.value?void 0:Number(c.target.value)}),helperText:"Minimum gap between fires",inputProps:{min:0}})]}),(0,d.jsx)(q.A,{sx:{mt:2}}),(0,d.jsx)(r.A,{severity:"info",sx:{mt:2},children:B?"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."})]})}},72748:(a,b,c)=>{c.d(b,{A:()=>j});var d=c(21124);c(38301);var e=c(81637),f=c(37674),g=c(79515),h=c(88745),i=c(62185);let j=({config:a,onChange:b})=>(0,d.jsxs)(e.default,{sx:{mt:1},children:[(0,d.jsx)(f.A,{fullWidth:!0,label:"URL to watch",value:a.url,onChange:c=>b({...a,url:c.target.value}),placeholder:"https://example.com/status or an API/feed URL",margin:"normal",type:"url"}),(0,d.jsx)(g.default,{variant:"subtitle2",sx:{mt:1},children:"How often to check"}),(0,d.jsx)(i.A,{verb:"Check",cron:a.cron,timezone:a.timezone,onChange:({cron:c,timezone:d})=>b({...a,cron:c,timezone:d})}),(0,d.jsx)(h.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."})]})},87113:(a,b,c)=>{c.d(b,{A:()=>h});var d=c(21124);c(38301);var e=c(81637),f=c(79515),g=c(8165);let h=({selected:a,icon:b,title:c,description:h,onClick:i})=>(0,d.jsxs)(e.default,{role:"radio","aria-checked":a,tabIndex:0,onClick:i,onKeyDown:a=>{("Enter"===a.key||" "===a.key)&&(a.preventDefault(),i())},sx:{flex:1,minWidth:200,position:"relative",p:2,borderRadius:2,border:2,borderColor:a?"primary.main":"divider",bgcolor:a?"action.selected":"background.paper",cursor:"pointer",transition:"border-color 120ms, background-color 120ms","&:hover":{borderColor:a?"primary.main":"text.disabled"},outline:"none","&:focus-visible":{boxShadow:a=>`0 0 0 3px ${a.palette.primary.light}`}},children:[a&&(0,d.jsx)(g.A,{color:"primary",fontSize:"small",sx:{position:"absolute",top:8,right:8}}),(0,d.jsxs)(e.default,{sx:{display:"flex",alignItems:"center",gap:1,mb:.5,color:a?"primary.main":"text.secondary"},children:[b,(0,d.jsx)(f.default,{variant:"subtitle1",sx:{fontWeight:600,color:"text.primary"},children:c})]}),(0,d.jsx)(f.default,{variant:"body2",color:"text.secondary",children:h})]})},88839:(a,b,c)=>{c.d(b,{A:()=>D});var d=c(21124),e=c(38301),f=c(81637),g=c(79515),h=c(68730),i=c(82605),j=c(50062),k=c(7675),l=c(94367),m=c(37674),n=c(8521),o=c(88745),p=c(11801);let q=(0,p.A)((0,d.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"),r=(0,p.A)([(0,d.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,d.jsx)("path",{d:"M13 3C9.25 3 6.2 5.94 6.02 9.64L4.1 12.2c-.25.33-.01.8.4.8H6v3c0 1.1.9 2 2 2h1v3h7v-4.68c2.36-1.12 4-3.53 4-6.32 0-3.87-3.13-7-7-7m3 7c0 .13-.01.26-.02.39l.83.66c.08.06.1.16.05.25l-.8 1.39c-.05.09-.16.12-.24.09l-.99-.4c-.21.16-.43.29-.67.39L14 13.83c-.01.1-.1.17-.2.17h-1.6c-.1 0-.18-.07-.2-.17l-.15-1.06c-.25-.1-.47-.23-.68-.39l-.99.4c-.09.03-.2 0-.25-.09l-.8-1.39c-.05-.08-.03-.19.05-.25l.84-.66c-.01-.13-.02-.26-.02-.39s.02-.27.04-.39l-.85-.66c-.08-.06-.1-.16-.05-.26l.8-1.38c.05-.09.15-.12.24-.09l1 .4c.2-.15.43-.29.67-.39L12 6.17c.02-.1.1-.17.2-.17h1.6c.1 0 .18.07.2.17l.15 1.06c.24.1.46.23.67.39l1-.4c.09-.03.2 0 .24.09l.8 1.38c.05.09.03.2-.05.26l-.85.66c.03.12.04.25.04.39"},"1")],"Psychology");var s=c(28055),t=c(83434),u=c(63281),v=c(19815),w=c(87113),x=c(62185),y=c(31411),z=c(21570),A=c(35070),B=c(45231);let C=(0,v.h)("frontend/components/PlannedExecutions/WatchToolPanel"),D=({config:a,onChange:b})=>{let[c,p]=(0,e.useState)([]),[v,D]=(0,e.useState)(!1),[E,F]=(0,e.useState)([]),[G,H]=(0,e.useState)(!1),[I,J]=(0,e.useState)(Object.keys(a.args||{}).length>0?JSON.stringify(a.args,null,2):""),[K,L]=(0,e.useState)(null),[M,N]=(0,e.useState)(!1),[O,P]=(0,e.useState)(null),[Q,R]=(0,e.useState)(null),[S,T]=(0,e.useState)([]),[U,V]=(0,e.useState)([]);(0,e.useEffect)(()=>{let a=!1;return s.S.loadServerConfigs().then(b=>{a||(Array.isArray(b)?p(b.filter(a=>!a.disabled)):(C.warn("Failed to load MCP servers for watch-tool panel",b),p([])))}),()=>{a=!0}},[]),(0,e.useEffect)(()=>{if(!a.serverName)return void F([]);let b=!1;return H(!0),s.S.listServerTools(a.serverName).then(({tools:a})=>{b||F(a||[])}).finally(()=>{b||H(!1)}),()=>{b=!0}},[a.serverName]),(0,e.useEffect)(()=>{let a=!1;return t.N.loadModels().then(b=>{a||T(Array.isArray(b)?b:[])}).catch(()=>{a||T([])}),u.g.loadFlows().then(b=>{a||V(b||[])}).catch(()=>{a||V([])}),()=>{a=!0}},[]);let W=async()=>{N(!0),P(null),R(null);try{let b=await s.S.callTool(a.serverName,a.toolName,a.args||{});if(b?.error)R("string"==typeof b.error?b.error:"Tool call failed");else{let a=b?.data??b,c=JSON.stringify(a,null,2)??"";P(c.length>6e3?`${c.slice(0,6e3)}
|
|
2
|
+
… (truncated)`:c)}}catch(a){R(a instanceof Error?a.message:"Tool call failed")}finally{N(!1)}},X=a.evaluate,Y=E.find(b=>b.name===a.toolName),Z=(0,B.E)("mcp",c),$=c=>({key:c.name,content:(c=>(0,d.jsx)(A.A,{name:c.name,status:c.status||"disconnected",path:c.rootPath||"",enabled:!c.disabled,transport:c.transport||"stdio",pickerMode:!0,selected:a.serverName===c.name,onClick:()=>{var d;return d=c.name,void(b({...a,serverName:d,toolName:""}),D(!1))}}))(c)}),_=Z.items.map($),aa=Z.groups?Z.groups.map(a=>({...a,items:a.items.map($)})):null;return(0,d.jsxs)(f.default,{sx:{mt:1},children:[(0,d.jsxs)(f.default,{sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,d.jsxs)(f.default,{sx:{minWidth:220,flex:1,mt:2,mb:1},children:[(0,d.jsx)(g.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mb:.5},children:"Server"}),(0,d.jsx)(h.A,{variant:"outlined",fullWidth:!0,onClick:()=>D(!0),sx:{justifyContent:"flex-start",textTransform:"none"},children:a.serverName?`${a.serverName} — change`:"Choose an MCP server…"}),(0,d.jsx)(z.A,{open:v,onClose:()=>D(!1),title:"Choose an MCP server",description:"Pick the server whose tool you want to watch.",emptyMessage:"No MCP servers configured.",searchable:!0,searchPlaceholder:"Search servers…",searchTerm:Z.searchTerm,onSearchChange:Z.setSearchTerm,columns:{xs:12,sm:6},items:_,groups:aa,collapsedKeys:Z.collapsedKeys,onToggleGroup:Z.toggleGroup})]}),(0,d.jsxs)(i.A,{sx:{minWidth:220,flex:1},margin:"normal",disabled:!a.serverName,children:[(0,d.jsx)(j.A,{id:"watch-tool-label",children:"Tool"}),(0,d.jsxs)(k.A,{labelId:"watch-tool-label",label:"Tool",value:E.some(b=>b.name===a.toolName)?a.toolName:"",onChange:c=>b({...a,toolName:c.target.value,args:{}}),children:[0===E.length&&(0,d.jsx)(l.A,{value:"",disabled:!0,children:G?"Loading tools…":"Pick a server first"}),E.map(a=>(0,d.jsx)(l.A,{value:a.name,children:a.name},a.name))]})]})]}),(0,d.jsx)(g.default,{variant:"subtitle2",sx:{mt:1},children:"How often to check"}),(0,d.jsx)(x.A,{verb:"Check",cron:a.cron??function(a){let b=Math.max(5,Math.round((a??6e4)/1e3));if(b<60)return`*/${b} * * * * *`;let c=Math.max(1,Math.round(b/60));if(c<60)return`*/${c} * * * *`;let d=Math.max(1,Math.min(23,Math.round(c/60)));return`0 */${d} * * *`}(a.intervalMs),timezone:a.timezone,onChange:({cron:c,timezone:d})=>b({...a,cron:c,timezone:d})}),Y?(0,d.jsxs)(f.default,{sx:{my:1.5},children:[(0,d.jsx)(g.default,{variant:"subtitle2",sx:{mb:1.5},children:"Tool parameters — sent on every check"}),(0,d.jsx)(y.A,{schema:Y.inputSchema,values:a.args||{},onChange:c=>b({...a,args:c})})]}):(0,d.jsx)(m.A,{fullWidth:!0,label:"Tool arguments (JSON, optional)",value:I,onChange:c=>(c=>{if(J(c),!c.trim()){L(null),b({...a,args:{}});return}try{let d=JSON.parse(c);if(null===d||"object"!=typeof d||Array.isArray(d))return void L('Arguments must be a JSON object, e.g. { "query": "…" }');L(null),b({...a,args:d})}catch{L("Not valid JSON yet")}})(c.target.value),margin:"normal",multiline:!0,minRows:2,placeholder:'{ "query": "is:unread" }',error:!!K,helperText:K??"Sent to the tool on every check.",slotProps:{input:{sx:{fontFamily:"monospace",fontSize:14}}}}),(0,d.jsxs)(f.default,{sx:{display:"flex",alignItems:"center",gap:2,mb:1},children:[(0,d.jsx)(h.A,{variant:"outlined",size:"small",onClick:W,disabled:!a.serverName||!a.toolName||M||!!K,startIcon:M?(0,d.jsx)(n.default,{size:16}):void 0,children:"Test: call the tool now"}),(0,d.jsx)(g.default,{variant:"caption",color:"text.secondary",children:"See what the result looks like — useful for the settings below."})]}),Q&&(0,d.jsx)(o.A,{severity:"error",sx:{mb:1},children:Q}),O&&(0,d.jsx)(f.default,{component:"pre",sx:{maxHeight:240,overflow:"auto",bgcolor:"action.hover",borderRadius:1,p:1.5,fontSize:12,m:0,mb:1},children:O}),(0,d.jsx)(g.default,{variant:"subtitle2",sx:{mt:2,mb:1},children:"Run the flow when…"}),(0,d.jsxs)(f.default,{role:"radiogroup","aria-label":"Poll condition",sx:{display:"flex",gap:2,flexWrap:"wrap"},children:[(0,d.jsx)(w.A,{selected:"on-change"===X.mode,onClick:()=>b({...a,evaluate:{mode:"on-change"}}),icon:(0,d.jsx)(q,{}),title:"The result changes",description:"Any difference from the last check runs the flow. Simplest — no setup."}),(0,d.jsx)(w.A,{selected:"llm-gate"===X.mode||"flow-gate"===X.mode,onClick:()=>{"llm-gate"!==X.mode&&"flow-gate"!==X.mode&&b({...a,evaluate:{mode:"llm-gate",condition:"",modelId:""}})},icon:(0,d.jsx)(r,{}),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"===X.mode||"flow-gate"===X.mode)&&(0,d.jsxs)(f.default,{sx:{mt:1},children:[(0,d.jsx)(m.A,{fullWidth:!0,label:"Run the flow if…",value:X.condition,onChange:c=>b({...a,evaluate:{...X,condition:c.target.value}}),multiline:!0,minRows:2,margin:"normal",placeholder:"e.g. any email mentions an invoice or a payment reminder"}),(0,d.jsxs)(f.default,{sx:{display:"flex",gap:2,flexWrap:"wrap",alignItems:"flex-start"},children:[(0,d.jsxs)(i.A,{sx:{minWidth:170},children:[(0,d.jsx)(j.A,{id:"gate-checker-label",children:"Checked by"}),(0,d.jsxs)(k.A,{labelId:"gate-checker-label",label:"Checked by",value:X.mode,onChange:c=>{let d=c.target.value;if(d===X.mode)return;let e={condition:X.condition,maxCallsPerDay:X.maxCallsPerDay};b({...a,evaluate:"llm-gate"===d?{mode:d,...e,modelId:""}:{mode:d,...e,flowId:""}})},children:[(0,d.jsx)(l.A,{value:"llm-gate",children:"A model"}),(0,d.jsx)(l.A,{value:"flow-gate",children:"One of my flows"})]})]}),"llm-gate"===X.mode&&(0,d.jsxs)(i.A,{sx:{minWidth:240,flex:1},children:[(0,d.jsx)(j.A,{id:"gate-model-label",children:"Model that checks"}),(0,d.jsxs)(k.A,{labelId:"gate-model-label",label:"Model that checks",value:S.some(a=>a.id===X.modelId)?X.modelId:"",onChange:c=>b({...a,evaluate:{...X,modelId:c.target.value}}),children:[0===S.length&&(0,d.jsx)(l.A,{value:"",disabled:!0,children:"No models configured"}),S.map(a=>(0,d.jsx)(l.A,{value:a.id,children:a.displayName||a.name},a.id))]})]}),"flow-gate"===X.mode&&(0,d.jsxs)(i.A,{sx:{minWidth:240,flex:1},children:[(0,d.jsx)(j.A,{id:"gate-flow-label",children:"Flow that checks"}),(0,d.jsxs)(k.A,{labelId:"gate-flow-label",label:"Flow that checks",value:U.some(a=>a.id===X.flowId)?X.flowId:"",onChange:c=>b({...a,evaluate:{...X,flowId:c.target.value}}),children:[0===U.length&&(0,d.jsx)(l.A,{value:"",disabled:!0,children:"No flows available"}),U.map(a=>(0,d.jsx)(l.A,{value:a.id,children:a.name},a.id))]})]}),(0,d.jsx)(m.A,{label:"Max checks per day",type:"number",value:X.maxCallsPerDay??500,onChange:c=>b({...a,evaluate:{...X,maxCallsPerDay:Math.max(1,Number(c.target.value)||1)}}),inputProps:{min:1},helperText:"Cost guard per check.",sx:{width:180}})]}),(0,d.jsx)(g.default,{variant:"caption",color:"text.secondary",sx:{display:"block",mt:.5},children:"flow-gate"===X.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,d.jsx)(o.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."})]})}},91283:(a,b,c)=>{c.d(b,{A:()=>q});var d=c(21124),e=c(38301),f=c(81637),g=c(88745),h=c(37674),i=c(43312),j=c(44079),k=c(68730),l=c(79515),m=c(95587),n=c(77028),o=c(38941),p=c(36698);let q=({config:a,onChange:b,executionId:c,saved:q})=>{let[r,s]=(0,e.useState)(null),t=`/api/webhooks/${c}`,u=async(a,b)=>{try{await navigator.clipboard.writeText(b),s(a),setTimeout(()=>s(null),1500)}catch{}};return(0,d.jsxs)(f.default,{sx:{mt:1},children:[!q&&(0,d.jsx)(g.A,{severity:"info",sx:{mb:2},children:"This URL and token are ready to copy now — they become active when you save."}),(0,d.jsxs)(f.default,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,d.jsx)(h.A,{fullWidth:!0,label:"Webhook URL",value:t,InputProps:{readOnly:!0},size:"small"}),(0,d.jsx)(i.A,{title:"Copy URL",children:(0,d.jsx)(j.A,{onClick:()=>u("url",t),children:"url"===r?(0,d.jsx)(p.A,{color:"success"}):(0,d.jsx)(o.A,{})})})]}),(0,d.jsxs)(f.default,{sx:{display:"flex",alignItems:"center",gap:1,mt:2},children:[(0,d.jsx)(h.A,{fullWidth:!0,label:"Secret token",value:a.token,InputProps:{readOnly:!0},size:"small",type:"password"}),(0,d.jsx)(i.A,{title:"Copy token",children:(0,d.jsx)(j.A,{onClick:()=>u("token",a.token),disabled:!a.token,children:"token"===r?(0,d.jsx)(p.A,{color:"success"}):(0,d.jsx)(o.A,{})})}),(0,d.jsx)(k.A,{size:"small",onClick:()=>b({...a,token:crypto.randomUUID()}),sx:{whiteSpace:"nowrap"},children:"New token"})]}),(0,d.jsx)(l.default,{variant:"caption",color:"text.secondary",children:q?"A new token takes effect when you save — callers using the old one are cut off.":""}),(0,d.jsxs)(l.default,{variant:"body2",color:"text.secondary",sx:{mt:1.5},children:["Callers send a POST with the token in the ",(0,d.jsx)("code",{children:"X-Flujo-Token"})," ","header (or ",(0,d.jsx)("code",{children:"?token=…"}),"). The request body becomes part of the flow's input — treat it as untrusted data in your prompt."]}),(0,d.jsx)(m.A,{sx:{mt:1,display:"flex"},control:(0,d.jsx)(n.A,{checked:!0===a.allowExternal,onChange:c=>b({...a,allowExternal:c.target.checked})}),label:"Allow calls from other machines (default: this computer only)"}),a.allowExternal&&(0,d.jsx)(g.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."})]})}}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=5285,exports.ids=[5285],exports.modules={2117:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(55511);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length,h=[];for(let a=0;a<256;++a)h.push((a+256).toString(16).slice(1));let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();let i=(a=a||{}).random??a.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(i.length<16)throw Error("Random bytes length must be >= 16");if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,b){if((c=c||0)<0||c+16>b.length)throw RangeError(`UUID byte range ${c}:${c+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[c+a]=i[a];return b}return function(a,b=0){return(h[a[b+0]]+h[a[b+1]]+h[a[b+2]]+h[a[b+3]]+"-"+h[a[b+4]]+h[a[b+5]]+"-"+h[a[b+6]]+h[a[b+7]]+"-"+h[a[b+8]]+h[a[b+9]]+"-"+h[a[b+10]]+h[a[b+11]]+h[a[b+12]]+h[a[b+13]]+h[a[b+14]]+h[a[b+15]]).toLowerCase()}(i)}},9863:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"m11.99 18.54-7.37-5.73L3 14.07l9 7 9-7-1.63-1.27zM12 16l7.36-5.73L21 9l-9-7-9 7 1.63 1.27z"}),"Layers")},11402:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M14.94 4.66h-4.72l2.36-2.36zm-4.69 14.71h4.66l-2.33 2.33zM6.1 6.27 1.6 17.73h1.84l.92-2.45h5.11l.92 2.45h1.84L7.74 6.27zm-1.13 7.37 1.94-5.18 1.94 5.18zm10.76 2.5h6.12v1.59h-8.53v-1.29l5.92-8.56h-5.88v-1.6h8.3v1.26z"}),"SortByAlpha")},19427:(a,b,c)=>{c.d(b,{A:()=>aa});var d,e,f=c(38301),g=c(43249),h=c(2783),i=c(37489),j=c(92869),k=c(55973),l=c(66335),m=c(62383),n=c(10005);function o(a){return a.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}let p=function(a={}){let{ignoreAccents:b=!0,ignoreCase:c=!0,limit:d,matchFrom:e="any",stringify:f,trim:g=!1}=a;return(a,{inputValue:h,getOptionLabel:i})=>{let j=g?h.trim():h;c&&(j=j.toLowerCase()),b&&(j=o(j));let k=j?a.filter(a=>{let d=(f||i)(a);return c&&(d=d.toLowerCase()),b&&(d=o(d)),"start"===e?d.startsWith(j):d.includes(j)}):a;return"number"==typeof d?k.slice(0,d):k}}(),q=a=>null!==a.current&&a.current.parentElement?.contains(document.activeElement),r=[];function s(a,b,c){if(b||null==a)return"";let d=c(a);return"string"==typeof d?d:""}let t=function(a){let{unstable_isActiveElementInListbox:b=q,unstable_classNamePrefix:c="Mui",autoComplete:d=!1,autoHighlight:e=!1,autoSelect:g=!1,blurOnSelect:h=!1,clearOnBlur:i=!a.freeSolo,clearOnEscape:o=!1,componentName:t="useAutocomplete",defaultValue:u=a.multiple?r:null,disableClearable:v=!1,disableCloseOnSelect:w=!1,disabled:x,disabledItemsFocusable:y=!1,disableListWrap:z=!1,filterOptions:A=p,filterSelectedOptions:B=!1,freeSolo:C=!1,getOptionDisabled:D,getOptionKey:E,getOptionLabel:F=a=>a.label??a,groupBy:G,handleHomeEndKeys:H=!a.freeSolo,id:I,includeInputInList:J=!1,inputValue:K,isOptionEqualToValue:L=(a,b)=>a===b,multiple:M=!1,onChange:N,onClose:O,onHighlightChange:P,onInputChange:Q,onOpen:R,open:S,openOnFocus:T=!1,options:U,readOnly:V=!1,selectOnFocus:W=!a.freeSolo,value:X}=a,Y=(0,j.A)(I),Z=F;Z=a=>{let b=F(a);return"string"!=typeof b?String(b):b};let $=f.useRef(!1),_=f.useRef(!0),aa=f.useRef(null),ab=f.useRef(null),[ac,ad]=f.useState(null),[ae,af]=f.useState(-1),ag=e?0:-1,ah=f.useRef(ag),ai=f.useRef(s(u??X,M,Z)).current,[aj,ak]=(0,k.A)({controlled:X,default:u,name:t}),[al,am]=(0,k.A)({controlled:K,default:ai,name:t,state:"inputValue"}),[an,ao]=f.useState(!1),ap=f.useCallback((a,b,c)=>{if(!(M?aj.length<b.length:null!==b)&&!i)return;let d=s(b,M,Z);al!==d&&(am(d),Q&&Q(a,d,c))},[Z,al,M,Q,am,i,aj]),[aq,ar]=(0,k.A)({controlled:S,default:!1,name:t,state:"open"}),[as,at]=f.useState(!0),au=!M&&null!=aj&&al===Z(aj),av=aq&&!V,aw=av?A(U.filter(a=>!(B&&(M?aj:[aj]).some(b=>null!==b&&L(a,b)))),{inputValue:au&&as?"":al,getOptionLabel:Z}):[],ax=(0,l.A)({filteredOptions:aw,value:aj,inputValue:al});f.useEffect(()=>{let a=aj!==ax.value;(!an||a)&&(!C||a)&&ap(null,aj,"reset")},[aj,ap,an,ax.value,C]);let ay=aq&&aw.length>0&&!V,az=(0,m.A)(a=>{-1===a?aa.current.focus():ac.querySelector(`[data-tag-index="${a}"]`).focus()});f.useEffect(()=>{M&&ae>aj.length-1&&(af(-1),az(-1))},[aj,M,ae,az]);let aA=(0,m.A)(({event:a,index:b,reason:d})=>{if(ah.current=b,-1===b?aa.current.removeAttribute("aria-activedescendant"):aa.current.setAttribute("aria-activedescendant",`${Y}-option-${b}`),P&&["mouse","keyboard","touch"].includes(d)&&P(a,-1===b?null:aw[b],d),!ab.current)return;let e=ab.current.querySelector(`[role="option"].${c}-focused`);e&&(e.classList.remove(`${c}-focused`),e.classList.remove(`${c}-focusVisible`));let f=ab.current;if("listbox"!==ab.current.getAttribute("role")&&(f=ab.current.parentElement.querySelector('[role="listbox"]')),!f)return;if(-1===b){f.scrollTop=0;return}let g=ab.current.querySelector(`[data-option-index="${b}"]`);if(g&&(g.classList.add(`${c}-focused`),"keyboard"===d&&g.classList.add(`${c}-focusVisible`),f.scrollHeight>f.clientHeight&&"mouse"!==d&&"touch"!==d)){let a=f.clientHeight+f.scrollTop,b=g.offsetTop+g.offsetHeight;b>a?f.scrollTop=b-f.clientHeight:g.offsetTop-g.offsetHeight*(1.3*!!G)<f.scrollTop&&(f.scrollTop=g.offsetTop-g.offsetHeight*(1.3*!!G))}}),aB=(0,m.A)(({event:a,diff:b,direction:c="next",reason:e})=>{if(!av)return;let f=function(a,b){if(!ab.current||a<0||a>=aw.length)return -1;let c=a;for(;;){let d=ab.current.querySelector(`[data-option-index="${c}"]`),e=!y&&(!d||d.disabled||"true"===d.getAttribute("aria-disabled"));if(d&&d.hasAttribute("tabindex")&&!e)return c;if((c="next"===b?(c+1)%aw.length:(c-1+aw.length)%aw.length)===a)return -1}}((()=>{let a=aw.length-1;if("reset"===b)return ag;if("start"===b)return 0;if("end"===b)return a;let c=ah.current+b;return c<0?-1===c&&J?-1:z&&-1!==ah.current||Math.abs(b)>1?0:a:c>a?c===a+1&&J?-1:z||Math.abs(b)>1?a:0:c})(),c);if(aA({index:f,reason:e,event:a}),d&&"reset"!==b)if(-1===f)aa.current.value=al;else{let a=Z(aw[f]);aa.current.value=a,0===a.toLowerCase().indexOf(al.toLowerCase())&&al.length>0&&aa.current.setSelectionRange(al.length,a.length)}}),aC=f.useCallback(()=>{if(!av)return;let a=(()=>{var a,b;if(-1!==ah.current&&ax.filteredOptions&&ax.filteredOptions.length!==aw.length&&ax.inputValue===al&&(M?aj.length===ax.value.length&&ax.value.every((a,b)=>Z(aj[b])===Z(a)):(a=ax.value,b=aj,(a?Z(a):"")===(b?Z(b):"")))){let a=ax.filteredOptions[ah.current];if(a)return aw.findIndex(b=>Z(b)===Z(a))}return -1})();if(-1!==a){ah.current=a;return}let b=M?aj[0]:aj;if(0===aw.length||null==b)return void aB({diff:"reset"});if(ab.current){if(null!=b){let a=aw[ah.current];if(M&&a&&-1!==aj.findIndex(b=>L(a,b)))return;let c=aw.findIndex(a=>L(a,b));-1===c?aB({diff:"reset"}):aA({index:c});return}if(ah.current>=aw.length-1)return void aA({index:aw.length-1});aA({index:ah.current})}},[aw.length,!M&&aj,B,aB,aA,av,al,M]),aD=(0,m.A)(a=>{(0,n.A)(ab,a),a&&aC()});f.useEffect(()=>{aC()},[aC]);let aE=a=>{!aq&&(ar(!0),at(!0),R&&R(a))},aF=(a,b)=>{aq&&(ar(!1),O&&O(a,b))},aG=(a,b,c,d)=>{if(M){if(aj.length===b.length&&aj.every((a,c)=>a===b[c]))return}else if(aj===b)return;N&&N(a,b,c,d),ak(b)},aH=f.useRef(!1),aI=(a,b,c="selectOption",d="options")=>{let e=c,f=b;if(M){let a=(f=Array.isArray(aj)?aj.slice():[]).findIndex(a=>L(b,a));-1===a?f.push(b):"freeSolo"!==d&&(f.splice(a,1),e="removeOption")}ap(a,f,e),aG(a,f,e,{option:b}),w||a&&(a.ctrlKey||a.metaKey)||aF(a,e),(!0===h||"touch"===h&&aH.current||"mouse"===h&&!aH.current)&&aa.current.blur()},aJ=(a,b)=>{if(!M)return;""===al&&aF(a,"toggleInput");let c=ae;-1===ae?""===al&&"previous"===b&&(c=aj.length-1):((c+="next"===b?1:-1)<0&&(c=0),c===aj.length&&(c=-1)),af(c=function(a,b){if(-1===a)return -1;let c=a;for(;;){if("next"===b&&c===aj.length||"previous"===b&&-1===c)return -1;let a=ac.querySelector(`[data-tag-index="${c}"]`);if(a&&a.hasAttribute("tabindex")&&!a.disabled&&"true"!==a.getAttribute("aria-disabled"))return c;c+="next"===b?1:-1}}(c,b)),az(c)},aK=a=>{$.current=!0,am(""),Q&&Q(a,"","clear"),aG(a,M?[]:null,"clear")},aL=a=>{ao(!0),T&&!$.current&&aE(a)},aM=a=>{if(b(ab))return void aa.current.focus();ao(!1),_.current=!0,$.current=!1,g&&-1!==ah.current&&av?aI(a,aw[ah.current],"blur"):g&&C&&""!==al?aI(a,al,"blur","freeSolo"):i&&ap(a,aj,"blur"),aF(a,"blur")},aN=a=>{let b=a.target.value;al!==b&&(am(b),at(!1),Q&&Q(a,b,"input")),""===b?v||M||aG(a,null,"clear"):aE(a)},aO=a=>{let b=Number(a.currentTarget.getAttribute("data-option-index"));ah.current!==b&&aA({event:a,index:b,reason:"mouse"})},aP=a=>{aA({event:a,index:Number(a.currentTarget.getAttribute("data-option-index")),reason:"touch"}),aH.current=!0},aQ=a=>{let b=Number(a.currentTarget.getAttribute("data-option-index"));aI(a,aw[b],"selectOption"),aH.current=!1},aR=a=>{aq?aF(a,"toggleInput"):aE(a)},aS=a=>{a.currentTarget.contains(a.target)&&a.target.getAttribute("id")!==Y&&a.preventDefault()},aT=a=>{a.currentTarget.contains(a.target)&&(aa.current.focus(),W&&_.current&&aa.current.selectionEnd-aa.current.selectionStart==0&&aa.current.select(),_.current=!1)},aU=a=>{x||""!==al&&aq||aR(a)},aV=C&&al.length>0;aV=aV||(M?aj.length>0:null!==aj);let aW=aw;return G&&(aW=aw.reduce((a,b,c)=>{let d=G(b);return a.length>0&&a[a.length-1].group===d?a[a.length-1].options.push(b):a.push({key:c,index:c,group:d,options:[b]}),a},[])),x&&an&&aM(),{getRootProps:(a={})=>({...a,onKeyDown:b=>{if(a.onKeyDown&&a.onKeyDown(b),!b.defaultMuiPrevented&&(-1===ae||["ArrowLeft","ArrowRight"].includes(b.key)||(af(-1),az(-1)),229!==b.which))switch(b.key){case"Home":av&&H&&(b.preventDefault(),aB({diff:"start",direction:"next",reason:"keyboard",event:b}));break;case"End":av&&H&&(b.preventDefault(),aB({diff:"end",direction:"previous",reason:"keyboard",event:b}));break;case"PageUp":b.preventDefault(),aB({diff:-5,direction:"previous",reason:"keyboard",event:b}),aE(b);break;case"PageDown":b.preventDefault(),aB({diff:5,direction:"next",reason:"keyboard",event:b}),aE(b);break;case"ArrowDown":b.preventDefault(),aB({diff:1,direction:"next",reason:"keyboard",event:b}),aE(b);break;case"ArrowUp":b.preventDefault(),aB({diff:-1,direction:"previous",reason:"keyboard",event:b}),aE(b);break;case"ArrowLeft":aJ(b,"previous");break;case"ArrowRight":aJ(b,"next");break;case"Enter":if(-1!==ah.current&&av){let a=aw[ah.current],c=!!D&&D(a);if(b.preventDefault(),c)return;aI(b,a,"selectOption"),d&&aa.current.setSelectionRange(aa.current.value.length,aa.current.value.length)}else C&&""!==al&&!1===au&&(M&&b.preventDefault(),aI(b,al,"createOption","freeSolo"));break;case"Escape":av?(b.preventDefault(),b.stopPropagation(),aF(b,"escape")):o&&(""!==al||M&&aj.length>0)&&(b.preventDefault(),b.stopPropagation(),aK(b));break;case"Backspace":if(M&&!V&&""===al&&aj.length>0){let a=-1===ae?aj.length-1:ae,c=aj.slice();c.splice(a,1),aG(b,c,"removeOption",{option:aj[a]})}break;case"Delete":if(M&&!V&&""===al&&aj.length>0&&-1!==ae){let a=aj.slice();a.splice(ae,1),aG(b,a,"removeOption",{option:aj[ae]})}}},onMouseDown:aS,onClick:aT}),getInputLabelProps:()=>({id:`${Y}-label`,htmlFor:Y}),getInputProps:()=>({id:Y,value:al,onBlur:aM,onFocus:aL,onChange:aN,onMouseDown:aU,"aria-activedescendant":av?"":null,"aria-autocomplete":d?"both":"list","aria-controls":ay?`${Y}-listbox`:void 0,"aria-expanded":ay,autoComplete:"off",ref:aa,autoCapitalize:"none",spellCheck:"false",role:"combobox",disabled:x}),getClearProps:()=>({tabIndex:-1,type:"button",onClick:aK}),getPopupIndicatorProps:()=>({tabIndex:-1,type:"button",onClick:aR}),getTagProps:({index:a})=>({key:a,"data-tag-index":a,tabIndex:-1,...!V&&{onDelete:b=>{let c=aj.slice();c.splice(a,1),aG(b,c,"removeOption",{option:aj[a]})}}}),getListboxProps:()=>({role:"listbox",id:`${Y}-listbox`,"aria-labelledby":`${Y}-label`,ref:aD,onMouseDown:a=>{a.preventDefault()}}),getOptionProps:({index:a,option:b})=>{let c=(M?aj:[aj]).some(a=>null!=a&&L(b,a)),d=!!D&&D(b);return{key:E?.(b)??Z(b),tabIndex:-1,role:"option",id:`${Y}-option-${a}`,onMouseMove:aO,onClick:aQ,onTouchStart:aP,"data-option-index":a,"aria-disabled":d,"aria-selected":c}},id:Y,inputValue:al,value:aj,dirty:aV,expanded:av&&ac,popupOpen:av,focused:an||-1!==ae,anchorEl:ac,setAnchorEl:ad,focusedTag:ae,groupedOptions:aW}};var u=c(31605),v=c(18168),w=c(68333),x=c(6636),y=c(6638),z=c(29565),A=c(33105);function B(a){return(0,A.Ay)("MuiListSubheader",a)}(0,z.A)("MuiListSubheader",["root","colorPrimary","colorInherit","gutters","inset","sticky"]);var C=c(21124);let D=(0,v.Ay)("li",{name:"MuiListSubheader",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,"default"!==c.color&&b[`color${(0,y.A)(c.color)}`],!c.disableGutters&&b.gutters,c.inset&&b.inset,!c.disableSticky&&b.sticky]}})((0,w.A)(({theme:a})=>({boxSizing:"border-box",lineHeight:"48px",listStyle:"none",color:(a.vars||a).palette.text.secondary,fontFamily:a.typography.fontFamily,fontWeight:a.typography.fontWeightMedium,fontSize:a.typography.pxToRem(14),variants:[{props:{color:"primary"},style:{color:(a.vars||a).palette.primary.main}},{props:{color:"inherit"},style:{color:"inherit"}},{props:({ownerState:a})=>!a.disableGutters,style:{paddingLeft:16,paddingRight:16}},{props:({ownerState:a})=>a.inset,style:{paddingLeft:72}},{props:({ownerState:a})=>!a.disableSticky,style:{position:"sticky",top:0,zIndex:1,backgroundColor:(a.vars||a).palette.background.paper}}]}))),E=f.forwardRef(function(a,b){let c=(0,x.b)({props:a,name:"MuiListSubheader"}),{className:d,color:e="default",component:f="li",disableGutters:i=!1,disableSticky:j=!1,inset:k=!1,...l}=c,m={...c,color:e,component:f,disableGutters:i,disableSticky:j,inset:k},n=(a=>{let{classes:b,color:c,disableGutters:d,inset:e,disableSticky:f}=a,g={root:["root","default"!==c&&`color${(0,y.A)(c)}`,!d&&"gutters",e&&"inset",!f&&"sticky"]};return(0,h.A)(g,B,b)})(m);return(0,C.jsx)(D,{as:f,className:(0,g.A)(n.root,d),ref:b,ownerState:m,...l})});E&&(E.muiSkipListHighlight=!0);var F=c(54573),G=c(44079),H=c(41893),I=c(88679),J=c(13763),K=c(91003),L=c(37659),M=c(88570),N=c(41606);function O(a){return(0,A.Ay)("MuiAutocomplete",a)}let P=(0,z.A)("MuiAutocomplete",["root","expanded","fullWidth","focused","focusVisible","tag","tagSizeSmall","tagSizeMedium","hasPopupIcon","hasClearIcon","inputRoot","input","inputFocused","endAdornment","clearIndicator","popupIndicator","popupIndicatorOpen","popper","popperDisablePortal","paper","listbox","loading","noOptions","option","groupLabel","groupUl"]);var Q=c(20385);let R=(0,v.Ay)("div",{name:"MuiAutocomplete",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a,{fullWidth:d,hasClearIcon:e,hasPopupIcon:f,inputFocused:g,size:h}=c;return[{[`& .${P.tag}`]:b.tag},{[`& .${P.tag}`]:b[`tagSize${(0,y.A)(h)}`]},{[`& .${P.inputRoot}`]:b.inputRoot},{[`& .${P.input}`]:b.input},{[`& .${P.input}`]:g&&b.inputFocused},b.root,d&&b.fullWidth,f&&b.hasPopupIcon,e&&b.hasClearIcon]}})({[`&.${P.focused} .${P.clearIndicator}`]:{visibility:"visible"},"@media (pointer: fine)":{[`&:hover .${P.clearIndicator}`]:{visibility:"visible"}},[`& .${P.tag}`]:{margin:3,maxWidth:"calc(100% - 6px)"},[`& .${P.inputRoot}`]:{[`.${P.hasPopupIcon}&, .${P.hasClearIcon}&`]:{paddingRight:30},[`.${P.hasPopupIcon}.${P.hasClearIcon}&`]:{paddingRight:56},[`& .${P.input}`]:{width:0,minWidth:30}},[`& .${I.A.root}`]:{paddingBottom:1,"& .MuiInput-input":{padding:"4px 4px 4px 0px"}},[`& .${I.A.root}.${J.A.sizeSmall}`]:{[`& .${I.A.input}`]:{padding:"2px 4px 3px 0"}},[`& .${K.A.root}`]:{padding:9,[`.${P.hasPopupIcon}&, .${P.hasClearIcon}&`]:{paddingRight:39},[`.${P.hasPopupIcon}.${P.hasClearIcon}&`]:{paddingRight:65},[`& .${P.input}`]:{padding:"7.5px 4px 7.5px 5px"},[`& .${P.endAdornment}`]:{right:9}},[`& .${K.A.root}.${J.A.sizeSmall}`]:{paddingTop:6,paddingBottom:6,paddingLeft:6,[`& .${P.input}`]:{padding:"2.5px 4px 2.5px 8px"}},[`& .${L.A.root}`]:{paddingTop:19,paddingLeft:8,[`.${P.hasPopupIcon}&, .${P.hasClearIcon}&`]:{paddingRight:39},[`.${P.hasPopupIcon}.${P.hasClearIcon}&`]:{paddingRight:65},[`& .${L.A.input}`]:{padding:"7px 4px"},[`& .${P.endAdornment}`]:{right:9}},[`& .${L.A.root}.${J.A.sizeSmall}`]:{paddingBottom:1,[`& .${L.A.input}`]:{padding:"2.5px 4px"}},[`& .${J.A.hiddenLabel}`]:{paddingTop:8},[`& .${L.A.root}.${J.A.hiddenLabel}`]:{paddingTop:0,paddingBottom:0,[`& .${P.input}`]:{paddingTop:16,paddingBottom:17}},[`& .${L.A.root}.${J.A.hiddenLabel}.${J.A.sizeSmall}`]:{[`& .${P.input}`]:{paddingTop:8,paddingBottom:9}},[`& .${P.input}`]:{flexGrow:1,textOverflow:"ellipsis",opacity:0},variants:[{props:{fullWidth:!0},style:{width:"100%"}},{props:{size:"small"},style:{[`& .${P.tag}`]:{margin:2,maxWidth:"calc(100% - 4px)"}}},{props:{inputFocused:!0},style:{[`& .${P.input}`]:{opacity:1}}},{props:{multiple:!0},style:{[`& .${P.inputRoot}`]:{flexWrap:"wrap"}}}]}),S=(0,v.Ay)("div",{name:"MuiAutocomplete",slot:"EndAdornment",overridesResolver:(a,b)=>b.endAdornment})({position:"absolute",right:0,top:"50%",transform:"translate(0, -50%)"}),T=(0,v.Ay)(G.A,{name:"MuiAutocomplete",slot:"ClearIndicator",overridesResolver:(a,b)=>b.clearIndicator})({marginRight:-2,padding:4,visibility:"hidden"}),U=(0,v.Ay)(G.A,{name:"MuiAutocomplete",slot:"PopupIndicator",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.popupIndicator,c.popupOpen&&b.popupIndicatorOpen]}})({padding:2,marginRight:-2,variants:[{props:{popupOpen:!0},style:{transform:"rotate(180deg)"}}]}),V=(0,v.Ay)(u.A,{name:"MuiAutocomplete",slot:"Popper",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[{[`& .${P.option}`]:b.option},b.popper,c.disablePortal&&b.popperDisablePortal]}})((0,w.A)(({theme:a})=>({zIndex:(a.vars||a).zIndex.modal,variants:[{props:{disablePortal:!0},style:{position:"absolute"}}]}))),W=(0,v.Ay)(F.A,{name:"MuiAutocomplete",slot:"Paper",overridesResolver:(a,b)=>b.paper})((0,w.A)(({theme:a})=>({...a.typography.body1,overflow:"auto"}))),X=(0,v.Ay)("div",{name:"MuiAutocomplete",slot:"Loading",overridesResolver:(a,b)=>b.loading})((0,w.A)(({theme:a})=>({color:(a.vars||a).palette.text.secondary,padding:"14px 16px"}))),Y=(0,v.Ay)("div",{name:"MuiAutocomplete",slot:"NoOptions",overridesResolver:(a,b)=>b.noOptions})((0,w.A)(({theme:a})=>({color:(a.vars||a).palette.text.secondary,padding:"14px 16px"}))),Z=(0,v.Ay)("ul",{name:"MuiAutocomplete",slot:"Listbox",overridesResolver:(a,b)=>b.listbox})((0,w.A)(({theme:a})=>({listStyle:"none",margin:0,padding:"8px 0",maxHeight:"40vh",overflow:"auto",position:"relative",[`& .${P.option}`]:{minHeight:48,display:"flex",overflow:"hidden",justifyContent:"flex-start",alignItems:"center",cursor:"pointer",paddingTop:6,boxSizing:"border-box",outline:"0",WebkitTapHighlightColor:"transparent",paddingBottom:6,paddingLeft:16,paddingRight:16,[a.breakpoints.up("sm")]:{minHeight:"auto"},[`&.${P.focused}`]:{backgroundColor:(a.vars||a).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},'&[aria-disabled="true"]':{opacity:(a.vars||a).palette.action.disabledOpacity,pointerEvents:"none"},[`&.${P.focusVisible}`]:{backgroundColor:(a.vars||a).palette.action.focus},'&[aria-selected="true"]':{backgroundColor:a.vars?`rgba(${a.vars.palette.primary.mainChannel} / ${a.vars.palette.action.selectedOpacity})`:(0,i.X4)(a.palette.primary.main,a.palette.action.selectedOpacity),[`&.${P.focused}`]:{backgroundColor:a.vars?`rgba(${a.vars.palette.primary.mainChannel} / calc(${a.vars.palette.action.selectedOpacity} + ${a.vars.palette.action.hoverOpacity}))`:(0,i.X4)(a.palette.primary.main,a.palette.action.selectedOpacity+a.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:(a.vars||a).palette.action.selected}},[`&.${P.focusVisible}`]:{backgroundColor:a.vars?`rgba(${a.vars.palette.primary.mainChannel} / calc(${a.vars.palette.action.selectedOpacity} + ${a.vars.palette.action.focusOpacity}))`:(0,i.X4)(a.palette.primary.main,a.palette.action.selectedOpacity+a.palette.action.focusOpacity)}}}}))),$=(0,v.Ay)(E,{name:"MuiAutocomplete",slot:"GroupLabel",overridesResolver:(a,b)=>b.groupLabel})((0,w.A)(({theme:a})=>({backgroundColor:(a.vars||a).palette.background.paper,top:-8}))),_=(0,v.Ay)("ul",{name:"MuiAutocomplete",slot:"GroupUl",overridesResolver:(a,b)=>b.groupUl})({padding:0,[`& .${P.option}`]:{paddingLeft:24}}),aa=f.forwardRef(function(a,b){let c,i=(0,x.b)({props:a,name:"MuiAutocomplete"}),{autoComplete:j=!1,autoHighlight:k=!1,autoSelect:l=!1,blurOnSelect:m=!1,ChipProps:n,className:o,clearIcon:p=d||(d=(0,C.jsx)(M.A,{fontSize:"small"})),clearOnBlur:q=!i.freeSolo,clearOnEscape:r=!1,clearText:s="Clear",closeText:v="Close",componentsProps:w,defaultValue:z=i.multiple?[]:null,disableClearable:A=!1,disableCloseOnSelect:B=!1,disabled:D=!1,disabledItemsFocusable:E=!1,disableListWrap:G=!1,disablePortal:I=!1,filterOptions:J,filterSelectedOptions:K=!1,forcePopupIcon:L="auto",freeSolo:P=!1,fullWidth:aa=!1,getLimitTagsText:ab=a=>`+${a}`,getOptionDisabled:ac,getOptionKey:ad,getOptionLabel:ae,isOptionEqualToValue:af,groupBy:ag,handleHomeEndKeys:ah=!i.freeSolo,id:ai,includeInputInList:aj=!1,inputValue:ak,limitTags:al=-1,ListboxComponent:am,ListboxProps:an,loading:ao=!1,loadingText:ap="Loading…",multiple:aq=!1,noOptionsText:ar="No options",onChange:as,onClose:at,onHighlightChange:au,onInputChange:av,onOpen:aw,open:ax,openOnFocus:ay=!1,openText:az="Open",options:aA,PaperComponent:aB,PopperComponent:aC,popupIcon:aD=e||(e=(0,C.jsx)(N.A,{})),readOnly:aE=!1,renderGroup:aF,renderInput:aG,renderOption:aH,renderTags:aI,selectOnFocus:aJ=!i.freeSolo,size:aK="medium",slots:aL={},slotProps:aM={},value:aN,...aO}=i,{getRootProps:aP,getInputProps:aQ,getInputLabelProps:aR,getPopupIndicatorProps:aS,getClearProps:aT,getTagProps:aU,getListboxProps:aV,getOptionProps:aW,value:aX,dirty:aY,expanded:aZ,id:a$,popupOpen:a_,focused:a0,focusedTag:a1,anchorEl:a2,setAnchorEl:a3,inputValue:a4,groupedOptions:a5}=t({...i,componentName:"Autocomplete"}),a6=!A&&!D&&aY&&!aE,a7=(!P||!0===L)&&!1!==L,{onMouseDown:a8}=aQ(),{ref:a9,...ba}=aV(),bb=ae||(a=>a.label??a),bc={...i,disablePortal:I,expanded:aZ,focused:a0,fullWidth:aa,getOptionLabel:bb,hasClearIcon:a6,hasPopupIcon:a7,inputFocused:-1===a1,popupOpen:a_,size:aK},bd=(a=>{let{classes:b,disablePortal:c,expanded:d,focused:e,fullWidth:f,hasClearIcon:g,hasPopupIcon:i,inputFocused:j,popupOpen:k,size:l}=a,m={root:["root",d&&"expanded",e&&"focused",f&&"fullWidth",g&&"hasClearIcon",i&&"hasPopupIcon"],inputRoot:["inputRoot"],input:["input",j&&"inputFocused"],tag:["tag",`tagSize${(0,y.A)(l)}`],endAdornment:["endAdornment"],clearIndicator:["clearIndicator"],popupIndicator:["popupIndicator",k&&"popupIndicatorOpen"],popper:["popper",c&&"popperDisablePortal"],paper:["paper"],listbox:["listbox"],loading:["loading"],noOptions:["noOptions"],option:["option"],groupLabel:["groupLabel"],groupUl:["groupUl"]};return(0,h.A)(m,O,b)})(bc),be={slots:{paper:aB,popper:aC,...aL},slotProps:{chip:n,listbox:an,...w,...aM}},[bf,bg]=(0,Q.A)("listbox",{elementType:Z,externalForwardedProps:be,ownerState:bc,className:bd.listbox,additionalProps:ba,ref:a9}),[bh,bi]=(0,Q.A)("paper",{elementType:F.A,externalForwardedProps:be,ownerState:bc,className:bd.paper}),[bj,bk]=(0,Q.A)("popper",{elementType:u.A,externalForwardedProps:be,ownerState:bc,className:bd.popper,additionalProps:{disablePortal:I,style:{width:a2?a2.clientWidth:null},role:"presentation",anchorEl:a2,open:a_}});if(aq&&aX.length>0){let a=a=>({className:bd.tag,disabled:D,...aU(a)});c=aI?aI(aX,a,bc):aX.map((b,c)=>{let{key:d,...e}=a({index:c});return(0,C.jsx)(H.A,{label:bb(b),size:aK,...e,...be.slotProps.chip},d)})}if(al>-1&&Array.isArray(c)){let a=c.length-al;!a0&&a>0&&(c=c.splice(0,al)).push((0,C.jsx)("span",{className:bd.tag,children:ab(a)},c.length))}let bl=aF||(a=>(0,C.jsxs)("li",{children:[(0,C.jsx)($,{className:bd.groupLabel,ownerState:bc,component:"div",children:a.group}),(0,C.jsx)(_,{className:bd.groupUl,ownerState:bc,children:a.children})]},a.key)),bm=aH||((a,b)=>{let{key:c,...d}=a;return(0,C.jsx)("li",{...d,children:bb(b)},c)}),bn=(a,b)=>{let c=aW({option:a,index:b});return bm({...c,className:bd.option},a,{selected:c["aria-selected"],index:b,inputValue:a4},bc)},bo=be.slotProps.clearIndicator,bp=be.slotProps.popupIndicator;return(0,C.jsxs)(f.Fragment,{children:[(0,C.jsx)(R,{ref:b,className:(0,g.A)(bd.root,o),ownerState:bc,...aP(aO),children:aG({id:a$,disabled:D,fullWidth:!0,size:"small"===aK?"small":void 0,InputLabelProps:aR(),InputProps:{ref:a3,className:bd.inputRoot,startAdornment:c,onMouseDown:a=>{a.target===a.currentTarget&&a8(a)},...(a6||a7)&&{endAdornment:(0,C.jsxs)(S,{className:bd.endAdornment,ownerState:bc,children:[a6?(0,C.jsx)(T,{...aT(),"aria-label":s,title:s,ownerState:bc,...bo,className:(0,g.A)(bd.clearIndicator,bo?.className),children:p}):null,a7?(0,C.jsx)(U,{...aS(),disabled:D,"aria-label":a_?v:az,title:a_?v:az,ownerState:bc,...bp,className:(0,g.A)(bd.popupIndicator,bp?.className),children:aD}):null]})}},inputProps:{className:bd.input,disabled:D,readOnly:aE,...aQ()}})}),a2?(0,C.jsx)(V,{as:bj,...bk,children:(0,C.jsxs)(W,{as:bh,...bi,children:[ao&&0===a5.length?(0,C.jsx)(X,{className:bd.loading,ownerState:bc,children:ap}):null,0!==a5.length||P||ao?null:(0,C.jsx)(Y,{className:bd.noOptions,ownerState:bc,role:"presentation",onMouseDown:a=>{a.preventDefault()},children:ar}),a5.length>0?(0,C.jsx)(bf,{as:am,...bg,children:a5.map((a,b)=>ag?bl({key:a.key,group:a.group,children:a.options.map((b,c)=>bn(b,a.index+c))}):bn(a,b))}):null]})}):null]})})},63757:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M3 18h6v-2H3zM3 6v2h18V6zm0 7h12v-2H3z"}),"Sort")},65343:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-2h2zm0-4h-2V7h2z"}),"Error")},66335:(a,b,c)=>{c.d(b,{A:()=>e});var d=c(38301);let e=a=>{let b=d.useRef({});return d.useEffect(()=>{b.current=a}),b.current}},81310:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"m19.81 14.99 1.19-.92-1.43-1.43-1.19.92zm-.45-4.72L21 9l-9-7-2.91 2.27 7.87 7.88zM3.27 1 2 2.27l4.22 4.22L3 9l1.63 1.27L12 16l2.1-1.63 1.43 1.43L12 18.54l-7.37-5.73L3 14.07l9 7 4.95-3.85L20.73 21 22 19.73z"}),"LayersClear")}};
|