flujo-ai 3.18.0 → 3.19.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 +221 -207
- package/.next/app-path-routes-manifest.json +4 -3
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +9 -9
- package/.next/react-loadable-manifest.json +12 -12
- package/.next/server/app/_not-found/page.js +3 -3
- package/.next/server/app/_not-found/page.js.nft.json +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/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/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/compile/route.js +1 -1
- package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/generate/route.js +1 -1
- package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/improve/route.js +1 -1
- package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/prompt-renderer/route.js +2 -2
- package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/quick-chat/route.js +1 -1
- package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/repair/route.js +1 -0
- package/.next/server/app/api/flow/repair/route.js.nft.json +1 -0
- package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -0
- 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 +4 -4
- 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/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/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 -1
- package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp-registry/spotlight/route.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/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/route.js +1 -1
- package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/restore/route.js +1 -1
- package/.next/server/app/api/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/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/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/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 +5 -4
- 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 +30 -6
- package/.next/server/app/docs/page.js.nft.json +1 -1
- package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/docs.html +1 -1
- package/.next/server/app/docs.rsc +3 -3
- package/.next/server/app/executions/page.js +3 -5
- 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 +6 -6
- 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 -5
- 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 -3
- package/.next/server/app/models/page.js.nft.json +1 -1
- package/.next/server/app/models/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +3 -2
- 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 +4 -3
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +3 -3
- package/.next/server/app/v1/chat/completions/route.js +1 -1
- package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +3 -3
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/models/route.js +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-paths-manifest.json +4 -3
- package/.next/server/chunks/{2776.js → 1083.js} +2 -3
- package/.next/server/chunks/1119.js +1 -0
- package/.next/server/chunks/{7731.js → 1152.js} +2 -2
- package/.next/server/chunks/1197.js +2 -0
- package/.next/server/chunks/1373.js +1 -1
- package/.next/server/chunks/1491.js +1 -0
- package/.next/server/chunks/1746.js +1 -1
- package/.next/server/chunks/{8460.js → 1991.js} +1 -1
- package/.next/server/chunks/2194.js +1 -0
- package/.next/server/chunks/2246.js +1 -0
- package/.next/server/chunks/227.js +5 -0
- package/.next/server/chunks/2350.js +1 -1
- package/.next/server/chunks/2430.js +1 -0
- package/.next/server/chunks/264.js +1 -1
- package/.next/server/chunks/2859.js +3 -7
- package/.next/server/chunks/3310.js +19 -12
- package/.next/server/chunks/3511.js +1 -0
- package/.next/server/chunks/{6069.js → 3574.js} +2 -2
- package/.next/server/chunks/3648.js +1 -0
- package/.next/server/chunks/{8367.js → 38.js} +2 -2
- package/.next/server/chunks/3953.js +1 -0
- package/.next/server/chunks/4028.js +1 -0
- package/.next/server/chunks/4239.js +1 -0
- package/.next/server/chunks/4265.js +1 -0
- package/.next/server/chunks/4372.js +1 -0
- package/.next/server/chunks/{8227.js → 4456.js} +2 -2
- package/.next/server/chunks/4637.js +63 -0
- package/.next/server/chunks/4681.js +1 -1
- package/.next/server/chunks/4949.js +1 -0
- package/.next/server/chunks/5148.js +1 -0
- package/.next/server/chunks/5625.js +28 -0
- package/.next/server/chunks/{805.js → 5662.js} +2 -2
- package/.next/server/chunks/5708.js +57 -0
- package/.next/server/chunks/6088.js +52 -0
- package/.next/server/chunks/{9314.js → 6136.js} +3 -3
- package/.next/server/chunks/62.js +1 -0
- package/.next/server/chunks/6465.js +1 -0
- package/.next/server/chunks/6772.js +1 -0
- package/.next/server/chunks/{6201.js → 6901.js} +3 -2
- package/.next/server/chunks/701.js +1 -1
- package/.next/server/chunks/7214.js +2 -2
- package/.next/server/chunks/7362.js +3 -3
- package/.next/server/chunks/7403.js +38 -0
- package/.next/server/chunks/7506.js +1 -1
- package/.next/server/chunks/7635.js +1 -1
- package/.next/server/chunks/7821.js +1 -1
- package/.next/server/chunks/7865.js +9 -0
- package/.next/server/chunks/8739.js +1 -1
- package/.next/server/chunks/9632.js +1 -0
- package/.next/server/instrumentation.js.nft.json +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/1161-970b105d0ab11425.js +1 -0
- package/.next/static/chunks/1620-0d8ecd877f123f7b.js +1 -0
- package/.next/static/chunks/{2084-2463e1d781bad2a6.js → 1634-d4019c4a5cac2ed0.js} +1 -1
- package/.next/static/chunks/{4244-6f399c7ff9980207.js → 1711-ccf5eba61d618a1a.js} +1 -1
- package/.next/static/chunks/1871-14c3e63ca865d85e.js +1 -0
- package/.next/static/chunks/{1892-359187893bbc7f3a.js → 1892-a0f5ec7152540dc3.js} +1 -1
- package/.next/static/chunks/3217.058098140ec3f563.js +1 -0
- package/.next/static/chunks/{3272-fd8d59523f61da96.js → 3272-ab88dd195ea61b65.js} +1 -1
- package/.next/static/chunks/{3545.d3a512315a9fce3e.js → 3545.353a62a68d3b7fd1.js} +1 -1
- package/.next/static/chunks/3625-74c77250d64d1cd3.js +1 -0
- package/.next/static/chunks/3736-5e2b3f6cda1bb923.js +1 -0
- package/.next/static/chunks/3930-cc8d73c953811b97.js +1 -0
- package/.next/static/chunks/4365-5d0e3d01c1bc0fdc.js +1 -0
- package/.next/static/chunks/5134-e21bd33daaf14ecf.js +1 -0
- package/.next/static/chunks/5501-7d6e38c7c8cc3c5a.js +1 -0
- package/.next/static/chunks/5619-82fc5c3133837739.js +1 -0
- package/.next/static/chunks/6013-cb423bc438256acb.js +1 -0
- package/.next/static/chunks/6920-a83ad5c0d5a54cf3.js +1 -0
- package/.next/static/chunks/{7583.b6c2f8874b6b89cd.js → 7583.5355a64005f2b265.js} +1 -1
- package/.next/static/chunks/7687-7edf1a6e1f063b08.js +1 -0
- package/.next/static/chunks/7829-b843e80f32a83256.js +1 -0
- package/.next/static/chunks/8066-c202a83aef15143a.js +1 -0
- package/.next/static/chunks/{8187.15bf331f5318c00f.js → 8187.57929e3f925fe538.js} +1 -1
- package/.next/static/chunks/{9164-a56181e5e93cc47e.js → 9164-14dc5889cb7478c0.js} +1 -1
- package/.next/static/chunks/app/api/backup/{route-1691635994fcddb5.js → route-ff084c1cc278df77.js} +1 -1
- package/.next/static/chunks/app/api/browse/{route-1691635994fcddb5.js → route-ff084c1cc278df77.js} +1 -1
- package/.next/static/chunks/app/api/cwd/{route-1691635994fcddb5.js → route-ff084c1cc278df77.js} +1 -1
- package/.next/static/chunks/app/api/encryption/secure/{route-1691635994fcddb5.js → route-ff084c1cc278df77.js} +1 -1
- package/.next/static/chunks/app/api/env/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/flow/compile/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/flow/generate/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/flow/improve/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/flow/prompt-renderer/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/flow/quick-chat/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/flow/repair/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/flow/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/git/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/init/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/local-models/capability/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/local-models/pull/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/local-models/suggest/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/mcp/cancel/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/mcp/test-connection/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/mcp/test-connection/stream/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/spotlight/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/model/[id]/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/model/provider/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/model/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/model/test/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/oauth/callback/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/oauth/initiate/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/oauth/reset/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/run/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/restore/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/storage/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/update/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/api/webhooks/[id]/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/chat/page-1d764d1de5ad5d2f.js +1 -0
- package/.next/static/chunks/app/docs/page-d670c1ec8af5cb54.js +1 -0
- package/.next/static/chunks/app/executions/page-109274291811d467.js +1 -0
- package/.next/static/chunks/app/flows/page-df8eda0e83934fb2.js +1 -0
- package/.next/static/chunks/app/{layout-2878f13d7e253503.js → layout-64fc0ae7efe81e3c.js} +1 -1
- package/.next/static/chunks/app/mcp/page-9a612d0be5a3336d.js +1 -0
- package/.next/static/chunks/app/mcp-flows/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/mcp-proxy/[server]/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/models/{error-2b00c98abf1e02cf.js → error-5732fbb053e182c5.js} +1 -1
- package/.next/static/chunks/app/models/page-616950f93a1e0027.js +1 -0
- package/.next/static/chunks/app/{page-6e18a8cd78b2050e.js → page-77e1ba238b0ee1d0.js} +1 -1
- package/.next/static/chunks/app/settings/{page-9430dfdaff87d70c.js → page-199d0ffae9ec7263.js} +1 -1
- package/.next/static/chunks/app/v1/chat/completions/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/app/v1/models/route-ff084c1cc278df77.js +1 -0
- package/.next/static/chunks/webpack-3e8560996ac8c1e0.js +1 -0
- package/.next/static/itJEX_uJ7hJ7oF-igwwK9/_buildManifest.js +1 -0
- package/.next/trace +7 -7
- package/.next/types/app/api/flow/repair/route.ts +347 -0
- package/.next/types/routes.d.ts +2 -1
- package/.next/types/validator.ts +9 -0
- package/README.md +1 -1
- package/package.json +1 -1
- package/.next/server/chunks/1050.js +0 -1
- package/.next/server/chunks/1403.js +0 -8
- package/.next/server/chunks/1690.js +0 -1
- package/.next/server/chunks/2439.js +0 -52
- package/.next/server/chunks/2666.js +0 -1
- package/.next/server/chunks/4322.js +0 -1
- package/.next/server/chunks/453.js +0 -1
- package/.next/server/chunks/5311.js +0 -1
- package/.next/server/chunks/6037.js +0 -41
- package/.next/server/chunks/6390.js +0 -28
- package/.next/server/chunks/6760.js +0 -1
- package/.next/server/chunks/6936.js +0 -37
- package/.next/server/chunks/7186.js +0 -2
- package/.next/server/chunks/7982.js +0 -1
- package/.next/server/chunks/8298.js +0 -1
- package/.next/server/chunks/8342.js +0 -1
- package/.next/server/chunks/906.js +0 -35
- package/.next/server/chunks/9687.js +0 -1
- package/.next/server/chunks/9880.js +0 -1
- package/.next/server/chunks/9938.js +0 -1
- package/.next/server/chunks/9957.js +0 -1
- package/.next/static/Fdh7zqKv38txmpLAxepeR/_buildManifest.js +0 -1
- package/.next/static/chunks/1374-e084b3c40554288a.js +0 -1
- package/.next/static/chunks/2380-5696e0dc0469f6a5.js +0 -1
- package/.next/static/chunks/2709-29f91a54eef90221.js +0 -1
- package/.next/static/chunks/3217.1a7e24fd70294370.js +0 -1
- package/.next/static/chunks/4105-8fddb00196bf3c6d.js +0 -1
- package/.next/static/chunks/4809-423a2a4a90d02f2c.js +0 -1
- package/.next/static/chunks/6084-68908a197e957e5f.js +0 -1
- package/.next/static/chunks/6509-3380826fd7c82b4e.js +0 -1
- package/.next/static/chunks/6582-6735fdd6b42b5c35.js +0 -1
- package/.next/static/chunks/690-391bc0f482a9f67c.js +0 -1
- package/.next/static/chunks/7290-fd5bb2c94fd7f605.js +0 -1
- package/.next/static/chunks/8098-297bf477152a565b.js +0 -1
- package/.next/static/chunks/9286-6ea909e5bf70a97e.js +0 -1
- package/.next/static/chunks/9562-93cc45aef3630781.js +0 -1
- package/.next/static/chunks/9984-1ed094ea9f5b1f17.js +0 -1
- package/.next/static/chunks/app/api/env/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/flow/[id]/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/flow/compile/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/flow/generate/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/flow/improve/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/flow/prompt-renderer/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/flow/quick-chat/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/flow/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/git/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/init/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/local-models/capability/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/local-models/pull/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/local-models/suggest/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/mcp/cancel/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/mcp/test-connection/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/mcp/test-connection/stream/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/mcp-registry/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/mcp-registry/spotlight/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/model/[id]/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/model/provider/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/model/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/model/test/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/oauth/callback/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/oauth/initiate/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/oauth/reset/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/run/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/restore/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/storage/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/update/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/api/webhooks/[id]/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/chat/page-6486974f4a6c7b57.js +0 -1
- package/.next/static/chunks/app/docs/page-5da72cc6db51f238.js +0 -1
- package/.next/static/chunks/app/executions/page-fe19f6a1bd3fe05c.js +0 -1
- package/.next/static/chunks/app/flows/page-3b84093cdf2aee84.js +0 -1
- package/.next/static/chunks/app/mcp/page-355386ec2a542e42.js +0 -1
- package/.next/static/chunks/app/mcp-flows/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/mcp-proxy/[server]/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/models/page-20c80d398bf83fc5.js +0 -1
- package/.next/static/chunks/app/v1/chat/completions/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/app/v1/models/route-1691635994fcddb5.js +0 -1
- package/.next/static/chunks/webpack-4880945dd240d429.js +0 -1
- /package/.next/static/{Fdh7zqKv38txmpLAxepeR → itJEX_uJ7hJ7oF-igwwK9}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";exports.id=4637,exports.ids=[4637],exports.modules={74637:(a,b,c)=>{let d;c.d(b,{internalCallTool:()=>a7,internalToolDefinitions:()=>aO});var e=c(33873),f=c.n(e),g=c(29021),h=c(79646),i=c(18230);let j=(0,i.h)("utils/process/killProcessTree");var k=c(11659),l=c(12763),m=c(71188),n=c(67463),o=c(89850),p=c(8336),q=c(78606);function r(a,b,c,d){return"number"!=typeof a||Number.isNaN(a)?d:Math.max(b,Math.min(c,Math.floor(a)))}let s={type:"arrowclosed",width:20,height:20,color:"#1976d2"},t={stroke:"#1976d2",strokeWidth:2},u=new Set(["full-history","latest-message","isolated"]),v=new Set(["steps","final-only"]),w=new Set(["full-conversation","latest-message"]);function x(a){let b=(0,p.A$)(a);if(0===b.length)return{text:a,stripped:!1};let c="",d=0;for(let e of b)c+=a.slice(d,e.index)+e.name,d=e.index+e.fullMatch.length;return{text:c+=a.slice(d),stripped:!0}}function y(a,b){if(b.some(b=>b.id===a))return a;let c=a.toLowerCase(),d=b.find(a=>a.name.toLowerCase()===c);return d?d.id:null}var z=c(54898),A=c(99924);let B=(0,i.h)("backend/services/flow/generationContext");function C(a,b){let c=String(a).replace(/\s+/g," ").trim();return c.length<=b?c:`${c.slice(0,b).trimEnd()}…`}async function D(){let a=await l.modelService.loadModels(),b=a.map(a=>({id:a.id,name:a.name,...a.displayName?{displayName:a.displayName}:{},...a.description?{description:C(a.description,100)}:{}})),c=[],d={};try{let a=await A.mcpService.loadServerConfigs();if(Array.isArray(a))for(let b of a){if(b.disabled)continue;let a=!1;try{let c=await A.mcpService.getServerStatus(b.name);a=c?.status==="connected"}catch(a){B.debug(`getServerStatus failed for ${b.name}; listing name only`,a)}if(!a){c.push({name:b.name,connected:!1});continue}let{tools:e}=await A.mcpService.listServerTools(b.name),f=(e??[]).filter(a=>a.name).map(a=>({name:a.name,...a.description?{description:C(a.description,100)}:{}}));d[b.name]=f.map(a=>a.name),c.push({name:b.name,connected:!0,tools:f})}}catch(a){B.warn("Could not load MCP servers for the authoring context",a)}let e=[];try{e=await k.flowService.loadFlows()}catch(a){B.warn("Could not load flows for the authoring context",a)}let f={models:b,servers:c,flows:e.map(a=>({id:a.id,name:a.name,...a.description?{description:C(a.description,300)}:{},nodeCount:a.nodes?.length??0}))};return{blocks:f,compile:{models:a.map(a=>({id:a.id,name:a.name,displayName:a.displayName})),servers:c.map(a=>({name:a.name})),serverTools:d,flows:e.map(a=>({id:a.id,name:a.name}))},catalog:function(a){let b=[];for(let c of(b.push("AVAILABLE MODELS (reference by id or name):"),0===a.models.length&&b.push(" (none configured)"),a.models)){let a=c.displayName&&c.displayName!==c.name?`"${c.displayName}" (${c.name})`:c.name,d=c.description?` — ${c.description}`:"";b.push(` - id: ${c.id} — ${a}${d}`)}for(let c of(b.push("",'AVAILABLE MCP SERVERS (attach to process nodes via "servers"):'),0===a.servers.length&&b.push(" (none configured)"),a.servers)){if(!c.connected){b.push(` - ${c.name} (offline — tools unknown; may still be used)`);continue}b.push(` - ${c.name}:`);let a=(c.tools??[]).slice(0,20);for(let c of a){let a=c.description?` — ${c.description}`:"";b.push(` - ${c.name}${a}`)}let d=(c.tools?.length??0)-a.length;d>0&&b.push(` - …and ${d} more`)}for(let c of(b.push("",'EXISTING FLOWS (usable as subflow targets via "flow"):'),0===a.flows.length&&b.push(" (none)"),a.flows.slice(0,15))){let a=c.description?` — ${c.description}`:` — ${c.nodeCount} nodes`;b.push(` - "${c.name}"${a}`)}return a.flows.length>15&&b.push(` - …and ${a.flows.length-15} more`),b.join("\n")}(f),validatorServers:c.map(a=>({name:a.name,status:a.connected?"connected":"disconnected"}))}}let E=(0,i.h)("backend/services/flow/compileFlow");async function F(a,b={}){if(!a||"object"!=typeof a||Array.isArray(a))return{success:!1,error:"The spec must be a JSON object (a FlowSpec)",statusCode:400};let c=await D(),d=c.compile;if(b.updateFlowId){let a=d.flows??[];if(!a.some(a=>a.id===b.updateFlowId))return{success:!1,error:`No flow with id "${b.updateFlowId}" to update`,statusCode:404};d={...d,flows:a.filter(a=>a.id!==b.updateFlowId)}}let e=function(a,b={},c={}){let d=[],e=(a,b,c)=>d.push({severity:"error",code:a,message:b,nodeKey:c}),f=(a,b,c)=>d.push({severity:"warning",code:a,message:b,nodeKey:c}),g=b.models??[],h=new Set((b.servers??[]).map(a=>a.name)),i=b.serverTools??{},j=r(c.maxDepth,0,3,3),k=r(c.maxFlows,1,8,8),l=[],m=[...(b.flows??[]).map(a=>a.name)],n=[],p=0;var z=function a(d,z,A){let B=Array.isArray(d?.nodes)?d.nodes:[],C=Array.isArray(d?.edges)?d.edges:[],E=function(a,b){let c=(a??"").trim().replace(/[^\w-]+/g,"_").replace(/^_+|_+$/g,"");c||(c="generated_flow");let d=new Set(b.map(a=>a.toLowerCase()));if(!d.has(c.toLowerCase()))return c;for(let a=2;;a++){let b=`${c}_${a}`;if(!d.has(b.toLowerCase()))return b}}(d?.name,m);m.push(E),p++;let F=(0,o.A)(),G=[...A,E],H=new Map,I=[],J=[];for(let c of B){let d=c?.key;if(!d||"string"!=typeof d){e("node-missing-key",'A node is missing its "key" — every node needs a unique key.');continue}if(H.has(d)){e("node-duplicate-key",`Duplicate node key "${d}" — keys must be unique; the later node was dropped.`,d);continue}let l=c.type;if("mcp"===l){e("mcp-node-not-allowed",`Node "${d}": do not emit "mcp" nodes — attach servers to a process node via its "servers" list instead.`,d);continue}if("start"!==l&&"process"!==l&&"finish"!==l&&"subflow"!==l){e("unknown-node-type",`Node "${d}" has unknown type "${String(l)}".`,d);continue}let m={},q="string"==typeof c.prompt?c.prompt:void 0;if("start"===l){let{text:a,stripped:b}=x(q??"");b&&f("pill-stripped",`Node "${d}": binding pills are not supported in generated prompts and were replaced with plain names.`,d),m.promptTemplate=a}else if("process"===l){let{text:a,stripped:b}=x(q??"");if(b&&f("pill-stripped",`Node "${d}": binding pills are not supported in generated prompts and were replaced with plain names.`,d),m.promptTemplate=a,c.model){let a=function(a,b){if(b.some(b=>b.id===a))return a;let c=a.toLowerCase(),d=b.find(a=>a.displayName?.toLowerCase()===c);if(d)return d.id;let e=b.find(a=>a.name?.toLowerCase()===c);return e?e.id:null}(c.model,g);a?m.boundModel=a:(m.boundModel=c.model,f("model-unresolved",`Node "${d}": model "${c.model}" does not match any configured model (by id, display name, or name).`,d))}void 0!==c.inputMode&&(u.has(c.inputMode)?(m.inputMode=c.inputMode,"isolated"===c.inputMode&&"string"==typeof c.isolatedPrompt&&(m.isolatedPrompt=c.isolatedPrompt)):f("invalid-input-mode",`Node "${d}": inputMode "${String(c.inputMode)}" is not valid (full-history | latest-message | isolated); omitted.`,d)),void 0!==c.outputMode&&(w.has(c.outputMode)?m.outputMode=c.outputMode:f("invalid-output-mode",`Node "${d}": outputMode "${String(c.outputMode)}" is not valid on a process node (full-conversation | latest-message); omitted.`,d)),void 0!==c.maxTurns&&("number"!=typeof c.maxTurns||Number.isNaN(c.maxTurns)?f("invalid-max-turns",`Node "${d}": maxTurns "${String(c.maxTurns)}" is not a number; omitted.`,d):m.maxTurns=r(c.maxTurns,1,1e3,1)),"boolean"==typeof c.excludeModelPrompt&&(m.excludeModelPrompt=c.excludeModelPrompt),"boolean"==typeof c.excludeStartNodePrompt&&(m.excludeStartNodePrompt=c.excludeStartNodePrompt),"boolean"==typeof c.excludeSystemPrompt&&(m.excludeSystemPrompt=c.excludeSystemPrompt),Array.isArray(c.allowedTools)&&(m.allowedTools=c.allowedTools.filter(a=>"string"==typeof a&&a)),"string"==typeof c.captureVariable&&c.captureVariable.trim()&&(m.captureVariable=c.captureVariable.trim())}else if("subflow"===l){if(function(c,d,g,h,i){let l=Array.isArray(c.parallelFlows)&&c.parallelFlows.length>0,m=Array.isArray(c.parallelSubflowSpecs)&&c.parallelSubflowSpecs.length>0;if([void 0!==c.flow&&null!==c.flow?"flow":null,void 0!==c.subflowSpec&&null!==c.subflowSpec?"subflowSpec":null,l?"parallelFlows":null,m?"parallelSubflowSpecs":null,void 0!==c.generateSubflow&&null!==c.generateSubflow?"generateSubflow":null].filter(Boolean).length>1&&f("subflow-multiple-sources",`Node "${d}": a subflow node should have only one target source ("flow", "subflowSpec", "parallelFlows", "parallelSubflowSpecs", or "generateSubflow"); applying precedence flow > subflowSpec > parallelFlows > parallelSubflowSpecs > generateSubflow.`,d),!0===c.mapOverList){let a=void 0!==c.flow&&null!==c.flow||void 0!==c.subflowSpec&&null!==c.subflowSpec;(l||m)&&e("subflow-map-and-parallel",`Node "${d}": "mapOverList" runs a SINGLE child once per item and cannot be combined with "parallelFlows"/"parallelSubflowSpecs".`,d),a?(i.mapOverList=!0,void 0!==c.itemSplit&&("json-array"===c.itemSplit||"lines"===c.itemSplit?i.itemSplit=c.itemSplit:f("invalid-item-split",`Node "${d}": itemSplit "${String(c.itemSplit)}" is not valid (json-array | lines); using json-array.`,d)),!0===c.sequential&&(i.sequential=!0),D(c,i)):e("subflow-map-no-child",`Node "${d}": "mapOverList" needs a single child ("flow" or "subflowSpec") to run once per item.`,d)}if(c.flow){if(h.some(a=>a.toLowerCase()===c.flow.toLowerCase()))return e("subflow-cycle",`Node "${d}": flow "${c.flow}" refers to an ancestor flow, which would create a cycle.`,d);let a=y(c.flow,[...b.flows??[],...n]);return a?i.subflowId=a:e("subflow-unresolved",`Node "${d}": flow "${c.flow}" does not match any existing flow (by id or name).`,d)}if(c.subflowSpec){if(g+1>j)return e("subflow-too-deep",`Node "${d}": nested subflows may not go deeper than ${j} level(s); this inline subflow was not compiled.`,d);if(p>=k)return e("subflow-too-many",`Node "${d}": compiling this inline subflow would exceed the maximum of ${k} flows in one bundle; it was not compiled.`,d);let b=a(c.subflowSpec,g+1,h);return b?i.subflowId=b.id:e("subflow-child-empty",`Node "${d}": the inline "subflowSpec" produced no usable flow.`,d)}if(l){let a=[];for(let f of c.parallelFlows){if("string"!=typeof f||!f){e("parallel-flow-invalid",`Node "${d}": a "parallelFlows" entry is missing or not a string.`,d);continue}if(h.some(a=>a.toLowerCase()===f.toLowerCase())){e("subflow-cycle",`Node "${d}": parallel flow "${f}" refers to an ancestor flow, which would create a cycle.`,d);continue}let c=y(f,[...b.flows??[],...n]);c?a.includes(c)||a.push(c):e("parallel-flow-unresolved",`Node "${d}": parallel flow "${f}" does not match any existing flow (by id or name).`,d)}a.length>0?(i.parallelSubflowIds=a,D(c,i)):e("parallel-empty",`Node "${d}": "parallelFlows" resolved to no runnable lanes.`,d);return}if(m){let b=[];for(let f of c.parallelSubflowSpecs){if(!f||"object"!=typeof f){e("parallel-spec-invalid",`Node "${d}": a "parallelSubflowSpecs" entry is not a FlowSpec object.`,d);continue}if(g+1>j){e("subflow-too-deep",`Node "${d}": nested subflows may not go deeper than ${j} level(s); a parallel inline subflow was not compiled.`,d);continue}if(p>=k){e("subflow-too-many",`Node "${d}": compiling a parallel inline subflow would exceed the maximum of ${k} flows in one bundle; it was not compiled.`,d);continue}let c=a(f,g+1,h);c?b.push(c.id):e("subflow-child-empty",`Node "${d}": a "parallelSubflowSpecs" entry produced no usable flow.`,d)}b.length>0?(i.parallelSubflowIds=b,D(c,i)):e("parallel-empty",`Node "${d}": "parallelSubflowSpecs" produced no runnable lanes.`,d);return}if(void 0!==c.generateSubflow&&null!==c.generateSubflow)return e("subflow-generate-unsupported",`Node "${d}": "generateSubflow" is only available through the AI flow generator. Use "subflowSpec" for deterministic nested authoring, or "flow" to reference an existing flow.`,d);e("subflow-missing-flow",`Node "${d}": subflow nodes need a "flow" (existing flow), a "subflowSpec" (inline child), "parallelFlows"/"parallelSubflowSpecs" (concurrent children), or "generateSubflow".`,d)}(c,d,z,G,m),void 0!==c.inputMode&&(u.has(c.inputMode)?m.inputMode=c.inputMode:f("invalid-input-mode",`Node "${d}": inputMode "${String(c.inputMode)}" is not valid (full-history | latest-message | isolated); omitted.`,d)),void 0!==c.outputMode&&(v.has(c.outputMode)?m.outputMode=c.outputMode:f("invalid-output-mode",`Node "${d}": outputMode "${String(c.outputMode)}" is not valid (steps | final-only); omitted.`,d)),void 0!==q){let{text:a,stripped:b}=x(q);b&&f("pill-stripped",`Node "${d}": binding pills are not supported in generated prompts and were replaced with plain names.`,d),m.promptTemplate=a}"boolean"==typeof c.allowCallerPrompt&&(m.allowCallerPrompt=c.allowCallerPrompt),"string"==typeof c.captureVariable&&c.captureVariable.trim()&&(m.captureVariable=c.captureVariable.trim())}let s={id:(0,o.A)(),type:l,position:{x:0,y:0},data:{label:c.label||`${l.charAt(0).toUpperCase()}${l.slice(1)} Node`,type:l,...c.description?{description:c.description}:{},properties:m}};if(H.set(d,s),I.push(s),"process"===l&&Array.isArray(c.servers)){let a=new Set;for(let b of c.servers){let c,e=b?.name;if(!e||"string"!=typeof e){f("server-missing-name",`Node "${d}": a server reference is missing its "name"; skipped.`,d);continue}if(a.has(e))continue;a.add(e),h.has(e)||f("server-unknown",`Node "${d}": MCP server "${e}" is not configured in FLUJO.`,d);let g=i[e];if(Array.isArray(b.tools)){if(c=b.tools.filter(a=>"string"==typeof a&&a),g){let a=c.filter(a=>!g.includes(a));a.length>0&&f("tool-unknown",`Node "${d}": server "${e}" does not report tool(s): ${a.join(", ")}.`,d)}}else c=g?[...g]:[];let j={id:(0,o.A)(),type:"mcp",position:{x:0,y:0},data:{label:e,type:"mcp",properties:{boundServer:e,enabledTools:c}}};I.push(j),J.push({processKey:d,mcpNode:j})}}else"process"!==l&&Array.isArray(c.servers)&&c.servers.length>0&&f("servers-on-non-process",`Node "${d}": only process nodes can have "servers"; ignored.`,d)}if(0===H.size)return e("no-usable-nodes","No usable nodes — the spec must contain at least a start node and one step."),null;let K=[],L=new Set;for(let a of C){let b,c=a?.from,d=a?.to,g=c?H.get(c):void 0,h=d?H.get(d):void 0;if(!g||!h){e("edge-unknown-node",`Edge "${String(c)}" -> "${String(d)}" references a node key that does not exist (or was dropped).`);continue}if(g===h){e("edge-self-loop",`Edge "${c}" -> "${d}": a node cannot connect to itself.`);continue}if("start"===h.type){e("edge-into-start",`Edge "${c}" -> "${d}": nothing may connect INTO a start node.`);continue}if("finish"===g.type){e("edge-out-of-finish",`Edge "${c}" -> "${d}": nothing may connect OUT OF a finish node.`);continue}let i=`${c}->${d}`;if(L.has(i)){f("edge-duplicate",`Edge "${c}" -> "${d}" appears more than once; kept the first.`);continue}L.add(i);let j=!0===a.bidirectional;j&&("start"===g.type||"finish"===h.type)&&(f("bidirectional-illegal",`Edge "${c}" -> "${d}" cannot be bidirectional; downgraded to one-way.`),j=!1);let k=a.condition;k&&"object"==typeof k&&("process"!==g.type?f("edge-condition-non-process",`Edge "${c}" -> "${d}" has a condition but leaves a ${g.type} node; conditions only route from process nodes and were dropped.`):(0,q.C)(k.kind)?"string"!=typeof k.value||0===k.value.length?f("edge-condition-value",`Edge "${c}" -> "${d}" has a condition with no "value"; the condition was dropped.`):("regex"!==k.kind||(0,q.wM)(k.value)||f("edge-condition-regex",`Edge "${c}" -> "${d}" has a regex condition that does not compile; it is kept but will never match at runtime.`),b={kind:k.kind,value:k.value,..."last-message"===k.target?{target:"last-message"}:{},...!0===k.ignoreCase?{ignoreCase:!0}:{},...!0===k.negate?{negate:!0}:{}}):f("edge-condition-kind",`Edge "${c}" -> "${d}" has an unknown condition kind "${String(k.kind)}"; the condition was dropped.`)),K.push(function(a,b,c,d){let e=`${a.type}-bottom`,f=`${b.type}-top`;return{id:`${a.id}:${e}->${b.id}:${f}`,source:a.id,sourceHandle:e,target:b.id,targetHandle:f,type:"custom",data:{edgeType:"standard",...c?{bidirectional:!0}:{},...d?{condition:d}:{}},animated:!0}}(g,h,j,b))}for(let{processKey:a,mcpNode:b}of J){let c=H.get(a);K.push(function(a,b){let c="process-right-mcp",d="mcp-left";return{id:`${a.id}:${c}->${b.id}:${d}`,source:a.id,sourceHandle:c,target:b.id,targetHandle:d,type:"mcpEdge",data:{edgeType:"mcp"},animated:!1,markerEnd:{...s},markerStart:{...s},style:{...t}}}(c,b))}!function(a,b,c,d,e){let f=new Map;for(let a of c)a.data?.edgeType!=="mcp"&&(f.has(a.source)||f.set(a.source,[]),f.get(a.source).push(a.target));let g=[...b.values()],h=g.filter(a=>"start"===a.type),i=h.length>0?h:g.slice(0,1),j=new Map,k=i.map(a=>({id:a.id,depth:0}));for(let a of k)j.set(a.id,0);for(;k.length;){let{id:a,depth:b}=k.shift();for(let c of f.get(a)??[])j.has(c)||(j.set(c,b+1),k.push({id:c,depth:b+1}))}let l=0;for(let a of j.values())l=Math.max(l,a);for(let a of g)j.has(a.id)||j.set(a.id,l+1);let m=new Map;for(let[a,c]of b)m.set(c.id,a);let n=new Map;for(let a of g){let b=m.get(a.id),c=e&&b?e[b]:void 0;if(c&&"number"==typeof c.x&&"number"==typeof c.y){a.position={x:c.x,y:c.y};continue}let d=j.get(a.id),f=n.get(d)??0;n.set(d,f+1),a.position={x:250+280*f,y:150+170*d}}let o=new Map;for(let{processKey:a,mcpNode:c}of d){let d=b.get(a),e=o.get(a)??0;o.set(a,e+1),c.position={x:d.position.x+320,y:d.position.y+150*e}}}(0,H,K,J,0===z?c.positions:void 0);let M={id:F,name:E,...d?.description?{description:d.description}:{},nodes:I,edges:K};return l.push(M),n.push({id:M.id,name:M.name}),M}(a,0,[]),A=l,B=d;let C=B.filter(a=>"error"===a.severity).length;return{flow:z,flows:A,issues:B,errorCount:C,warningCount:B.length-C};function D(a,b){void 0!==a.concurrencyLimit&&("number"!=typeof a.concurrencyLimit||Number.isNaN(a.concurrencyLimit)?f("invalid-concurrency-limit",`Node "${a.key}": concurrencyLimit "${String(a.concurrencyLimit)}" is not a number; using the runtime default.`,a.key):b.concurrencyLimit=Math.max(1,Math.floor(a.concurrencyLimit))),"string"==typeof a.joinSeparator&&(b.joinSeparator=a.joinSeparator),void 0!==a.errorStrategy&&("fail-fast"===a.errorStrategy||"collect-all"===a.errorStrategy?b.errorStrategy=a.errorStrategy:f("invalid-error-strategy",`Node "${a.key}": errorStrategy "${String(a.errorStrategy)}" is not valid (fail-fast | collect-all); using collect-all.`,a.key))}}(a,d);if(!e.flow)return{success:!1,error:"The spec could not be compiled into a flow",statusCode:422,issues:e.issues.map(a=>({severity:a.severity,code:a.code,message:a.message}))};b.updateFlowId&&(e.flow.id=b.updateFlowId);let f=e.flows.flatMap(a=>(0,z.nC)(a,{models:c.compile.models,servers:c.validatorServers,serverTools:c.compile.serverTools}).issues),g=function(a,b){let c=[...a.map(a=>({severity:a.severity,code:a.code,message:a.message})),...b.issues],d=c.filter(a=>"error"===a.severity).length;return{issues:c,errorCount:d,warningCount:c.length-d,isRunnable:0===d}}(e.issues,{issues:f,errorCount:0,warningCount:0,isRunnable:!0}),h=!1;if(b.save&&0===g.errorCount){for(let a of e.flows)await k.flowService.saveFlow(a);h=!0,E.info(`Compiled and saved ${e.flows.length} flow(s); root "${e.flow.name}" (${e.flow.id})`)}else b.save&&E.info(`Compiled flow "${e.flow.name}" has ${g.errorCount} error(s); NOT saved`);return{success:!0,flow:e.flow,flows:e.flows,validation:g,saved:h}}var G=c(97403),H=c(79111),I=c(34115);let J=(0,i.h)("backend/execution/flow/loadConversationState");async function K(a){if(G.FlowExecutor.conversationStates.has(a))return J.debug("Loaded state from memory",{conversationId:a}),G.FlowExecutor.conversationStates.get(a);let b=`conversations/${a}`;try{let c=await (0,H.YM)(b,void 0);if(c)return J.debug("Loaded state from storage",{conversationId:a}),await (0,I.jM)(c),G.FlowExecutor.conversationStates.set(a,c),c}catch(b){J.warn("Error loading conversation state from storage",{conversationId:a,error:b})}}var L=c(96249),M=c(63129);let N=`A FlowSpec is a JSON object describing a FLUJO flow semantically — node keys and edges, no coordinates, no ids, no layout:
|
|
2
|
+
{
|
|
3
|
+
"name": "short_flow_name", // letters/digits/_/- only
|
|
4
|
+
"description": "what the flow does",
|
|
5
|
+
"nodes": [ ... ],
|
|
6
|
+
"edges": [ ... ]
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
NODE TYPES:
|
|
10
|
+
- { "key": "unique_key", "type": "start", "label": "...", "prompt": "system-level instructions for the whole flow" }
|
|
11
|
+
- { "key": "...", "type": "process", "label": "...", "description": "what this step does",
|
|
12
|
+
"model": "<model id or name from the catalog>",
|
|
13
|
+
"prompt": "instructions for this step",
|
|
14
|
+
"servers": [ { "name": "<server name>", "tools": ["tool_a"] } ], // optional; omit "tools" to enable all
|
|
15
|
+
"inputMode": "full-history" | "latest-message" | "isolated", // optional, default full-history
|
|
16
|
+
"isolatedPrompt": "...", // only with inputMode "isolated"
|
|
17
|
+
"outputMode": "full-conversation" | "latest-message", // optional, default full-conversation; latest-message hides this step's tool calls/results from later steps (they see only its final response)
|
|
18
|
+
"maxTurns": 20, // optional; per-step cap on agentic tool-loop turns (retry-until-done in ONE node). Unset = model/system default (50)
|
|
19
|
+
"allowedTools": ["tool_a"], // optional; step-level tool allowlist (independent of servers[].tools)
|
|
20
|
+
"captureVariable": "NAME", // optional; save this step's output into a run variable other steps inject with \${var:NAME}
|
|
21
|
+
"excludeModelPrompt": true|false, // optional; drop the model's base prompt
|
|
22
|
+
"excludeStartNodePrompt": true|false, // optional; drop the start node's prompt for this step
|
|
23
|
+
"excludeSystemPrompt": true|false } // optional; drop the workflow/handoff guidance block
|
|
24
|
+
- { "key": "...", "type": "subflow", "label": "...",
|
|
25
|
+
"flow": "<existing flow name or id>", // reference an EXISTING flow, OR:
|
|
26
|
+
"subflowSpec": { ...a nested FlowSpec... }, // define a brand-new child flow INLINE (compiled into its own flow and wired automatically), OR fan out concurrently:
|
|
27
|
+
"parallelFlows": ["flow_a", "flow_b"], // run several EXISTING child flows CONCURRENTLY, same input to each, outputs joined; OR:
|
|
28
|
+
"parallelSubflowSpecs": [ { ...FlowSpec... } ], // run several INLINE child flows concurrently
|
|
29
|
+
"mapOverList": true | false, // optional; run the SINGLE child ("flow"/"subflowSpec") ONCE PER ITEM parsed from the input; mutually exclusive with parallelFlows/parallelSubflowSpecs
|
|
30
|
+
"itemSplit": "json-array" | "lines", // optional (mapOverList only), how to split the input into items, default json-array
|
|
31
|
+
"sequential": true | false, // optional (mapOverList only), run items one at a time in order instead of concurrently, default false
|
|
32
|
+
"concurrencyLimit": 4, // optional (parallel / mapOverList), default 4
|
|
33
|
+
"joinSeparator": "\\n\\n---\\n\\n", // optional (parallel / mapOverList), string between joined lane outputs, default "\\n\\n"
|
|
34
|
+
"errorStrategy": "collect-all" | "fail-fast", // optional (parallel / mapOverList), default collect-all
|
|
35
|
+
"inputMode": "full-history" | "latest-message" | "isolated",
|
|
36
|
+
"allowCallerPrompt": true | false, // optional, only with inputMode "isolated"; when true a routing step may pass a "prompt" via its handoff tool that overrides the subflow's "prompt" (default)
|
|
37
|
+
"captureVariable": "NAME", // optional; save the subflow's output into a run variable other steps inject with \${var:NAME}
|
|
38
|
+
"outputMode": "steps" | "final-only" }
|
|
39
|
+
- { "key": "...", "type": "finish", "label": "..." }
|
|
40
|
+
|
|
41
|
+
EDGES: { "from": "<node key>", "to": "<node key>", "bidirectional": true|false,
|
|
42
|
+
"condition": { "kind": "contains"|"regex"|"equals", "value": "...",
|
|
43
|
+
"target": "last-assistant"|"last-message", // optional, default last-assistant
|
|
44
|
+
"ignoreCase": true|false, "negate": true|false } } // condition optional; process-node edges only
|
|
45
|
+
|
|
46
|
+
RULES:
|
|
47
|
+
1. Exactly ONE start node; at least one finish node reachable from it.
|
|
48
|
+
2. Every process node MUST reference a configured model (by id, display name, or name).
|
|
49
|
+
3. A process step uses MCP tools ONLY via its "servers" list — never emit nodes of type "mcp".
|
|
50
|
+
4. Do not embed \${tool:...} or \${resource:...} references in prompts — tools are wired through "servers".
|
|
51
|
+
5. Branching: give a process node multiple outgoing edges; its model decides where to hand off at runtime. "bidirectional": true lets the target hand back to the source (agent <-> agent).
|
|
52
|
+
5b. Deterministic routing: give a process node's outgoing edges a "condition" to route WITHOUT the model — the engine takes the first outgoing edge whose predicate matches the last message (default the step's own last assistant message), and a bare (condition-less) edge is the fallback. Use this for reliable data-driven branches (e.g. output contains "FAIL" -> fix step, else -> publish) instead of relying on a small model to emit a handoff. Only process-node edges may carry a condition. Without any condition on a node, that node keeps model-decided handoff (rule 5). If the model still calls a handoff tool, that wins over the condition.
|
|
53
|
+
6. A subflow node may have only ONE outgoing edge. Give it EITHER a "flow" (naming an existing flow) OR a "subflowSpec" (an inline nested FlowSpec that becomes its own child flow) — not both. A "subflowSpec" may itself contain subflow nodes with their own "subflowSpec" (bounded nesting), so you can author whole multi-level flows in one object.
|
|
54
|
+
7. A subflow node may instead fan out to SEVERAL child flows CONCURRENTLY via "parallelFlows" (existing flows) or "parallelSubflowSpecs" (inline). The same input is sent to every lane and their outputs are joined. This is about multiple CHILDREN, not successors — the single-outgoing-edge rule (rule 6) still holds. Prefer "parallelFlows" for large fan-outs.
|
|
55
|
+
8. A subflow node may instead run its SINGLE child flow ONCE PER ITEM via "mapOverList": true. The input is split into items by "itemSplit" ("json-array" default, or "lines"), each item is sent to its own child run, and the per-item outputs are joined (same pool/tuning as parallel). Use "sequential": true to run items in order. Mutually exclusive with "parallelFlows"/"parallelSubflowSpecs".
|
|
56
|
+
9. Named variables (scratchpad): a step can save its output with "captureVariable": "NAME" (process or subflow) and any LATER step injects it with \${var:NAME} inside its "prompt" / "isolatedPrompt" / subflow prompt. This survives "latest-message"/"isolated" scoping, unlike conversation history — use it to carry a todo list, a file path, a diff, or a captured result across steps that don't share history. \${var:NAME} is run-scoped and plaintext; it is DISTINCT from \${global:VAR} (configured secrets/config, resolved only for tool args). Capture a subflow's output on the PARENT subflow node — a variable set inside a child flow is not visible to the parent.
|
|
57
|
+
10. Keep flows minimal — only the steps the task needs. Write clear, specific prompts and labels; fill "description" on process nodes.`;var O=c(12700),P=c(79861);let Q=(0,i.h)("backend/services/mcp/quality/cache"),R="mcp-quality-cache";class S{constructor(a=Date.now()){this.entries={},this.dirty=!1,this.now=a}async load(){try{let a=await (0,H.YM)(R,{entries:{}});this.entries=a?.entries&&"object"==typeof a.entries?a.entries:{}}catch(a){Q.warn("Failed to load quality cache; starting empty",a),this.entries={}}}get(a,b){let c=this.entries[`${a}::${b}`];if(c&&!(this.now-c.at>864e5))return c.signal}set(a,b,c){this.entries[`${a}::${b}`]={at:this.now,signal:c},this.dirty=!0}async flush(){let a=!1;for(let[b,c]of Object.entries(this.entries))this.now-c.at>864e5&&(delete this.entries[b],a=!0);if(this.dirty||a)try{await (0,H.VH)(R,{entries:this.entries})}catch(a){Q.warn("Failed to persist quality cache",a)}}}function T(a){return!Number.isFinite(a)||a<0?0:a>1?1:a}function U(a,b){return!Number.isFinite(a)||a<=0?0:!Number.isFinite(b)||b<=1?+(a>0):T(Math.log10(a+1)/Math.log10(b+1))}let V=(0,i.h)("backend/services/mcp/quality/providers/githubStars"),W="github",X=new Map;function Y(){return d??(process.env.GITHUB_TOKEN||void 0)}function Z(a){let b,c=a.server.repository;if(c?.source&&"github"!==c.source.toLowerCase())return null;var d=c?.url;if(!d)return null;try{b=new URL(d.replace(/^git\+/,""))}catch{return null}if(!/(^|\.)github\.com$/i.test(b.hostname))return null;let e=b.pathname.replace(/\.git$/i,"").split("/").filter(Boolean);return e.length<2?null:`${e[0]}/${e[1]}`.toLowerCase()}async function $(a,b){let c=new AbortController,d=()=>c.abort();b.addEventListener("abort",d,{once:!0});let e=setTimeout(()=>c.abort(),6e3);try{return await fetch(`https://api.github.com${a}`,{headers:function(){let a={Accept:"application/vnd.github+json","User-Agent":"FLUJO-mcp-quality","X-GitHub-Api-Version":"2022-11-28"},b=Y();return b&&(a.Authorization=`Bearer ${b}`),a}(),signal:c.signal,cache:"no-store"})}catch(b){return V.warn(`GitHub request failed (${a})`,b instanceof Error?b.message:b),null}finally{clearTimeout(e),b.removeEventListener("abort",d)}}function _(a){return(403===a.status||429===a.status)&&"0"===a.headers.get("x-ratelimit-remaining")}let aa=(0,i.h)("backend/services/mcp/quality/providers/npmDownloads"),ab="npm-downloads",ac=new Map;function ad(a){for(let b of a.server.packages??[])if("npm"===b.registryType&&b.identifier)return b.identifier;return null}function ae(a){return a.startsWith("@")}async function af(a,b){let c=new AbortController,d=()=>c.abort();b.addEventListener("abort",d,{once:!0});let e=setTimeout(()=>c.abort(),6e3);try{return await fetch(`https://api.npmjs.org${a}`,{signal:c.signal,cache:"no-store"})}catch(b){return aa.warn(`npm request failed (${a})`,b instanceof Error?b.message:b),null}finally{clearTimeout(e),b.removeEventListener("abort",d)}}let ag="registry-status",ah=[{id:W,label:"GitHub Stars & Activity",defaultWeight:.5,isApplicable:a=>null!==Z(a),cacheKey:a=>Z(a),async prefetch(a,b,c){let d=`${a??""} mcp`.trim(),e=`/search/repositories?q=${encodeURIComponent(d)}&sort=stars&order=desc&per_page=50`,f=await $(e,c);if(f&&f.ok)try{for(let a of(await f.json()).items??[])a.full_name&&X.set(a.full_name.toLowerCase(),{stars:"number"==typeof a.stargazers_count?a.stargazers_count:0,pushedAtMs:a.pushed_at?Date.parse(a.pushed_at):null})}catch(a){V.warn("Failed to parse GitHub search response",a)}else if(f&&_(f))return void V.warn("GitHub search rate-limited; ranking will degrade to other providers");if(!Y())return;let g=3;for(let a of b){if(g<=0)break;let b=Z(a);if(!b||X.has(b))continue;g-=1;let d=await $(`/repos/${b}`,c);if(d){if(_(d))break;if(d.ok)try{let a=await d.json();X.set(b,{stars:"number"==typeof a.stargazers_count?a.stargazers_count:0,pushedAtMs:a.pushed_at?Date.parse(a.pushed_at):null})}catch{}}}},async fetch(a){let b=Z(a);if(!b)return null;let c=X.get(b);if(!c)return null;let d=U(c.stars,5e4),e=function(a,b,c=30,d=730){if(!a||!Number.isFinite(a))return 0;let e=(b-a)/864e5;return e<=c?1:e>=d?0:T(1-(e-c)/(d-c))}(c.pushedAtMs,Date.now());return{providerId:W,score:T(.7*d+.3*e),evidence:{repo:b,stars:c.stars,...c.pushedAtMs?{pushedAt:new Date(c.pushedAtMs).toISOString()}:{},starsScore:d,recencyScore:e}}}},{id:ab,label:"npm Weekly Downloads",defaultWeight:.35,isApplicable:a=>null!==ad(a),cacheKey:a=>ad(a),async prefetch(a,b,c){let d=b.map(ad).filter(a=>!!a&&!ac.has(a)),e=d.filter(a=>!ae(a)),f=d.filter(ae);for(let a=0;a<e.length;a+=100){let b=e.slice(a,a+100),d=await af(`/downloads/point/last-week/${b.join(",")}`,c);if(d&&d.ok)try{let a=await d.json();if(1===b.length)"number"==typeof a.downloads&&ac.set(b[0],a.downloads);else for(let c of b){let b=a[c];ac.set(c,b&&"number"==typeof b.downloads?b.downloads:0)}}catch(a){aa.warn("Failed to parse npm bulk downloads response",a)}}for(let a of f){let b=await af(`/downloads/point/last-week/${a}`,c);if(b&&b.ok)try{let c=await b.json();"number"==typeof c.downloads&&ac.set(a,c.downloads)}catch{}}},async fetch(a){let b=ad(a);if(!b)return null;let c=ac.get(b);return void 0===c?null:{providerId:ab,score:U(c,1e6),evidence:{package:b,weeklyDownloads:c}}}},{id:ag,label:"Registry Status",defaultWeight:.15,isApplicable:a=>!0,cacheKey:()=>null,fetch:async a=>({providerId:ag,score:+("active"===a.verificationStatus),evidence:{status:a.verificationStatus}})}];var ai=c(89392);let aj=(0,i.h)("backend/services/mcp/quality/settings");function ak(){return{providers:ah.map(a=>({id:a.id,enabled:!0,weight:a.defaultWeight})),minScore:0,worksGate:!0}}async function al(){try{let a=await (0,H.YM)(ai.Z.MCP_QUALITY_SETTINGS,ak());return function(a){var b,c;let d=ak(),e=a??{},f=new Map;if(Array.isArray(e.providers))for(let a of e.providers)a&&"string"==typeof a.id&&f.set(a.id,a);return{providers:d.providers.map(a=>{let b=f.get(a.id);return{id:a.id,enabled:"boolean"==typeof b?.enabled?b.enabled:a.enabled,weight:"number"==typeof b?.weight&&Number.isFinite(b.weight)&&b.weight>=0?b.weight:a.weight}}),minScore:(b=e.minScore,c=d.minScore,"number"==typeof b&&Number.isFinite(b)?Math.min(1,Math.max(0,b)):c),worksGate:"boolean"==typeof e.worksGate?e.worksGate:d.worksGate,..."string"==typeof e.githubToken&&e.githubToken.length>0?{githubToken:e.githubToken}:{}}}(a)}catch(a){return aj.warn("Failed to load mcpQuality settings; using defaults",a),ak()}}let am=(0,i.h)("backend/services/mcp/quality/orchestrator");async function an(a,b){let c=new AbortController,d=setTimeout(()=>c.abort(),b);try{return await a(c.signal)}finally{clearTimeout(d)}}async function ao(a,b,c={}){let e=c.topN??10;try{var f;let g=c.settings??await al(),h=ah.filter(a=>(function(a,b){let c=a.providers.find(a=>a.id===b);return!!c?.enabled})(g,a.id));if(0===h.length)return b.map(a=>({candidate:a,score:0,signals:[]}));d=(f=g.githubToken)&&f.length>0?f:void 0;let i=b.slice(0,e),j=b.slice(e),k=new S(c.now??Date.now());await k.load();let l=i.map(()=>[]);for(let b of h){let c=i.map((a,b)=>({c:a,i:b})).filter(({c:a})=>b.isApplicable(a)),d=[],e=[];for(let a of c){let c=b.cacheKey(a.c);if(c){let d=k.get(b.id,c);if(d){e.push({i:a.i,signal:d});continue}}d.push(a)}if(b.prefetch&&d.length>0)try{await an(c=>b.prefetch(a,d.map(a=>a.c),c),12e3)}catch(a){am.warn(`Provider "${b.id}" prefetch failed; degrading`,a)}for(let{c:a,i:c}of d)try{let d=await an(c=>b.fetch(a,c),2e3);if(d){l[c].push(d);let e=b.cacheKey(a);e&&k.set(b.id,e,d)}}catch(c){am.warn(`Provider "${b.id}" fetch failed for "${a.registryName}"`,c)}for(let{i:a,signal:b}of e)l[a].push(b)}await k.flush();let m=i.map((a,b)=>{let c=l[b],d=new Map(c.map(a=>[a.providerId,a])),e=h.filter(b=>b.isApplicable(a)).map(a=>({providerId:a.id,weight:function(a,b){let c=a.providers.find(a=>a.id===b);return c&&c.enabled?c.weight:0}(g,a.id),score:d.get(a.id)?.score??0})),{score:f}=function(a){let b=0,c=0;for(let d of a){let a=Number.isFinite(d.weight)&&d.weight>0?d.weight:0,e=T(d.score);b+=a,c+=a*e}return{score:b>0?c/b:0,breakdown:a}}(e);return{candidate:a,score:f,signals:c}}).map((a,b)=>({s:a,idx:b})).sort((a,b)=>b.s.score-a.s.score||a.idx-b.idx).map(a=>a.s),n=j.map(a=>({candidate:a,score:0,signals:[]}));return[...m,...n]}catch(a){return am.warn("enrichAndRank failed; returning unranked candidates",a),b.map(a=>({candidate:a,score:0,signals:[]}))}}let ap=(0,i.h)("backend/services/mcp/registryInstall"),aq="/v0.1/servers";function ar(a){return{registryName:a.server.name,server:a.server,verificationStatus:(0,P.vf)(a)}}async function as(a,b=8){let c=await at(a,b);return(await ao(a,c.map(ar))).map(a=>(function(a,b){let c=(0,P.AH)(a),d=c[0];return{name:a.name,...a.title?{title:a.title}:{},...a.description?{description:a.description}:{},installable:c.length>0,requiredEnv:d?(0,P.jg)(d):[],...b?{quality:function(a){let b=b=>a.signals.find(a=>a.providerId===b)?.evidence,c=b(W),d=b(ab),e=b(ag);return{score:a.score,..."number"==typeof c?.stars?{stars:c.stars}:{},..."number"==typeof d?.weeklyDownloads?{weeklyDownloads:d.weeklyDownloads}:{},..."string"==typeof e?.status?{status:e.status}:{}}}(b)}:{}}})(a.candidate.server,a))}async function at(a,b){let c=new URL(O.jD+aq);c.searchParams.set("version","latest"),c.searchParams.set("limit",String(Math.min(Math.max(b,1),30))),a&&c.searchParams.set("search",a);let d=await (0,O.Ws)(c,15e3);return Array.isArray(d?.servers)?d.servers:[]}async function au(a){let b=new URL(O.jD+aq);b.searchParams.set("version","latest"),b.searchParams.set("limit","10"),b.searchParams.set("search",a);let c=await (0,O.Ws)(b,15e3),d=Array.isArray(c?.servers)?c.servers:[];return d.find(b=>b.server?.name===a)??d[0]??null}async function av(a,b,c){let d;if(!a||"string"!=typeof a)return{installed:!1,error:"A registry server name is required"};try{d=await au(a)}catch(a){return{installed:!1,error:`Registry lookup failed: ${a instanceof Error?a.message:String(a)}`}}let e=d?.server??null;if(!e)return{installed:!1,error:`No registry entry found for "${a}"`};let f=(0,P.AH)(e)[0];if(!f)return{installed:!1,error:`"${e.name}" has no install method FLUJO supports (stdio package or HTTP remote)`};let g=(0,P.vf)(d),h=(0,P.O$)(a,e,f,g);if(c?.resolveOnly)return{installed:!1,serverName:h.serverName,plan:h};let i=(0,P.jg)(f,b);if(i.length>0)return{installed:!1,needsEnv:i,plan:h,error:`"${e.name}" requires values for: ${i.join(", ")}`};let j=(0,P.cy)((0,P.Yr)(e,f),b),k=j.name,l=await A.mcpService.loadServerConfigs();if(Array.isArray(l)&&l.some(a=>a.name===k)){ap.info(`installRegistryServer: "${k}" already configured; reusing`);let{tools:a,error:b}=await A.mcpService.listServerTools(k);return{installed:!0,alreadyExisted:!0,serverName:k,plan:h,tools:(a??[]).map(a=>({name:a.name,...a.description?{description:a.description}:{}})),...b?{error:b}:{}}}ap.info(`installRegistryServer: installing "${e.name}" as "${k}" (${f.kind})`);let m=await A.mcpService.updateServerConfig(k,j);if(!Array.isArray(m)&&m&&"success"in m&&!1===m.success)return{installed:!1,error:`Saving the server failed: ${m.error??"unknown error"}`};let{tools:n,error:o}=await A.mcpService.listServerTools(k),p=(n??[]).map(a=>({name:a.name,...a.description?{description:a.description}:{}}));if((c?.worksGate??(await al()).worksGate)&&0===p.length){ap.warn(`installRegistryServer: "${k}" exposed no tools${o?` (${o})`:""}; rolling back (works-gate)`);try{await A.mcpService.deleteServerConfig(k)}catch(a){ap.error(`installRegistryServer: rollback of "${k}" failed`,a)}return{installed:!1,worksGateRejected:!0,serverName:k,plan:h,error:o?`"${e.name}" failed to start: ${o}`:`"${e.name}" connected but exposed no tools — rejected by the works-gate. Try a different server.`}}return{installed:!0,serverName:k,plan:h,tools:p,...o?{error:o}:{}}}async function aw(a,b,c){let d;if(!a||"string"!=typeof a)return{installed:!1,error:"A capability search query is required"};try{d=await at(a,10)}catch(a){return{installed:!1,error:`Registry lookup failed: ${a instanceof Error?a.message:String(a)}`}}let e=await ao(a,d.map(ar)),f=await al(),g=c?.minScore??f.minScore,h=c?.maxAttempts??3,i=[],j=0;for(let a of e){let d=a.candidate.registryName;if(a.score<g){i.push({name:d,score:a.score,reason:`below minScore ${g}`});break}if(0===(0,P.AH)(a.candidate.server).length){i.push({name:d,score:a.score,reason:"no supported install method"});continue}if(j>=h)break;j+=1;let e=await av(d,b,{worksGate:!0});if(c?.onAttempt)try{await c.onAttempt(e.plan,e)}catch(a){ap.error("installBestForCapability: onAttempt hook failed",a)}if(e.installed)return{...e,attempts:i};let f=e.needsEnv?.length?`needs env: ${e.needsEnv.join(", ")}`:e.worksGateRejected?"works-gate rejected (no tools / failed to start)":e.error??"install failed";i.push({name:d,score:a.score,reason:f})}return{installed:!1,attempts:i,error:`No working server found for "${a}" among the top ${j} installable candidate(s).`}}let ax={requireConsent:!0,namespaceAllowlist:[],trustBrainStem:!0};function ay(a){let{caller:b,settings:c,registryName:d,allowInstall:e}=a;if("generator"===b)return!0===e?{allowed:!0,reason:"generator-allowinstall",message:"Approved by the per-generation allowInstall opt-in."}:{allowed:!1,reason:"generator-not-allowed",message:"Installing is not allowed in this generation (allowInstall is off)."};if("authoring-tool"===b&&c.trustBrainStem)return{allowed:!0,reason:"brainstem-trusted",message:"Approved: the /mcp-flows authoring tool is trusted (mcpAutoInstall.trustBrainStem)."};if(!c.requireConsent)return{allowed:!0,reason:"consent-disabled",message:"Approved: consent is not required (mcpAutoInstall.requireConsent is off)."};let f=function(a){if("string"!=typeof a)return"";let b=a.indexOf("/");return b>0?a.slice(0,b):""}(d);return""!==f&&c.namespaceAllowlist.includes(f)?{allowed:!0,reason:"namespace-allowlisted",message:`Approved: namespace "${f}" is allowlisted.`}:{allowed:!1,reason:"consent-required",message:"Consent required: review the exact command and arguments, then approve this install (SEP-1024)."}}function az(a,b,c,d,e){return{at:new Date().toISOString(),caller:b,registryName:a.registryName,resolvedName:a.resolvedName,serverName:a.serverName,transport:a.transport,...a.command?{command:a.command}:{},...a.args?{args:a.args}:{},...a.serverUrl?{serverUrl:a.serverUrl}:{},requiredEnvNames:a.requiredEnvNames,verificationStatus:a.verificationStatus,consent:{allowed:c.allowed,reason:c.reason},installed:d,...e?{error:e}:{}}}let aA=(0,i.h)("backend/services/mcp/autoInstall");async function aB(){try{let a=await (0,H.YM)(ai.Z.MCP_AUTO_INSTALL_SETTINGS,ax)??{};return{requireConsent:"boolean"==typeof a.requireConsent?a.requireConsent:ax.requireConsent,namespaceAllowlist:Array.isArray(a.namespaceAllowlist)?a.namespaceAllowlist.filter(a=>"string"==typeof a&&a.length>0):[],trustBrainStem:"boolean"==typeof a.trustBrainStem?a.trustBrainStem:ax.trustBrainStem}}catch(a){return aA.warn("Failed to load mcpAutoInstall settings; using safe defaults",a),{...ax}}}let aC="mcp-install-audit",aD=Promise.resolve();async function aE(){try{return await (0,H.YM)(aC,[])}catch(a){return aA.error("Failed to load MCP install audit log",a),[]}}async function aF(a){let b=aD.catch(()=>{}).then(async()=>{let b=await aE();b.push(a);let c=b.slice(-300);await (0,H.VH)(aC,c)}).catch(a=>{aA.error("Failed to append MCP install audit entry",a)});aD=b,await b}let aG=(0,i.h)("backend/services/mcp/flowAuthoringTools"),aH=["list_flow_building_blocks","validate_flow_spec","create_flow","search_mcp_marketplace","install_mcp_server","install_best_mcp_server"];function aI(){return{type:"object",properties:{spec:{type:"object",description:"The FlowSpec object (see the tool description for the format)."}},required:["spec"]}}function aJ(a,b=!1){return{content:[{type:"text",text:JSON.stringify(a,null,2)}],...b?{isError:!0}:{}}}async function aK(a,b){try{if("list_flow_building_blocks"===a){let a=await D();return aJ(a.blocks)}if("search_mcp_marketplace"===a){let a="string"==typeof b?.query?b.query:"",c=await as(a);return aJ(c)}if("install_mcp_server"===a){let a="string"==typeof b?.name?b.name:"",c=b?.env&&"object"==typeof b.env&&!Array.isArray(b.env)?b.env:void 0,d=await av(a,c,{resolveOnly:!0});if(!d.plan)return aJ(d,!0);let e=await aB(),f=ay({caller:"authoring-tool",settings:e,registryName:a}),g=(0,P.nO)(d.plan.verificationStatus)?void 0:`Unverified / self-asserted registry entry (status: ${d.plan.verificationStatus}). Registry entries are publisher-asserted — review the command before approving.`;if(await aF(az(d.plan,"authoring-tool",f,!1)),!f.allowed)return aJ({installed:!1,consentRequired:!0,message:f.message,plan:d.plan,...g?{verificationWarning:g}:{}});let h=await av(a,c);return await aF(az(h.plan??d.plan,"authoring-tool",f,h.installed,h.error)),aJ({...h,...g?{verificationWarning:g}:{}},!h.installed)}if("install_best_mcp_server"===a){let a="string"==typeof b?.capability?b.capability:"",c=b?.env&&"object"==typeof b.env&&!Array.isArray(b.env)?b.env:void 0;if(!a)return aJ({error:'Provide a "capability" search term.'},!0);let d=await aB(),e=ay({caller:"authoring-tool",settings:d,registryName:a});if(!e.allowed){let b=(await as(a)).find(a=>a.installable),d=b?await av(b.name,c,{resolveOnly:!0}):null;return d?.plan&&await aF(az(d.plan,"authoring-tool",e,!1)),aJ({installed:!1,consentRequired:!0,message:e.message,...d?.plan?{plan:d.plan}:{}})}let f=await aw(a,c,{onAttempt:async(a,b)=>{a&&await aF(az(a,"authoring-tool",e,b.installed,b.error))}}),g=f.installed&&!(0,P.nO)(f.plan?.verificationStatus)?`Installed an unverified / self-asserted registry entry (status: ${f.plan?.verificationStatus}).`:void 0;return aJ({...f,...g?{verificationWarning:g}:{}},!f.installed)}if("validate_flow_spec"===a||"create_flow"===a){let c=function(a){let b=a?.spec;if("string"==typeof b)try{return JSON.parse(b)}catch{return null}return b??null}(b);if(!c)return aJ({error:'Provide a "spec" argument: a FlowSpec object (or a JSON string of one).'},!0);let d=await F(c,{save:"create_flow"===a});if(!d.success)return aJ({error:d.error,issues:d.issues??[]},!0);let e=d.flows.length,f=e>1?` (plus ${e-1} nested subflow flow(s))`:"",g={flowId:d.flow.id,flowName:d.flow.name,nodeCount:d.flow.nodes.length,edgeCount:d.flow.edges.length,...e>1?{flows:d.flows.map(a=>({id:a.id,name:a.name}))}:{},validation:d.validation,..."create_flow"===a?{saved:d.saved,...d.saved?{note:`Flow "${d.flow.name}"${f} was created. It is callable as a tool on this MCP server (after a fresh tools/list) and as model "flow-${d.flow.name}" on the OpenAI-compatible endpoint.`}:{note:"NOT saved: validation found errors. Fix the issues and call create_flow again."}}:{}};return aJ(g,"create_flow"===a&&!d.saved)}return aJ({error:`Unknown authoring tool: ${a}`},!0)}catch(b){return aG.error("authoringCallTool failed",{toolName:a,err:b}),aJ({error:`Authoring tool failed: ${b instanceof Error?b.message:String(b)}`},!0)}}var aL=c(92018);let aM=(0,i.h)("backend/services/mcp/internalTools");function aN(a,b=!1){return{content:[{type:"text",text:"string"==typeof a?a:JSON.stringify(a,null,2)}],...b?{isError:!0}:{}}}function aO(){return[{name:"list_flow_building_blocks",description:'List everything a FlowSpec may reference in this FLUJO instance: configured models (bind to process steps), MCP servers and their tools (attach via "servers"), and existing flows (usable as subflow targets). Call this before authoring a spec.',inputSchema:{type:"object",properties:{}}},{name:"validate_flow_spec",description:`Compile and validate a FlowSpec WITHOUT saving. Returns the compiled flow's validation result (errors block saving; warnings are advisory) so you can iterate until clean, then call create_flow.
|
|
58
|
+
|
|
59
|
+
${N}`,inputSchema:aI()},{name:"create_flow",description:`Create a new FLUJO flow from a FlowSpec. The spec is compiled deterministically (layout, ids, and wiring are generated for you) and saved ONLY when validation finds zero errors — otherwise the issues are returned to fix. Use list_flow_building_blocks first to see the models, MCP servers/tools, and existing flows you may reference.
|
|
60
|
+
|
|
61
|
+
${N}`,inputSchema:aI()},{name:"search_mcp_marketplace",description:"Search the public MCP server registry for new capabilities (voice, browsing, files, email, vision, …). The registry matches the query against server NAMES only (substring) — use short single terms and try several. Returns name, description, whether FLUJO can install it, and which env vars/keys it would require.",inputSchema:{type:"object",properties:{query:{type:"string",description:"Short search term matched against server names."}},required:["query"]}},{name:"install_mcp_server",description:'Install an MCP server from the public registry (by the exact name returned by search_mcp_marketplace) and connect it — this DOWNLOADS AND RUNS a third-party package on the FLUJO host. Installs are gated by consent (SEP-1024): unless this trusted authoring tool is allowed via the mcpAutoInstall settings (trustBrainStem / requireConsent / namespaceAllowlist), the tool returns the exact resolved command + arguments with consentRequired=true INSTEAD of installing, and the caller must obtain explicit approval. Every attempt is written to an audit log (command, args, env NAMES, verification status — never secret values) before any spawn. Returns the FLUJO server name (reference it in FlowSpec "servers") and the tools it provides, or needsEnv when required keys are missing (supply values via the optional "env" argument), or the resolved plan when consent is required. First install can take minutes (package download).',inputSchema:{type:"object",properties:{name:{type:"string",description:'Exact registry name from search results, e.g. "ai.keenable/web-search".'},env:{type:"object",description:"Optional env var values for the server (e.g. required API keys).",additionalProperties:{type:"string"}}},required:["name"]}},{name:"install_best_mcp_server",description:"Install the BEST WORKING MCP server for a capability, unattended — the recommended way to acquire a capability when you don't already have a specific server name. Searches the registry, RANKS candidates by blended quality (GitHub stars + recent activity, npm weekly downloads, registry status), then installs best→worst until one actually boots and exposes tools (the \"works-gate\"): candidates that need unavailable keys, can't be installed, or start with zero tools are skipped automatically. Same consent/audit rules and third-party-code warning as install_mcp_server. Returns the installed server name + its tools and the list of candidates tried, or needsEnv/consentRequired. Prefer this over search+install for headless self-improvement; use install_mcp_server only when you must pin an exact server.",inputSchema:{type:"object",properties:{capability:{type:"string",description:'Short capability term matched against server names, e.g. "youtube", "email", "browser".'},env:{type:"object",description:"Optional env var values shared across attempted servers (e.g. an API key).",additionalProperties:{type:"string"}}},required:["capability"]}},{name:"execute_flow",description:"Run another FLUJO flow (by name or id) with the given input and return its final output. The run is ephemeral (no chat conversation is created). Use list_flow_building_blocks to see the available flows. Nested runs are limited in depth — a flow cannot recurse through itself indefinitely.",inputSchema:{type:"object",properties:{flow:{type:"string",description:"Flow name or flow id."},input:{type:"string",description:"The message to send to the flow as the user turn."}},required:["flow","input"]}},{name:"read_flow",description:"Read a FLUJO flow's full definition (by name or id): its nodes with their prompts, bound models, attached MCP servers/tools and input/output modes, plus the control and MCP edges. Note this is the COMPILED flow (node ids, not FlowSpec keys) — to change it, author a fresh FlowSpec and call update_flow.",inputSchema:{type:"object",properties:{flow:{type:"string",description:"Flow name or flow id."}},required:["flow"]}},{name:"update_flow",description:"REPLACE an existing FLUJO flow's definition (by name or id) with a newly compiled FlowSpec, keeping the flow's id — so planned executions, subflow nodes and conversations that reference it keep working. The spec format is the same as create_flow/validate_flow_spec (see those tool descriptions); saving is gated on zero validation errors. The replaced definition is archived automatically — list_flow_versions / revert_flow can restore it. Note that manual canvas edits made in the builder are part of what gets replaced. Use read_flow first to see what you are replacing.",inputSchema:{type:"object",properties:{flow:{type:"string",description:"Flow name or flow id of the flow to replace."},spec:{type:"object",description:"The FlowSpec object (see the create_flow tool description for the format)."}},required:["flow","spec"]}},{name:"list_flow_versions",description:"List a flow's archived versions (by name or id), newest first. A version is created automatically whenever the flow's definition is overwritten (builder save, update_flow, revert_flow) and holds the definition that was replaced. Use read_flow_version to inspect one and revert_flow to restore one.",inputSchema:{type:"object",properties:{flow:{type:"string",description:"Flow name or flow id."}},required:["flow"]}},{name:"read_flow_version",description:"Read one archived version of a flow (see list_flow_versions): the full definition it held before it was replaced, in the same format as read_flow.",inputSchema:{type:"object",properties:{flow:{type:"string",description:"Flow name or flow id."},version:{type:"string",description:"The version id (see list_flow_versions)."}},required:["flow","version"]}},{name:"revert_flow",description:"Restore an archived version (see list_flow_versions) as the flow's CURRENT definition. The definition being reverted away from is archived first, so a revert can itself be undone. References by flow id keep working.",inputSchema:{type:"object",properties:{flow:{type:"string",description:"Flow name or flow id."},version:{type:"string",description:"The version id to restore (see list_flow_versions)."}},required:["flow","version"]}},{name:"delete_flow",description:"PERMANENTLY delete a FLUJO flow (by name or id). This cannot be undone — the flow's version history is deleted with it. Verify the target with list_flow_building_blocks first.",inputSchema:{type:"object",properties:{flow:{type:"string",description:"Flow name or flow id."}},required:["flow"]}},{name:"list_mcp_servers",description:"List the MCP servers configured in this FLUJO instance with their transport, enabled/disabled state and live connection status. Config details (env vars, headers, credentials) are never included.",inputSchema:{type:"object",properties:{}}},{name:"list_mcp_server_tools",description:"List the tools of one configured MCP server (name, description, input schema). Use together with call_mcp_tool for servers that are not bound to this flow.",inputSchema:{type:"object",properties:{server:{type:"string",description:"The FLUJO server name (see list_mcp_servers)."}},required:["server"]}},{name:"call_mcp_tool",description:"Call a tool on any configured MCP server by server name + tool name. This lets you use servers that are not bound to the current flow. Check the tool's input schema with list_mcp_server_tools first.",inputSchema:{type:"object",properties:{server:{type:"string",description:"The FLUJO server name."},tool:{type:"string",description:"The tool name on that server."},args:{type:"object",description:"Arguments for the tool (per its input schema)."},timeout:{type:"number",description:"Optional timeout in seconds."}},required:["server","tool"]}},{name:"restart_mcp_server",description:"Force-reconnect a configured MCP server (tears the connection down and rebuilds it). Useful when a server is in an error state after a config or environment change.",inputSchema:{type:"object",properties:{server:{type:"string",description:"The FLUJO server name."}},required:["server"]}},{name:"set_mcp_server_enabled",description:"Enable or disable a configured MCP server. Disabling disconnects it and prevents any further use; enabling connects it.",inputSchema:{type:"object",properties:{server:{type:"string",description:"The FLUJO server name."},enabled:{type:"boolean",description:"true to enable + connect, false to disable + disconnect."}},required:["server","enabled"]}},{name:"list_models",description:"List the models configured in this FLUJO instance (id, name, display name, description, provider, base URL, context window). API keys are never included. Reference models by id or name in FlowSpecs.",inputSchema:{type:"object",properties:{}}},{name:"list_planned_executions",description:"List the planned (scheduled/triggered) executions in this FLUJO instance with their trigger type, enabled state, armed status and last run outcome.",inputSchema:{type:"object",properties:{}}},{name:"run_planned_execution",description:"Fire a planned execution immediately (by id, see list_planned_executions) and return the run record with its output.",inputSchema:{type:"object",properties:{id:{type:"string",description:"The planned execution id."}},required:["id"]}},{name:"list_conversations",description:"List the chat conversations stored in this FLUJO instance (id, title, bound flow, status, created/updated timestamps), newest first. Use read_conversation to get a transcript.",inputSchema:{type:"object",properties:{limit:{type:"number",description:"Optional maximum number of conversations to return (newest first). Default: all."}}}},{name:"read_conversation",description:'Read one chat conversation\'s transcript by conversation id (see list_conversations). Returns the displayed messages: system prompts are excluded, nested subflow steps carry a "depth" marker, assistant tool calls are summarized. Long conversations return only the most recent messages — raise "limit" to get more.',inputSchema:{type:"object",properties:{conversation:{type:"string",description:"The conversation id."},limit:{type:"number",description:"Maximum number of most-recent messages to return (default 50). The total transcript size is capped regardless."}},required:["conversation"]}},{name:"terminal",description:'Run a shell command on the FLUJO host and return its combined stdout/stderr plus exit code. Runs through a shell, so pipes and chained commands (e.g. "npm install && npm run build") work. Use it to install dependencies, build a cloned MCP server, inspect the filesystem, or run diagnostics. Working directory defaults to the FLUJO data directory (where cloned servers live under mcp-servers/); pass "cwd" to run elsewhere. The command is killed if it exceeds the timeout, and very large output is truncated.',inputSchema:{type:"object",properties:{command:{type:"string",description:'The shell command line to execute, e.g. "npm install && npm run build".'},cwd:{type:"string",description:"Optional working directory. Relative paths resolve against the FLUJO data directory. Defaults to the data directory."},timeout:{type:"number",description:"Optional timeout in seconds (default 60, max 600). The command is killed if it runs longer."}},required:["command"]}}]}async function aP(a){let b=await k.flowService.loadFlows();return b.find(b=>b.id===a)??b.find(b=>b.name===a)}async function aQ(a){let b=String(a?.flow??"").trim();if(!b)return aN({error:'Provide "flow": a flow name or id.'},!0);let c=await aP(b);if(!c)return aN({error:`No flow named or with id "${b}". Use list_flow_building_blocks to see the available flows.`},!0);let d=global.__flujo_internal_flow_depth??0;if(d>=4)return aN({error:`execute_flow nesting limit (4) reached — refusing to start "${c.name}" to prevent runaway recursion.`},!0);global.__flujo_internal_flow_depth=d+1;try{let b=await (0,n.runFlow)({flowId:c.id,prompt:String(a?.input??""),mode:"ephemeral",flujo:!0,requireApproval:!1});if(b.flowNotFound)return aN({error:`Flow not found: ${b.flowNotFound.name}`},!0);if("error"===b.status)return aN({error:b.error?.message??"Unknown error during flow execution."},!0);return aN(b.outputText??"")}finally{global.__flujo_internal_flow_depth=d}}async function aR(a){let b=String(a?.flow??"").trim();if(!b)return aN({error:'Provide "flow": a flow name or id.'},!0);let c=await aP(b);if(!c)return aN({error:`No flow named or with id "${b}".`},!0);let d=await k.flowService.deleteFlow(c.id);return d.success?aN({deleted:!0,flowId:c.id,flowName:c.name}):aN({error:d.error??`Failed to delete flow "${c.name}".`},!0)}function aS(a){let b=a.nodes.map(a=>{let{mcpNodes:b,...c}=a.data?.properties??{};return{id:a.id,type:a.type,label:a.data?.label,...a.data?.description?{description:a.data.description}:{},properties:c}}),c=a.edges.map(a=>{let b=a.data;return{from:a.source,to:a.target,type:b?.edgeType==="mcp"?"mcp":"control",...b?.bidirectional?{bidirectional:!0}:{}}});return{id:a.id,name:a.name,...a.description?{description:a.description}:{},nodes:b,edges:c}}async function aT(a){let b=String(a?.flow??"").trim();if(!b)return aN({error:'Provide "flow": a flow name or id.'},!0);let c=await aP(b);return c?aN({...aS(c),note:"This is the compiled flow (node ids, not FlowSpec keys). To change it, author a fresh FlowSpec and call update_flow — it replaces the whole definition while keeping this flow id."}):aN({error:`No flow named or with id "${b}". Use list_flow_building_blocks to see the available flows.`},!0)}async function aU(a){let b=String(a?.flow??"").trim();if(!b)return aN({error:'Provide "flow": a flow name or id.'},!0);let c=await aP(b);if(!c)return aN({error:`No flow named or with id "${b}".`},!0);let d=await k.flowService.listFlowVersions(c.id);return aN({flowId:c.id,flowName:c.name,versions:d,...0===d.length?{note:"No archived versions yet — versions appear once the flow's definition is overwritten for the first time."}:{}})}async function aV(a){let b=String(a?.flow??"").trim(),c=String(a?.version??"").trim();if(!b||!c)return aN({error:'Provide "flow" (name or id) and "version" (see list_flow_versions).'},!0);let d=await aP(b);if(!d)return aN({error:`No flow named or with id "${b}".`},!0);let e=await k.flowService.getFlowVersion(d.id,c);return e?aN({versionId:e.versionId,savedAt:e.savedAt,...aS(e.flow)}):aN({error:`No version "${c}" of flow "${d.name}". Use list_flow_versions to see the archived versions.`},!0)}async function aW(a){let b=String(a?.flow??"").trim(),c=String(a?.version??"").trim();if(!b||!c)return aN({error:'Provide "flow" (name or id) and "version" (see list_flow_versions).'},!0);let d=await aP(b);if(!d)return aN({error:`No flow named or with id "${b}".`},!0);let e=await k.flowService.revertFlow(d.id,c);return e.success?aN({reverted:!0,flowId:d.id,versionId:c,note:"The definition that was just replaced has been archived too, so this revert can itself be undone via list_flow_versions / revert_flow."}):aN({error:e.error??`Failed to revert flow "${d.name}".`},!0)}async function aX(a){let b=String(a?.flow??"").trim();if(!b)return aN({error:'Provide "flow": the name or id of the flow to replace.'},!0);let c=function(a){let b=a?.spec;if("string"==typeof b)try{return JSON.parse(b)}catch{return null}return b??null}(a);if(!c)return aN({error:'Provide a "spec" argument: a FlowSpec object (or a JSON string of one).'},!0);let d=await aP(b);if(!d)return aN({error:`No flow named or with id "${b}". Use list_flow_building_blocks to see the available flows.`},!0);let e=await F(c,{save:!0,updateFlowId:d.id});return e.success?aN({flowId:e.flow.id,flowName:e.flow.name,nodeCount:e.flow.nodes.length,edgeCount:e.flow.edges.length,validation:e.validation,saved:e.saved,...e.saved?{note:`Flow "${e.flow.name}" was replaced (id ${e.flow.id} kept — existing references keep working).`}:{note:"NOT saved: validation found errors. The existing flow is unchanged. Fix the issues and call update_flow again."}},!e.saved):aN({error:e.error,issues:e.issues??[]},!0)}async function aY(a){let b=await a.loadServerConfigs();return Array.isArray(b)?aN(await Promise.all(b.map(async b=>{let c="unknown";try{c=(await a.getServerStatus(b.name)).status}catch(a){aM.debug(`list_mcp_servers: getServerStatus failed for ${b.name}`,a)}return{name:b.name,transport:b.transport,enabled:!b.disabled,status:c,...b.builtIn?{builtIn:!0}:{}}}))):aN({error:b.error??"Failed to load server configs."},!0)}async function aZ(a,b){let c=String(b?.server??"").trim();if(!c)return aN({error:'Provide "server": a FLUJO server name.'},!0);if(c===aL._)return aN(aO().map(a=>({name:a.name,description:a.description,inputSchema:a.inputSchema})));let{tools:d,error:e}=await a.listServerTools(c);return e?aN({error:e},!0):aN(d.map(a=>({name:a.name,description:a.description,inputSchema:a.inputSchema})))}async function a$(a,b){let c=String(b?.server??"").trim(),d=String(b?.tool??"").trim();if(!c||!d)return aN({error:'Provide "server" and "tool".'},!0);if(c===aL._)return aN({error:`"${aL._}" is this server — call its tools directly instead of through call_mcp_tool.`},!0);let e=b?.args&&"object"==typeof b.args&&!Array.isArray(b.args)?b.args:{},f="number"==typeof b?.timeout?b.timeout:void 0,g=await a.callTool(c,d,e,f);if(!g.success)return aN({error:g.error??`Tool call failed on ${c}.`},!0);let h=g.data;return h&&Array.isArray(h.content)?h:aN(h??{ok:!0})}async function a_(a,b){let c=String(b?.server??"").trim();if(!c)return aN({error:'Provide "server": a FLUJO server name.'},!0);if(c===aL._)return aN({ok:!0,note:`"${aL._}" is the built-in server — it is always running.`});let d=await a.forceReconnect(c);if(!d.success)return aN({error:d.error??`Failed to restart ${c}.`},!0);let e=await a.getServerStatus(c);return aN({restarted:!0,server:c,status:e.status})}async function a0(a,b){let c=String(b?.server??"").trim(),d=b?.enabled;if(!c||"boolean"!=typeof d)return aN({error:'Provide "server" (string) and "enabled" (boolean).'},!0);if(c===aL._)return aN({error:`The built-in "${aL._}" server cannot be disabled.`},!0);let e=await a.updateServerConfig(c,{disabled:!d});return"error"in e?aN({error:e.error},!0):aN({server:c,enabled:d})}async function a1(){return aN((await l.modelService.loadModels()).map(a=>({id:a.id,name:a.name,...a.displayName?{displayName:a.displayName}:{},...a.description?{description:a.description}:{},...a.provider?{provider:a.provider}:{},...a.baseUrl?{baseUrl:a.baseUrl}:{},...a.contextWindow?{contextWindow:a.contextWindow}:{}})))}async function a2(){return aN((await (0,m.z)().list()).map(({execution:a,status:b,lastRun:c})=>({id:a.id,name:a.name,enabled:a.enabled,flowId:a.flowId,triggerType:a.trigger?.type,armed:b?.armed??!1,...c?{lastRun:{status:c.status,firedAt:c.firedAt,...c.error?{error:c.error}:{}}}:{}})))}async function a3(a){let b=String(a?.id??"").trim();if(!b)return aN({error:'Provide "id": a planned execution id (see list_planned_executions).'},!0);let{record:c,error:d}=await (0,m.z)().runNow(b);return d||!c?aN({error:d??"Run failed."},!0):aN({runId:c.runId,status:c.status,firedAt:c.firedAt,...c.finishedAt?{finishedAt:c.finishedAt}:{},...c.outputText?{outputText:c.outputText}:{},...c.error?{error:c.error}:{}})}async function a4(a){let b,c=f().join((0,M.ok)(),"db","conversations");try{b=await g.promises.readdir(c)}catch(a){if("ENOENT"===a.code)return aN([]);return aN({error:`Failed to list conversations: ${a instanceof Error?a.message:String(a)}`},!0)}let d=(await Promise.all(b.filter(a=>a.endsWith(".json")).map(async a=>{try{let b=await g.promises.readFile(f().join(c,a),"utf-8"),d=JSON.parse(b),e=d.conversationId||a.replace(/\.json$/,""),h=d.status;return"running"===h&&0===L.$.currentSeq(e)&&(h="error"),{id:e,title:d.title||"Untitled Conversation",flowId:d.flowId||null,...h?{status:h}:{},createdAt:d.createdAt||0,updatedAt:d.updatedAt||0}}catch(b){return aM.warn(`list_conversations: skipping unreadable conversation file ${a}`,b),null}}))).filter(a=>null!==a).sort((a,b)=>b.updatedAt-a.updatedAt),e="number"==typeof a?.limit&&a.limit>0?Math.floor(a.limit):void 0;return aN(e?d.slice(0,e):d)}async function a5(a){let b=String(a?.conversation??"").trim();if(!b)return aN({error:'Provide "conversation": a conversation id (see list_conversations).'},!0);await (0,I.u8)(b);let c=await K(b);if(!c)return aN({error:`No conversation with id "${b}". Use list_conversations to see the stored conversations.`},!0);let d=await (0,I.Os)(b),e=d?(0,I.cc)(d):[],f=e.length>0?e:(c.messages||[]).filter(a=>"system"!==a.role),g="number"==typeof a?.limit&&a.limit>0?Math.floor(a.limit):50,h=[],i=0;for(let a=f.length-1;a>=0&&h.length<g;a--){let b=function(a){let b="";"string"==typeof a.content?b=a.content:Array.isArray(a.content)&&(b=a.content.map(a=>"text"in a&&"string"==typeof a.text?a.text:"").filter(Boolean).join("\n"));let c={role:a.role,...b?{content:b}:{},...a.timestamp?{timestamp:a.timestamp}:{},...a.depth?{depth:a.depth}:{}};return"assistant"===a.role&&Array.isArray(a.tool_calls)&&a.tool_calls.length>0&&(c.toolCalls=a.tool_calls.map(a=>{let b="function"in a?a.function:void 0,c=b&&"string"==typeof b.arguments?b.arguments:void 0;return{id:a.id,...b?.name?{name:b.name}:{},...void 0!==c?{arguments:c.length>2e3?c.slice(0,2e3)+"…[truncated]":c}:{}}})),"tool"===a.role&&a.tool_call_id&&(c.toolCallId=a.tool_call_id),c}(f[a]),c=JSON.stringify(b).length;if(h.length>0&&i+c>1e5)break;h.push(b),i+=c}return h.reverse(),aN({id:c.conversationId||b,title:c.title||"Untitled Conversation",flowId:c.flowId||null,...c.status?{status:c.status}:{},createdAt:c.createdAt||0,updatedAt:c.updatedAt||0,totalMessages:f.length,...h.length<f.length?{note:`Returning the ${h.length} most recent of ${f.length} messages — raise "limit" to get more.`}:{},messages:h})}async function a6(a){let b=String(a?.command??"").trim();if(!b)return aN({error:'Provide "command": a shell command line to run.'},!0);let c=(0,M.ok)(),d="string"==typeof a?.cwd?a.cwd.trim():"",e=d?f().isAbsolute(d)?d:f().join(c,d):c,g=Math.min(1e3*("number"==typeof a?.timeout&&a.timeout>0?a.timeout:60),6e5);return await new Promise(a=>{let c,d,f="",i=!1,k=!1,l=!1,m=a=>{!i&&(f+=a).length>1e5&&(f=f.slice(0,1e5)+"\n…[output truncated]",i=!0)},n="win32"!==process.platform;try{c=(0,h.spawn)(b,{cwd:e,shell:!0,env:process.env,detached:n})}catch(b){a(aN({error:`Failed to start command: ${b instanceof Error?b.message:String(b)}`,cwd:e},!0));return}let o=setTimeout(()=>{l=!0,d=function(a,b=2e3){let c=a.pid;if(void 0===c)return()=>{};if("win32"===process.platform){try{(0,h.spawn)("taskkill",["/pid",String(c),"/T","/F"]).on("error",a=>j.debug(`taskkill failed for pid ${c}: ${a.message}`))}catch(a){j.debug(`taskkill spawn threw for pid ${c}: ${a instanceof Error?a.message:String(a)}`)}return()=>{}}try{process.kill(-c,"SIGTERM")}catch{}let d=setTimeout(()=>{try{process.kill(-c,"SIGKILL")}catch{}},b);return d.unref?.(),()=>clearTimeout(d)}(c)},g),p=b=>{k||(k=!0,clearTimeout(o),d?.(),a(b))};c.stdout?.on("data",a=>m(a.toString())),c.stderr?.on("data",a=>m(a.toString())),c.on("error",a=>{m(`
|
|
62
|
+
${a.message}`),p(aN({error:`Command failed to start: ${a.message}`,cwd:e,output:f},!0))}),c.on("close",a=>{if(l)return void p(aN({timedOut:!0,cwd:e,exitCode:a,output:`${f}
|
|
63
|
+
[killed after ${g/1e3}s timeout]`},!0));p(aN({exitCode:a,cwd:e,output:f},0!==a))})})}async function a7(a,b,c){try{if(aH.includes(b))return await aK(b,c);switch(b){case"execute_flow":return await aQ(c);case"read_flow":return await aT(c);case"update_flow":return await aX(c);case"list_flow_versions":return await aU(c);case"read_flow_version":return await aV(c);case"revert_flow":return await aW(c);case"delete_flow":return await aR(c);case"list_mcp_servers":return await aY(a);case"list_mcp_server_tools":return await aZ(a,c);case"call_mcp_tool":return await a$(a,c);case"restart_mcp_server":return await a_(a,c);case"set_mcp_server_enabled":return await a0(a,c);case"list_models":return await a1();case"list_planned_executions":return await a2();case"run_planned_execution":return await a3(c);case"list_conversations":return await a4(c);case"read_conversation":return await a5(c);case"terminal":return await a6(c);default:return aN({error:`Unknown tool on the built-in FLUJO server: ${b}`},!0)}}catch(a){return aM.error("internalCallTool failed",{toolName:b,err:a}),aN({error:`Tool failed: ${a instanceof Error?a.message:String(a)}`},!0)}}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=4681,exports.ids=[4681,7821],exports.modules={44681:(a,b,c)=>{c.d(b,{Q:()=>j,validateFlowForRun:()=>k});var d=c(50846),e=c(87821),f=c(20433),g=c(23514),h=c(84671);let i=(0,d.h)("backend/execution/flow/validateFlowForRun");async function j(a){let b,c;try{b=await f.modelService.loadModels()}catch(a){i.warn("validateFlowObjectForRun: could not load models; skipping model checks",a)}try{let a=await g.mcpService.loadServerConfigs();Array.isArray(a)&&(c=a.map(a=>({name:a.name,status:a.disabled?"disabled":void 0})))}catch(a){i.warn("validateFlowObjectForRun: could not load servers; skipping server checks",a)}return(0,h.nC)(a,{models:b,servers:c})}async function k(a){let b=await e.flowService.getFlow(a);return b?j(b):(i.warn(`validateFlowForRun: flow ${a} could not be loaded; skipping pre-run checks`),{issues:[],errorCount:0,warningCount:0,isRunnable:!0})}},49181:(a,b,c)=>{c.d(b,{A$:()=>g});let d="_-_-_",e=/^(tool|resource):(.+)$/,f=/\$\{((?:tool|resource):[^}]+|_-_-_[^}]+)\}/g;function g(a){let b,c=[];for(f.lastIndex=0;null!==(b=f.exec(a));){let a=function(a){let b=e.exec(a);if(b){let a=b[1],c=function(a){let b=a.indexOf("__");if(b<=0)return null;let c=a.slice(b+2);return c?{server:a.slice(0,b),name:c}:null}(b[2]);return c?{kind:a,server:c.server,name:c.name}:null}if(a.startsWith(d)){let b=a.split(d);if(3===b.length&&b[1]&&b[2])return{kind:"tool",server:b[1],name:b[2]}}return null}(b[1]);a&&c.push({...a,fullMatch:b[0],index:b.index})}return c}},84671:(a,b,c)=>{c.d(b,{nC:()=>h});var d=c(49181);function e(a){return a.data?.type??a.type??"unknown"}function f(a){return a.data?.label||a.id}function g(a){return a.data?.edgeType==="mcp"}function h(a,b={}){let c=[],i=Array.isArray(a?.nodes)?a.nodes:[],j=Array.isArray(a?.edges)?a.edges:[],k=(a,b,d,e)=>c.push({severity:a,code:b,message:d,nodeId:e?.id,nodeLabel:e?f(e):void 0}),l=new Map((b.models??[]).map(a=>[a.id,a])),m=new Map((b.servers??[]).map(a=>[a.name,a])),n=!!b.models,o=!!b.servers,p=i.filter(a=>"start"===e(a)),q=i.filter(a=>"finish"===e(a)),r=i.filter(a=>"process"===e(a)),s=i.filter(a=>"mcp"===e(a));if(0===p.length)k("error","no-start-node","The flow has no Start node, so it has no entry point.");else if(p.length>1)for(let a of p.slice(1))k("error","multiple-start-nodes","The flow has more than one Start node; only one is allowed.",a);for(let a of(0===q.length&&k("warning","no-finish-node","The flow has no Finish node; it will run but never reaches a defined end."),r)){let b=a.data?.properties??{},c=b.boundModel;if(c){if(n&&!l.has(c)){let c="string"==typeof b.modelName&&b.modelName?` (was "${b.modelName}")`:"";k("error","process-model-missing",`Process node "${f(a)}" is bound to a model that no longer exists${c}.`,a)}}else k("error","process-missing-model",`Process node "${f(a)}" has no model bound.`,a)}for(let a of s){let b=(a.data?.properties??{}).boundServer;if(b){if(o&&!m.has(b))k("warning","mcp-server-missing",`MCP node "${f(a)}" is bound to server "${b}", which isn't in your current MCP server list. It may be offline (e.g. not connected), renamed, or removed — if it was renamed or removed, rebind this node.`,a);else if(o){let c=m.get(b);if(c.status&&"connected"!==c.status){let d="disabled"===c.status?"disabled":`not connected (${c.status})`;k("warning","mcp-server-disconnected",`MCP node "${f(a)}" is bound to server "${b}", which is currently ${d}. It will provide tools again once it reconnects.`,a)}}}else k("warning","mcp-missing-server",`MCP node "${f(a)}" is not bound to a server.`,a);j.some(b=>g(b)&&(b.source===a.id||b.target===a.id))||k("warning","mcp-node-unconnected",`MCP node "${f(a)}" is not connected to any Process node.`,a)}if(p.length>0){let a=function(a){let b=new Map,c=(a,c)=>{b.has(a)||b.set(a,[]),b.get(a).push(c)};for(let b of a)!g(b)&&(c(b.source,b.target),b.data?.bidirectional&&c(b.target,b.source));return b}(j);for(let b of p)a.get(b.id)?.length||k("error","start-no-outgoing","The Start node is not connected to anything; the flow cannot run.",b);let b=function(a,b){let c=new Set(a),d=[...a];for(;d.length;){let a=d.shift();for(let e of b.get(a)??[])c.has(e)||(c.add(e),d.push(e))}return c}(p.map(a=>a.id),a);for(let a of[...r,...q])b.has(a.id)||k("warning","unreachable-node",`${"finish"===e(a)?"Finish":"Process"} node "${f(a)}" is not reachable from the Start node.`,a)}for(let a of i.filter(a=>"subflow"===e(a))){let b=j.filter(b=>!g(b)&&(b.source===a.id||b.target===a.id&&!!b.data?.bidirectional));b.length>1&&k("error","subflow-multiple-outgoing",`Subflow node "${f(a)}" has ${b.length} outgoing connections; a subflow can only have one (either A > B > C or a bidirectional A <> B).`,a)}for(let a of r){let c=a.data?.properties?.promptTemplate;if("string"!=typeof c||!c)continue;let h=function(a,b,c){let d=new Map(b.map(a=>[a.id,a])),f=new Set;for(let b of c){if(!g(b))continue;let c=null;if(b.source===a?c=b.target:b.target===a&&(c=b.source),!c)continue;let h=d.get(c);if(!h||"mcp"!==e(h))continue;let i=h.data?.properties?.boundServer;"string"==typeof i&&i&&f.add(i)}return f}(a.id,i,j),l=new Set;for(let e of(0,d.A$)(c)){if("handoff"===e.server)continue;let c=`${e.kind}:${e.server}:${e.name}`;!l.has(c)&&(l.add(c),h.has(e.server)?"tool"===e.kind&&b.serverTools&&b.serverTools[e.server]&&!b.serverTools[e.server].includes(e.name)&&k("warning","tool-unavailable",`Process node "${f(a)}" references tool "${e.name}" which server "${e.server}" no longer provides.`,a):k("error","tool-pill-disconnected",`Process node "${f(a)}" references ${e.kind} "${e.name}" from server "${e.server}", but it is not connected to that server (the MCP node was removed or the server was renamed).`,a))}}let t=c.filter(a=>"error"===a.severity).length,u=c.length-t;return{issues:c,errorCount:t,warningCount:u,isRunnable:0===t}}},87821:(a,b,c)=>{c.d(b,{flowService:()=>w});var d=c(32524),e=c(92372),f=c(46480),g=c(50846),h=c(33873),i=c.n(h),j=c(29021),k=c(43326);let l=(0,g.h)("backend/services/flow/flowVersions");function m(a){return(0,e.ln)(a),`flow-versions/${a}`}async function n(a){try{let b=m(a.id),c=Date.now(),d=`${c}-${Math.random().toString(36).slice(2,6)}`,f={versionId:d,flowId:a.id,savedAt:c,flow:a};return await (0,e.Vt)(b,d,f),await o(a.id),d}catch(b){return l.warn(`Could not archive a version of flow ${a.id}`,b),null}}async function o(a){let b=m(a),c=await (0,e.pL)(b);if(!(c.length<=25))for(let d of c.sort((a,b)=>b.savedAt-a.savedAt).slice(25))try{await (0,e.bB)(b,d.versionId)}catch(b){l.warn(`Could not prune version ${d.versionId} of flow ${a}`,b)}}async function p(a){return(await (0,e.pL)(m(a))).sort((a,b)=>b.savedAt-a.savedAt).map(a=>({versionId:a.versionId,savedAt:a.savedAt,name:a.flow?.name??"unknown",nodeCount:a.flow?.nodes?.length??0,edgeCount:a.flow?.edges?.length??0}))}async function q(a,b){try{return await (0,e.EI)(m(a),b,null)}catch(c){return l.debug(`getFlowVersion: could not load ${a}/${b}`,c),null}}async function r(a){try{(0,e.ln)(a),await j.promises.rm(i().join((0,k.ok)(),"db","flow-versions",a),{recursive:!0,force:!0})}catch(b){l.warn(`Could not remove version history of flow ${a}`,b)}}let s=(0,g.h)("backend/services/flow/index"),t=f.Z.FLOWS;async function u(){return global.__flujo_flowsMigration||(global.__flujo_flowsMigration=(async()=>{try{await (0,e.w5)(f.Z.FLOWS,t,a=>a.id)}catch(a){s.error("Flow storage migration failed",a),global.__flujo_flowsMigration=void 0}})()),global.__flujo_flowsMigration}class v{get flowsCache(){return global.__flujo_flowsCache??null}set flowsCache(a){global.__flujo_flowsCache=a}async loadFlows(){try{if(this.flowsCache)return s.debug("Using cached flows"),this.flowsCache;s.debug("Loading flows from storage"),await u();let a=await (0,e.pL)(t);return this.flowsCache=a,s.info("Loaded flows from storage",{count:a.length}),a}catch(a){return s.error("Failed to load flows",a),[]}}async getFlow(a){try{s.debug(`Getting flow by ID: ${a}`);let b=this.flowsCache?.find(b=>b.id===a)||null;if(b)return s.debug(`Flow ${a} found in cache`),b;await u();let c=null;try{c=await (0,e.EI)(t,a,null)}catch(b){s.debug(`getFlow: could not load flow ${a}`,b),c=null}if(c&&this.flowsCache){let a=this.flowsCache,b=a.findIndex(a=>a.id===c.id);b>=0?a[b]=c:a.push(c),this.flowsCache=a}return s.debug(`Flow ${a} ${c?"found":"not found"}`),c}catch(b){return s.error(`Failed to get flow ${a}`,b),null}}async invalidateExecutionCache(a){try{let{FlowExecutor:b}=await Promise.all([c.e(6996),c.e(1223),c.e(5734),c.e(1373),c.e(264),c.e(724),c.e(1403)]).then(c.bind(c,91403));b.clearFlowCache(a),s.debug("Invalidated execution flow cache",{flowId:a??"all"})}catch(a){s.warn("Failed to invalidate execution flow cache",a)}}async saveFlow(a){try{s.debug(`Saving flow: ${a.id}`,{name:a.name}),(0,e.ln)(a.id),await u();let b=null;try{b=await (0,e.EI)(t,a.id,null)}catch(b){s.debug(`saveFlow: could not read previous definition of ${a.id} for versioning`,b)}b&&JSON.stringify(b)!==JSON.stringify(a)&&await n(b),await (0,e.Vt)(t,a.id,a);let c=this.flowsCache;if(c){let b=c.findIndex(b=>b.id===a.id);b>=0?c[b]=a:c.push(a),this.flowsCache=c}return await this.invalidateExecutionCache(a.id),s.info(`Flow ${a.id} saved successfully`),{success:!0}}catch(a){return s.error("Failed to save flow",a),{success:!1,error:a instanceof Error?a.message:"Failed to save flow"}}}async deleteFlow(a){try{s.debug(`Deleting flow: ${a}`),await u(),await (0,e.bB)(t,a);let b=this.flowsCache;return b&&(this.flowsCache=b.filter(b=>b.id!==a)),await this.invalidateExecutionCache(a),await r(a),s.info(`Flow ${a} deleted successfully`),{success:!0}}catch(b){return s.error(`Failed to delete flow: ${a}`,b),{success:!1,error:b instanceof Error?b.message:"Failed to delete flow"}}}async listFlowVersions(a){return p(a)}async getFlowVersion(a,b){return q(a,b)}async revertFlow(a,b){let c=await q(a,b);return c?this.saveFlow({...c.flow,id:a}):{success:!1,error:`No version "${b}" of flow ${a}`}}createNode(a,b){s.debug(`Creating new node of type: ${a}`,{position:b});let c={id:(0,d.A)(),type:a,position:b,data:{label:`${"mcp"===a?"MCP":a.charAt(0).toUpperCase()+a.slice(1)} Node`,type:a,properties:{}}};return s.debug(`Node created with ID: ${c.id}`),c}createNewFlow(a="NewFlow"){s.debug(`Creating new flow: ${a}`);let b={id:(0,d.A)(),type:"start",position:{x:250,y:150},data:{label:"Start Node",type:"start",properties:{promptTemplate:""}}},c={id:(0,d.A)(),name:a,nodes:[b],edges:[]};return s.info(`New flow created with ID: ${c.id}`,{name:a}),c}createHistoryEntry(a,b){return s.debug("Creating history entry",{nodeCount:a.length,edgeCount:b.length}),{nodes:[...a],edges:[...b]}}generateSampleFlow(a="Sample Flow"){s.debug(`Generating sample flow: ${a}`);let b={id:(0,d.A)(),name:a,nodes:[{id:"1",type:"start",position:{x:250,y:50},data:{label:"Start Node",type:"start",properties:{prompt:"Enter your query here",systemMessage:"You are a helpful assistant",temperature:0}}},{id:"2",type:"process",position:{x:250,y:200},data:{label:"Process Node",type:"process",properties:{operation:"transform",enabled:!0}}},{id:"3",type:"finish",position:{x:250,y:350},data:{label:"Finish Node",type:"finish",properties:{format:"json",template:'{ "result": {{data}} }'}}},{id:"4",type:"mcp",position:{x:450,y:200},data:{label:"MCP Node",type:"mcp",properties:{channels:2,mode:"parallel"}}}],edges:[{id:"e1-2",source:"1",target:"2",type:"custom"},{id:"e2-3",source:"2",target:"3",type:"custom"}]};return s.info(`Sample flow generated with ID: ${b.id}`,{name:a}),b}async listFlows(){s.debug("listFlows: Entering method");try{let a=await this.loadFlows();return{success:!0,flows:a}}catch(a){return s.warn("listFlows: Failed to list flows:",a),{success:!1,error:a instanceof Error?a.message:"Failed to list flows"}}}}let w=new v}};
|
|
1
|
+
"use strict";exports.id=4681,exports.ids=[4681],exports.modules={44681:(a,b,c)=>{c.d(b,{Q:()=>j,validateFlowForRun:()=>k});var d=c(50846),e=c(87821),f=c(20433),g=c(23514),h=c(84671);let i=(0,d.h)("backend/execution/flow/validateFlowForRun");async function j(a){let b,c;try{b=await f.modelService.loadModels()}catch(a){i.warn("validateFlowObjectForRun: could not load models; skipping model checks",a)}try{let a=await g.mcpService.loadServerConfigs();Array.isArray(a)&&(c=a.map(a=>({name:a.name,status:a.disabled?"disabled":void 0})))}catch(a){i.warn("validateFlowObjectForRun: could not load servers; skipping server checks",a)}return(0,h.nC)(a,{models:b,servers:c})}async function k(a){let b=await e.flowService.getFlow(a);return b?j(b):(i.warn(`validateFlowForRun: flow ${a} could not be loaded; skipping pre-run checks`),{issues:[],errorCount:0,warningCount:0,isRunnable:!0})}},84671:(a,b,c)=>{c.d(b,{nC:()=>j});var d=c(49181),e=c(45131),f=c(41527);function g(a){return a.data?.type??a.type??"unknown"}function h(a){return a.data?.label||a.id}function i(a){return a.data?.edgeType==="mcp"}function j(a,b={}){let c=[],k=Array.isArray(a?.nodes)?a.nodes:[],l=Array.isArray(a?.edges)?a.edges:[],m=(a,b,d,e)=>c.push({severity:a,code:b,message:d,nodeId:e?.id,nodeLabel:e?h(e):void 0}),n=new Map((b.models??[]).map(a=>[a.id,a])),o=new Map((b.servers??[]).map(a=>[a.name,a])),p=!!b.models,q=!!b.servers,r=k.filter(a=>"start"===g(a)),s=k.filter(a=>"finish"===g(a)),t=k.filter(a=>"process"===g(a)),u=k.filter(a=>"mcp"===g(a));if(0===r.length)m("error","no-start-node","The flow has no Start node, so it has no entry point.");else if(r.length>1)for(let a of r.slice(1))m("error","multiple-start-nodes","The flow has more than one Start node; only one is allowed.",a);for(let a of(0===s.length&&m("warning","no-finish-node","The flow has no Finish node; it will run but never reaches a defined end."),t)){let b=a.data?.properties??{},c=b.boundModel;if(c){if(p&&!n.has(c)){let c="string"==typeof b.modelName&&b.modelName?` (was "${b.modelName}")`:"";m("error","process-model-missing",`Process node "${h(a)}" is bound to a model that no longer exists${c}.`,a)}}else m("error","process-missing-model",`Process node "${h(a)}" has no model bound.`,a)}for(let a of u){let b=(a.data?.properties??{}).boundServer;if(b){if(q&&!o.has(b))m("warning","mcp-server-missing",`MCP node "${h(a)}" is bound to server "${b}", which isn't in your current MCP server list. It may be offline (e.g. not connected), renamed, or removed — if it was renamed or removed, rebind this node.`,a);else if(q){let c=o.get(b);if(c.status&&"connected"!==c.status){let d="disabled"===c.status?"disabled":`not connected (${c.status})`;m("warning","mcp-server-disconnected",`MCP node "${h(a)}" is bound to server "${b}", which is currently ${d}. It will provide tools again once it reconnects.`,a)}}}else m("warning","mcp-missing-server",`MCP node "${h(a)}" is not bound to a server.`,a);l.some(b=>i(b)&&(b.source===a.id||b.target===a.id))||m("warning","mcp-node-unconnected",`MCP node "${h(a)}" is not connected to any Process node.`,a)}if(r.length>0){let a=function(a){let b=new Map,c=(a,c)=>{b.has(a)||b.set(a,[]),b.get(a).push(c)};for(let b of a)!i(b)&&(c(b.source,b.target),b.data?.bidirectional&&c(b.target,b.source));return b}(l);for(let b of r)a.get(b.id)?.length||m("error","start-no-outgoing","The Start node is not connected to anything; the flow cannot run.",b);let b=function(a,b){let c=new Set(a),d=[...a];for(;d.length;){let a=d.shift();for(let e of b.get(a)??[])c.has(e)||(c.add(e),d.push(e))}return c}(r.map(a=>a.id),a);for(let a of[...t,...s])b.has(a.id)||m("warning","unreachable-node",`${"finish"===g(a)?"Finish":"Process"} node "${h(a)}" is not reachable from the Start node.`,a)}for(let a of k.filter(a=>"subflow"===g(a))){let b=l.filter(b=>!i(b)&&(b.source===a.id||b.target===a.id&&!!b.data?.bidirectional));b.length>1&&m("error","subflow-multiple-outgoing",`Subflow node "${h(a)}" has ${b.length} outgoing connections; a subflow can only have one (either A > B > C or a bidirectional A <> B).`,a);let c=a.data?.properties??{},d="string"==typeof c.subflowId&&c.subflowId?c.subflowId:void 0,e=Array.isArray(c.parallelSubflowIds)?c.parallelSubflowIds.filter(a=>"string"==typeof a&&!!a):[];d&&e.length>0&&m("error","subflow-both-targets",`Subflow node "${h(a)}" sets both a single "subflowId" and "parallelSubflowIds"; use one or the other.`,a);let f=!0===c.mapOverList;if(f&&e.length>0&&m("error","subflow-map-and-parallel",`Subflow node "${h(a)}" combines "mapOverList" with "parallelSubflowIds"; map-over-list runs a single child once per item and cannot be combined with parallel fan-out.`,a),f&&!d&&0===e.length&&m("error","subflow-map-no-child",`Subflow node "${h(a)}" has "mapOverList" but no child flow ("subflowId"); select a flow to run once per item.`,a),e.length>0){let b=c.concurrencyLimit;"number"==typeof b&&b<1&&m("warning","subflow-concurrency-limit",`Subflow node "${h(a)}" has a concurrencyLimit of ${b}; it must be at least 1 (the runtime default will be used).`,a)}}{let a=new Map(k.map(a=>[a.id,a])),b=new Set;for(let c of l){if(i(c))continue;let d=c.data?.condition;if(!d||"object"!=typeof d)continue;let f=a.get(c.source),j=f?g(f):"unknown";if("process"!==j){m("error","edge-condition-non-process",`An edge leaving ${"unknown"===j?"an unknown":`the ${j}`} node "${f?h(f):c.source}" has a routing condition, but only process nodes can route on a condition.`,f??void 0);continue}b.add(c.source),(0,e.C)(d.kind)?"string"!=typeof d.value||0===d.value.length?m("warning","edge-condition-value",`Process node "${h(f)}" has an outgoing edge condition with no "value"; it will never match.`,f):"regex"!==d.kind||(0,e.wM)(d.value)||m("warning","edge-condition-regex",`Process node "${h(f)}" has an outgoing edge with a regex condition that does not compile; it will never match.`,f):m("warning","edge-condition-kind",`Process node "${h(f)}" has an outgoing edge whose condition kind "${String(d.kind)}" is unknown; it will never match.`,f)}for(let c of b){let b=a.get(c);b&&(l.some(a=>!i(a)&&(a.source===c?!a.data?.condition:!!(a.target===c&&a.data?.bidirectional)))||m("warning","edge-condition-no-fallback",`Process node "${h(b)}" has conditioned outgoing edges but no bare fallback edge; if no condition matches, the flow ends here.`,b))}}{let a=new Set;for(let b of k){let c=b.data?.properties?.captureVariable;if("string"==typeof c&&c.trim()){let d=c.trim();a.add(d),(0,f.qW)(d)||m("warning","capture-var-name",`${"subflow"===g(b)?"Subflow":"Process"} node "${h(b)}" captures into "${d}", which is not a valid variable name (letters, digits, _ and - only, not starting with a digit); it will be awkward to reference with \${var:...}.`,b)}}let b=["promptTemplate","isolatedPrompt"],c=new Set;for(let d of k){let e=d.data?.properties??{};for(let g of b){let b=e[g];if("string"==typeof b&&b)for(let e of(0,f.T9)(b)){if(a.has(e))continue;let b=`${d.id}:${e}`;c.has(b)||(c.add(b),m("warning","var-ref-uncaptured",`${h(d)} references \${var:${e}} but no step in this flow captures "${e}" (via captureVariable). It resolves to empty unless supplied as a run input — check for a typo or a step ordered after this one.`,d))}}}}for(let a of t){let c=a.data?.properties?.promptTemplate;if("string"!=typeof c||!c)continue;let e=function(a,b,c){let d=new Map(b.map(a=>[a.id,a])),e=new Set;for(let b of c){if(!i(b))continue;let c=null;if(b.source===a?c=b.target:b.target===a&&(c=b.source),!c)continue;let f=d.get(c);if(!f||"mcp"!==g(f))continue;let h=f.data?.properties?.boundServer;"string"==typeof h&&h&&e.add(h)}return e}(a.id,k,l),f=new Set;for(let g of(0,d.A$)(c)){if("handoff"===g.server)continue;let c=`${g.kind}:${g.server}:${g.name}`;!f.has(c)&&(f.add(c),e.has(g.server)?"tool"===g.kind&&b.serverTools&&b.serverTools[g.server]&&!b.serverTools[g.server].includes(g.name)&&m("warning","tool-unavailable",`Process node "${h(a)}" references tool "${g.name}" which server "${g.server}" no longer provides.`,a):m("error","tool-pill-disconnected",`Process node "${h(a)}" references ${g.kind} "${g.name}" from server "${g.server}", but it is not connected to that server (the MCP node was removed or the server was renamed).`,a))}}let v=c.filter(a=>"error"===a.severity).length,w=c.length-v;return{issues:c,errorCount:v,warningCount:w,isRunnable:0===v}}}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=4949,exports.ids=[4949],exports.modules={354:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M20 6h-8l-2-2H7.17l4 4H20v9.17l1.76 1.76c.15-.28.24-.59.24-.93V8c0-1.1-.9-2-2-2M2.1 2.1.69 3.51l1.56 1.56c-.15.28-.24.59-.24.93L2 18c0 1.1.9 2 2 2h13.17l3.31 3.31 1.41-1.41zM4 18V6.83L15.17 18z"}),"FolderOffOutlined")},8165:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),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 2m-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8z"}),"CheckCircle")},12033:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83 3.75 3.75z"}),"Edit")},18467:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"m9.17 6 2 2H20v10H4V6zM10 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8z"}),"FolderOutlined")},27114:(a,b,c)=>{c.d(b,{A:()=>n});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(6636),i=c(29565),j=c(33105);function k(a){return(0,j.Ay)("MuiCardContent",a)}(0,i.A)("MuiCardContent",["root"]);var l=c(21124);let m=(0,g.Ay)("div",{name:"MuiCardContent",slot:"Root",overridesResolver:(a,b)=>b.root})({padding:16,"&:last-child":{paddingBottom:24}}),n=d.forwardRef(function(a,b){let c=(0,h.b)({props:a,name:"MuiCardContent"}),{className:d,component:g="div",...i}=c,j={...c,component:g},n=(a=>{let{classes:b}=a;return(0,f.A)({root:["root"]},k,b)})(j);return(0,l.jsx)(m,{as:g,className:(0,e.A)(n.root,d),ownerState:j,ref:b,...i})})},30818:(a,b,c)=>{c.d(b,{A:()=>o});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(6636),i=c(54573),j=c(29565),k=c(33105);function l(a){return(0,k.Ay)("MuiCard",a)}(0,j.A)("MuiCard",["root"]);var m=c(21124);let n=(0,g.Ay)(i.A,{name:"MuiCard",slot:"Root",overridesResolver:(a,b)=>b.root})({overflow:"hidden"}),o=d.forwardRef(function(a,b){let c=(0,h.b)({props:a,name:"MuiCard"}),{className:d,raised:g=!1,...i}=c,j={...c,raised:g},k=(a=>{let{classes:b}=a;return(0,f.A)({root:["root"]},l,b)})(j);return(0,m.jsx)(n,{className:(0,e.A)(k.root,d),elevation:g?8:void 0,ref:b,ownerState:j,...i})})},31605:(a,b,c)=>{c.d(b,{A:()=>ay});var d=c(38404),e=c(38301),f=c(67943),g=c(75249),h=c(46757);function i(a){if(null==a)return window;if("[object Window]"!==a.toString()){var b=a.ownerDocument;return b&&b.defaultView||window}return a}function j(a){var b=i(a).Element;return a instanceof b||a instanceof Element}function k(a){var b=i(a).HTMLElement;return a instanceof b||a instanceof HTMLElement}function l(a){if("undefined"==typeof ShadowRoot)return!1;var b=i(a).ShadowRoot;return a instanceof b||a instanceof ShadowRoot}var m=Math.max,n=Math.min,o=Math.round;function p(){var a=navigator.userAgentData;return null!=a&&a.brands&&Array.isArray(a.brands)?a.brands.map(function(a){return a.brand+"/"+a.version}).join(" "):navigator.userAgent}function q(){return!/^((?!chrome|android).)*safari/i.test(p())}function r(a,b,c){void 0===b&&(b=!1),void 0===c&&(c=!1);var d=a.getBoundingClientRect(),e=1,f=1;b&&k(a)&&(e=a.offsetWidth>0&&o(d.width)/a.offsetWidth||1,f=a.offsetHeight>0&&o(d.height)/a.offsetHeight||1);var g=(j(a)?i(a):window).visualViewport,h=!q()&&c,l=(d.left+(h&&g?g.offsetLeft:0))/e,m=(d.top+(h&&g?g.offsetTop:0))/f,n=d.width/e,p=d.height/f;return{width:n,height:p,top:m,right:l+n,bottom:m+p,left:l,x:l,y:m}}function s(a){var b=i(a);return{scrollLeft:b.pageXOffset,scrollTop:b.pageYOffset}}function t(a){return a?(a.nodeName||"").toLowerCase():null}function u(a){return((j(a)?a.ownerDocument:a.document)||window.document).documentElement}function v(a){return r(u(a)).left+s(a).scrollLeft}function w(a){return i(a).getComputedStyle(a)}function x(a){var b=w(a),c=b.overflow,d=b.overflowX,e=b.overflowY;return/auto|scroll|overlay|hidden/.test(c+e+d)}function y(a){var b=r(a),c=a.offsetWidth,d=a.offsetHeight;return 1>=Math.abs(b.width-c)&&(c=b.width),1>=Math.abs(b.height-d)&&(d=b.height),{x:a.offsetLeft,y:a.offsetTop,width:c,height:d}}function z(a){return"html"===t(a)?a:a.assignedSlot||a.parentNode||(l(a)?a.host:null)||u(a)}function A(a,b){void 0===b&&(b=[]);var c,d=function a(b){return["html","body","#document"].indexOf(t(b))>=0?b.ownerDocument.body:k(b)&&x(b)?b:a(z(b))}(a),e=d===(null==(c=a.ownerDocument)?void 0:c.body),f=i(d),g=e?[f].concat(f.visualViewport||[],x(d)?d:[]):d,h=b.concat(g);return e?h:h.concat(A(z(g)))}function B(a){return k(a)&&"fixed"!==w(a).position?a.offsetParent:null}function C(a){for(var b=i(a),c=B(a);c&&["table","td","th"].indexOf(t(c))>=0&&"static"===w(c).position;)c=B(c);return c&&("html"===t(c)||"body"===t(c)&&"static"===w(c).position)?b:c||function(a){var b=/firefox/i.test(p());if(/Trident/i.test(p())&&k(a)&&"fixed"===w(a).position)return null;var c=z(a);for(l(c)&&(c=c.host);k(c)&&0>["html","body"].indexOf(t(c));){var d=w(c);if("none"!==d.transform||"none"!==d.perspective||"paint"===d.contain||-1!==["transform","perspective"].indexOf(d.willChange)||b&&"filter"===d.willChange||b&&d.filter&&"none"!==d.filter)return c;c=c.parentNode}return null}(a)||b}var D="bottom",E="right",F="left",G="auto",H=["top",D,E,F],I="start",J="viewport",K="popper",L=H.reduce(function(a,b){return a.concat([b+"-"+I,b+"-end"])},[]),M=[].concat(H,[G]).reduce(function(a,b){return a.concat([b,b+"-"+I,b+"-end"])},[]),N=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"],O={placement:"bottom",modifiers:[],strategy:"absolute"};function P(){for(var a=arguments.length,b=Array(a),c=0;c<a;c++)b[c]=arguments[c];return!b.some(function(a){return!(a&&"function"==typeof a.getBoundingClientRect)})}var Q={passive:!0};function R(a){return a.split("-")[0]}function S(a){return a.split("-")[1]}function T(a){return["top","bottom"].indexOf(a)>=0?"x":"y"}function U(a){var b,c=a.reference,d=a.element,e=a.placement,f=e?R(e):null,g=e?S(e):null,h=c.x+c.width/2-d.width/2,i=c.y+c.height/2-d.height/2;switch(f){case"top":b={x:h,y:c.y-d.height};break;case D:b={x:h,y:c.y+c.height};break;case E:b={x:c.x+c.width,y:i};break;case F:b={x:c.x-d.width,y:i};break;default:b={x:c.x,y:c.y}}var j=f?T(f):null;if(null!=j){var k="y"===j?"height":"width";switch(g){case I:b[j]=b[j]-(c[k]/2-d[k]/2);break;case"end":b[j]=b[j]+(c[k]/2-d[k]/2)}}return b}var V={top:"auto",right:"auto",bottom:"auto",left:"auto"};function W(a){var b,c,d,e,f,g,h,j=a.popper,k=a.popperRect,l=a.placement,m=a.variation,n=a.offsets,p=a.position,q=a.gpuAcceleration,r=a.adaptive,s=a.roundOffsets,t=a.isFixed,v=n.x,x=void 0===v?0:v,y=n.y,z=void 0===y?0:y,A="function"==typeof s?s({x:x,y:z}):{x:x,y:z};x=A.x,z=A.y;var B=n.hasOwnProperty("x"),G=n.hasOwnProperty("y"),H=F,I="top",J=window;if(r){var K=C(j),L="clientHeight",M="clientWidth";K===i(j)&&"static"!==w(K=u(j)).position&&"absolute"===p&&(L="scrollHeight",M="scrollWidth"),("top"===l||(l===F||l===E)&&"end"===m)&&(I=D,z-=(t&&K===J&&J.visualViewport?J.visualViewport.height:K[L])-k.height,z*=q?1:-1),(l===F||("top"===l||l===D)&&"end"===m)&&(H=E,x-=(t&&K===J&&J.visualViewport?J.visualViewport.width:K[M])-k.width,x*=q?1:-1)}var N=Object.assign({position:p},r&&V),O=!0===s?(b={x:x,y:z},c=i(j),d=b.x,e=b.y,{x:o(d*(f=c.devicePixelRatio||1))/f||0,y:o(e*f)/f||0}):{x:x,y:z};return(x=O.x,z=O.y,q)?Object.assign({},N,((h={})[I]=G?"0":"",h[H]=B?"0":"",h.transform=1>=(J.devicePixelRatio||1)?"translate("+x+"px, "+z+"px)":"translate3d("+x+"px, "+z+"px, 0)",h)):Object.assign({},N,((g={})[I]=G?z+"px":"",g[H]=B?x+"px":"",g.transform="",g))}var X={left:"right",right:"left",bottom:"top",top:"bottom"};function Y(a){return a.replace(/left|right|bottom|top/g,function(a){return X[a]})}var Z={start:"end",end:"start"};function $(a){return a.replace(/start|end/g,function(a){return Z[a]})}function _(a,b){var c=b.getRootNode&&b.getRootNode();if(a.contains(b))return!0;if(c&&l(c)){var d=b;do{if(d&&a.isSameNode(d))return!0;d=d.parentNode||d.host}while(d)}return!1}function aa(a){return Object.assign({},a,{left:a.x,top:a.y,right:a.x+a.width,bottom:a.y+a.height})}function ab(a,b,c){var d,e,f,g,h,k,l,n,o,p;return b===J?aa(function(a,b){var c=i(a),d=u(a),e=c.visualViewport,f=d.clientWidth,g=d.clientHeight,h=0,j=0;if(e){f=e.width,g=e.height;var k=q();(k||!k&&"fixed"===b)&&(h=e.offsetLeft,j=e.offsetTop)}return{width:f,height:g,x:h+v(a),y:j}}(a,c)):j(b)?((d=r(b,!1,"fixed"===c)).top=d.top+b.clientTop,d.left=d.left+b.clientLeft,d.bottom=d.top+b.clientHeight,d.right=d.left+b.clientWidth,d.width=b.clientWidth,d.height=b.clientHeight,d.x=d.left,d.y=d.top,d):aa((e=u(a),g=u(e),h=s(e),k=null==(f=e.ownerDocument)?void 0:f.body,l=m(g.scrollWidth,g.clientWidth,k?k.scrollWidth:0,k?k.clientWidth:0),n=m(g.scrollHeight,g.clientHeight,k?k.scrollHeight:0,k?k.clientHeight:0),o=-h.scrollLeft+v(e),p=-h.scrollTop,"rtl"===w(k||g).direction&&(o+=m(g.clientWidth,k?k.clientWidth:0)-l),{width:l,height:n,x:o,y:p}))}function ac(){return{top:0,right:0,bottom:0,left:0}}function ad(a){return Object.assign({},ac(),a)}function ae(a,b){return b.reduce(function(b,c){return b[c]=a,b},{})}function af(a,b){void 0===b&&(b={});var c,d,e,f,g,h,i,l,o=b,p=o.placement,q=void 0===p?a.placement:p,s=o.strategy,v=void 0===s?a.strategy:s,x=o.boundary,y=o.rootBoundary,B=o.elementContext,F=void 0===B?K:B,G=o.altBoundary,I=o.padding,L=void 0===I?0:I,M=ad("number"!=typeof L?L:ae(L,H)),N=a.rects.popper,O=a.elements[void 0!==G&&G?F===K?"reference":K:F],P=(c=j(O)?O:O.contextElement||u(a.elements.popper),d=void 0===x?"clippingParents":x,e=void 0===y?J:y,i=(h=[].concat("clippingParents"===d?(f=A(z(c)),!j(g=["absolute","fixed"].indexOf(w(c).position)>=0&&k(c)?C(c):c)?[]:f.filter(function(a){return j(a)&&_(a,g)&&"body"!==t(a)})):[].concat(d),[e]))[0],(l=h.reduce(function(a,b){var d=ab(c,b,v);return a.top=m(d.top,a.top),a.right=n(d.right,a.right),a.bottom=n(d.bottom,a.bottom),a.left=m(d.left,a.left),a},ab(c,i,v))).width=l.right-l.left,l.height=l.bottom-l.top,l.x=l.left,l.y=l.top,l),Q=r(a.elements.reference),R=U({reference:Q,element:N,strategy:"absolute",placement:q}),S=aa(Object.assign({},N,R)),T=F===K?S:Q,V={top:P.top-T.top+M.top,bottom:T.bottom-P.bottom+M.bottom,left:P.left-T.left+M.left,right:T.right-P.right+M.right},W=a.modifiersData.offset;if(F===K&&W){var X=W[q];Object.keys(V).forEach(function(a){var b=[E,D].indexOf(a)>=0?1:-1,c=["top",D].indexOf(a)>=0?"y":"x";V[a]+=X[c]*b})}return V}function ag(a,b,c){return m(a,n(b,c))}function ah(a,b,c){return void 0===c&&(c={x:0,y:0}),{top:a.top-b.height-c.y,right:a.right-b.width+c.x,bottom:a.bottom-b.height+c.y,left:a.left-b.width-c.x}}function ai(a){return["top",E,D,F].some(function(b){return a[b]>=0})}var aj=function(a){void 0===a&&(a={});var b=a,c=b.defaultModifiers,d=void 0===c?[]:c,e=b.defaultOptions,f=void 0===e?O:e;return function(a,b,c){void 0===c&&(c=f);var e,g,h={placement:"bottom",orderedModifiers:[],options:Object.assign({},O,f),modifiersData:{},elements:{reference:a,popper:b},attributes:{},styles:{}},l=[],m=!1,n={state:h,setOptions:function(c){var e,g,i,k,m,o,q="function"==typeof c?c(h.options):c;p(),h.options=Object.assign({},f,h.options,q),h.scrollParents={reference:j(a)?A(a):a.contextElement?A(a.contextElement):[],popper:A(b)};var r=(g=Object.keys(e=[].concat(d,h.options.modifiers).reduce(function(a,b){var c=a[b.name];return a[b.name]=c?Object.assign({},c,b,{options:Object.assign({},c.options,b.options),data:Object.assign({},c.data,b.data)}):b,a},{})).map(function(a){return e[a]}),i=new Map,k=new Set,m=[],g.forEach(function(a){i.set(a.name,a)}),g.forEach(function(a){k.has(a.name)||function a(b){k.add(b.name),[].concat(b.requires||[],b.requiresIfExists||[]).forEach(function(b){if(!k.has(b)){var c=i.get(b);c&&a(c)}}),m.push(b)}(a)}),o=m,N.reduce(function(a,b){return a.concat(o.filter(function(a){return a.phase===b}))},[]));return h.orderedModifiers=r.filter(function(a){return a.enabled}),h.orderedModifiers.forEach(function(a){var b=a.name,c=a.options,d=a.effect;if("function"==typeof d){var e=d({state:h,name:b,instance:n,options:void 0===c?{}:c});l.push(e||function(){})}}),n.update()},forceUpdate:function(){if(!m){var a=h.elements,b=a.reference,c=a.popper;if(P(b,c)){h.rects={reference:(d=C(c),e="fixed"===h.options.strategy,f=k(d),p=k(d)&&(j=o((g=d.getBoundingClientRect()).width)/d.offsetWidth||1,l=o(g.height)/d.offsetHeight||1,1!==j||1!==l),q=u(d),w=r(b,p,e),z={scrollLeft:0,scrollTop:0},A={x:0,y:0},(f||!f&&!e)&&(("body"!==t(d)||x(q))&&(z=function(a){return a!==i(a)&&k(a)?{scrollLeft:a.scrollLeft,scrollTop:a.scrollTop}:s(a)}(d)),k(d)?(A=r(d,!0),A.x+=d.clientLeft,A.y+=d.clientTop):q&&(A.x=v(q))),{x:w.left+z.scrollLeft-A.x,y:w.top+z.scrollTop-A.y,width:w.width,height:w.height}),popper:y(c)},h.reset=!1,h.placement=h.options.placement,h.orderedModifiers.forEach(function(a){return h.modifiersData[a.name]=Object.assign({},a.data)});for(var d,e,f,g,j,l,p,q,w,z,A,B=0;B<h.orderedModifiers.length;B++){if(!0===h.reset){h.reset=!1,B=-1;continue}var D=h.orderedModifiers[B],E=D.fn,F=D.options,G=void 0===F?{}:F,H=D.name;"function"==typeof E&&(h=E({state:h,options:G,name:H,instance:n})||h)}}}},update:(e=function(){return new Promise(function(a){n.forceUpdate(),a(h)})},function(){return g||(g=new Promise(function(a){Promise.resolve().then(function(){g=void 0,a(e())})})),g}),destroy:function(){p(),m=!0}};if(!P(a,b))return n;function p(){l.forEach(function(a){return a()}),l=[]}return n.setOptions(c).then(function(a){!m&&c.onFirstUpdate&&c.onFirstUpdate(a)}),n}}({defaultModifiers:[{name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(a){var b=a.state,c=a.instance,d=a.options,e=d.scroll,f=void 0===e||e,g=d.resize,h=void 0===g||g,j=i(b.elements.popper),k=[].concat(b.scrollParents.reference,b.scrollParents.popper);return f&&k.forEach(function(a){a.addEventListener("scroll",c.update,Q)}),h&&j.addEventListener("resize",c.update,Q),function(){f&&k.forEach(function(a){a.removeEventListener("scroll",c.update,Q)}),h&&j.removeEventListener("resize",c.update,Q)}},data:{}},{name:"popperOffsets",enabled:!0,phase:"read",fn:function(a){var b=a.state,c=a.name;b.modifiersData[c]=U({reference:b.rects.reference,element:b.rects.popper,strategy:"absolute",placement:b.placement})},data:{}},{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(a){var b=a.state,c=a.options,d=c.gpuAcceleration,e=c.adaptive,f=c.roundOffsets,g=void 0===f||f,h={placement:R(b.placement),variation:S(b.placement),popper:b.elements.popper,popperRect:b.rects.popper,gpuAcceleration:void 0===d||d,isFixed:"fixed"===b.options.strategy};null!=b.modifiersData.popperOffsets&&(b.styles.popper=Object.assign({},b.styles.popper,W(Object.assign({},h,{offsets:b.modifiersData.popperOffsets,position:b.options.strategy,adaptive:void 0===e||e,roundOffsets:g})))),null!=b.modifiersData.arrow&&(b.styles.arrow=Object.assign({},b.styles.arrow,W(Object.assign({},h,{offsets:b.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:g})))),b.attributes.popper=Object.assign({},b.attributes.popper,{"data-popper-placement":b.placement})},data:{}},{name:"applyStyles",enabled:!0,phase:"write",fn:function(a){var b=a.state;Object.keys(b.elements).forEach(function(a){var c=b.styles[a]||{},d=b.attributes[a]||{},e=b.elements[a];k(e)&&t(e)&&(Object.assign(e.style,c),Object.keys(d).forEach(function(a){var b=d[a];!1===b?e.removeAttribute(a):e.setAttribute(a,!0===b?"":b)}))})},effect:function(a){var b=a.state,c={popper:{position:b.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(b.elements.popper.style,c.popper),b.styles=c,b.elements.arrow&&Object.assign(b.elements.arrow.style,c.arrow),function(){Object.keys(b.elements).forEach(function(a){var d=b.elements[a],e=b.attributes[a]||{},f=Object.keys(b.styles.hasOwnProperty(a)?b.styles[a]:c[a]).reduce(function(a,b){return a[b]="",a},{});k(d)&&t(d)&&(Object.assign(d.style,f),Object.keys(e).forEach(function(a){d.removeAttribute(a)}))})}},requires:["computeStyles"]},{name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(a){var b=a.state,c=a.options,d=a.name,e=c.offset,f=void 0===e?[0,0]:e,g=M.reduce(function(a,c){var d,e,g,h,i,j;return a[c]=(d=b.rects,g=[F,"top"].indexOf(e=R(c))>=0?-1:1,i=(h="function"==typeof f?f(Object.assign({},d,{placement:c})):f)[0],j=h[1],i=i||0,j=(j||0)*g,[F,E].indexOf(e)>=0?{x:j,y:i}:{x:i,y:j}),a},{}),h=g[b.placement],i=h.x,j=h.y;null!=b.modifiersData.popperOffsets&&(b.modifiersData.popperOffsets.x+=i,b.modifiersData.popperOffsets.y+=j),b.modifiersData[d]=g}},{name:"flip",enabled:!0,phase:"main",fn:function(a){var b=a.state,c=a.options,d=a.name;if(!b.modifiersData[d]._skip){for(var e=c.mainAxis,f=void 0===e||e,g=c.altAxis,h=void 0===g||g,i=c.fallbackPlacements,j=c.padding,k=c.boundary,l=c.rootBoundary,m=c.altBoundary,n=c.flipVariations,o=void 0===n||n,p=c.allowedAutoPlacements,q=b.options.placement,r=R(q)===q,s=i||(r||!o?[Y(q)]:function(a){if(R(a)===G)return[];var b=Y(a);return[$(a),b,$(b)]}(q)),t=[q].concat(s).reduce(function(a,c){var d,e,f,g,h,i,m,n,q,r,s,t;return a.concat(R(c)===G?(e=(d={placement:c,boundary:k,rootBoundary:l,padding:j,flipVariations:o,allowedAutoPlacements:p}).placement,f=d.boundary,g=d.rootBoundary,h=d.padding,i=d.flipVariations,n=void 0===(m=d.allowedAutoPlacements)?M:m,0===(s=(r=(q=S(e))?i?L:L.filter(function(a){return S(a)===q}):H).filter(function(a){return n.indexOf(a)>=0})).length&&(s=r),Object.keys(t=s.reduce(function(a,c){return a[c]=af(b,{placement:c,boundary:f,rootBoundary:g,padding:h})[R(c)],a},{})).sort(function(a,b){return t[a]-t[b]})):c)},[]),u=b.rects.reference,v=b.rects.popper,w=new Map,x=!0,y=t[0],z=0;z<t.length;z++){var A=t[z],B=R(A),C=S(A)===I,J=["top",D].indexOf(B)>=0,K=J?"width":"height",N=af(b,{placement:A,boundary:k,rootBoundary:l,altBoundary:m,padding:j}),O=J?C?E:F:C?D:"top";u[K]>v[K]&&(O=Y(O));var P=Y(O),Q=[];if(f&&Q.push(N[B]<=0),h&&Q.push(N[O]<=0,N[P]<=0),Q.every(function(a){return a})){y=A,x=!1;break}w.set(A,Q)}if(x)for(var T=o?3:1,U=function(a){var b=t.find(function(b){var c=w.get(b);if(c)return c.slice(0,a).every(function(a){return a})});if(b)return y=b,"break"},V=T;V>0&&"break"!==U(V);V--);b.placement!==y&&(b.modifiersData[d]._skip=!0,b.placement=y,b.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}},{name:"preventOverflow",enabled:!0,phase:"main",fn:function(a){var b=a.state,c=a.options,d=a.name,e=c.mainAxis,f=c.altAxis,g=c.boundary,h=c.rootBoundary,i=c.altBoundary,j=c.padding,k=c.tether,l=void 0===k||k,o=c.tetherOffset,p=void 0===o?0:o,q=af(b,{boundary:g,rootBoundary:h,padding:j,altBoundary:i}),r=R(b.placement),s=S(b.placement),t=!s,u=T(r),v="x"===u?"y":"x",w=b.modifiersData.popperOffsets,x=b.rects.reference,z=b.rects.popper,A="function"==typeof p?p(Object.assign({},b.rects,{placement:b.placement})):p,B="number"==typeof A?{mainAxis:A,altAxis:A}:Object.assign({mainAxis:0,altAxis:0},A),G=b.modifiersData.offset?b.modifiersData.offset[b.placement]:null,H={x:0,y:0};if(w){if(void 0===e||e){var J,K="y"===u?"top":F,L="y"===u?D:E,M="y"===u?"height":"width",N=w[u],O=N+q[K],P=N-q[L],Q=l?-z[M]/2:0,U=s===I?x[M]:z[M],V=s===I?-z[M]:-x[M],W=b.elements.arrow,X=l&&W?y(W):{width:0,height:0},Y=b.modifiersData["arrow#persistent"]?b.modifiersData["arrow#persistent"].padding:ac(),Z=Y[K],$=Y[L],_=ag(0,x[M],X[M]),aa=t?x[M]/2-Q-_-Z-B.mainAxis:U-_-Z-B.mainAxis,ab=t?-x[M]/2+Q+_+$+B.mainAxis:V+_+$+B.mainAxis,ad=b.elements.arrow&&C(b.elements.arrow),ae=ad?"y"===u?ad.clientTop||0:ad.clientLeft||0:0,ah=null!=(J=null==G?void 0:G[u])?J:0,ai=ag(l?n(O,N+aa-ah-ae):O,N,l?m(P,N+ab-ah):P);w[u]=ai,H[u]=ai-N}if(void 0!==f&&f){var aj,ak,al="x"===u?"top":F,am="x"===u?D:E,an=w[v],ao="y"===v?"height":"width",ap=an+q[al],aq=an-q[am],ar=-1!==["top",F].indexOf(r),as=null!=(ak=null==G?void 0:G[v])?ak:0,at=ar?ap:an-x[ao]-z[ao]-as+B.altAxis,au=ar?an+x[ao]+z[ao]-as-B.altAxis:aq,av=l&&ar?(aj=ag(at,an,au))>au?au:aj:ag(l?at:ap,an,l?au:aq);w[v]=av,H[v]=av-an}b.modifiersData[d]=H}},requiresIfExists:["offset"]},{name:"arrow",enabled:!0,phase:"main",fn:function(a){var b,c=a.state,d=a.name,e=a.options,f=c.elements.arrow,g=c.modifiersData.popperOffsets,h=R(c.placement),i=T(h),j=[F,E].indexOf(h)>=0?"height":"width";if(f&&g){var k,l=(k=e.padding,ad("number"!=typeof(k="function"==typeof k?k(Object.assign({},c.rects,{placement:c.placement})):k)?k:ae(k,H))),m=y(f),n="y"===i?"top":F,o="y"===i?D:E,p=c.rects.reference[j]+c.rects.reference[i]-g[i]-c.rects.popper[j],q=g[i]-c.rects.reference[i],r=C(f),s=r?"y"===i?r.clientHeight||0:r.clientWidth||0:0,t=l[n],u=s-m[j]-l[o],v=s/2-m[j]/2+(p/2-q/2),w=ag(t,v,u);c.modifiersData[d]=((b={})[i]=w,b.centerOffset=w-v,b)}},effect:function(a){var b=a.state,c=a.options.element,d=void 0===c?"[data-popper-arrow]":c;if(null!=d)("string"!=typeof d||(d=b.elements.popper.querySelector(d)))&&_(b.elements.popper,d)&&(b.elements.arrow=d)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]},{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(a){var b=a.state,c=a.name,d=b.rects.reference,e=b.rects.popper,f=b.modifiersData.preventOverflow,g=af(b,{elementContext:"reference"}),h=af(b,{altBoundary:!0}),i=ah(g,d),j=ah(h,e,f),k=ai(i),l=ai(j);b.modifiersData[c]={referenceClippingOffsets:i,popperEscapeOffsets:j,isReferenceHidden:k,hasPopperEscaped:l},b.attributes.popper=Object.assign({},b.attributes.popper,{"data-popper-reference-hidden":k,"data-popper-escaped":l})}}]}),ak=c(2783),al=c(94633),am=c(1509),an=c(29565),ao=c(33105);function ap(a){return(0,ao.Ay)("MuiPopper",a)}(0,an.A)("MuiPopper",["root"]);var aq=c(21124);function ar(a){return"function"==typeof a?a():a}let as={},at=e.forwardRef(function(a,b){let{anchorEl:c,children:d,direction:h,disablePortal:i,modifiers:j,open:k,placement:l,popperOptions:m,popperRef:n,slotProps:o={},slots:p={},TransitionProps:q,ownerState:r,...s}=a,t=e.useRef(null),u=(0,f.A)(t,b),v=e.useRef(null),w=(0,f.A)(v,n),x=e.useRef(w);(0,g.A)(()=>{x.current=w},[w]),e.useImperativeHandle(n,()=>v.current,[]);let y=function(a,b){if("ltr"===b)return a;switch(a){case"bottom-end":return"bottom-start";case"bottom-start":return"bottom-end";case"top-end":return"top-start";case"top-start":return"top-end";default:return a}}(l,h),[z,A]=e.useState(y),[B,C]=e.useState(ar(c));e.useEffect(()=>{v.current&&v.current.forceUpdate()}),e.useEffect(()=>{c&&C(ar(c))},[c]),(0,g.A)(()=>{if(!B||!k)return;let a=[{name:"preventOverflow",options:{altBoundary:i}},{name:"flip",options:{altBoundary:i}},{name:"onUpdate",enabled:!0,phase:"afterWrite",fn:({state:a})=>{A(a.placement)}}];null!=j&&(a=a.concat(j)),m&&null!=m.modifiers&&(a=a.concat(m.modifiers));let b=aj(B,t.current,{placement:y,...m,modifiers:a});return x.current(b),()=>{b.destroy(),x.current(null)}},[B,i,j,k,m,y]);let D={placement:z};null!==q&&(D.TransitionProps=q);let E=(a=>{let{classes:b}=a;return(0,ak.A)({root:["root"]},ap,b)})(a),F=p.root??"div",G=(0,al.A)({elementType:F,externalSlotProps:o.root,externalForwardedProps:s,additionalProps:{role:"tooltip",ref:u},ownerState:a,className:E.root});return(0,aq.jsx)(F,{...G,children:"function"==typeof d?d(D):d})}),au=e.forwardRef(function(a,b){let c,{anchorEl:d,children:f,container:g,direction:i="ltr",disablePortal:j=!1,keepMounted:k=!1,modifiers:l,open:m,placement:n="bottom",popperOptions:o=as,popperRef:p,style:q,transition:r=!1,slotProps:s={},slots:t={},...u}=a,[v,w]=e.useState(!0);if(!k&&!m&&(!r||v))return null;if(g)c=g;else if(d){let a=ar(d);c=a&&void 0!==a.nodeType?(0,h.A)(a).body:(0,h.A)(null).body}let x=!m&&k&&(!r||v)?"none":void 0,y=r?{in:m,onEnter:()=>{w(!1)},onExited:()=>{w(!0)}}:void 0;return(0,aq.jsx)(am.A,{disablePortal:j,container:c,children:(0,aq.jsx)(at,{anchorEl:d,direction:i,disablePortal:j,modifiers:l,ref:b,open:r?!v:m,placement:n,popperOptions:o,popperRef:p,slotProps:s,slots:t,...u,style:{position:"fixed",top:0,left:0,display:x,...q},TransitionProps:y,children:f})})});var av=c(18168),aw=c(6636);let ax=(0,av.Ay)(au,{name:"MuiPopper",slot:"Root",overridesResolver:(a,b)=>b.root})({}),ay=e.forwardRef(function(a,b){let c=(0,d.I)(),{anchorEl:e,component:f,components:g,componentsProps:h,container:i,disablePortal:j,keepMounted:k,modifiers:l,open:m,placement:n,popperOptions:o,popperRef:p,transition:q,slots:r,slotProps:s,...t}=(0,aw.b)({props:a,name:"MuiPopper"}),u=r?.root??g?.Root,v={anchorEl:e,container:i,disablePortal:j,keepMounted:k,modifiers:l,open:m,placement:n,popperOptions:o,popperRef:p,transition:q,...t};return(0,aq.jsx)(ax,{as:f,direction:c?"rtl":"ltr",slots:{root:u},slotProps:s??h,...v,ref:b})})},31973:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M20 6h-8l-2-2H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2m0 12H4V6h5.17l2 2H20zm-8-4h2v2h2v-2h2v-2h-2v-2h-2v2h-2z"}),"CreateNewFolderOutlined")},36698:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"}),"Check")},38313:(a,b,c)=>{c.d(b,{A:()=>g,f:()=>f});var d=c(29565),e=c(33105);function f(a){return(0,e.Ay)("MuiListItemIcon",a)}let g=(0,d.A)("MuiListItemIcon",["root","alignItemsFlexStart"])},40973:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14"}),"Search")},43312:(a,b,c)=>{c.d(b,{A:()=>J});var d=c(38301),e=c(43249),f=c(74846),g=c(2783),h=c(37489),i=c(38404),j=c(4007),k=c(51939),l=c(18168),m=c(60839),n=c(68333),o=c(6636),p=c(6638),q=c(4927),r=c(31605),s=c(87974),t=c(26636),u=c(70300),v=c(65603),w=c(20385),x=c(29565),y=c(33105);function z(a){return(0,y.Ay)("MuiTooltip",a)}let A=(0,x.A)("MuiTooltip",["popper","popperInteractive","popperArrow","popperClose","tooltip","tooltipArrow","touch","tooltipPlacementLeft","tooltipPlacementRight","tooltipPlacementTop","tooltipPlacementBottom","arrow"]);var B=c(21124);let C=(0,l.Ay)(r.A,{name:"MuiTooltip",slot:"Popper",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.popper,!c.disableInteractive&&b.popperInteractive,c.arrow&&b.popperArrow,!c.open&&b.popperClose]}})((0,n.A)(({theme:a})=>({zIndex:(a.vars||a).zIndex.tooltip,pointerEvents:"none",variants:[{props:({ownerState:a})=>!a.disableInteractive,style:{pointerEvents:"auto"}},{props:({open:a})=>!a,style:{pointerEvents:"none"}},{props:({ownerState:a})=>a.arrow,style:{[`&[data-popper-placement*="bottom"] .${A.arrow}`]:{top:0,marginTop:"-0.71em","&::before":{transformOrigin:"0 100%"}},[`&[data-popper-placement*="top"] .${A.arrow}`]:{bottom:0,marginBottom:"-0.71em","&::before":{transformOrigin:"100% 0"}},[`&[data-popper-placement*="right"] .${A.arrow}`]:{height:"1em",width:"0.71em","&::before":{transformOrigin:"100% 100%"}},[`&[data-popper-placement*="left"] .${A.arrow}`]:{height:"1em",width:"0.71em","&::before":{transformOrigin:"0 0"}}}},{props:({ownerState:a})=>a.arrow&&!a.isRtl,style:{[`&[data-popper-placement*="right"] .${A.arrow}`]:{left:0,marginLeft:"-0.71em"}}},{props:({ownerState:a})=>a.arrow&&!!a.isRtl,style:{[`&[data-popper-placement*="right"] .${A.arrow}`]:{right:0,marginRight:"-0.71em"}}},{props:({ownerState:a})=>a.arrow&&!a.isRtl,style:{[`&[data-popper-placement*="left"] .${A.arrow}`]:{right:0,marginRight:"-0.71em"}}},{props:({ownerState:a})=>a.arrow&&!!a.isRtl,style:{[`&[data-popper-placement*="left"] .${A.arrow}`]:{left:0,marginLeft:"-0.71em"}}}]}))),D=(0,l.Ay)("div",{name:"MuiTooltip",slot:"Tooltip",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.tooltip,c.touch&&b.touch,c.arrow&&b.tooltipArrow,b[`tooltipPlacement${(0,p.A)(c.placement.split("-")[0])}`]]}})((0,n.A)(({theme:a})=>({backgroundColor:a.vars?a.vars.palette.Tooltip.bg:(0,h.X4)(a.palette.grey[700],.92),borderRadius:(a.vars||a).shape.borderRadius,color:(a.vars||a).palette.common.white,fontFamily:a.typography.fontFamily,padding:"4px 8px",fontSize:a.typography.pxToRem(11),maxWidth:300,margin:2,wordWrap:"break-word",fontWeight:a.typography.fontWeightMedium,[`.${A.popper}[data-popper-placement*="left"] &`]:{transformOrigin:"right center"},[`.${A.popper}[data-popper-placement*="right"] &`]:{transformOrigin:"left center"},[`.${A.popper}[data-popper-placement*="top"] &`]:{transformOrigin:"center bottom",marginBottom:"14px"},[`.${A.popper}[data-popper-placement*="bottom"] &`]:{transformOrigin:"center top",marginTop:"14px"},variants:[{props:({ownerState:a})=>a.arrow,style:{position:"relative",margin:0}},{props:({ownerState:a})=>a.touch,style:{padding:"8px 16px",fontSize:a.typography.pxToRem(14),lineHeight:`${Math.round(16/14*1e5)/1e5}em`,fontWeight:a.typography.fontWeightRegular}},{props:({ownerState:a})=>!a.isRtl,style:{[`.${A.popper}[data-popper-placement*="left"] &`]:{marginRight:"14px"},[`.${A.popper}[data-popper-placement*="right"] &`]:{marginLeft:"14px"}}},{props:({ownerState:a})=>!a.isRtl&&a.touch,style:{[`.${A.popper}[data-popper-placement*="left"] &`]:{marginRight:"24px"},[`.${A.popper}[data-popper-placement*="right"] &`]:{marginLeft:"24px"}}},{props:({ownerState:a})=>!!a.isRtl,style:{[`.${A.popper}[data-popper-placement*="left"] &`]:{marginLeft:"14px"},[`.${A.popper}[data-popper-placement*="right"] &`]:{marginRight:"14px"}}},{props:({ownerState:a})=>!!a.isRtl&&a.touch,style:{[`.${A.popper}[data-popper-placement*="left"] &`]:{marginLeft:"24px"},[`.${A.popper}[data-popper-placement*="right"] &`]:{marginRight:"24px"}}},{props:({ownerState:a})=>a.touch,style:{[`.${A.popper}[data-popper-placement*="top"] &`]:{marginBottom:"24px"}}},{props:({ownerState:a})=>a.touch,style:{[`.${A.popper}[data-popper-placement*="bottom"] &`]:{marginTop:"24px"}}}]}))),E=(0,l.Ay)("span",{name:"MuiTooltip",slot:"Arrow",overridesResolver:(a,b)=>b.arrow})((0,n.A)(({theme:a})=>({overflow:"hidden",position:"absolute",width:"1em",height:"0.71em",boxSizing:"border-box",color:a.vars?a.vars.palette.Tooltip.bg:(0,h.X4)(a.palette.grey[700],.9),"&::before":{content:'""',margin:"auto",display:"block",width:"100%",height:"100%",backgroundColor:"currentColor",transform:"rotate(45deg)"}}))),F=!1,G=new f.E,H={x:0,y:0};function I(a,b){return(c,...d)=>{b&&b(c,...d),a(c,...d)}}let J=d.forwardRef(function(a,b){let c=(0,o.b)({props:a,name:"MuiTooltip"}),{arrow:h=!1,children:l,classes:n,components:x={},componentsProps:y={},describeChild:A=!1,disableFocusListener:J=!1,disableHoverListener:K=!1,disableInteractive:L=!1,disableTouchListener:M=!1,enterDelay:N=100,enterNextDelay:O=0,enterTouchDelay:P=700,followCursor:Q=!1,id:R,leaveDelay:S=0,leaveTouchDelay:T=1500,onClose:U,onOpen:V,open:W,placement:X="bottom",PopperComponent:Y,PopperProps:Z={},slotProps:$={},slots:_={},title:aa,TransitionComponent:ab,TransitionProps:ac,...ad}=c,ae=d.isValidElement(l)?l:(0,B.jsx)("span",{children:l}),af=(0,m.A)(),ag=(0,i.I)(),[ah,ai]=d.useState(),[aj,ak]=d.useState(null),al=d.useRef(!1),am=L||Q,an=(0,f.A)(),ao=(0,f.A)(),ap=(0,f.A)(),aq=(0,f.A)(),[ar,as]=(0,v.A)({controlled:W,default:!1,name:"Tooltip",state:"open"}),at=ar,au=(0,u.A)(R),av=d.useRef(),aw=(0,s.A)(()=>{void 0!==av.current&&(document.body.style.WebkitUserSelect=av.current,av.current=void 0),aq.clear()});d.useEffect(()=>aw,[aw]);let ax=a=>{G.clear(),F=!0,as(!0),V&&!at&&V(a)},ay=(0,s.A)(a=>{G.start(800+S,()=>{F=!1}),as(!1),U&&at&&U(a),an.start(af.transitions.duration.shortest,()=>{al.current=!1})}),az=a=>{al.current&&"touchstart"!==a.type||(ah&&ah.removeAttribute("title"),ao.clear(),ap.clear(),N||F&&O?ao.start(F?O:N,()=>{ax(a)}):ax(a))},aA=a=>{ao.clear(),ap.start(S,()=>{ay(a)})},[,aB]=d.useState(!1),aC=a=>{(0,j.A)(a.target)||(aB(!1),aA(a))},aD=a=>{ah||ai(a.currentTarget),(0,j.A)(a.target)&&(aB(!0),az(a))},aE=a=>{al.current=!0;let b=ae.props;b.onTouchStart&&b.onTouchStart(a)};d.useEffect(()=>{if(at)return document.addEventListener("keydown",a),()=>{document.removeEventListener("keydown",a)};function a(a){"Escape"===a.key&&ay(a)}},[ay,at]);let aF=(0,t.A)((0,k.A)(ae),ai,b);aa||0===aa||(at=!1);let aG=d.useRef(),aH={},aI="string"==typeof aa;A?(aH.title=at||!aI||K?null:aa,aH["aria-describedby"]=at?au:null):(aH["aria-label"]=aI?aa:null,aH["aria-labelledby"]=at&&!aI?au:null);let aJ={...aH,...ad,...ae.props,className:(0,e.A)(ad.className,ae.props.className),onTouchStart:aE,ref:aF,...Q?{onMouseMove:a=>{let b=ae.props;b.onMouseMove&&b.onMouseMove(a),H={x:a.clientX,y:a.clientY},aG.current&&aG.current.update()}}:{}},aK={};M||(aJ.onTouchStart=a=>{aE(a),ap.clear(),an.clear(),aw(),av.current=document.body.style.WebkitUserSelect,document.body.style.WebkitUserSelect="none",aq.start(P,()=>{document.body.style.WebkitUserSelect=av.current,az(a)})},aJ.onTouchEnd=a=>{ae.props.onTouchEnd&&ae.props.onTouchEnd(a),aw(),ap.start(T,()=>{ay(a)})}),!K&&(aJ.onMouseOver=I(az,aJ.onMouseOver),aJ.onMouseLeave=I(aA,aJ.onMouseLeave),am||(aK.onMouseOver=az,aK.onMouseLeave=aA)),!J&&(aJ.onFocus=I(aD,aJ.onFocus),aJ.onBlur=I(aC,aJ.onBlur),am||(aK.onFocus=aD,aK.onBlur=aC));let aL={...c,isRtl:ag,arrow:h,disableInteractive:am,placement:X,PopperComponentProp:Y,touch:al.current},aM="function"==typeof $.popper?$.popper(aL):$.popper,aN=d.useMemo(()=>{let a=[{name:"arrow",enabled:!!aj,options:{element:aj,padding:4}}];return Z.popperOptions?.modifiers&&(a=a.concat(Z.popperOptions.modifiers)),aM?.popperOptions?.modifiers&&(a=a.concat(aM.popperOptions.modifiers)),{...Z.popperOptions,...aM?.popperOptions,modifiers:a}},[aj,Z.popperOptions,aM?.popperOptions]),aO=(a=>{let{classes:b,disableInteractive:c,arrow:d,touch:e,placement:f}=a,h={popper:["popper",!c&&"popperInteractive",d&&"popperArrow"],tooltip:["tooltip",d&&"tooltipArrow",e&&"touch",`tooltipPlacement${(0,p.A)(f.split("-")[0])}`],arrow:["arrow"]};return(0,g.A)(h,z,b)})(aL),aP="function"==typeof $.transition?$.transition(aL):$.transition,aQ={slots:{popper:x.Popper,transition:x.Transition??ab,tooltip:x.Tooltip,arrow:x.Arrow,..._},slotProps:{arrow:$.arrow??y.arrow,popper:{...Z,...aM??y.popper},tooltip:$.tooltip??y.tooltip,transition:{...ac,...aP??y.transition}}},[aR,aS]=(0,w.A)("popper",{elementType:C,externalForwardedProps:aQ,ownerState:aL,className:(0,e.A)(aO.popper,Z?.className)}),[aT,aU]=(0,w.A)("transition",{elementType:q.A,externalForwardedProps:aQ,ownerState:aL}),[aV,aW]=(0,w.A)("tooltip",{elementType:D,className:aO.tooltip,externalForwardedProps:aQ,ownerState:aL}),[aX,aY]=(0,w.A)("arrow",{elementType:E,className:aO.arrow,externalForwardedProps:aQ,ownerState:aL,ref:ak});return(0,B.jsxs)(d.Fragment,{children:[d.cloneElement(ae,aJ),(0,B.jsx)(aR,{as:Y??r.A,placement:X,anchorEl:Q?{getBoundingClientRect:()=>({top:H.y,left:H.x,right:H.x,bottom:H.y,width:0,height:0})}:ah,popperRef:aG,open:!!ah&&at,id:au,transition:!0,...aK,...aS,popperOptions:aN,children:({TransitionProps:a})=>(0,B.jsx)(aT,{timeout:af.transitions.duration.shorter,...a,...aU,children:(0,B.jsxs)(aV,{...aW,children:[aa,h?(0,B.jsx)(aX,{...aY}):null]})})})]})})},50553:(a,b,c)=>{c.d(b,{A:()=>n});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(68333),i=c(6636),j=c(38313),k=c(55470),l=c(21124);let m=(0,g.Ay)("div",{name:"MuiListItemIcon",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,"flex-start"===c.alignItems&&b.alignItemsFlexStart]}})((0,h.A)(({theme:a})=>({minWidth:56,color:(a.vars||a).palette.action.active,flexShrink:0,display:"inline-flex",variants:[{props:{alignItems:"flex-start"},style:{marginTop:8}}]}))),n=d.forwardRef(function(a,b){let c=(0,i.b)({props:a,name:"MuiListItemIcon"}),{className:g,...h}=c,n=d.useContext(k.A),o={...c,alignItems:n.alignItems},p=(a=>{let{alignItems:b,classes:c}=a;return(0,f.A)({root:["root","flex-start"===b&&"alignItemsFlexStart"]},j.f,c)})(o);return(0,l.jsx)(m,{className:(0,e.A)(p.root,g),ownerState:o,ref:b,...h})})},76345:(a,b,c)=>{c.d(b,{A:()=>g,b:()=>f});var d=c(29565),e=c(33105);function f(a){return(0,e.Ay)("MuiListItemText",a)}let g=(0,d.A)("MuiListItemText",["root","multiline","dense","inset","primary","secondary"])},84233:(a,b,c)=>{c.d(b,{A:()=>p});var d=c(38301),e=c(43249),f=c(2783),g=c(29071),h=c(79515),i=c(55470),j=c(18168),k=c(6636),l=c(76345),m=c(20385),n=c(21124);let o=(0,j.Ay)("div",{name:"MuiListItemText",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[{[`& .${l.A.primary}`]:b.primary},{[`& .${l.A.secondary}`]:b.secondary},b.root,c.inset&&b.inset,c.primary&&c.secondary&&b.multiline,c.dense&&b.dense]}})({flex:"1 1 auto",minWidth:0,marginTop:4,marginBottom:4,[`.${g.A.root}:where(& .${l.A.primary})`]:{display:"block"},[`.${g.A.root}:where(& .${l.A.secondary})`]:{display:"block"},variants:[{props:({ownerState:a})=>a.primary&&a.secondary,style:{marginTop:6,marginBottom:6}},{props:({ownerState:a})=>a.inset,style:{paddingLeft:56}}]}),p=d.forwardRef(function(a,b){let c=(0,k.b)({props:a,name:"MuiListItemText"}),{children:g,className:j,disableTypography:p=!1,inset:q=!1,primary:r,primaryTypographyProps:s,secondary:t,secondaryTypographyProps:u,slots:v={},slotProps:w={},...x}=c,{dense:y}=d.useContext(i.A),z=null!=r?r:g,A=t,B={...c,disableTypography:p,inset:q,primary:!!z,secondary:!!A,dense:y},C=(a=>{let{classes:b,inset:c,primary:d,secondary:e,dense:g}=a;return(0,f.A)({root:["root",c&&"inset",g&&"dense",d&&e&&"multiline"],primary:["primary"],secondary:["secondary"]},l.b,b)})(B),D={slots:v,slotProps:{primary:s,secondary:u,...w}},[E,F]=(0,m.A)("root",{className:(0,e.A)(C.root,j),elementType:o,externalForwardedProps:{...D,...x},ownerState:B,ref:b}),[G,H]=(0,m.A)("primary",{className:C.primary,elementType:h.default,externalForwardedProps:D,ownerState:B}),[I,J]=(0,m.A)("secondary",{className:C.secondary,elementType:h.default,externalForwardedProps:D,ownerState:B});return null==z||z.type===h.default||p||(z=(0,n.jsx)(G,{variant:y?"body2":"body1",component:H?.variant?void 0:"span",...H,children:z})),null==A||A.type===h.default||p||(A=(0,n.jsx)(I,{variant:"body2",color:"textSecondary",...J,children:A})),(0,n.jsxs)(E,{...F,children:[z,A]})})},94367:(a,b,c)=>{c.d(b,{A:()=>y});var d=c(38301),e=c(43249),f=c(2783),g=c(37489),h=c(41126),i=c(18168),j=c(68333),k=c(6636),l=c(55470),m=c(14328),n=c(14758),o=c(26636),p=c(93895),q=c(38313),r=c(76345),s=c(29565),t=c(33105);function u(a){return(0,t.Ay)("MuiMenuItem",a)}let v=(0,s.A)("MuiMenuItem",["root","focusVisible","dense","disabled","divider","gutters","selected"]);var w=c(21124);let x=(0,i.Ay)(m.A,{shouldForwardProp:a=>(0,h.A)(a)||"classes"===a,name:"MuiMenuItem",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,c.dense&&b.dense,c.divider&&b.divider,!c.disableGutters&&b.gutters]}})((0,j.A)(({theme:a})=>({...a.typography.body1,display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",minHeight:48,paddingTop:6,paddingBottom:6,boxSizing:"border-box",whiteSpace:"nowrap","&:hover":{textDecoration:"none",backgroundColor:(a.vars||a).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${v.selected}`]:{backgroundColor:a.vars?`rgba(${a.vars.palette.primary.mainChannel} / ${a.vars.palette.action.selectedOpacity})`:(0,g.X4)(a.palette.primary.main,a.palette.action.selectedOpacity),[`&.${v.focusVisible}`]:{backgroundColor:a.vars?`rgba(${a.vars.palette.primary.mainChannel} / calc(${a.vars.palette.action.selectedOpacity} + ${a.vars.palette.action.focusOpacity}))`:(0,g.X4)(a.palette.primary.main,a.palette.action.selectedOpacity+a.palette.action.focusOpacity)}},[`&.${v.selected}:hover`]:{backgroundColor:a.vars?`rgba(${a.vars.palette.primary.mainChannel} / calc(${a.vars.palette.action.selectedOpacity} + ${a.vars.palette.action.hoverOpacity}))`:(0,g.X4)(a.palette.primary.main,a.palette.action.selectedOpacity+a.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:a.vars?`rgba(${a.vars.palette.primary.mainChannel} / ${a.vars.palette.action.selectedOpacity})`:(0,g.X4)(a.palette.primary.main,a.palette.action.selectedOpacity)}},[`&.${v.focusVisible}`]:{backgroundColor:(a.vars||a).palette.action.focus},[`&.${v.disabled}`]:{opacity:(a.vars||a).palette.action.disabledOpacity},[`& + .${p.A.root}`]:{marginTop:a.spacing(1),marginBottom:a.spacing(1)},[`& + .${p.A.inset}`]:{marginLeft:52},[`& .${r.A.root}`]:{marginTop:0,marginBottom:0},[`& .${r.A.inset}`]:{paddingLeft:36},[`& .${q.A.root}`]:{minWidth:36},variants:[{props:({ownerState:a})=>!a.disableGutters,style:{paddingLeft:16,paddingRight:16}},{props:({ownerState:a})=>a.divider,style:{borderBottom:`1px solid ${(a.vars||a).palette.divider}`,backgroundClip:"padding-box"}},{props:({ownerState:a})=>!a.dense,style:{[a.breakpoints.up("sm")]:{minHeight:"auto"}}},{props:({ownerState:a})=>a.dense,style:{minHeight:32,paddingTop:4,paddingBottom:4,...a.typography.body2,[`& .${q.A.root} svg`]:{fontSize:"1.25rem"}}}]}))),y=d.forwardRef(function(a,b){let c,g=(0,k.b)({props:a,name:"MuiMenuItem"}),{autoFocus:h=!1,component:i="li",dense:j=!1,divider:m=!1,disableGutters:p=!1,focusVisibleClassName:q,role:r="menuitem",tabIndex:s,className:t,...v}=g,y=d.useContext(l.A),z=d.useMemo(()=>({dense:j||y.dense||!1,disableGutters:p}),[y.dense,j,p]),A=d.useRef(null);(0,n.A)(()=>{h&&A.current&&A.current.focus()},[h]);let B={...g,dense:z.dense,divider:m,disableGutters:p},C=(a=>{let{disabled:b,dense:c,divider:d,disableGutters:e,selected:g,classes:h}=a,i=(0,f.A)({root:["root",c&&"dense",b&&"disabled",!e&&"gutters",d&&"divider",g&&"selected"]},u,h);return{...h,...i}})(g),D=(0,o.A)(A,b);return g.disabled||(c=void 0!==s?s:-1),(0,w.jsx)(l.A.Provider,{value:z,children:(0,w.jsx)(x,{ref:D,role:r,tabIndex:c,component:i,focusVisibleClassName:(0,e.A)(C.focusVisible,q),className:(0,e.A)(C.root,t),...v,ownerState:B,classes:C})})})},98463:(a,b,c)=>{c.d(b,{A:()=>n});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(6636),i=c(29565),j=c(33105);function k(a){return(0,j.Ay)("MuiCardActions",a)}(0,i.A)("MuiCardActions",["root","spacing"]);var l=c(21124);let m=(0,g.Ay)("div",{name:"MuiCardActions",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,!c.disableSpacing&&b.spacing]}})({display:"flex",alignItems:"center",padding:8,variants:[{props:{disableSpacing:!1},style:{"& > :not(style) ~ :not(style)":{marginLeft:8}}}]}),n=d.forwardRef(function(a,b){let c=(0,h.b)({props:a,name:"MuiCardActions"}),{disableSpacing:d=!1,className:g,...i}=c,j={...c,disableSpacing:d},n=(a=>{let{classes:b,disableSpacing:c}=a;return(0,f.A)({root:["root",!c&&"spacing"]},k,b)})(j);return(0,l.jsx)(m,{className:(0,e.A)(n.root,g),ownerState:j,ref:b,...i})})}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=5148,exports.ids=[5148],exports.modules={67191:(a,b,c)=>{c.d(b,{A:()=>x});var d=c(38301),e=c(43249),f=c(2783),g=c(37489),h=c(6638),i=c(54716),j=c(99515),k=c(18168),l=c(68333),m=c(6636),n=c(29565),o=c(33105);function p(a){return(0,o.Ay)("MuiSwitch",a)}let q=(0,n.A)("MuiSwitch",["root","edgeStart","edgeEnd","switchBase","colorPrimary","colorSecondary","sizeSmall","sizeMedium","checked","disabled","input","thumb","track"]);var r=c(20385),s=c(21124);let t=(0,k.Ay)("span",{name:"MuiSwitch",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,c.edge&&b[`edge${(0,h.A)(c.edge)}`],b[`size${(0,h.A)(c.size)}`]]}})({display:"inline-flex",width:58,height:38,overflow:"hidden",padding:12,boxSizing:"border-box",position:"relative",flexShrink:0,zIndex:0,verticalAlign:"middle","@media print":{colorAdjust:"exact"},variants:[{props:{edge:"start"},style:{marginLeft:-8}},{props:{edge:"end"},style:{marginRight:-8}},{props:{size:"small"},style:{width:40,height:24,padding:7,[`& .${q.thumb}`]:{width:16,height:16},[`& .${q.switchBase}`]:{padding:4,[`&.${q.checked}`]:{transform:"translateX(16px)"}}}}]}),u=(0,k.Ay)(j.A,{name:"MuiSwitch",slot:"SwitchBase",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.switchBase,{[`& .${q.input}`]:b.input},"default"!==c.color&&b[`color${(0,h.A)(c.color)}`]]}})((0,l.A)(({theme:a})=>({position:"absolute",top:0,left:0,zIndex:1,color:a.vars?a.vars.palette.Switch.defaultColor:`${"light"===a.palette.mode?a.palette.common.white:a.palette.grey[300]}`,transition:a.transitions.create(["left","transform"],{duration:a.transitions.duration.shortest}),[`&.${q.checked}`]:{transform:"translateX(20px)"},[`&.${q.disabled}`]:{color:a.vars?a.vars.palette.Switch.defaultDisabledColor:`${"light"===a.palette.mode?a.palette.grey[100]:a.palette.grey[600]}`},[`&.${q.checked} + .${q.track}`]:{opacity:.5},[`&.${q.disabled} + .${q.track}`]:{opacity:a.vars?a.vars.opacity.switchTrackDisabled:`${"light"===a.palette.mode?.12:.2}`},[`& .${q.input}`]:{left:"-100%",width:"300%"}})),(0,l.A)(({theme:a})=>({"&:hover":{backgroundColor:a.vars?`rgba(${a.vars.palette.action.activeChannel} / ${a.vars.palette.action.hoverOpacity})`:(0,g.X4)(a.palette.action.active,a.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},variants:[...Object.entries(a.palette).filter((0,i.A)(["light"])).map(([b])=>({props:{color:b},style:{[`&.${q.checked}`]:{color:(a.vars||a).palette[b].main,"&:hover":{backgroundColor:a.vars?`rgba(${a.vars.palette[b].mainChannel} / ${a.vars.palette.action.hoverOpacity})`:(0,g.X4)(a.palette[b].main,a.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${q.disabled}`]:{color:a.vars?a.vars.palette.Switch[`${b}DisabledColor`]:`${"light"===a.palette.mode?(0,g.a)(a.palette[b].main,.62):(0,g.e$)(a.palette[b].main,.55)}`}},[`&.${q.checked} + .${q.track}`]:{backgroundColor:(a.vars||a).palette[b].main}}}))]}))),v=(0,k.Ay)("span",{name:"MuiSwitch",slot:"Track",overridesResolver:(a,b)=>b.track})((0,l.A)(({theme:a})=>({height:"100%",width:"100%",borderRadius:7,zIndex:-1,transition:a.transitions.create(["opacity","background-color"],{duration:a.transitions.duration.shortest}),backgroundColor:a.vars?a.vars.palette.common.onBackground:`${"light"===a.palette.mode?a.palette.common.black:a.palette.common.white}`,opacity:a.vars?a.vars.opacity.switchTrack:`${"light"===a.palette.mode?.38:.3}`}))),w=(0,k.Ay)("span",{name:"MuiSwitch",slot:"Thumb",overridesResolver:(a,b)=>b.thumb})((0,l.A)(({theme:a})=>({boxShadow:(a.vars||a).shadows[1],backgroundColor:"currentColor",width:20,height:20,borderRadius:"50%"}))),x=d.forwardRef(function(a,b){let c=(0,m.b)({props:a,name:"MuiSwitch"}),{className:d,color:g="primary",edge:i=!1,size:j="medium",sx:k,slots:l={},slotProps:n={},...o}=c,q={...c,color:g,edge:i,size:j},x=(a=>{let{classes:b,edge:c,size:d,color:e,checked:g,disabled:i}=a,j={root:["root",c&&`edge${(0,h.A)(c)}`,`size${(0,h.A)(d)}`],switchBase:["switchBase",`color${(0,h.A)(e)}`,g&&"checked",i&&"disabled"],thumb:["thumb"],track:["track"],input:["input"]},k=(0,f.A)(j,p,b);return{...b,...k}})(q),y={slots:l,slotProps:n},[z,A]=(0,r.A)("root",{className:(0,e.A)(x.root,d),elementType:t,externalForwardedProps:y,ownerState:q,additionalProps:{sx:k}}),[B,C]=(0,r.A)("thumb",{className:x.thumb,elementType:w,externalForwardedProps:y,ownerState:q}),D=(0,s.jsx)(B,{...C}),[E,F]=(0,r.A)("track",{className:x.track,elementType:v,externalForwardedProps:y,ownerState:q});return(0,s.jsxs)(z,{...A,children:[(0,s.jsx)(u,{type:"checkbox",icon:D,checkedIcon:D,ref:b,ownerState:q,...o,classes:{...x,root:x.switchBase},slots:{...l.switchBase&&{root:l.switchBase},...l.input&&{input:l.input}},slotProps:{...n.switchBase&&{root:"function"==typeof n.switchBase?n.switchBase(q):n.switchBase},...n.input&&{input:"function"==typeof n.input?n.input(q):n.input}}}),(0,s.jsx)(E,{...F})]})})},77028:(a,b,c)=>{c.d(b,{A:()=>D});var d=c(38301),e=c(43249),f=c(2783),g=c(37489),h=c(99515),i=c(27080),j=c(21124);let k=(0,i.A)((0,j.jsx)("path",{d:"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"}),"CheckBoxOutlineBlank"),l=(0,i.A)((0,j.jsx)("path",{d:"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"}),"CheckBox"),m=(0,i.A)((0,j.jsx)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"}),"IndeterminateCheckBox");var n=c(6638),o=c(41126),p=c(29565),q=c(33105);function r(a){return(0,q.Ay)("MuiCheckbox",a)}let s=(0,p.A)("MuiCheckbox",["root","checked","disabled","indeterminate","colorPrimary","colorSecondary","sizeSmall","sizeMedium"]);var t=c(18168),u=c(68333),v=c(54716),w=c(6636),x=c(19902),y=c(20385);let z=(0,t.Ay)(h.A,{shouldForwardProp:a=>(0,o.A)(a)||"classes"===a,name:"MuiCheckbox",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,c.indeterminate&&b.indeterminate,b[`size${(0,n.A)(c.size)}`],"default"!==c.color&&b[`color${(0,n.A)(c.color)}`]]}})((0,u.A)(({theme:a})=>({color:(a.vars||a).palette.text.secondary,variants:[{props:{color:"default",disableRipple:!1},style:{"&:hover":{backgroundColor:a.vars?`rgba(${a.vars.palette.action.activeChannel} / ${a.vars.palette.action.hoverOpacity})`:(0,g.X4)(a.palette.action.active,a.palette.action.hoverOpacity)}}},...Object.entries(a.palette).filter((0,v.A)()).map(([b])=>({props:{color:b,disableRipple:!1},style:{"&:hover":{backgroundColor:a.vars?`rgba(${a.vars.palette[b].mainChannel} / ${a.vars.palette.action.hoverOpacity})`:(0,g.X4)(a.palette[b].main,a.palette.action.hoverOpacity)}}})),...Object.entries(a.palette).filter((0,v.A)()).map(([b])=>({props:{color:b},style:{[`&.${s.checked}, &.${s.indeterminate}`]:{color:(a.vars||a).palette[b].main},[`&.${s.disabled}`]:{color:(a.vars||a).palette.action.disabled}}})),{props:{disableRipple:!1},style:{"&:hover":{"@media (hover: none)":{backgroundColor:"transparent"}}}}]}))),A=(0,j.jsx)(l,{}),B=(0,j.jsx)(k,{}),C=(0,j.jsx)(m,{}),D=d.forwardRef(function(a,b){let c=(0,w.b)({props:a,name:"MuiCheckbox"}),{checkedIcon:g=A,color:h="primary",icon:i=B,indeterminate:k=!1,indeterminateIcon:l=C,inputProps:m,size:o="medium",disableRipple:p=!1,className:q,slots:s={},slotProps:t={},...u}=c,v=k?l:i,D=k?l:g,E={...c,disableRipple:p,color:h,indeterminate:k,size:o},F=(a=>{let{classes:b,indeterminate:c,color:d,size:e}=a,g={root:["root",c&&"indeterminate",`color${(0,n.A)(d)}`,`size${(0,n.A)(e)}`]},h=(0,f.A)(g,r,b);return{...b,...h}})(E),G=t.input??m,[H,I]=(0,y.A)("root",{ref:b,elementType:z,className:(0,e.A)(F.root,q),shouldForwardComponentProp:!0,externalForwardedProps:{slots:s,slotProps:t,...u},ownerState:E,additionalProps:{type:"checkbox",icon:d.cloneElement(v,{fontSize:v.props.fontSize??o}),checkedIcon:d.cloneElement(D,{fontSize:D.props.fontSize??o}),disableRipple:p,slots:s,slotProps:{input:(0,x.A)("function"==typeof G?G(E):G,{"data-indeterminate":k})}}});return(0,j.jsx)(H,{...I,classes:F})})},95587:(a,b,c)=>{c.d(b,{A:()=>v});var d=c(38301),e=c(43249),f=c(2783),g=c(49628),h=c(18168),i=c(68333),j=c(6636),k=c(79515),l=c(6638),m=c(29565),n=c(33105);function o(a){return(0,n.Ay)("MuiFormControlLabel",a)}let p=(0,m.A)("MuiFormControlLabel",["root","labelPlacementStart","labelPlacementTop","labelPlacementBottom","disabled","label","error","required","asterisk"]);var q=c(83738),r=c(20385),s=c(21124);let t=(0,h.Ay)("label",{name:"MuiFormControlLabel",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[{[`& .${p.label}`]:b.label},b.root,b[`labelPlacement${(0,l.A)(c.labelPlacement)}`]]}})((0,i.A)(({theme:a})=>({display:"inline-flex",alignItems:"center",cursor:"pointer",verticalAlign:"middle",WebkitTapHighlightColor:"transparent",marginLeft:-11,marginRight:16,[`&.${p.disabled}`]:{cursor:"default"},[`& .${p.label}`]:{[`&.${p.disabled}`]:{color:(a.vars||a).palette.text.disabled}},variants:[{props:{labelPlacement:"start"},style:{flexDirection:"row-reverse",marginRight:-11}},{props:{labelPlacement:"top"},style:{flexDirection:"column-reverse"}},{props:{labelPlacement:"bottom"},style:{flexDirection:"column"}},{props:({labelPlacement:a})=>"start"===a||"top"===a||"bottom"===a,style:{marginLeft:16}}]}))),u=(0,h.Ay)("span",{name:"MuiFormControlLabel",slot:"Asterisk",overridesResolver:(a,b)=>b.asterisk})((0,i.A)(({theme:a})=>({[`&.${p.error}`]:{color:(a.vars||a).palette.error.main}}))),v=d.forwardRef(function(a,b){let c=(0,j.b)({props:a,name:"MuiFormControlLabel"}),{checked:h,className:i,componentsProps:m={},control:n,disabled:p,disableTypography:v,inputRef:w,label:x,labelPlacement:y="end",name:z,onChange:A,required:B,slots:C={},slotProps:D={},value:E,...F}=c,G=(0,g.A)(),H=p??n.props.disabled??G?.disabled,I=B??n.props.required,J={disabled:H,required:I};["checked","name","onChange","value","inputRef"].forEach(a=>{void 0===n.props[a]&&void 0!==c[a]&&(J[a]=c[a])});let K=(0,q.A)({props:c,muiFormControl:G,states:["error"]}),L={...c,disabled:H,labelPlacement:y,required:I,error:K.error},M=(a=>{let{classes:b,disabled:c,labelPlacement:d,error:e,required:g}=a,h={root:["root",c&&"disabled",`labelPlacement${(0,l.A)(d)}`,e&&"error",g&&"required"],label:["label",c&&"disabled"],asterisk:["asterisk",e&&"error"]};return(0,f.A)(h,o,b)})(L),N={slots:C,slotProps:{...m,...D}},[O,P]=(0,r.A)("typography",{elementType:k.default,externalForwardedProps:N,ownerState:L}),Q=x;return null==Q||Q.type===k.default||v||(Q=(0,s.jsx)(O,{component:"span",...P,className:(0,e.A)(M.label,P?.className),children:Q})),(0,s.jsxs)(t,{className:(0,e.A)(M.root,i),ownerState:L,ref:b,...F,children:[d.cloneElement(n,J),I?(0,s.jsxs)("div",{children:[Q,(0,s.jsxs)(u,{ownerState:L,"aria-hidden":!0,className:M.asterisk,children:[" ","*"]})]}):Q]})})},99515:(a,b,c)=>{c.d(b,{A:()=>s});var d=c(38301),e=c(2783),f=c(6638),g=c(41126),h=c(18168),i=c(65603),j=c(49628),k=c(14328),l=c(29565),m=c(33105);function n(a){return(0,m.Ay)("PrivateSwitchBase",a)}(0,l.A)("PrivateSwitchBase",["root","checked","disabled","input","edgeStart","edgeEnd"]);var o=c(20385),p=c(21124);let q=(0,h.Ay)(k.A,{name:"MuiSwitchBase"})({padding:9,borderRadius:"50%",variants:[{props:{edge:"start",size:"small"},style:{marginLeft:-3}},{props:({edge:a,ownerState:b})=>"start"===a&&"small"!==b.size,style:{marginLeft:-12}},{props:{edge:"end",size:"small"},style:{marginRight:-3}},{props:({edge:a,ownerState:b})=>"end"===a&&"small"!==b.size,style:{marginRight:-12}}]}),r=(0,h.Ay)("input",{name:"MuiSwitchBase",shouldForwardProp:g.A})({cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0,zIndex:1}),s=d.forwardRef(function(a,b){let{autoFocus:c,checked:d,checkedIcon:g,defaultChecked:h,disabled:k,disableFocusRipple:l=!1,edge:m=!1,icon:s,id:t,inputProps:u,inputRef:v,name:w,onBlur:x,onChange:y,onFocus:z,readOnly:A,required:B=!1,tabIndex:C,type:D,value:E,slots:F={},slotProps:G={},...H}=a,[I,J]=(0,i.A)({controlled:d,default:!!h,name:"SwitchBase",state:"checked"}),K=(0,j.A)(),L=k;K&&void 0===L&&(L=K.disabled);let M="checkbox"===D||"radio"===D,N={...a,checked:I,disabled:L,disableFocusRipple:l,edge:m},O=(a=>{let{classes:b,checked:c,disabled:d,edge:g}=a,h={root:["root",c&&"checked",d&&"disabled",g&&`edge${(0,f.A)(g)}`],input:["input"]};return(0,e.A)(h,n,b)})(N),P={slots:F,slotProps:{input:u,...G}},[Q,R]=(0,o.A)("root",{ref:b,elementType:q,className:O.root,shouldForwardComponentProp:!0,externalForwardedProps:{...P,component:"span",...H},getSlotProps:a=>({...a,onFocus:b=>{a.onFocus?.(b),z&&z(b),K&&K.onFocus&&K.onFocus(b)},onBlur:b=>{a.onBlur?.(b),x&&x(b),K&&K.onBlur&&K.onBlur(b)}}),ownerState:N,additionalProps:{centerRipple:!0,focusRipple:!l,disabled:L,role:void 0,tabIndex:null}}),[S,T]=(0,o.A)("input",{ref:v,elementType:r,className:O.input,externalForwardedProps:P,getSlotProps:a=>({onChange:b=>{a.onChange?.(b),(a=>{if(a.nativeEvent.defaultPrevented)return;let b=a.target.checked;J(b),y&&y(a,b)})(b)}}),ownerState:N,additionalProps:{autoFocus:c,checked:d,defaultChecked:h,disabled:L,id:M?t:void 0,name:w,readOnly:A,required:B,tabIndex:C,type:D,..."checkbox"===D&&void 0===E?{}:{value:E}}});return(0,p.jsxs)(Q,{...R,children:[(0,p.jsx)(S,{...T}),I?g:s]})})}};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";exports.id=5625,exports.ids=[5625],exports.modules={8521:(a,b,c)=>{c.d(b,{default:()=>x});var d=c(38301),e=c(43249),f=c(2783),g=c(78871),h=c(18168),i=c(68333),j=c(6636),k=c(6638),l=c(54716),m=c(29565),n=c(33105);function o(a){return(0,n.Ay)("MuiCircularProgress",a)}(0,m.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"]);var p=c(21124);let q=(0,g.i7)`
|
|
2
|
+
0% {
|
|
3
|
+
transform: rotate(0deg);
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
100% {
|
|
7
|
+
transform: rotate(360deg);
|
|
8
|
+
}
|
|
9
|
+
`,r=(0,g.i7)`
|
|
10
|
+
0% {
|
|
11
|
+
stroke-dasharray: 1px, 200px;
|
|
12
|
+
stroke-dashoffset: 0;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
50% {
|
|
16
|
+
stroke-dasharray: 100px, 200px;
|
|
17
|
+
stroke-dashoffset: -15px;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
100% {
|
|
21
|
+
stroke-dasharray: 1px, 200px;
|
|
22
|
+
stroke-dashoffset: -126px;
|
|
23
|
+
}
|
|
24
|
+
`,s="string"!=typeof q?(0,g.AH)`
|
|
25
|
+
animation: ${q} 1.4s linear infinite;
|
|
26
|
+
`:null,t="string"!=typeof r?(0,g.AH)`
|
|
27
|
+
animation: ${r} 1.4s ease-in-out infinite;
|
|
28
|
+
`:null,u=(0,h.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,b[c.variant],b[`color${(0,k.A)(c.color)}`]]}})((0,i.A)(({theme:a})=>({display:"inline-block",variants:[{props:{variant:"determinate"},style:{transition:a.transitions.create("transform")}},{props:{variant:"indeterminate"},style:s||{animation:`${q} 1.4s linear infinite`}},...Object.entries(a.palette).filter((0,l.A)()).map(([b])=>({props:{color:b},style:{color:(a.vars||a).palette[b].main}}))]}))),v=(0,h.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(a,b)=>b.svg})({display:"block"}),w=(0,h.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.circle,b[`circle${(0,k.A)(c.variant)}`],c.disableShrink&&b.circleDisableShrink]}})((0,i.A)(({theme:a})=>({stroke:"currentColor",variants:[{props:{variant:"determinate"},style:{transition:a.transitions.create("stroke-dashoffset")}},{props:{variant:"indeterminate"},style:{strokeDasharray:"80px, 200px",strokeDashoffset:0}},{props:({ownerState:a})=>"indeterminate"===a.variant&&!a.disableShrink,style:t||{animation:`${r} 1.4s ease-in-out infinite`}}]}))),x=d.forwardRef(function(a,b){let c=(0,j.b)({props:a,name:"MuiCircularProgress"}),{className:d,color:g="primary",disableShrink:h=!1,size:i=40,style:l,thickness:m=3.6,value:n=0,variant:q="indeterminate",...r}=c,s={...c,color:g,disableShrink:h,size:i,thickness:m,value:n,variant:q},t=(a=>{let{classes:b,variant:c,color:d,disableShrink:e}=a,g={root:["root",c,`color${(0,k.A)(d)}`],svg:["svg"],circle:["circle",`circle${(0,k.A)(c)}`,e&&"circleDisableShrink"]};return(0,f.A)(g,o,b)})(s),x={},y={},z={};if("determinate"===q){let a=2*Math.PI*((44-m)/2);x.strokeDasharray=a.toFixed(3),z["aria-valuenow"]=Math.round(n),x.strokeDashoffset=`${((100-n)/100*a).toFixed(3)}px`,y.transform="rotate(-90deg)"}return(0,p.jsx)(u,{className:(0,e.A)(t.root,d),style:{width:i,height:i,...y,...l},ownerState:s,ref:b,role:"progressbar",...z,...r,children:(0,p.jsx)(v,{className:t.svg,ownerState:s,viewBox:"22 22 44 44",children:(0,p.jsx)(w,{className:t.circle,style:x,ownerState:s,cx:44,cy:44,r:(44-m)/2,fill:"none",strokeWidth:m})})})})},44079:(a,b,c)=>{c.d(b,{A:()=>w});var d=c(38301),e=c(43249),f=c(2783),g=c(70300),h=c(37489),i=c(18168),j=c(68333),k=c(54716),l=c(6636),m=c(14328),n=c(8521),o=c(6638),p=c(29565),q=c(33105);function r(a){return(0,q.Ay)("MuiIconButton",a)}let s=(0,p.A)("MuiIconButton",["root","disabled","colorInherit","colorPrimary","colorSecondary","colorError","colorInfo","colorSuccess","colorWarning","edgeStart","edgeEnd","sizeSmall","sizeMedium","sizeLarge","loading","loadingIndicator","loadingWrapper"]);var t=c(21124);let u=(0,i.Ay)(m.A,{name:"MuiIconButton",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,c.loading&&b.loading,"default"!==c.color&&b[`color${(0,o.A)(c.color)}`],c.edge&&b[`edge${(0,o.A)(c.edge)}`],b[`size${(0,o.A)(c.size)}`]]}})((0,j.A)(({theme:a})=>({textAlign:"center",flex:"0 0 auto",fontSize:a.typography.pxToRem(24),padding:8,borderRadius:"50%",color:(a.vars||a).palette.action.active,transition:a.transitions.create("background-color",{duration:a.transitions.duration.shortest}),variants:[{props:a=>!a.disableRipple,style:{"--IconButton-hoverBg":a.vars?`rgba(${a.vars.palette.action.activeChannel} / ${a.vars.palette.action.hoverOpacity})`:(0,h.X4)(a.palette.action.active,a.palette.action.hoverOpacity),"&:hover":{backgroundColor:"var(--IconButton-hoverBg)","@media (hover: none)":{backgroundColor:"transparent"}}}},{props:{edge:"start"},style:{marginLeft:-12}},{props:{edge:"start",size:"small"},style:{marginLeft:-3}},{props:{edge:"end"},style:{marginRight:-12}},{props:{edge:"end",size:"small"},style:{marginRight:-3}}]})),(0,j.A)(({theme:a})=>({variants:[{props:{color:"inherit"},style:{color:"inherit"}},...Object.entries(a.palette).filter((0,k.A)()).map(([b])=>({props:{color:b},style:{color:(a.vars||a).palette[b].main}})),...Object.entries(a.palette).filter((0,k.A)()).map(([b])=>({props:{color:b},style:{"--IconButton-hoverBg":a.vars?`rgba(${(a.vars||a).palette[b].mainChannel} / ${a.vars.palette.action.hoverOpacity})`:(0,h.X4)((a.vars||a).palette[b].main,a.palette.action.hoverOpacity)}})),{props:{size:"small"},style:{padding:5,fontSize:a.typography.pxToRem(18)}},{props:{size:"large"},style:{padding:12,fontSize:a.typography.pxToRem(28)}}],[`&.${s.disabled}`]:{backgroundColor:"transparent",color:(a.vars||a).palette.action.disabled},[`&.${s.loading}`]:{color:"transparent"}}))),v=(0,i.Ay)("span",{name:"MuiIconButton",slot:"LoadingIndicator",overridesResolver:(a,b)=>b.loadingIndicator})(({theme:a})=>({display:"none",position:"absolute",visibility:"visible",top:"50%",left:"50%",transform:"translate(-50%, -50%)",color:(a.vars||a).palette.action.disabled,variants:[{props:{loading:!0},style:{display:"flex"}}]})),w=d.forwardRef(function(a,b){let c=(0,l.b)({props:a,name:"MuiIconButton"}),{edge:d=!1,children:h,className:i,color:j="default",disabled:k=!1,disableFocusRipple:m=!1,size:p="medium",id:q,loading:s=null,loadingIndicator:w,...x}=c,y=(0,g.A)(q),z=w??(0,t.jsx)(n.default,{"aria-labelledby":y,color:"inherit",size:16}),A={...c,edge:d,color:j,disabled:k,disableFocusRipple:m,loading:s,loadingIndicator:z,size:p},B=(a=>{let{classes:b,disabled:c,color:d,edge:e,size:g,loading:h}=a,i={root:["root",h&&"loading",c&&"disabled","default"!==d&&`color${(0,o.A)(d)}`,e&&`edge${(0,o.A)(e)}`,`size${(0,o.A)(g)}`],loadingIndicator:["loadingIndicator"],loadingWrapper:["loadingWrapper"]};return(0,f.A)(i,r,b)})(A);return(0,t.jsxs)(u,{id:s?y:q,className:(0,e.A)(B.root,i),centerRipple:!0,focusRipple:!m,disabled:k||s,ref:b,...x,ownerState:A,children:["boolean"==typeof s&&(0,t.jsx)("span",{className:B.loadingWrapper,style:{display:"contents"},children:(0,t.jsx)(v,{className:B.loadingIndicator,ownerState:A,children:s&&z})}),h]})})},64023:(a,b,c)=>{c.d(b,{A:()=>d});let d=c(38301).createContext(void 0)},68730:(a,b,c)=>{c.d(b,{A:()=>E});var d=c(38301),e=c(43249),f=c(75575),g=c(2783),h=c(37489),i=c(70300),j=c(41126),k=c(18168),l=c(68333),m=c(6636),n=c(14328),o=c(8521),p=c(6638),q=c(54716),r=c(29565),s=c(33105);function t(a){return(0,s.Ay)("MuiButton",a)}let u=(0,r.A)("MuiButton",["root","text","textInherit","textPrimary","textSecondary","textSuccess","textError","textInfo","textWarning","outlined","outlinedInherit","outlinedPrimary","outlinedSecondary","outlinedSuccess","outlinedError","outlinedInfo","outlinedWarning","contained","containedInherit","containedPrimary","containedSecondary","containedSuccess","containedError","containedInfo","containedWarning","disableElevation","focusVisible","disabled","colorInherit","colorPrimary","colorSecondary","colorSuccess","colorError","colorInfo","colorWarning","textSizeSmall","textSizeMedium","textSizeLarge","outlinedSizeSmall","outlinedSizeMedium","outlinedSizeLarge","containedSizeSmall","containedSizeMedium","containedSizeLarge","sizeMedium","sizeSmall","sizeLarge","fullWidth","startIcon","endIcon","icon","iconSizeSmall","iconSizeMedium","iconSizeLarge","loading","loadingWrapper","loadingIconPlaceholder","loadingIndicator","loadingPositionCenter","loadingPositionStart","loadingPositionEnd"]);var v=c(96936),w=c(64023),x=c(21124);let y=[{props:{size:"small"},style:{"& > *:nth-of-type(1)":{fontSize:18}}},{props:{size:"medium"},style:{"& > *:nth-of-type(1)":{fontSize:20}}},{props:{size:"large"},style:{"& > *:nth-of-type(1)":{fontSize:22}}}],z=(0,k.Ay)(n.A,{shouldForwardProp:a=>(0,j.A)(a)||"classes"===a,name:"MuiButton",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,b[c.variant],b[`${c.variant}${(0,p.A)(c.color)}`],b[`size${(0,p.A)(c.size)}`],b[`${c.variant}Size${(0,p.A)(c.size)}`],"inherit"===c.color&&b.colorInherit,c.disableElevation&&b.disableElevation,c.fullWidth&&b.fullWidth,c.loading&&b.loading]}})((0,l.A)(({theme:a})=>{let b="light"===a.palette.mode?a.palette.grey[300]:a.palette.grey[800],c="light"===a.palette.mode?a.palette.grey.A100:a.palette.grey[700];return{...a.typography.button,minWidth:64,padding:"6px 16px",border:0,borderRadius:(a.vars||a).shape.borderRadius,transition:a.transitions.create(["background-color","box-shadow","border-color","color"],{duration:a.transitions.duration.short}),"&:hover":{textDecoration:"none"},[`&.${u.disabled}`]:{color:(a.vars||a).palette.action.disabled},variants:[{props:{variant:"contained"},style:{color:"var(--variant-containedColor)",backgroundColor:"var(--variant-containedBg)",boxShadow:(a.vars||a).shadows[2],"&:hover":{boxShadow:(a.vars||a).shadows[4],"@media (hover: none)":{boxShadow:(a.vars||a).shadows[2]}},"&:active":{boxShadow:(a.vars||a).shadows[8]},[`&.${u.focusVisible}`]:{boxShadow:(a.vars||a).shadows[6]},[`&.${u.disabled}`]:{color:(a.vars||a).palette.action.disabled,boxShadow:(a.vars||a).shadows[0],backgroundColor:(a.vars||a).palette.action.disabledBackground}}},{props:{variant:"outlined"},style:{padding:"5px 15px",border:"1px solid currentColor",borderColor:"var(--variant-outlinedBorder, currentColor)",backgroundColor:"var(--variant-outlinedBg)",color:"var(--variant-outlinedColor)",[`&.${u.disabled}`]:{border:`1px solid ${(a.vars||a).palette.action.disabledBackground}`}}},{props:{variant:"text"},style:{padding:"6px 8px",color:"var(--variant-textColor)",backgroundColor:"var(--variant-textBg)"}},...Object.entries(a.palette).filter((0,q.A)()).map(([b])=>({props:{color:b},style:{"--variant-textColor":(a.vars||a).palette[b].main,"--variant-outlinedColor":(a.vars||a).palette[b].main,"--variant-outlinedBorder":a.vars?`rgba(${a.vars.palette[b].mainChannel} / 0.5)`:(0,h.X4)(a.palette[b].main,.5),"--variant-containedColor":(a.vars||a).palette[b].contrastText,"--variant-containedBg":(a.vars||a).palette[b].main,"@media (hover: hover)":{"&:hover":{"--variant-containedBg":(a.vars||a).palette[b].dark,"--variant-textBg":a.vars?`rgba(${a.vars.palette[b].mainChannel} / ${a.vars.palette.action.hoverOpacity})`:(0,h.X4)(a.palette[b].main,a.palette.action.hoverOpacity),"--variant-outlinedBorder":(a.vars||a).palette[b].main,"--variant-outlinedBg":a.vars?`rgba(${a.vars.palette[b].mainChannel} / ${a.vars.palette.action.hoverOpacity})`:(0,h.X4)(a.palette[b].main,a.palette.action.hoverOpacity)}}}})),{props:{color:"inherit"},style:{color:"inherit",borderColor:"currentColor","--variant-containedBg":a.vars?a.vars.palette.Button.inheritContainedBg:b,"@media (hover: hover)":{"&:hover":{"--variant-containedBg":a.vars?a.vars.palette.Button.inheritContainedHoverBg:c,"--variant-textBg":a.vars?`rgba(${a.vars.palette.text.primaryChannel} / ${a.vars.palette.action.hoverOpacity})`:(0,h.X4)(a.palette.text.primary,a.palette.action.hoverOpacity),"--variant-outlinedBg":a.vars?`rgba(${a.vars.palette.text.primaryChannel} / ${a.vars.palette.action.hoverOpacity})`:(0,h.X4)(a.palette.text.primary,a.palette.action.hoverOpacity)}}}},{props:{size:"small",variant:"text"},style:{padding:"4px 5px",fontSize:a.typography.pxToRem(13)}},{props:{size:"large",variant:"text"},style:{padding:"8px 11px",fontSize:a.typography.pxToRem(15)}},{props:{size:"small",variant:"outlined"},style:{padding:"3px 9px",fontSize:a.typography.pxToRem(13)}},{props:{size:"large",variant:"outlined"},style:{padding:"7px 21px",fontSize:a.typography.pxToRem(15)}},{props:{size:"small",variant:"contained"},style:{padding:"4px 10px",fontSize:a.typography.pxToRem(13)}},{props:{size:"large",variant:"contained"},style:{padding:"8px 22px",fontSize:a.typography.pxToRem(15)}},{props:{disableElevation:!0},style:{boxShadow:"none","&:hover":{boxShadow:"none"},[`&.${u.focusVisible}`]:{boxShadow:"none"},"&:active":{boxShadow:"none"},[`&.${u.disabled}`]:{boxShadow:"none"}}},{props:{fullWidth:!0},style:{width:"100%"}},{props:{loadingPosition:"center"},style:{transition:a.transitions.create(["background-color","box-shadow","border-color"],{duration:a.transitions.duration.short}),[`&.${u.loading}`]:{color:"transparent"}}}]}})),A=(0,k.Ay)("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.startIcon,c.loading&&b.startIconLoadingStart,b[`iconSize${(0,p.A)(c.size)}`]]}})(({theme:a})=>({display:"inherit",marginRight:8,marginLeft:-4,variants:[{props:{size:"small"},style:{marginLeft:-2}},{props:{loadingPosition:"start",loading:!0},style:{transition:a.transitions.create(["opacity"],{duration:a.transitions.duration.short}),opacity:0}},{props:{loadingPosition:"start",loading:!0,fullWidth:!0},style:{marginRight:-8}},...y]})),B=(0,k.Ay)("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.endIcon,c.loading&&b.endIconLoadingEnd,b[`iconSize${(0,p.A)(c.size)}`]]}})(({theme:a})=>({display:"inherit",marginRight:-4,marginLeft:8,variants:[{props:{size:"small"},style:{marginRight:-2}},{props:{loadingPosition:"end",loading:!0},style:{transition:a.transitions.create(["opacity"],{duration:a.transitions.duration.short}),opacity:0}},{props:{loadingPosition:"end",loading:!0,fullWidth:!0},style:{marginLeft:-8}},...y]})),C=(0,k.Ay)("span",{name:"MuiButton",slot:"LoadingIndicator",overridesResolver:(a,b)=>b.loadingIndicator})(({theme:a})=>({display:"none",position:"absolute",visibility:"visible",variants:[{props:{loading:!0},style:{display:"flex"}},{props:{loadingPosition:"start"},style:{left:14}},{props:{loadingPosition:"start",size:"small"},style:{left:10}},{props:{variant:"text",loadingPosition:"start"},style:{left:6}},{props:{loadingPosition:"center"},style:{left:"50%",transform:"translate(-50%)",color:(a.vars||a).palette.action.disabled}},{props:{loadingPosition:"end"},style:{right:14}},{props:{loadingPosition:"end",size:"small"},style:{right:10}},{props:{variant:"text",loadingPosition:"end"},style:{right:6}},{props:{loadingPosition:"start",fullWidth:!0},style:{position:"relative",left:-10}},{props:{loadingPosition:"end",fullWidth:!0},style:{position:"relative",right:-10}}]})),D=(0,k.Ay)("span",{name:"MuiButton",slot:"LoadingIconPlaceholder",overridesResolver:(a,b)=>b.loadingIconPlaceholder})({display:"inline-block",width:"1em",height:"1em"}),E=d.forwardRef(function(a,b){let c=d.useContext(v.A),h=d.useContext(w.A),j=(0,f.A)(c,a),k=(0,m.b)({props:j,name:"MuiButton"}),{children:l,color:n="primary",component:q="button",className:r,disabled:s=!1,disableElevation:u=!1,disableFocusRipple:y=!1,endIcon:E,focusVisibleClassName:F,fullWidth:G=!1,id:H,loading:I=null,loadingIndicator:J,loadingPosition:K="center",size:L="medium",startIcon:M,type:N,variant:O="text",...P}=k,Q=(0,i.A)(H),R=J??(0,x.jsx)(o.default,{"aria-labelledby":Q,color:"inherit",size:16}),S={...k,color:n,component:q,disabled:s,disableElevation:u,disableFocusRipple:y,fullWidth:G,loading:I,loadingIndicator:R,loadingPosition:K,size:L,type:N,variant:O},T=(a=>{let{color:b,disableElevation:c,fullWidth:d,size:e,variant:f,loading:h,loadingPosition:i,classes:j}=a,k={root:["root",h&&"loading",f,`${f}${(0,p.A)(b)}`,`size${(0,p.A)(e)}`,`${f}Size${(0,p.A)(e)}`,`color${(0,p.A)(b)}`,c&&"disableElevation",d&&"fullWidth",h&&`loadingPosition${(0,p.A)(i)}`],startIcon:["icon","startIcon",`iconSize${(0,p.A)(e)}`],endIcon:["icon","endIcon",`iconSize${(0,p.A)(e)}`],loadingIndicator:["loadingIndicator"],loadingWrapper:["loadingWrapper"]},l=(0,g.A)(k,t,j);return{...j,...l}})(S),U=(M||I&&"start"===K)&&(0,x.jsx)(A,{className:T.startIcon,ownerState:S,children:M||(0,x.jsx)(D,{className:T.loadingIconPlaceholder,ownerState:S})}),V=(E||I&&"end"===K)&&(0,x.jsx)(B,{className:T.endIcon,ownerState:S,children:E||(0,x.jsx)(D,{className:T.loadingIconPlaceholder,ownerState:S})}),W="boolean"==typeof I?(0,x.jsx)("span",{className:T.loadingWrapper,style:{display:"contents"},children:I&&(0,x.jsx)(C,{className:T.loadingIndicator,ownerState:S,children:R})}):null;return(0,x.jsxs)(z,{ownerState:S,className:(0,e.A)(c.className,T.root,r,h||""),component:q,disabled:s||I,focusRipple:!y,focusVisibleClassName:(0,e.A)(T.focusVisible,F),ref:b,type:N,id:I?Q:H,...P,classes:T,children:[U,"end"!==K&&W,l,"end"===K&&W,V]})})},70300:(a,b,c)=>{c.d(b,{A:()=>d});let d=c(92869).A},82666:(a,b,c)=>{c.d(b,{Ay:()=>u});var d=c(38301),e=c(43249),f=c(80751),g=c(69467),h=c(2783),i=c(18168),j=c(6636),k=c(60839);let l=d.createContext();var m=c(29565),n=c(33105);function o(a){return(0,n.Ay)("MuiGrid",a)}let p=["auto",!0,1,2,3,4,5,6,7,8,9,10,11,12],q=(0,m.A)("MuiGrid",["root","container","item","zeroMinWidth",...[0,1,2,3,4,5,6,7,8,9,10].map(a=>`spacing-xs-${a}`),...["column-reverse","column","row-reverse","row"].map(a=>`direction-xs-${a}`),...["nowrap","wrap-reverse","wrap"].map(a=>`wrap-xs-${a}`),...p.map(a=>`grid-xs-${a}`),...p.map(a=>`grid-sm-${a}`),...p.map(a=>`grid-md-${a}`),...p.map(a=>`grid-lg-${a}`),...p.map(a=>`grid-xl-${a}`)]);var r=c(21124);function s({breakpoints:a,values:b}){let c="";Object.keys(b).forEach(a=>{""===c&&0!==b[a]&&(c=a)});let d=Object.keys(a).sort((b,c)=>a[b]-a[c]);return d.slice(0,d.indexOf(c))}let t=(0,i.Ay)("div",{name:"MuiGrid",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a,{container:d,direction:e,item:f,spacing:g,wrap:h,zeroMinWidth:i,breakpoints:j}=c,k=[];d&&(k=function(a,b,c={}){if(!a||a<=0)return[];if("string"==typeof a&&!Number.isNaN(Number(a))||"number"==typeof a)return[c[`spacing-xs-${String(a)}`]];let d=[];return b.forEach(b=>{let e=a[b];Number(e)>0&&d.push(c[`spacing-${b}-${String(e)}`])}),d}(g,j,b));let l=[];return j.forEach(a=>{let d=c[a];d&&l.push(b[`grid-${a}-${String(d)}`])}),[b.root,d&&b.container,f&&b.item,i&&b.zeroMinWidth,...k,"row"!==e&&b[`direction-xs-${String(e)}`],"wrap"!==h&&b[`wrap-xs-${String(h)}`],...l]}})(({ownerState:a})=>({boxSizing:"border-box",...a.container&&{display:"flex",flexWrap:"wrap",width:"100%"},...a.item&&{margin:0},...a.zeroMinWidth&&{minWidth:0},..."wrap"!==a.wrap&&{flexWrap:a.wrap}}),function({theme:a,ownerState:b}){let c=(0,f.kW)({values:b.direction,breakpoints:a.breakpoints.values});return(0,f.NI)({theme:a},c,a=>{let b={flexDirection:a};return a.startsWith("column")&&(b[`& > .${q.item}`]={maxWidth:"none"}),b})},function({theme:a,ownerState:b}){let{container:c,rowSpacing:d}=b,e={};if(c&&0!==d){let b,c=(0,f.kW)({values:d,breakpoints:a.breakpoints.values});"object"==typeof c&&(b=s({breakpoints:a.breakpoints.values,values:c})),e=(0,f.NI)({theme:a},c,(c,d)=>{let e=a.spacing(c);return"0px"!==e?{marginTop:`calc(-1 * ${e})`,[`& > .${q.item}`]:{paddingTop:e}}:b?.includes(d)?{}:{marginTop:0,[`& > .${q.item}`]:{paddingTop:0}}})}return e},function({theme:a,ownerState:b}){let{container:c,columnSpacing:d}=b,e={};if(c&&0!==d){let b,c=(0,f.kW)({values:d,breakpoints:a.breakpoints.values});"object"==typeof c&&(b=s({breakpoints:a.breakpoints.values,values:c})),e=(0,f.NI)({theme:a},c,(c,d)=>{let e=a.spacing(c);if("0px"!==e){let a=`calc(-1 * ${e})`;return{width:`calc(100% + ${e})`,marginLeft:a,[`& > .${q.item}`]:{paddingLeft:e}}}return b?.includes(d)?{}:{width:"100%",marginLeft:0,[`& > .${q.item}`]:{paddingLeft:0}}})}return e},function({theme:a,ownerState:b}){let c;return a.breakpoints.keys.reduce((d,e)=>{let g={};if(b[e]&&(c=b[e]),!c)return d;if(!0===c)g={flexBasis:0,flexGrow:1,maxWidth:"100%"};else if("auto"===c)g={flexBasis:"auto",flexGrow:0,flexShrink:0,maxWidth:"none",width:"auto"};else{let h=(0,f.kW)({values:b.columns,breakpoints:a.breakpoints.values}),i="object"==typeof h?h[e]:h;if(null==i)return d;let j=`${Math.round(c/i*1e8)/1e6}%`,k={};if(b.container&&b.item&&0!==b.columnSpacing){let c=a.spacing(b.columnSpacing);if("0px"!==c){let a=`calc(${j} + ${c})`;k={flexBasis:a,maxWidth:a}}}g={flexBasis:j,flexGrow:0,maxWidth:j,...k}}return 0===a.breakpoints.values[e]?Object.assign(d,g):d[a.breakpoints.up(e)]=g,d},{})}),u=d.forwardRef(function(a,b){let c=(0,j.b)({props:a,name:"MuiGrid"}),{breakpoints:f}=(0,k.A)(),i=(0,g.A)(c),{className:m,columns:n,columnSpacing:p,component:q="div",container:s=!1,direction:u="row",item:v=!1,rowSpacing:w,spacing:x=0,wrap:y="wrap",zeroMinWidth:z=!1,...A}=i,B=d.useContext(l),C=s?n||12:B,D={},E={...A};f.keys.forEach(a=>{null!=A[a]&&(D[a]=A[a],delete E[a])});let F={...i,columns:C,container:s,direction:u,item:v,rowSpacing:w||x,columnSpacing:p||x,wrap:y,zeroMinWidth:z,spacing:x,...D,breakpoints:f.keys},G=(a=>{let{classes:b,container:c,direction:d,item:e,spacing:f,wrap:g,zeroMinWidth:i,breakpoints:j}=a,k=[];c&&(k=function(a,b){if(!a||a<=0)return[];if("string"==typeof a&&!Number.isNaN(Number(a))||"number"==typeof a)return[`spacing-xs-${String(a)}`];let c=[];return b.forEach(b=>{let d=a[b];if(Number(d)>0){let a=`spacing-${b}-${String(d)}`;c.push(a)}}),c}(f,j));let l=[];j.forEach(b=>{let c=a[b];c&&l.push(`grid-${b}-${String(c)}`)});let m={root:["root",c&&"container",e&&"item",i&&"zeroMinWidth",...k,"row"!==d&&`direction-xs-${String(d)}`,"wrap"!==g&&`wrap-xs-${String(g)}`,...l]};return(0,h.A)(m,o,b)})(F);return(0,r.jsx)(l.Provider,{value:C,children:(0,r.jsx)(t,{ownerState:F,className:(0,e.A)(G.root,m),as:q,ref:b,...E})})})},88570:(a,b,c)=>{c.d(b,{A:()=>f}),c(38301);var d=c(27080),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close")},88745:(a,b,c)=>{c.d(b,{A:()=>F});var d=c(38301),e=c(43249),f=c(2783),g=c(37489),h=c(18168),i=c(68333),j=c(6636),k=c(20385),l=c(6638),m=c(54716),n=c(54573),o=c(29565),p=c(33105);function q(a){return(0,p.Ay)("MuiAlert",a)}let r=(0,o.A)("MuiAlert",["root","action","icon","message","filled","colorSuccess","colorInfo","colorWarning","colorError","filledSuccess","filledInfo","filledWarning","filledError","outlined","outlinedSuccess","outlinedInfo","outlinedWarning","outlinedError","standard","standardSuccess","standardInfo","standardWarning","standardError"]);var s=c(44079),t=c(27080),u=c(21124);let v=(0,t.A)((0,u.jsx)("path",{d:"M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z"}),"SuccessOutlined"),w=(0,t.A)((0,u.jsx)("path",{d:"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z"}),"ReportProblemOutlined"),x=(0,t.A)((0,u.jsx)("path",{d:"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"ErrorOutline"),y=(0,t.A)((0,u.jsx)("path",{d:"M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z"}),"InfoOutlined");var z=c(88570);let A=(0,h.Ay)(n.A,{name:"MuiAlert",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,b[c.variant],b[`${c.variant}${(0,l.A)(c.color||c.severity)}`]]}})((0,i.A)(({theme:a})=>{let b="light"===a.palette.mode?g.e$:g.a,c="light"===a.palette.mode?g.a:g.e$;return{...a.typography.body2,backgroundColor:"transparent",display:"flex",padding:"6px 16px",variants:[...Object.entries(a.palette).filter((0,m.A)(["light"])).map(([d])=>({props:{colorSeverity:d,variant:"standard"},style:{color:a.vars?a.vars.palette.Alert[`${d}Color`]:b(a.palette[d].light,.6),backgroundColor:a.vars?a.vars.palette.Alert[`${d}StandardBg`]:c(a.palette[d].light,.9),[`& .${r.icon}`]:a.vars?{color:a.vars.palette.Alert[`${d}IconColor`]}:{color:a.palette[d].main}}})),...Object.entries(a.palette).filter((0,m.A)(["light"])).map(([c])=>({props:{colorSeverity:c,variant:"outlined"},style:{color:a.vars?a.vars.palette.Alert[`${c}Color`]:b(a.palette[c].light,.6),border:`1px solid ${(a.vars||a).palette[c].light}`,[`& .${r.icon}`]:a.vars?{color:a.vars.palette.Alert[`${c}IconColor`]}:{color:a.palette[c].main}}})),...Object.entries(a.palette).filter((0,m.A)(["dark"])).map(([b])=>({props:{colorSeverity:b,variant:"filled"},style:{fontWeight:a.typography.fontWeightMedium,...a.vars?{color:a.vars.palette.Alert[`${b}FilledColor`],backgroundColor:a.vars.palette.Alert[`${b}FilledBg`]}:{backgroundColor:"dark"===a.palette.mode?a.palette[b].dark:a.palette[b].main,color:a.palette.getContrastText(a.palette[b].main)}}}))]}})),B=(0,h.Ay)("div",{name:"MuiAlert",slot:"Icon",overridesResolver:(a,b)=>b.icon})({marginRight:12,padding:"7px 0",display:"flex",fontSize:22,opacity:.9}),C=(0,h.Ay)("div",{name:"MuiAlert",slot:"Message",overridesResolver:(a,b)=>b.message})({padding:"8px 0",minWidth:0,overflow:"auto"}),D=(0,h.Ay)("div",{name:"MuiAlert",slot:"Action",overridesResolver:(a,b)=>b.action})({display:"flex",alignItems:"flex-start",padding:"4px 0 0 16px",marginLeft:"auto",marginRight:-8}),E={success:(0,u.jsx)(v,{fontSize:"inherit"}),warning:(0,u.jsx)(w,{fontSize:"inherit"}),error:(0,u.jsx)(x,{fontSize:"inherit"}),info:(0,u.jsx)(y,{fontSize:"inherit"})},F=d.forwardRef(function(a,b){let c=(0,j.b)({props:a,name:"MuiAlert"}),{action:d,children:g,className:h,closeText:i="Close",color:m,components:n={},componentsProps:o={},icon:p,iconMapping:r=E,onClose:t,role:v="alert",severity:w="success",slotProps:x={},slots:y={},variant:F="standard",...G}=c,H={...c,color:m,severity:w,variant:F,colorSeverity:m||w},I=(a=>{let{variant:b,color:c,severity:d,classes:e}=a,g={root:["root",`color${(0,l.A)(c||d)}`,`${b}${(0,l.A)(c||d)}`,`${b}`],icon:["icon"],message:["message"],action:["action"]};return(0,f.A)(g,q,e)})(H),J={slots:{closeButton:n.CloseButton,closeIcon:n.CloseIcon,...y},slotProps:{...o,...x}},[K,L]=(0,k.A)("root",{ref:b,shouldForwardComponentProp:!0,className:(0,e.A)(I.root,h),elementType:A,externalForwardedProps:{...J,...G},ownerState:H,additionalProps:{role:v,elevation:0}}),[M,N]=(0,k.A)("icon",{className:I.icon,elementType:B,externalForwardedProps:J,ownerState:H}),[O,P]=(0,k.A)("message",{className:I.message,elementType:C,externalForwardedProps:J,ownerState:H}),[Q,R]=(0,k.A)("action",{className:I.action,elementType:D,externalForwardedProps:J,ownerState:H}),[S,T]=(0,k.A)("closeButton",{elementType:s.A,externalForwardedProps:J,ownerState:H}),[U,V]=(0,k.A)("closeIcon",{elementType:z.A,externalForwardedProps:J,ownerState:H});return(0,u.jsxs)(K,{...L,children:[!1!==p?(0,u.jsx)(M,{...N,children:p||r[w]||E[w]}):null,(0,u.jsx)(O,{...P,children:g}),null!=d?(0,u.jsx)(Q,{...R,children:d}):null,null==d&&t?(0,u.jsx)(Q,{...R,children:(0,u.jsx)(S,{size:"small","aria-label":i,title:i,color:"inherit",onClick:t,...T,children:(0,u.jsx)(U,{fontSize:"small",...V})})}):null]})})},96936:(a,b,c)=>{c.d(b,{A:()=>d});let d=c(38301).createContext({})}};
|