flujo-ai 3.9.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 -0
- package/.next/app-build-manifest.json +592 -0
- package/.next/app-path-routes-manifest.json +63 -0
- package/.next/build-manifest.json +33 -0
- package/.next/diagnostics/build-diagnostics.json +6 -0
- package/.next/diagnostics/framework.json +1 -0
- package/.next/export-marker.json +6 -0
- package/.next/images-manifest.json +58 -0
- package/.next/next-minimal-server.js.nft.json +1 -0
- package/.next/next-server.js.nft.json +1 -0
- package/.next/package.json +1 -0
- package/.next/prerender-manifest.json +205 -0
- package/.next/react-loadable-manifest.json +83 -0
- package/.next/required-server-files.json +328 -0
- package/.next/routes-manifest.json +305 -0
- package/.next/server/app/_not-found/page.js +4 -0
- package/.next/server/app/_not-found/page.js.nft.json +1 -0
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
- package/.next/server/app/_not-found.html +1 -0
- package/.next/server/app/_not-found.meta +8 -0
- package/.next/server/app/_not-found.rsc +16 -0
- package/.next/server/app/api/backup/route.js +2 -0
- package/.next/server/app/api/backup/route.js.nft.json +1 -0
- package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/browse/route.js +2 -0
- package/.next/server/app/api/browse/route.js.nft.json +1 -0
- package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/cwd/route.js +2 -0
- package/.next/server/app/api/cwd/route.js.nft.json +1 -0
- package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/encryption/secure/route.js +1 -0
- package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -0
- package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/env/route.js +2 -0
- package/.next/server/app/api/env/route.js.nft.json +1 -0
- package/.next/server/app/api/env/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/flow/[id]/route.js +1 -0
- package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -0
- package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/flow/prompt-renderer/route.js +2 -0
- package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -0
- package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/flow/route.js +1 -0
- package/.next/server/app/api/flow/route.js.nft.json +1 -0
- package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/git/route.js +3 -0
- package/.next/server/app/api/git/route.js.nft.json +1 -0
- package/.next/server/app/api/git/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/init/route.js +1 -0
- package/.next/server/app/api/init/route.js.nft.json +1 -0
- package/.next/server/app/api/init/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/cancel/route.js +2 -0
- package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -0
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -0
- package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -0
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -0
- package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/servers/[name]/route.js +1 -0
- package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -0
- package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -0
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -0
- package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/servers/route.js +1 -0
- package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/test-connection/route.js +1 -0
- package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp-registry/route.js +2 -0
- package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp-registry/spotlight/route.js +2 -0
- package/.next/server/app/api/mcp-registry/spotlight/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/model/[id]/route.js +1 -0
- package/.next/server/app/api/model/[id]/route.js.nft.json +1 -0
- package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/model/provider/route.js +2 -0
- package/.next/server/app/api/model/provider/route.js.nft.json +1 -0
- package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/model/route.js +1 -0
- package/.next/server/app/api/model/route.js.nft.json +1 -0
- package/.next/server/app/api/model/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/model/test/route.js +2 -0
- package/.next/server/app/api/model/test/route.js.nft.json +1 -0
- package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/oauth/callback/route.js +2 -0
- package/.next/server/app/api/oauth/callback/route.js.nft.json +1 -0
- package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/oauth/initiate/route.js +2 -0
- package/.next/server/app/api/oauth/initiate/route.js.nft.json +1 -0
- package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/oauth/reset/route.js +2 -0
- package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -0
- package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/planned-executions/[id]/route.js +1 -0
- package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -0
- package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/planned-executions/[id]/run/route.js +1 -0
- package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -0
- package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/planned-executions/[id]/runs/route.js +1 -0
- package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -0
- package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/planned-executions/preview-schedule/route.js +2 -0
- package/.next/server/app/api/planned-executions/preview-schedule/route.js.nft.json +1 -0
- package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/planned-executions/route.js +1 -0
- package/.next/server/app/api/planned-executions/route.js.nft.json +1 -0
- package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/restore/route.js +2 -0
- package/.next/server/app/api/restore/route.js.nft.json +1 -0
- package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/storage/route.js +2 -0
- package/.next/server/app/api/storage/route.js.nft.json +1 -0
- package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/update/route.js +2 -0
- package/.next/server/app/api/update/route.js.nft.json +1 -0
- package/.next/server/app/api/update/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/webhooks/[id]/route.js +1 -0
- package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -0
- package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/chat/page.js +10 -0
- package/.next/server/app/chat/page.js.nft.json +1 -0
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -0
- package/.next/server/app/chat.html +1 -0
- package/.next/server/app/chat.meta +7 -0
- package/.next/server/app/chat.rsc +20 -0
- package/.next/server/app/docs/page.js +2 -0
- package/.next/server/app/docs/page.js.nft.json +1 -0
- package/.next/server/app/docs/page_client-reference-manifest.js +1 -0
- package/.next/server/app/docs.html +1 -0
- package/.next/server/app/docs.meta +7 -0
- package/.next/server/app/docs.rsc +20 -0
- package/.next/server/app/executions/page.js +5 -0
- package/.next/server/app/executions/page.js.nft.json +1 -0
- package/.next/server/app/executions/page_client-reference-manifest.js +1 -0
- package/.next/server/app/executions.html +1 -0
- package/.next/server/app/executions.meta +7 -0
- package/.next/server/app/executions.rsc +20 -0
- package/.next/server/app/flows/page.js +40 -0
- package/.next/server/app/flows/page.js.nft.json +1 -0
- package/.next/server/app/flows/page_client-reference-manifest.js +1 -0
- package/.next/server/app/flows.html +1 -0
- package/.next/server/app/flows.meta +7 -0
- package/.next/server/app/flows.rsc +21 -0
- package/.next/server/app/index.html +1 -0
- package/.next/server/app/index.meta +7 -0
- package/.next/server/app/index.rsc +20 -0
- package/.next/server/app/mcp/page.js +50 -0
- package/.next/server/app/mcp/page.js.nft.json +1 -0
- package/.next/server/app/mcp/page_client-reference-manifest.js +1 -0
- package/.next/server/app/mcp-flows/route.js +1 -0
- package/.next/server/app/mcp-flows/route.js.nft.json +1 -0
- package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -0
- package/.next/server/app/mcp-proxy/[server]/route.js +1 -0
- package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -0
- package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/mcp.html +1 -0
- package/.next/server/app/mcp.meta +7 -0
- package/.next/server/app/mcp.rsc +20 -0
- package/.next/server/app/models/page.js +3 -0
- package/.next/server/app/models/page.js.nft.json +1 -0
- package/.next/server/app/models/page_client-reference-manifest.js +1 -0
- package/.next/server/app/page.js +2 -0
- package/.next/server/app/page.js.nft.json +1 -0
- package/.next/server/app/page_client-reference-manifest.js +1 -0
- package/.next/server/app/settings/page.js +46 -0
- package/.next/server/app/settings/page.js.nft.json +1 -0
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -0
- package/.next/server/app/settings.html +1 -0
- package/.next/server/app/settings.meta +7 -0
- package/.next/server/app/settings.rsc +20 -0
- package/.next/server/app/v1/chat/completions/route.js +2 -0
- package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -0
- package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +1 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +1 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +11 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -0
- package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/v1/chat/conversations/route.js +2 -0
- package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -0
- package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -0
- package/.next/server/app/v1/models/route.js +2 -0
- package/.next/server/app/v1/models/route.js.nft.json +1 -0
- package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -0
- package/.next/server/app-paths-manifest.json +63 -0
- package/.next/server/chunks/120.js +15 -0
- package/.next/server/chunks/1223.js +1 -0
- package/.next/server/chunks/1373.js +1 -0
- package/.next/server/chunks/1381.js +1 -0
- package/.next/server/chunks/1403.js +6 -0
- package/.next/server/chunks/1555.js +1 -0
- package/.next/server/chunks/1692.js +1 -0
- package/.next/server/chunks/1870.js +1 -0
- package/.next/server/chunks/1905.js +2 -0
- package/.next/server/chunks/1986.js +1 -0
- package/.next/server/chunks/2181.js +17 -0
- package/.next/server/chunks/22.js +4 -0
- package/.next/server/chunks/2253.js +1 -0
- package/.next/server/chunks/232.js +1 -0
- package/.next/server/chunks/2471.js +1 -0
- package/.next/server/chunks/2666.js +1 -0
- package/.next/server/chunks/2695.js +95 -0
- package/.next/server/chunks/2776.js +3 -0
- package/.next/server/chunks/3736.js +1 -0
- package/.next/server/chunks/3984.js +9 -0
- package/.next/server/chunks/4239.js +1 -0
- package/.next/server/chunks/4322.js +1 -0
- package/.next/server/chunks/4706.js +1 -0
- package/.next/server/chunks/4729.js +6 -0
- package/.next/server/chunks/473.js +2 -0
- package/.next/server/chunks/4753.js +8 -0
- package/.next/server/chunks/4989.js +1 -0
- package/.next/server/chunks/5389.js +154 -0
- package/.next/server/chunks/5443.js +1 -0
- package/.next/server/chunks/5486.js +1 -0
- package/.next/server/chunks/5547.js +2 -0
- package/.next/server/chunks/558.js +1 -0
- package/.next/server/chunks/5611.js +6 -0
- package/.next/server/chunks/5734.js +60 -0
- package/.next/server/chunks/5838.js +1 -0
- package/.next/server/chunks/5873.js +22 -0
- package/.next/server/chunks/598.js +1 -0
- package/.next/server/chunks/6064.js +1 -0
- package/.next/server/chunks/62.js +1 -0
- package/.next/server/chunks/6283.js +2 -0
- package/.next/server/chunks/6390.js +28 -0
- package/.next/server/chunks/6542.js +1 -0
- package/.next/server/chunks/6637.js +2 -0
- package/.next/server/chunks/6760.js +1 -0
- package/.next/server/chunks/6936.js +35 -0
- package/.next/server/chunks/6996.js +62 -0
- package/.next/server/chunks/701.js +10 -0
- package/.next/server/chunks/7214.js +6 -0
- package/.next/server/chunks/724.js +27 -0
- package/.next/server/chunks/7412.js +5 -0
- package/.next/server/chunks/7506.js +10 -0
- package/.next/server/chunks/7531.js +52 -0
- package/.next/server/chunks/805.js +2 -0
- package/.next/server/chunks/812.js +2 -0
- package/.next/server/chunks/8298.js +1 -0
- package/.next/server/chunks/8312.js +5 -0
- package/.next/server/chunks/8445.js +82 -0
- package/.next/server/chunks/8460.js +1 -0
- package/.next/server/chunks/8693.js +1 -0
- package/.next/server/chunks/8739.js +2 -0
- package/.next/server/chunks/8938.js +8 -0
- package/.next/server/chunks/9042.js +1 -0
- package/.next/server/chunks/9188.js +1 -0
- package/.next/server/chunks/9273.js +4 -0
- package/.next/server/chunks/9314.js +12 -0
- package/.next/server/chunks/9343.js +5 -0
- package/.next/server/chunks/9406.js +95 -0
- package/.next/server/chunks/9938.js +1 -0
- package/.next/server/chunks/9989.js +1 -0
- package/.next/server/functions-config-manifest.json +10 -0
- package/.next/server/instrumentation.js +1 -0
- package/.next/server/instrumentation.js.nft.json +1 -0
- package/.next/server/interception-route-rewrite-manifest.js +1 -0
- package/.next/server/middleware-build-manifest.js +1 -0
- package/.next/server/middleware-manifest.json +6 -0
- package/.next/server/middleware-react-loadable-manifest.js +1 -0
- package/.next/server/next-font-manifest.js +1 -0
- package/.next/server/next-font-manifest.json +1 -0
- package/.next/server/pages/404.html +1 -0
- package/.next/server/pages/500.html +1 -0
- package/.next/server/pages/_app.js +1 -0
- package/.next/server/pages/_app.js.nft.json +1 -0
- package/.next/server/pages/_document.js +1 -0
- package/.next/server/pages/_document.js.nft.json +1 -0
- package/.next/server/pages/_error.js +19 -0
- package/.next/server/pages/_error.js.nft.json +1 -0
- package/.next/server/pages-manifest.json +6 -0
- package/.next/server/server-reference-manifest.js +1 -0
- package/.next/server/server-reference-manifest.json +1 -0
- package/.next/server/webpack-runtime.js +1 -0
- package/.next/static/GbXXL_8DLT2oVwT-JdpbM/_buildManifest.js +1 -0
- package/.next/static/GbXXL_8DLT2oVwT-JdpbM/_ssgManifest.js +1 -0
- package/.next/static/chunks/1255-13d973e0759ea6d6.js +1 -0
- package/.next/static/chunks/1374-e084b3c40554288a.js +1 -0
- package/.next/static/chunks/1424-01898260211a09d0.js +1 -0
- package/.next/static/chunks/1646.a93085a0445ba909.js +1 -0
- package/.next/static/chunks/1a258343-bcffff1604e3797c.js +1 -0
- package/.next/static/chunks/2003-7710c23acaef11c9.js +1 -0
- package/.next/static/chunks/2005-f9d38c39f10c321f.js +1 -0
- package/.next/static/chunks/2160-4d9f132965bc2a89.js +1 -0
- package/.next/static/chunks/2380-2a7acfa037ec8e80.js +1 -0
- package/.next/static/chunks/2619-04bc32f026a0d946.js +1 -0
- package/.next/static/chunks/2624-b985ab3eac1139c3.js +1 -0
- package/.next/static/chunks/2678-c88052addfb0478a.js +1 -0
- package/.next/static/chunks/2720-2a926505ec98a6de.js +1 -0
- package/.next/static/chunks/3077-565833c67440a7fa.js +1 -0
- package/.next/static/chunks/3217.79ca74c918fc772c.js +1 -0
- package/.next/static/chunks/3235-dfcb73b8d483f8cd.js +1 -0
- package/.next/static/chunks/3272-fd8d59523f61da96.js +1 -0
- package/.next/static/chunks/3403-7c5037145e384171.js +1 -0
- package/.next/static/chunks/3545.c3fbe14528517a75.js +1 -0
- package/.next/static/chunks/3750-38474d67566af4c3.js +1 -0
- package/.next/static/chunks/3810-cee95063d5535307.js +1 -0
- package/.next/static/chunks/39-1732a0b689c7b641.js +1 -0
- package/.next/static/chunks/4754-5c62bb61142f82d1.js +1 -0
- package/.next/static/chunks/488-623d07c3fbc21e28.js +1 -0
- package/.next/static/chunks/4bd1b696-182b6b13bdad92e3.js +1 -0
- package/.next/static/chunks/5139.e4ff9cc3669129ed.js +1 -0
- package/.next/static/chunks/5648-2c6caf3d55f95e11.js +1 -0
- package/.next/static/chunks/5961-828f4f7efc3e1381.js +1 -0
- package/.next/static/chunks/6134-758747aabd77289d.js +8 -0
- package/.next/static/chunks/690-391bc0f482a9f67c.js +1 -0
- package/.next/static/chunks/7126-2bafddf1b09cacac.js +1 -0
- package/.next/static/chunks/7329-78f54f68ea2d37e2.js +1 -0
- package/.next/static/chunks/7396-807a034f58b57712.js +1 -0
- package/.next/static/chunks/7488-b58bc701d0deda00.js +1 -0
- package/.next/static/chunks/7539.41f0448cf9783388.js +1 -0
- package/.next/static/chunks/7583.8a518353bd072db9.js +1 -0
- package/.next/static/chunks/8187.5d6523f30e705998.js +1 -0
- package/.next/static/chunks/8198.cd0d3f8429c02862.js +1 -0
- package/.next/static/chunks/8345.76f420453fc0dee7.js +1 -0
- package/.next/static/chunks/8548-8e4a95334064e8b2.js +1 -0
- package/.next/static/chunks/8598-1b627b3d682b364a.js +1 -0
- package/.next/static/chunks/8862-1314a13b011c4817.js +1 -0
- package/.next/static/chunks/9164-81ca1a1bccdc5ed2.js +1 -0
- package/.next/static/chunks/9195.01a57af6d6cdf1a5.js +1 -0
- package/.next/static/chunks/9244-3281f7fd02003a2c.js +1 -0
- package/.next/static/chunks/9562-93cc45aef3630781.js +1 -0
- package/.next/static/chunks/9718-12d33c1a26bb002d.js +1 -0
- package/.next/static/chunks/app/_not-found/page-81dc485d60f94046.js +1 -0
- package/.next/static/chunks/app/api/backup/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/browse/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/cwd/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/encryption/secure/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/env/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/flow/prompt-renderer/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/flow/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/git/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/init/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/mcp/cancel/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/mcp/test-connection/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/spotlight/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/model/[id]/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/model/provider/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/model/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/model/test/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/oauth/callback/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/oauth/initiate/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/oauth/reset/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/run/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/restore/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/storage/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/update/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/api/webhooks/[id]/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/chat/page-019d2b836f34f40d.js +1 -0
- package/.next/static/chunks/app/docs/page-2a4cff7c40706a48.js +1 -0
- package/.next/static/chunks/app/executions/page-b46744c507a6e810.js +1 -0
- package/.next/static/chunks/app/flows/page-7b5c0e06951398ac.js +1 -0
- package/.next/static/chunks/app/layout-2878f13d7e253503.js +1 -0
- package/.next/static/chunks/app/mcp/page-1ca55f88a3045b5d.js +1 -0
- package/.next/static/chunks/app/mcp-flows/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/mcp-proxy/[server]/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/models/error-2b00c98abf1e02cf.js +1 -0
- package/.next/static/chunks/app/models/loading-57d1c02d0817fc47.js +1 -0
- package/.next/static/chunks/app/models/page-a20e6c4e1a5a0c9a.js +1 -0
- package/.next/static/chunks/app/page-471879d3918aeeb6.js +1 -0
- package/.next/static/chunks/app/settings/page-88f7e1b65a6681ec.js +1 -0
- package/.next/static/chunks/app/v1/chat/completions/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/app/v1/models/route-acd5b6e731d45f1a.js +1 -0
- package/.next/static/chunks/ccd63cfe-4a75b90fa4cb53ad.js +1 -0
- package/.next/static/chunks/framework-1548034a53843b9f.js +1 -0
- package/.next/static/chunks/main-app-faff38c77cb00119.js +1 -0
- package/.next/static/chunks/main-be8e823624954fab.js +1 -0
- package/.next/static/chunks/pages/_app-e8b861c87f6f033c.js +1 -0
- package/.next/static/chunks/pages/_error-c8f84f7bd11d43d4.js +1 -0
- package/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/.next/static/chunks/webpack-6f17a022ac16e8bd.js +1 -0
- package/.next/static/css/64cb1f185b52a623.css +1 -0
- package/.next/static/css/d1484588c616b291.css +31 -0
- package/.next/static/media/013b72fa676f92e0-s.woff2 +0 -0
- package/.next/static/media/22a5144ee8d83bca-s.p.woff2 +0 -0
- package/.next/static/media/2b5b02fc7e511755-s.woff2 +0 -0
- package/.next/static/media/65f03d54ccadf4a8-s.woff2 +0 -0
- package/.next/static/media/7d4881bb7e1bf84d-s.p.woff2 +0 -0
- package/.next/static/media/9766a7e9e2e0ad5a-s.woff2 +0 -0
- package/.next/static/media/aa016aab0e6d1295-s.woff2 +0 -0
- package/.next/static/media/b66cf8e69499582a-s.woff2 +0 -0
- package/.next/static/media/b9408752a0c24fb9-s.woff2 +0 -0
- package/.next/static/media/e038a29029a234f2-s.woff2 +0 -0
- package/.next/static/media/f639721981034f88-s.woff2 +0 -0
- package/.next/trace +7 -0
- package/.next/types/app/api/backup/route.ts +347 -0
- package/.next/types/app/api/browse/route.ts +347 -0
- package/.next/types/app/api/cwd/route.ts +347 -0
- package/.next/types/app/api/encryption/secure/route.ts +347 -0
- package/.next/types/app/api/env/route.ts +347 -0
- package/.next/types/app/api/flow/[id]/route.ts +347 -0
- package/.next/types/app/api/flow/prompt-renderer/route.ts +347 -0
- package/.next/types/app/api/flow/route.ts +347 -0
- package/.next/types/app/api/git/route.ts +347 -0
- package/.next/types/app/api/init/route.ts +347 -0
- package/.next/types/app/api/mcp/cancel/route.ts +347 -0
- package/.next/types/app/api/mcp/servers/[name]/prompts/get/route.ts +347 -0
- package/.next/types/app/api/mcp/servers/[name]/prompts/route.ts +347 -0
- package/.next/types/app/api/mcp/servers/[name]/resources/read/route.ts +347 -0
- package/.next/types/app/api/mcp/servers/[name]/resources/route.ts +347 -0
- package/.next/types/app/api/mcp/servers/[name]/route.ts +347 -0
- package/.next/types/app/api/mcp/servers/[name]/status/route.ts +347 -0
- package/.next/types/app/api/mcp/servers/[name]/tools/[toolName]/route.ts +347 -0
- package/.next/types/app/api/mcp/servers/[name]/tools/route.ts +347 -0
- package/.next/types/app/api/mcp/servers/route.ts +347 -0
- package/.next/types/app/api/mcp/test-connection/route.ts +347 -0
- package/.next/types/app/api/mcp-registry/route.ts +347 -0
- package/.next/types/app/api/mcp-registry/spotlight/route.ts +347 -0
- package/.next/types/app/api/model/[id]/route.ts +347 -0
- package/.next/types/app/api/model/provider/route.ts +347 -0
- package/.next/types/app/api/model/route.ts +347 -0
- package/.next/types/app/api/model/test/route.ts +347 -0
- package/.next/types/app/api/oauth/callback/route.ts +347 -0
- package/.next/types/app/api/oauth/initiate/route.ts +347 -0
- package/.next/types/app/api/oauth/reset/route.ts +347 -0
- package/.next/types/app/api/planned-executions/[id]/route.ts +347 -0
- package/.next/types/app/api/planned-executions/[id]/run/route.ts +347 -0
- package/.next/types/app/api/planned-executions/[id]/runs/route.ts +347 -0
- package/.next/types/app/api/planned-executions/preview-schedule/route.ts +347 -0
- package/.next/types/app/api/planned-executions/route.ts +347 -0
- package/.next/types/app/api/restore/route.ts +347 -0
- package/.next/types/app/api/storage/route.ts +347 -0
- package/.next/types/app/api/update/route.ts +347 -0
- package/.next/types/app/api/webhooks/[id]/route.ts +347 -0
- package/.next/types/app/chat/page.ts +84 -0
- package/.next/types/app/docs/page.ts +84 -0
- package/.next/types/app/executions/page.ts +84 -0
- package/.next/types/app/flows/page.ts +84 -0
- package/.next/types/app/layout.ts +84 -0
- package/.next/types/app/mcp/page.ts +84 -0
- package/.next/types/app/mcp-flows/route.ts +347 -0
- package/.next/types/app/mcp-proxy/[server]/route.ts +347 -0
- package/.next/types/app/models/page.ts +84 -0
- package/.next/types/app/page.ts +84 -0
- package/.next/types/app/settings/page.ts +84 -0
- package/.next/types/app/v1/chat/completions/route.ts +347 -0
- package/.next/types/app/v1/chat/conversations/[conversationId]/breakpoints/route.ts +347 -0
- package/.next/types/app/v1/chat/conversations/[conversationId]/cancel/route.ts +347 -0
- package/.next/types/app/v1/chat/conversations/[conversationId]/debug/continue/route.ts +347 -0
- package/.next/types/app/v1/chat/conversations/[conversationId]/debug/step/route.ts +347 -0
- package/.next/types/app/v1/chat/conversations/[conversationId]/edit-state/route.ts +347 -0
- package/.next/types/app/v1/chat/conversations/[conversationId]/events/route.ts +347 -0
- package/.next/types/app/v1/chat/conversations/[conversationId]/respond/route.ts +347 -0
- package/.next/types/app/v1/chat/conversations/[conversationId]/route.ts +347 -0
- package/.next/types/app/v1/chat/conversations/route.ts +347 -0
- package/.next/types/app/v1/models/route.ts +347 -0
- package/.next/types/cache-life.d.ts +141 -0
- package/.next/types/package.json +1 -0
- package/.next/types/routes.d.ts +131 -0
- package/.next/types/validator.ts +601 -0
- package/LICENSE +21 -0
- package/README.md +372 -0
- package/bin/flujo.mjs +120 -0
- package/next.config.ts +99 -0
- package/package.json +91 -0
- package/public/favicon.ico +0 -0
- package/public/file.svg +1 -0
- package/public/globe.svg +1 -0
- package/public/next.svg +1 -0
- package/public/vercel.svg +1 -0
- package/public/window.svg +1 -0
- package/scripts/launch-next.mjs +98 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports.id=1692,exports.ids=[1692],exports.modules={3421:(a,b,c)=>{"use strict";Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(71237),e=c(55088),f=c(17679);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},10641:(a,b,c)=>{"use strict";var d=c(55174);c.o(d,"NextResponse")&&c.d(b,{NextResponse:function(){return d.NextResponse}})},15622:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"URLPattern",{enumerable:!0,get:function(){return c}});let c="undefined"==typeof URLPattern?void 0:URLPattern},31716:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{isRequestAPICallableInsideAfter:function(){return i},throwForSearchParamsAccessInUseCache:function(){return h},throwWithStaticGenerationBailoutError:function(){return f},throwWithStaticGenerationBailoutErrorWithDynamicError:function(){return g}});let d=c(11938),e=c(3295);function f(a,b){throw Object.defineProperty(new d.StaticGenBailoutError(`Route ${a} couldn't be rendered statically because it used ${b}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E576",enumerable:!1,configurable:!0})}function g(a,b){throw Object.defineProperty(new d.StaticGenBailoutError(`Route ${a} with \`dynamic = "error"\` couldn't be rendered statically because it used ${b}. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E543",enumerable:!1,configurable:!0})}function h(a,b){let c=Object.defineProperty(Error(`Route ${a.route} used "searchParams" inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await "searchParams" outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E779",enumerable:!1,configurable:!0});throw Error.captureStackTrace(c,b),a.invalidDynamicUsageError??=c,c}function i(){let a=e.afterTaskAsyncStorage.getStore();return(null==a?void 0:a.rootTaskSpawnPhase)==="action"}},55174:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{ImageResponse:function(){return d.ImageResponse},NextRequest:function(){return e.NextRequest},NextResponse:function(){return f.NextResponse},URLPattern:function(){return h.URLPattern},after:function(){return i.after},connection:function(){return j.connection},unstable_rootParams:function(){return k.unstable_rootParams},userAgent:function(){return g.userAgent},userAgentFromString:function(){return g.userAgentFromString}});let d=c(98197),e=c(87129),f=c(71589),g=c(86005),h=c(15622),i=c(87522),j=c(65281),k=c(97324)},65281:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"connection",{enumerable:!0,get:function(){return j}});let d=c(29294),e=c(63033),f=c(26906),g=c(11938),h=c(82831),i=c(31716);function j(){let a=d.workAsyncStorage.getStore(),b=e.workUnitAsyncStorage.getStore();if(a){if(b&&"after"===b.phase&&!(0,i.isRequestAPICallableInsideAfter)())throw Object.defineProperty(Error(`Route ${a.route} used "connection" inside "after(...)". The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual Request, but "after(...)" executes after the request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/canary/app/api-reference/functions/after`),"__NEXT_ERROR_CODE",{value:"E186",enumerable:!1,configurable:!0});if(a.forceStatic)return Promise.resolve(void 0);if(a.dynamicShouldError)throw Object.defineProperty(new g.StaticGenBailoutError(`Route ${a.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`connection\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E562",enumerable:!1,configurable:!0});if(b)switch(b.type){case"cache":{let b=Object.defineProperty(Error(`Route ${a.route} used "connection" inside "use cache". The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual request, but caches must be able to be produced before a request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E752",enumerable:!1,configurable:!0});throw Error.captureStackTrace(b,j),a.invalidDynamicUsageError??=b,b}case"private-cache":{let b=Object.defineProperty(Error(`Route ${a.route} used "connection" inside "use cache: private". The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual navigation request, but caches must be able to be produced before a navigation request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E753",enumerable:!1,configurable:!0});throw Error.captureStackTrace(b,j),a.invalidDynamicUsageError??=b,b}case"unstable-cache":throw Object.defineProperty(Error(`Route ${a.route} used "connection" inside a function cached with "unstable_cache(...)". The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual Request, but caches must be able to be produced before a Request so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`),"__NEXT_ERROR_CODE",{value:"E1",enumerable:!1,configurable:!0});case"prerender":case"prerender-client":case"prerender-runtime":return(0,h.makeHangingPromise)(b.renderSignal,a.route,"`connection()`");case"prerender-ppr":return(0,f.postponeWithTracking)(a.route,"connection",b.dynamicTracking);case"prerender-legacy":return(0,f.throwToInterruptStaticGeneration)("connection",a,b);case"request":return(0,f.trackDynamicDataInDynamicRender)(b),Promise.resolve(void 0)}}(0,e.throwForMissingRequestStore)("connection")}},71589:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"NextResponse",{enumerable:!0,get:function(){return l}});let d=c(33675),e=c(78001),f=c(17679),g=c(63036),h=c(33675),i=Symbol("internal response"),j=new Set([301,302,303,307,308]);function k(a,b){var c;if(null==a||null==(c=a.request)?void 0:c.headers){if(!(a.request.headers instanceof Headers))throw Object.defineProperty(Error("request.headers must be an instance of Headers"),"__NEXT_ERROR_CODE",{value:"E119",enumerable:!1,configurable:!0});let c=[];for(let[d,e]of a.request.headers)b.set("x-middleware-request-"+d,e),c.push(d);b.set("x-middleware-override-headers",c.join(","))}}class l extends Response{constructor(a,b={}){super(a,b);let c=this.headers,j=new Proxy(new h.ResponseCookies(c),{get(a,e,f){switch(e){case"delete":case"set":return(...f)=>{let g=Reflect.apply(a[e],a,f),i=new Headers(c);return g instanceof h.ResponseCookies&&c.set("x-middleware-set-cookie",g.getAll().map(a=>(0,d.stringifyCookie)(a)).join(",")),k(b,i),g};default:return g.ReflectAdapter.get(a,e,f)}}});this[i]={cookies:j,url:b.url?new e.NextURL(b.url,{headers:(0,f.toNodeOutgoingHttpHeaders)(c),nextConfig:b.nextConfig}):void 0}}[Symbol.for("edge-runtime.inspect.custom")](){return{cookies:this.cookies,url:this.url,body:this.body,bodyUsed:this.bodyUsed,headers:Object.fromEntries(this.headers),ok:this.ok,redirected:this.redirected,status:this.status,statusText:this.statusText,type:this.type}}get cookies(){return this[i].cookies}static json(a,b){let c=Response.json(a,b);return new l(c.body,c)}static redirect(a,b){let c="number"==typeof b?b:(null==b?void 0:b.status)??307;if(!j.has(c))throw Object.defineProperty(RangeError('Failed to execute "redirect" on "response": Invalid status code'),"__NEXT_ERROR_CODE",{value:"E529",enumerable:!1,configurable:!0});let d="object"==typeof b?b:{},e=new Headers(null==d?void 0:d.headers);return e.set("Location",(0,f.validateURL)(a)),new l(null,{...d,headers:e,status:c})}static rewrite(a,b){let c=new Headers(null==b?void 0:b.headers);return c.set("x-middleware-rewrite",(0,f.validateURL)(a)),k(b,c),new l(null,{...b,headers:c})}static next(a){let b=new Headers(null==a?void 0:a.headers);return b.set("x-middleware-next","1"),k(a,b),new l(null,{...a,headers:b})}}},84226:(a,b)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{describeHasCheckingStringProperty:function(){return e},describeStringPropertyAccess:function(){return d},wellKnownProperties:function(){return f}});let c=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function d(a,b){return c.test(b)?"`"+a+"."+b+"`":"`"+a+"["+JSON.stringify(b)+"]`"}function e(a,b){let c=JSON.stringify(b);return"`Reflect.has("+a+", "+c+")`, `"+c+" in "+a+"`, or similar"}let f=new Set(["hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toString","valueOf","toLocaleString","then","catch","finally","status","displayName","_debugInfo","toJSON","$$typeof","__esModule"])},86005:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{isBot:function(){return e},userAgent:function(){return g},userAgentFromString:function(){return f}});let d=function(a){return a&&a.__esModule?a:{default:a}}(c(86404));function e(a){return/Googlebot|Mediapartners-Google|AdsBot-Google|googleweblight|Storebot-Google|Google-PageRenderer|Google-InspectionTool|Bingbot|BingPreview|Slurp|DuckDuckBot|baiduspider|yandex|sogou|LinkedInBot|bitlybot|tumblr|vkShare|quora link preview|facebookexternalhit|facebookcatalog|Twitterbot|applebot|redditbot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|ia_archiver/i.test(a)}function f(a){return{...(0,d.default)(a),isBot:void 0!==a&&e(a)}}function g({headers:a}){return f(a.get("user-agent")||void 0)}},86404:(a,b,c)=>{var d;(()=>{var e={226:function(e,f){!function(g,h){"use strict";var i="function",j="undefined",k="object",l="string",m="major",n="model",o="name",p="type",q="vendor",r="version",s="architecture",t="console",u="mobile",v="tablet",w="smarttv",x="wearable",y="embedded",z="Amazon",A="Apple",B="ASUS",C="BlackBerry",D="Browser",E="Chrome",F="Firefox",G="Google",H="Huawei",I="Microsoft",J="Motorola",K="Opera",L="Samsung",M="Sharp",N="Sony",O="Xiaomi",P="Zebra",Q="Facebook",R="Chromium OS",S="Mac OS",T=function(a,b){var c={};for(var d in a)b[d]&&b[d].length%2==0?c[d]=b[d].concat(a[d]):c[d]=a[d];return c},U=function(a){for(var b={},c=0;c<a.length;c++)b[a[c].toUpperCase()]=a[c];return b},V=function(a,b){return typeof a===l&&-1!==W(b).indexOf(W(a))},W=function(a){return a.toLowerCase()},X=function(a,b){if(typeof a===l)return a=a.replace(/^\s\s*/,""),typeof b===j?a:a.substring(0,350)},Y=function(a,b){for(var c,d,e,f,g,j,l=0;l<b.length&&!g;){var m=b[l],n=b[l+1];for(c=d=0;c<m.length&&!g&&m[c];)if(g=m[c++].exec(a))for(e=0;e<n.length;e++)j=g[++d],typeof(f=n[e])===k&&f.length>0?2===f.length?typeof f[1]==i?this[f[0]]=f[1].call(this,j):this[f[0]]=f[1]:3===f.length?typeof f[1]!==i||f[1].exec&&f[1].test?this[f[0]]=j?j.replace(f[1],f[2]):void 0:this[f[0]]=j?f[1].call(this,j,f[2]):void 0:4===f.length&&(this[f[0]]=j?f[3].call(this,j.replace(f[1],f[2])):h):this[f]=j||h;l+=2}},Z=function(a,b){for(var c in b)if(typeof b[c]===k&&b[c].length>0){for(var d=0;d<b[c].length;d++)if(V(b[c][d],a))return"?"===c?h:c}else if(V(b[c],a))return"?"===c?h:c;return a},$={ME:"4.90","NT 3.11":"NT3.51","NT 4.0":"NT4.0",2e3:"NT 5.0",XP:["NT 5.1","NT 5.2"],Vista:"NT 6.0",7:"NT 6.1",8:"NT 6.2",8.1:"NT 6.3",10:["NT 6.4","NT 10.0"],RT:"ARM"},_={browser:[[/\b(?:crmo|crios)\/([\w\.]+)/i],[r,[o,"Chrome"]],[/edg(?:e|ios|a)?\/([\w\.]+)/i],[r,[o,"Edge"]],[/(opera mini)\/([-\w\.]+)/i,/(opera [mobiletab]{3,6})\b.+version\/([-\w\.]+)/i,/(opera)(?:.+version\/|[\/ ]+)([\w\.]+)/i],[o,r],[/opios[\/ ]+([\w\.]+)/i],[r,[o,K+" Mini"]],[/\bopr\/([\w\.]+)/i],[r,[o,K]],[/(kindle)\/([\w\.]+)/i,/(lunascape|maxthon|netfront|jasmine|blazer)[\/ ]?([\w\.]*)/i,/(avant |iemobile|slim)(?:browser)?[\/ ]?([\w\.]*)/i,/(ba?idubrowser)[\/ ]?([\w\.]+)/i,/(?:ms|\()(ie) ([\w\.]+)/i,/(flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|quark|qupzilla|falkon|rekonq|puffin|brave|whale(?!.+naver)|qqbrowserlite|qq|duckduckgo)\/([-\w\.]+)/i,/(heytap|ovi)browser\/([\d\.]+)/i,/(weibo)__([\d\.]+)/i],[o,r],[/(?:\buc? ?browser|(?:juc.+)ucweb)[\/ ]?([\w\.]+)/i],[r,[o,"UC"+D]],[/microm.+\bqbcore\/([\w\.]+)/i,/\bqbcore\/([\w\.]+).+microm/i],[r,[o,"WeChat(Win) Desktop"]],[/micromessenger\/([\w\.]+)/i],[r,[o,"WeChat"]],[/konqueror\/([\w\.]+)/i],[r,[o,"Konqueror"]],[/trident.+rv[: ]([\w\.]{1,9})\b.+like gecko/i],[r,[o,"IE"]],[/ya(?:search)?browser\/([\w\.]+)/i],[r,[o,"Yandex"]],[/(avast|avg)\/([\w\.]+)/i],[[o,/(.+)/,"$1 Secure "+D],r],[/\bfocus\/([\w\.]+)/i],[r,[o,F+" Focus"]],[/\bopt\/([\w\.]+)/i],[r,[o,K+" Touch"]],[/coc_coc\w+\/([\w\.]+)/i],[r,[o,"Coc Coc"]],[/dolfin\/([\w\.]+)/i],[r,[o,"Dolphin"]],[/coast\/([\w\.]+)/i],[r,[o,K+" Coast"]],[/miuibrowser\/([\w\.]+)/i],[r,[o,"MIUI "+D]],[/fxios\/([-\w\.]+)/i],[r,[o,F]],[/\bqihu|(qi?ho?o?|360)browser/i],[[o,"360 "+D]],[/(oculus|samsung|sailfish|huawei)browser\/([\w\.]+)/i],[[o,/(.+)/,"$1 "+D],r],[/(comodo_dragon)\/([\w\.]+)/i],[[o,/_/g," "],r],[/(electron)\/([\w\.]+) safari/i,/(tesla)(?: qtcarbrowser|\/(20\d\d\.[-\w\.]+))/i,/m?(qqbrowser|baiduboxapp|2345Explorer)[\/ ]?([\w\.]+)/i],[o,r],[/(metasr)[\/ ]?([\w\.]+)/i,/(lbbrowser)/i,/\[(linkedin)app\]/i],[o],[/((?:fban\/fbios|fb_iab\/fb4a)(?!.+fbav)|;fbav\/([\w\.]+);)/i],[[o,Q],r],[/(kakao(?:talk|story))[\/ ]([\w\.]+)/i,/(naver)\(.*?(\d+\.[\w\.]+).*\)/i,/safari (line)\/([\w\.]+)/i,/\b(line)\/([\w\.]+)\/iab/i,/(chromium|instagram)[\/ ]([-\w\.]+)/i],[o,r],[/\bgsa\/([\w\.]+) .*safari\//i],[r,[o,"GSA"]],[/musical_ly(?:.+app_?version\/|_)([\w\.]+)/i],[r,[o,"TikTok"]],[/headlesschrome(?:\/([\w\.]+)| )/i],[r,[o,E+" Headless"]],[/ wv\).+(chrome)\/([\w\.]+)/i],[[o,E+" WebView"],r],[/droid.+ version\/([\w\.]+)\b.+(?:mobile safari|safari)/i],[r,[o,"Android "+D]],[/(chrome|omniweb|arora|[tizenoka]{5} ?browser)\/v?([\w\.]+)/i],[o,r],[/version\/([\w\.\,]+) .*mobile\/\w+ (safari)/i],[r,[o,"Mobile Safari"]],[/version\/([\w(\.|\,)]+) .*(mobile ?safari|safari)/i],[r,o],[/webkit.+?(mobile ?safari|safari)(\/[\w\.]+)/i],[o,[r,Z,{"1.0":"/8",1.2:"/1",1.3:"/3","2.0":"/412","2.0.2":"/416","2.0.3":"/417","2.0.4":"/419","?":"/"}]],[/(webkit|khtml)\/([\w\.]+)/i],[o,r],[/(navigator|netscape\d?)\/([-\w\.]+)/i],[[o,"Netscape"],r],[/mobile vr; rv:([\w\.]+)\).+firefox/i],[r,[o,F+" Reality"]],[/ekiohf.+(flow)\/([\w\.]+)/i,/(swiftfox)/i,/(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror|klar)[\/ ]?([\w\.\+]+)/i,/(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|palemoon|basilisk|waterfox)\/([-\w\.]+)$/i,/(firefox)\/([\w\.]+)/i,/(mozilla)\/([\w\.]+) .+rv\:.+gecko\/\d+/i,/(polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|sleipnir|obigo|mosaic|(?:go|ice|up)[\. ]?browser)[-\/ ]?v?([\w\.]+)/i,/(links) \(([\w\.]+)/i,/panasonic;(viera)/i],[o,r],[/(cobalt)\/([\w\.]+)/i],[o,[r,/master.|lts./,""]]],cpu:[[/(?:(amd|x(?:(?:86|64)[-_])?|wow|win)64)[;\)]/i],[[s,"amd64"]],[/(ia32(?=;))/i],[[s,W]],[/((?:i[346]|x)86)[;\)]/i],[[s,"ia32"]],[/\b(aarch64|arm(v?8e?l?|_?64))\b/i],[[s,"arm64"]],[/\b(arm(?:v[67])?ht?n?[fl]p?)\b/i],[[s,"armhf"]],[/windows (ce|mobile); ppc;/i],[[s,"arm"]],[/((?:ppc|powerpc)(?:64)?)(?: mac|;|\))/i],[[s,/ower/,"",W]],[/(sun4\w)[;\)]/i],[[s,"sparc"]],[/((?:avr32|ia64(?=;))|68k(?=\))|\barm(?=v(?:[1-7]|[5-7]1)l?|;|eabi)|(?=atmel )avr|(?:irix|mips|sparc)(?:64)?\b|pa-risc)/i],[[s,W]]],device:[[/\b(sch-i[89]0\d|shw-m380s|sm-[ptx]\w{2,4}|gt-[pn]\d{2,4}|sgh-t8[56]9|nexus 10)/i],[n,[q,L],[p,v]],[/\b((?:s[cgp]h|gt|sm)-\w+|sc[g-]?[\d]+a?|galaxy nexus)/i,/samsung[- ]([-\w]+)/i,/sec-(sgh\w+)/i],[n,[q,L],[p,u]],[/(?:\/|\()(ip(?:hone|od)[\w, ]*)(?:\/|;)/i],[n,[q,A],[p,u]],[/\((ipad);[-\w\),; ]+apple/i,/applecoremedia\/[\w\.]+ \((ipad)/i,/\b(ipad)\d\d?,\d\d?[;\]].+ios/i],[n,[q,A],[p,v]],[/(macintosh);/i],[n,[q,A]],[/\b(sh-?[altvz]?\d\d[a-ekm]?)/i],[n,[q,M],[p,u]],[/\b((?:ag[rs][23]?|bah2?|sht?|btv)-a?[lw]\d{2})\b(?!.+d\/s)/i],[n,[q,H],[p,v]],[/(?:huawei|honor)([-\w ]+)[;\)]/i,/\b(nexus 6p|\w{2,4}e?-[atu]?[ln][\dx][012359c][adn]?)\b(?!.+d\/s)/i],[n,[q,H],[p,u]],[/\b(poco[\w ]+)(?: bui|\))/i,/\b; (\w+) build\/hm\1/i,/\b(hm[-_ ]?note?[_ ]?(?:\d\w)?) bui/i,/\b(redmi[\-_ ]?(?:note|k)?[\w_ ]+)(?: bui|\))/i,/\b(mi[-_ ]?(?:a\d|one|one[_ ]plus|note lte|max|cc)?[_ ]?(?:\d?\w?)[_ ]?(?:plus|se|lite)?)(?: bui|\))/i],[[n,/_/g," "],[q,O],[p,u]],[/\b(mi[-_ ]?(?:pad)(?:[\w_ ]+))(?: bui|\))/i],[[n,/_/g," "],[q,O],[p,v]],[/; (\w+) bui.+ oppo/i,/\b(cph[12]\d{3}|p(?:af|c[al]|d\w|e[ar])[mt]\d0|x9007|a101op)\b/i],[n,[q,"OPPO"],[p,u]],[/vivo (\w+)(?: bui|\))/i,/\b(v[12]\d{3}\w?[at])(?: bui|;)/i],[n,[q,"Vivo"],[p,u]],[/\b(rmx[12]\d{3})(?: bui|;|\))/i],[n,[q,"Realme"],[p,u]],[/\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\b[\w ]+build\//i,/\bmot(?:orola)?[- ](\w*)/i,/((?:moto[\w\(\) ]+|xt\d{3,4}|nexus 6)(?= bui|\)))/i],[n,[q,J],[p,u]],[/\b(mz60\d|xoom[2 ]{0,2}) build\//i],[n,[q,J],[p,v]],[/((?=lg)?[vl]k\-?\d{3}) bui| 3\.[-\w; ]{10}lg?-([06cv9]{3,4})/i],[n,[q,"LG"],[p,v]],[/(lm(?:-?f100[nv]?|-[\w\.]+)(?= bui|\))|nexus [45])/i,/\blg[-e;\/ ]+((?!browser|netcast|android tv)\w+)/i,/\blg-?([\d\w]+) bui/i],[n,[q,"LG"],[p,u]],[/(ideatab[-\w ]+)/i,/lenovo ?(s[56]000[-\w]+|tab(?:[\w ]+)|yt[-\d\w]{6}|tb[-\d\w]{6})/i],[n,[q,"Lenovo"],[p,v]],[/(?:maemo|nokia).*(n900|lumia \d+)/i,/nokia[-_ ]?([-\w\.]*)/i],[[n,/_/g," "],[q,"Nokia"],[p,u]],[/(pixel c)\b/i],[n,[q,G],[p,v]],[/droid.+; (pixel[\daxl ]{0,6})(?: bui|\))/i],[n,[q,G],[p,u]],[/droid.+ (a?\d[0-2]{2}so|[c-g]\d{4}|so[-gl]\w+|xq-a\w[4-7][12])(?= bui|\).+chrome\/(?![1-6]{0,1}\d\.))/i],[n,[q,N],[p,u]],[/sony tablet [ps]/i,/\b(?:sony)?sgp\w+(?: bui|\))/i],[[n,"Xperia Tablet"],[q,N],[p,v]],[/ (kb2005|in20[12]5|be20[12][59])\b/i,/(?:one)?(?:plus)? (a\d0\d\d)(?: b|\))/i],[n,[q,"OnePlus"],[p,u]],[/(alexa)webm/i,/(kf[a-z]{2}wi|aeo[c-r]{2})( bui|\))/i,/(kf[a-z]+)( bui|\)).+silk\//i],[n,[q,z],[p,v]],[/((?:sd|kf)[0349hijorstuw]+)( bui|\)).+silk\//i],[[n,/(.+)/g,"Fire Phone $1"],[q,z],[p,u]],[/(playbook);[-\w\),; ]+(rim)/i],[n,q,[p,v]],[/\b((?:bb[a-f]|st[hv])100-\d)/i,/\(bb10; (\w+)/i],[n,[q,C],[p,u]],[/(?:\b|asus_)(transfo[prime ]{4,10} \w+|eeepc|slider \w+|nexus 7|padfone|p00[cj])/i],[n,[q,B],[p,v]],[/ (z[bes]6[027][012][km][ls]|zenfone \d\w?)\b/i],[n,[q,B],[p,u]],[/(nexus 9)/i],[n,[q,"HTC"],[p,v]],[/(htc)[-;_ ]{1,2}([\w ]+(?=\)| bui)|\w+)/i,/(zte)[- ]([\w ]+?)(?: bui|\/|\))/i,/(alcatel|geeksphone|nexian|panasonic(?!(?:;|\.))|sony(?!-bra))[-_ ]?([-\w]*)/i],[q,[n,/_/g," "],[p,u]],[/droid.+; ([ab][1-7]-?[0178a]\d\d?)/i],[n,[q,"Acer"],[p,v]],[/droid.+; (m[1-5] note) bui/i,/\bmz-([-\w]{2,})/i],[n,[q,"Meizu"],[p,u]],[/(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|meizu|motorola|polytron)[-_ ]?([-\w]*)/i,/(hp) ([\w ]+\w)/i,/(asus)-?(\w+)/i,/(microsoft); (lumia[\w ]+)/i,/(lenovo)[-_ ]?([-\w]+)/i,/(jolla)/i,/(oppo) ?([\w ]+) bui/i],[q,n,[p,u]],[/(kobo)\s(ereader|touch)/i,/(archos) (gamepad2?)/i,/(hp).+(touchpad(?!.+tablet)|tablet)/i,/(kindle)\/([\w\.]+)/i,/(nook)[\w ]+build\/(\w+)/i,/(dell) (strea[kpr\d ]*[\dko])/i,/(le[- ]+pan)[- ]+(\w{1,9}) bui/i,/(trinity)[- ]*(t\d{3}) bui/i,/(gigaset)[- ]+(q\w{1,9}) bui/i,/(vodafone) ([\w ]+)(?:\)| bui)/i],[q,n,[p,v]],[/(surface duo)/i],[n,[q,I],[p,v]],[/droid [\d\.]+; (fp\du?)(?: b|\))/i],[n,[q,"Fairphone"],[p,u]],[/(u304aa)/i],[n,[q,"AT&T"],[p,u]],[/\bsie-(\w*)/i],[n,[q,"Siemens"],[p,u]],[/\b(rct\w+) b/i],[n,[q,"RCA"],[p,v]],[/\b(venue[\d ]{2,7}) b/i],[n,[q,"Dell"],[p,v]],[/\b(q(?:mv|ta)\w+) b/i],[n,[q,"Verizon"],[p,v]],[/\b(?:barnes[& ]+noble |bn[rt])([\w\+ ]*) b/i],[n,[q,"Barnes & Noble"],[p,v]],[/\b(tm\d{3}\w+) b/i],[n,[q,"NuVision"],[p,v]],[/\b(k88) b/i],[n,[q,"ZTE"],[p,v]],[/\b(nx\d{3}j) b/i],[n,[q,"ZTE"],[p,u]],[/\b(gen\d{3}) b.+49h/i],[n,[q,"Swiss"],[p,u]],[/\b(zur\d{3}) b/i],[n,[q,"Swiss"],[p,v]],[/\b((zeki)?tb.*\b) b/i],[n,[q,"Zeki"],[p,v]],[/\b([yr]\d{2}) b/i,/\b(dragon[- ]+touch |dt)(\w{5}) b/i],[[q,"Dragon Touch"],n,[p,v]],[/\b(ns-?\w{0,9}) b/i],[n,[q,"Insignia"],[p,v]],[/\b((nxa|next)-?\w{0,9}) b/i],[n,[q,"NextBook"],[p,v]],[/\b(xtreme\_)?(v(1[045]|2[015]|[3469]0|7[05])) b/i],[[q,"Voice"],n,[p,u]],[/\b(lvtel\-)?(v1[12]) b/i],[[q,"LvTel"],n,[p,u]],[/\b(ph-1) /i],[n,[q,"Essential"],[p,u]],[/\b(v(100md|700na|7011|917g).*\b) b/i],[n,[q,"Envizen"],[p,v]],[/\b(trio[-\w\. ]+) b/i],[n,[q,"MachSpeed"],[p,v]],[/\btu_(1491) b/i],[n,[q,"Rotor"],[p,v]],[/(shield[\w ]+) b/i],[n,[q,"Nvidia"],[p,v]],[/(sprint) (\w+)/i],[q,n,[p,u]],[/(kin\.[onetw]{3})/i],[[n,/\./g," "],[q,I],[p,u]],[/droid.+; (cc6666?|et5[16]|mc[239][23]x?|vc8[03]x?)\)/i],[n,[q,P],[p,v]],[/droid.+; (ec30|ps20|tc[2-8]\d[kx])\)/i],[n,[q,P],[p,u]],[/smart-tv.+(samsung)/i],[q,[p,w]],[/hbbtv.+maple;(\d+)/i],[[n,/^/,"SmartTV"],[q,L],[p,w]],[/(nux; netcast.+smarttv|lg (netcast\.tv-201\d|android tv))/i],[[q,"LG"],[p,w]],[/(apple) ?tv/i],[q,[n,A+" TV"],[p,w]],[/crkey/i],[[n,E+"cast"],[q,G],[p,w]],[/droid.+aft(\w)( bui|\))/i],[n,[q,z],[p,w]],[/\(dtv[\);].+(aquos)/i,/(aquos-tv[\w ]+)\)/i],[n,[q,M],[p,w]],[/(bravia[\w ]+)( bui|\))/i],[n,[q,N],[p,w]],[/(mitv-\w{5}) bui/i],[n,[q,O],[p,w]],[/Hbbtv.*(technisat) (.*);/i],[q,n,[p,w]],[/\b(roku)[\dx]*[\)\/]((?:dvp-)?[\d\.]*)/i,/hbbtv\/\d+\.\d+\.\d+ +\([\w\+ ]*; *([\w\d][^;]*);([^;]*)/i],[[q,X],[n,X],[p,w]],[/\b(android tv|smart[- ]?tv|opera tv|tv; rv:)\b/i],[[p,w]],[/(ouya)/i,/(nintendo) ([wids3utch]+)/i],[q,n,[p,t]],[/droid.+; (shield) bui/i],[n,[q,"Nvidia"],[p,t]],[/(playstation [345portablevi]+)/i],[n,[q,N],[p,t]],[/\b(xbox(?: one)?(?!; xbox))[\); ]/i],[n,[q,I],[p,t]],[/((pebble))app/i],[q,n,[p,x]],[/(watch)(?: ?os[,\/]|\d,\d\/)[\d\.]+/i],[n,[q,A],[p,x]],[/droid.+; (glass) \d/i],[n,[q,G],[p,x]],[/droid.+; (wt63?0{2,3})\)/i],[n,[q,P],[p,x]],[/(quest( 2| pro)?)/i],[n,[q,Q],[p,x]],[/(tesla)(?: qtcarbrowser|\/[-\w\.]+)/i],[q,[p,y]],[/(aeobc)\b/i],[n,[q,z],[p,y]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+? mobile safari/i],[n,[p,u]],[/droid .+?; ([^;]+?)(?: bui|\) applew).+?(?! mobile) safari/i],[n,[p,v]],[/\b((tablet|tab)[;\/]|focus\/\d(?!.+mobile))/i],[[p,v]],[/(phone|mobile(?:[;\/]| [ \w\/\.]*safari)|pda(?=.+windows ce))/i],[[p,u]],[/(android[-\w\. ]{0,9});.+buil/i],[n,[q,"Generic"]]],engine:[[/windows.+ edge\/([\w\.]+)/i],[r,[o,"EdgeHTML"]],[/webkit\/537\.36.+chrome\/(?!27)([\w\.]+)/i],[r,[o,"Blink"]],[/(presto)\/([\w\.]+)/i,/(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna)\/([\w\.]+)/i,/ekioh(flow)\/([\w\.]+)/i,/(khtml|tasman|links)[\/ ]\(?([\w\.]+)/i,/(icab)[\/ ]([23]\.[\d\.]+)/i,/\b(libweb)/i],[o,r],[/rv\:([\w\.]{1,9})\b.+(gecko)/i],[r,o]],os:[[/microsoft (windows) (vista|xp)/i],[o,r],[/(windows) nt 6\.2; (arm)/i,/(windows (?:phone(?: os)?|mobile))[\/ ]?([\d\.\w ]*)/i,/(windows)[\/ ]?([ntce\d\. ]+\w)(?!.+xbox)/i],[o,[r,Z,$]],[/(win(?=3|9|n)|win 9x )([nt\d\.]+)/i],[[o,"Windows"],[r,Z,$]],[/ip[honead]{2,4}\b(?:.*os ([\w]+) like mac|; opera)/i,/ios;fbsv\/([\d\.]+)/i,/cfnetwork\/.+darwin/i],[[r,/_/g,"."],[o,"iOS"]],[/(mac os x) ?([\w\. ]*)/i,/(macintosh|mac_powerpc\b)(?!.+haiku)/i],[[o,S],[r,/_/g,"."]],[/droid ([\w\.]+)\b.+(android[- ]x86|harmonyos)/i],[r,o],[/(android|webos|qnx|bada|rim tablet os|maemo|meego|sailfish)[-\/ ]?([\w\.]*)/i,/(blackberry)\w*\/([\w\.]*)/i,/(tizen|kaios)[\/ ]([\w\.]+)/i,/\((series40);/i],[o,r],[/\(bb(10);/i],[r,[o,C]],[/(?:symbian ?os|symbos|s60(?=;)|series60)[-\/ ]?([\w\.]*)/i],[r,[o,"Symbian"]],[/mozilla\/[\d\.]+ \((?:mobile|tablet|tv|mobile; [\w ]+); rv:.+ gecko\/([\w\.]+)/i],[r,[o,F+" OS"]],[/web0s;.+rt(tv)/i,/\b(?:hp)?wos(?:browser)?\/([\w\.]+)/i],[r,[o,"webOS"]],[/watch(?: ?os[,\/]|\d,\d\/)([\d\.]+)/i],[r,[o,"watchOS"]],[/crkey\/([\d\.]+)/i],[r,[o,E+"cast"]],[/(cros) [\w]+(?:\)| ([\w\.]+)\b)/i],[[o,R],r],[/panasonic;(viera)/i,/(netrange)mmh/i,/(nettv)\/(\d+\.[\w\.]+)/i,/(nintendo|playstation) ([wids345portablevuch]+)/i,/(xbox); +xbox ([^\);]+)/i,/\b(joli|palm)\b ?(?:os)?\/?([\w\.]*)/i,/(mint)[\/\(\) ]?(\w*)/i,/(mageia|vectorlinux)[; ]/i,/([kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?= linux)|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire)(?: gnu\/linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\/ ]?(?!chrom|package)([-\w\.]*)/i,/(hurd|linux) ?([\w\.]*)/i,/(gnu) ?([\w\.]*)/i,/\b([-frentopcghs]{0,5}bsd|dragonfly)[\/ ]?(?!amd|[ix346]{1,2}86)([\w\.]*)/i,/(haiku) (\w+)/i],[o,r],[/(sunos) ?([\w\.\d]*)/i],[[o,"Solaris"],r],[/((?:open)?solaris)[-\/ ]?([\w\.]*)/i,/(aix) ((\d)(?=\.|\)| )[\w\.])*/i,/\b(beos|os\/2|amigaos|morphos|openvms|fuchsia|hp-ux|serenityos)/i,/(unix) ?([\w\.]*)/i],[o,r]]},aa=function(a,b){if(typeof a===k&&(b=a,a=h),!(this instanceof aa))return new aa(a,b).getResult();var c=typeof g!==j&&g.navigator?g.navigator:h,d=a||(c&&c.userAgent?c.userAgent:""),e=c&&c.userAgentData?c.userAgentData:h,f=b?T(_,b):_,t=c&&c.userAgent==d;return this.getBrowser=function(){var a,b={};return b[o]=h,b[r]=h,Y.call(b,d,f.browser),b[m]=typeof(a=b[r])===l?a.replace(/[^\d\.]/g,"").split(".")[0]:h,t&&c&&c.brave&&typeof c.brave.isBrave==i&&(b[o]="Brave"),b},this.getCPU=function(){var a={};return a[s]=h,Y.call(a,d,f.cpu),a},this.getDevice=function(){var a={};return a[q]=h,a[n]=h,a[p]=h,Y.call(a,d,f.device),t&&!a[p]&&e&&e.mobile&&(a[p]=u),t&&"Macintosh"==a[n]&&c&&typeof c.standalone!==j&&c.maxTouchPoints&&c.maxTouchPoints>2&&(a[n]="iPad",a[p]=v),a},this.getEngine=function(){var a={};return a[o]=h,a[r]=h,Y.call(a,d,f.engine),a},this.getOS=function(){var a={};return a[o]=h,a[r]=h,Y.call(a,d,f.os),t&&!a[o]&&e&&"Unknown"!=e.platform&&(a[o]=e.platform.replace(/chrome os/i,R).replace(/macos/i,S)),a},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return d},this.setUA=function(a){return d=typeof a===l&&a.length>350?X(a,350):a,this},this.setUA(d),this};aa.VERSION="1.0.35",aa.BROWSER=U([o,r,m]),aa.CPU=U([s]),aa.DEVICE=U([n,q,p,t,u,w,v,x,y]),aa.ENGINE=aa.OS=U([o,r]),typeof f!==j?(e.exports&&(f=e.exports=aa),f.UAParser=aa):c.amdO?void 0===(d=(function(){return aa}).call(b,c,b,a))||(a.exports=d):typeof g!==j&&(g.UAParser=aa);var ab=typeof g!==j&&(g.jQuery||g.Zepto);if(ab&&!ab.ua){var ac=new aa;ab.ua=ac.getResult(),ab.ua.get=function(){return ac.getUA()},ab.ua.set=function(a){ac.setUA(a);var b=ac.getResult();for(var c in b)ab.ua[c]=b[c]}}}("object"==typeof window?window:this)}},f={};function g(a){var b=f[a];if(void 0!==b)return b.exports;var c=f[a]={exports:{}},d=!0;try{e[a].call(c.exports,c,c.exports,g),d=!1}finally{d&&delete f[a]}return c.exports}g.ab=__dirname+"/",a.exports=g(226)})()},87522:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),function(a,b){Object.keys(a).forEach(function(c){"default"===c||Object.prototype.hasOwnProperty.call(b,c)||Object.defineProperty(b,c,{enumerable:!0,get:function(){return a[c]}})})}(c(92588),b)},92588:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"after",{enumerable:!0,get:function(){return e}});let d=c(29294);function e(a){let b=d.workAsyncStorage.getStore();if(!b)throw Object.defineProperty(Error("`after` was called outside a request scope. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context"),"__NEXT_ERROR_CODE",{value:"E468",enumerable:!1,configurable:!0});let{afterContext:c}=b;return c.after(a)}},95736:(a,b,c)=>{"use strict";a.exports=c(44870)},97324:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{getRootParam:function(){return n},unstable_rootParams:function(){return m}});let d=c(49290),e=c(26906),f=c(29294),g=c(63033),h=c(82831),i=c(84226),j=c(19121),k=c(310),l=new WeakMap;async function m(){(0,k.warnOnce)("`unstable_rootParams()` is deprecated and will be removed in an upcoming major release. Import specific root params from `next/root-params` instead.");let a=f.workAsyncStorage.getStore();if(!a)throw Object.defineProperty(new d.InvariantError("Missing workStore in unstable_rootParams"),"__NEXT_ERROR_CODE",{value:"E615",enumerable:!1,configurable:!0});let b=g.workUnitAsyncStorage.getStore();if(!b)throw Object.defineProperty(Error(`Route ${a.route} used \`unstable_rootParams()\` in Pages Router. This API is only available within App Router.`),"__NEXT_ERROR_CODE",{value:"E641",enumerable:!1,configurable:!0});switch(b.type){case"cache":case"unstable-cache":throw Object.defineProperty(Error(`Route ${a.route} used \`unstable_rootParams()\` inside \`"use cache"\` or \`unstable_cache\`. Support for this API inside cache scopes is planned for a future version of Next.js.`),"__NEXT_ERROR_CODE",{value:"E642",enumerable:!1,configurable:!0});case"prerender":case"prerender-client":case"prerender-ppr":case"prerender-legacy":return function(a,b,c){switch(c.type){case"prerender-client":{let a="`unstable_rootParams`";throw Object.defineProperty(new d.InvariantError(`${a} must not be used within a client component. Next.js should be preventing ${a} from being included in client components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E693",enumerable:!1,configurable:!0})}case"prerender":{let d=c.fallbackRouteParams;if(d){for(let e in a)if(d.has(e)){let d=l.get(a);if(d)return d;let e=(0,h.makeHangingPromise)(c.renderSignal,b.route,"`unstable_rootParams`");return l.set(a,e),e}}break}case"prerender-ppr":{let d=c.fallbackRouteParams;if(d){for(let f in a)if(d.has(f))return function(a,b,c,d){let f=l.get(a);if(f)return f;let g={...a},h=Promise.resolve(g);return l.set(a,h),Object.keys(a).forEach(f=>{i.wellKnownProperties.has(f)||(b.has(f)?Object.defineProperty(g,f,{get(){let a=(0,i.describeStringPropertyAccess)("unstable_rootParams",f);"prerender-ppr"===d.type?(0,e.postponeWithTracking)(c.route,a,d.dynamicTracking):(0,e.throwToInterruptStaticGeneration)(a,c,d)},enumerable:!0}):h[f]=a[f])}),h}(a,d,b,c)}}}return Promise.resolve(a)}(b.rootParams,a,b);case"private-cache":case"prerender-runtime":case"request":return Promise.resolve(b.rootParams);default:return b}}function n(a){let b=`\`import('next/root-params').${a}()\``,c=f.workAsyncStorage.getStore();if(!c)throw Object.defineProperty(new d.InvariantError(`Missing workStore in ${b}`),"__NEXT_ERROR_CODE",{value:"E764",enumerable:!1,configurable:!0});let e=g.workUnitAsyncStorage.getStore();if(!e)throw Object.defineProperty(Error(`Route ${c.route} used ${b} outside of a Server Component. This is not allowed.`),"__NEXT_ERROR_CODE",{value:"E774",enumerable:!1,configurable:!0});let i=j.actionAsyncStorage.getStore();if(i){if(i.isAppRoute)throw Object.defineProperty(Error(`Route ${c.route} used ${b} inside a Route Handler. Support for this API in Route Handlers is planned for a future version of Next.js.`),"__NEXT_ERROR_CODE",{value:"E765",enumerable:!1,configurable:!0});if(i.isAction&&"action"===e.phase)throw Object.defineProperty(Error(`${b} was used inside a Server Action. This is not supported. Functions from 'next/root-params' can only be called in the context of a route.`),"__NEXT_ERROR_CODE",{value:"E766",enumerable:!1,configurable:!0})}switch(e.type){case"unstable-cache":case"cache":throw Object.defineProperty(Error(`Route ${c.route} used ${b} inside \`"use cache"\` or \`unstable_cache\`. Support for this API inside cache scopes is planned for a future version of Next.js.`),"__NEXT_ERROR_CODE",{value:"E760",enumerable:!1,configurable:!0});case"prerender":case"prerender-client":case"prerender-ppr":case"prerender-legacy":var k=a,l=c,m=e,n=b;if("prerender-client"===m.type)throw Object.defineProperty(new d.InvariantError(`${n} must not be used within a client component. Next.js should be preventing ${n} from being included in client components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E693",enumerable:!1,configurable:!0});let p=m.rootParams;switch(m.type){case"prerender":if(m.fallbackRouteParams&&m.fallbackRouteParams.has(k))return(0,h.makeHangingPromise)(m.renderSignal,l.route,n);break;case"prerender-ppr":if(m.fallbackRouteParams&&m.fallbackRouteParams.has(k))return o(k,l,m,n)}return Promise.resolve(p[k])}return Promise.resolve(e.rootParams[a])}async function o(a,b,c,d){let f=(0,i.describeStringPropertyAccess)(d,a);switch(c.type){case"prerender-ppr":return(0,e.postponeWithTracking)(b.route,f,c.dynamicTracking);case"prerender-legacy":return(0,e.throwToInterruptStaticGeneration)(f,b,c)}}},98197:(a,b)=>{"use strict";function c(){throw Object.defineProperty(Error('ImageResponse moved from "next/server" to "next/og" since Next.js 14, please import from "next/og" instead'),"__NEXT_ERROR_CODE",{value:"E183",enumerable:!1,configurable:!0})}Object.defineProperty(b,"__esModule",{value:!0}),Object.defineProperty(b,"ImageResponse",{enumerable:!0,get:function(){return c}})}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=1870,exports.ids=[1870],exports.modules={61870:(a,b,c)=>{c.d(b,{toFormData:()=>l});var d=c(30040),e=c(60071);let f=0,g={START_BOUNDARY:f++,HEADER_FIELD_START:f++,HEADER_FIELD:f++,HEADER_VALUE_START:f++,HEADER_VALUE:f++,HEADER_VALUE_ALMOST_DONE:f++,HEADERS_ALMOST_DONE:f++,PART_DATA_START:f++,PART_DATA:f++,END:f++},h={PART_BOUNDARY:1,LAST_BOUNDARY:2},i=a=>32|a,j=()=>{};class k{constructor(a){this.index=0,this.flags=0,this.onHeaderEnd=j,this.onHeaderField=j,this.onHeadersEnd=j,this.onHeaderValue=j,this.onPartBegin=j,this.onPartData=j,this.onPartEnd=j,this.boundaryChars={};let b=new Uint8Array((a="\r\n--"+a).length);for(let c=0;c<a.length;c++)b[c]=a.charCodeAt(c),this.boundaryChars[b[c]]=!0;this.boundary=b,this.lookbehind=new Uint8Array(this.boundary.length+8),this.state=g.START_BOUNDARY}write(a){let b,c,d=0,e=a.length,f=this.index,{lookbehind:j,boundary:k,boundaryChars:l,index:m,state:n,flags:o}=this,p=this.boundary.length,q=p-1,r=a.length,s=a=>{this[a+"Mark"]=d},t=a=>{delete this[a+"Mark"]},u=(a,b,c,d)=>{(void 0===b||b!==c)&&this[a](d&&d.subarray(b,c))},v=(b,c)=>{let e=b+"Mark";e in this&&(c?(u(b,this[e],d,a),delete this[e]):(u(b,this[e],a.length,a),this[e]=0))};for(d=0;d<e;d++)switch(b=a[d],n){case g.START_BOUNDARY:if(m===k.length-2){if(45===b)o|=h.LAST_BOUNDARY;else if(13!==b)return;m++;break}if(m-1==k.length-2){if(o&h.LAST_BOUNDARY&&45===b)n=g.END,o=0;else{if(o&h.LAST_BOUNDARY||10!==b)return;m=0,u("onPartBegin"),n=g.HEADER_FIELD_START}break}b!==k[m+2]&&(m=-2),b===k[m+2]&&m++;break;case g.HEADER_FIELD_START:n=g.HEADER_FIELD,s("onHeaderField"),m=0;case g.HEADER_FIELD:if(13===b){t("onHeaderField"),n=g.HEADERS_ALMOST_DONE;break}if(m++,45===b)break;if(58===b){if(1===m)return;v("onHeaderField",!0),n=g.HEADER_VALUE_START;break}if((c=i(b))<97||c>122)return;break;case g.HEADER_VALUE_START:if(32===b)break;s("onHeaderValue"),n=g.HEADER_VALUE;case g.HEADER_VALUE:13===b&&(v("onHeaderValue",!0),u("onHeaderEnd"),n=g.HEADER_VALUE_ALMOST_DONE);break;case g.HEADER_VALUE_ALMOST_DONE:if(10!==b)return;n=g.HEADER_FIELD_START;break;case g.HEADERS_ALMOST_DONE:if(10!==b)return;u("onHeadersEnd"),n=g.PART_DATA_START;break;case g.PART_DATA_START:n=g.PART_DATA,s("onPartData");case g.PART_DATA:if(f=m,0===m){for(d+=q;d<r&&!(a[d]in l);)d+=p;d-=q,b=a[d]}if(m<k.length)k[m]===b?(0===m&&v("onPartData",!0),m++):m=0;else if(m===k.length)m++,13===b?o|=h.PART_BOUNDARY:45===b?o|=h.LAST_BOUNDARY:m=0;else if(m-1===k.length)if(o&h.PART_BOUNDARY){if(m=0,10===b){o&=~h.PART_BOUNDARY,u("onPartEnd"),u("onPartBegin"),n=g.HEADER_FIELD_START;break}}else o&h.LAST_BOUNDARY&&45===b?(u("onPartEnd"),n=g.END,o=0):m=0;m>0?j[m-1]=b:f>0&&(u("onPartData",0,f,new Uint8Array(j.buffer,j.byteOffset,j.byteLength)),f=0,s("onPartData"),d--);break;case g.END:break;default:throw Error(`Unexpected state entered: ${n}`)}v("onHeaderField"),v("onHeaderValue"),v("onPartData"),this.index=m,this.state=n,this.flags=o}end(){if(this.state===g.HEADER_FIELD_START&&0===this.index||this.state===g.PART_DATA&&this.index===this.boundary.length)this.onPartEnd();else if(this.state!==g.END)throw Error("MultipartParser.end(): stream ended unexpectedly")}}async function l(a,b){let c,f,g,h,i,j;if(!/multipart/i.test(b))throw TypeError("Failed to fetch");let l=b.match(/boundary=(?:"([^"]+)"|([^;]+))/i);if(!l)throw TypeError("no or bad content-type header, no multipart boundary");let m=new k(l[1]||l[2]),n=[],o=new e.fS,p=a=>{g+=t.decode(a,{stream:!0})},q=a=>{n.push(a)},r=()=>{let a=new d.ZH(n,j,{type:i});o.append(h,a)},s=()=>{o.append(h,g)},t=new TextDecoder("utf-8");for await(let b of(t.decode(),m.onPartBegin=function(){m.onPartData=p,m.onPartEnd=s,c="",f="",g="",h="",i="",j=null,n.length=0},m.onHeaderField=function(a){c+=t.decode(a,{stream:!0})},m.onHeaderValue=function(a){f+=t.decode(a,{stream:!0})},m.onHeaderEnd=function(){if(f+=t.decode(),"content-disposition"===(c=c.toLowerCase())){let a=f.match(/\bname=("([^"]*)"|([^()<>@,;:\\"/[\]?={}\s\t]+))/i);a&&(h=a[2]||a[3]||""),(j=function(a){let b=a.match(/\bfilename=("(.*?)"|([^()<>@,;:\\"/[\]?={}\s\t]+))($|;\s)/i);if(!b)return;let c=b[2]||b[3]||"",d=c.slice(c.lastIndexOf("\\")+1);return(d=d.replace(/%22/g,'"')).replace(/&#(\d{4});/g,(a,b)=>String.fromCharCode(b))}(f))&&(m.onPartData=q,m.onPartEnd=r)}else"content-type"===c&&(i=f);f="",c=""},a))m.write(b);return m.end(),o}}};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";exports.id=1905,exports.ids=[1905],exports.modules={9047:(a,b,c)=>{c.r(b),c.d(b,{"40520b537d1d43f510acbccd60e3e7d42ce215c157":()=>S,"60de87c4c5950c080550cb766970e88ae9c9a0ca25":()=>T});var d=c(91488);c(27806);let e={LOG_LEVEL:3},f={VERBOSE:-1,DEBUG:0,INFO:1,WARN:2,ERROR:3},g="number"==typeof e.LOG_LEVEL?e.LOG_LEVEL:f.ERROR;function h(a,b=0){if(b>6)return String(a);if(!(a instanceof Error))return a;let c={name:a.name,message:a.message};for(let d of Object.getOwnPropertyNames(a)){if("name"===d||"message"===d)continue;let e=a[d];"function"!=typeof e&&("stack"===d?c.stack=e:"cause"===d?c.cause=h(e,b+1):"errors"===d&&Array.isArray(e)?c.errors=e.map(a=>h(a,b+1)):c[d]=e)}return c}function i(a,b,c,d,e){if(a>=("number"==typeof e?e:g)){if("function"==typeof d)try{d=d()}catch{d="[lazy log data threw]"}let e=new Date().toISOString(),g=`[${e}] [${b}]`,i=`${g} ${c}`;if(void 0!==d)if(d instanceof Error||"object"==typeof d)try{let a=d instanceof Error?h(d):d,b=JSON.stringify(a,(a,b)=>b instanceof Error?h(b):b,2);i+=`:
|
|
2
|
+
${b}`}catch(a){i+=": [Object cannot be stringified]"}else i+=`: ${d}`;switch(a){case f.VERBOSE:console.debug(`[VERBOSE] ${i}`);break;case f.DEBUG:console.debug(i);break;case f.INFO:console.info(i);break;case f.WARN:console.warn(i);break;case f.ERROR:console.error(i);break;default:console.log(i)}}}function j(a,b){let c,d=((c=a.replace(/^src\//,"")).startsWith("/")&&(c=c.substring(1)),c);return{verbose:(a,c)=>{i(f.VERBOSE,d,a,c,b)},debug:(a,c)=>{i(f.DEBUG,d,a,c,b)},info:(a,c)=>{i(f.INFO,d,a,c,b)},warn:(a,c)=>{i(f.WARN,d,a,c,b)},error:(a,c)=>{i(f.ERROR,d,a,c,b)}}}var k=c(29021),l=c(33873),m=c.n(l),n=function(a){return a.MODELS="models",a.FLOWS="flows",a.CHAT_HISTORY="history",a.THEME="theme",a.ENCRYPTION_KEY="encryption_key",a.MCP_SERVERS="mcp_servers",a.GLOBAL_ENV_VARS="global_env_vars",a.CURRENT_CONVERSATION_ID="current_conversation_id",a.SELECTED_FLOW_ID="selected_flow_id",a.SPEECH_SETTINGS="speech_settings",a.SPOTLIGHT_SERVERS="spotlight_servers",a.PLANNED_EXECUTIONS="planned_executions",a}({});function o(){let a=process.env.FLUJO_DATA_DIR;return a&&a.trim().length>0?m().resolve(a):process.cwd()}let p=j("utils/storage/backend"),q=m().join(o(),"db"),r=m().join(o(),".next","storage"),s=a=>m().join(q,`${a}.json`);async function t(){try{await k.promises.access(q),p.verbose(`Storage directory exists: ${q}`)}catch{p.debug(`Creating storage directory: ${q}`),await k.promises.mkdir(q,{recursive:!0})}try{await k.promises.access(r),p.warn(`Old storage directory found: ${r}. This may cause data inconsistency issues.`)}catch{}}let u=new Map,v=0;async function w(a,b){let c=m().dirname(a);await k.promises.mkdir(c,{recursive:!0});let d=`${a}.tmp.${process.pid}.${++v}`;try{await k.promises.writeFile(d,b),await k.promises.rename(d,a)}catch(a){try{await k.promises.unlink(d)}catch{}throw a}}async function x(a,b){let c=s(a),d=(u.get(a)??Promise.resolve()).catch(()=>{}).then(()=>w(c,JSON.stringify(b,null,2)));u.set(a,d);try{await d,p.verbose(`Successfully saved item to: ${c}`)}catch(b){throw p.error(`Error saving item with key "${a}" to ${c}:`,b),b}finally{u.get(a)===d&&u.delete(a)}}async function y(a,b){try{await t();let c=s(a),d=await k.promises.readFile(c,"utf-8");if(0===d.trim().length)return p.warn(`Item with key "${a}" at ${c} is empty; treating as missing and returning default.`),b;try{let a=JSON.parse(d);return p.verbose(`Successfully loaded item from: ${c}`),a}catch(b){p.error(`CRITICAL: Failed to parse JSON from ${c}:`,b);let a=`${c}.corrupted.${Date.now()}.bak`;try{await k.promises.writeFile(a,d),p.info(`Created backup of corrupted file at: ${a}`)}catch(a){p.error("Failed to create backup of corrupted file:",a)}throw Error(`Failed to parse JSON from ${c}. A backup has been created at ${a}. Original error: ${b.message}`)}}catch(c){if("ENOENT"===c.code)return p.verbose(`Item with key "${a}" not found at ${s(a)}, returning default.`),b;throw p.error(`CRITICAL: Error loading item with key "${a}" from ${s(a)}:`,c),c}}var z=c(92347),A=c.n(z);let B=j("utils/encryption/session"),C=new Map,D=j("utils/encryption/secure"),E="data_encryption_key",F="data_encryption_iv",G="data_encryption_salt",H="encryption_type";var I=function(a){return a.DEFAULT="default",a.USER="user",a}(I||{});function J(){let a=A().enc.Utf8.parse("flujo_fixed_salt_v1");return A().PBKDF2("FLUJO~",a,{keySize:8,iterations:1e5})}async function K(){D.debug("initializeDefaultEncryption: Entering method");try{if(await P())return!0;let a=J(),b=A().lib.WordArray.random(8),c=A().lib.WordArray.random(16),d=A().AES.encrypt(b.toString(),a,{iv:c,mode:A().mode.CBC,padding:A().pad.Pkcs7}),e=A().enc.Utf8.parse("flujo_fixed_salt_v1"),f={[E]:d.toString(),[F]:c.toString(),[G]:e.toString(),encryption_version:1,[H]:"default"};return await x(n.ENCRYPTION_KEY,f),!0}catch(a){return D.error("initializeDefaultEncryption: Failed to initialize default encryption:",a),!1}}async function L(){D.debug("getDefaultDEK: Entering method");try{let a=await y(n.ENCRYPTION_KEY,null);if(!a){if(!await K())return D.error("getDefaultDEK: Failed to initialize default encryption"),null;return await L()}if("default"!==a[H])return D.error("getDefaultDEK: Not using default encryption"),null;let b=a[E],c=A().enc.Hex.parse(a[F]),d=J(),e=A().AES.decrypt(b,d,{iv:c,mode:A().mode.CBC,padding:A().pad.Pkcs7});if(!e.toString())return D.error("getDefaultDEK: Failed to decrypt DEK with default key"),null;return A().enc.Hex.parse(e.toString())}catch(a){return D.error("getDefaultDEK: Failed to get default DEK:",a),null}}async function M(a){D.debug("getUserDEK: Entering method");try{let b=await y(n.ENCRYPTION_KEY,null);if(!b)return D.error("getUserDEK: No encryption metadata found"),null;if("user"!==b[H])return D.error("getUserDEK: Not using user encryption"),null;let c=b[E],d=A().enc.Hex.parse(b[F]),e=A().enc.Hex.parse(b[G]),f=A().PBKDF2(a,e,{keySize:8,iterations:1e5}),g=A().AES.decrypt(c,f,{iv:d,mode:A().mode.CBC,padding:A().pad.Pkcs7});if(!g.toString())return D.error("getUserDEK: Failed to decrypt DEK with provided password"),null;return A().enc.Hex.parse(g.toString())}catch(a){return D.error("getUserDEK: Failed to get user DEK:",a),null}}async function N(a,b=!1){D.debug("getDEK: Entering method");try{if(b&&a){D.debug("getDEK: Using session token");let b=function(a){let b=C.get(a);if(!b)return B.warn(`Session not found: ${a}`),null;let c=Date.now();return c-b.createdAt>72e5?(B.warn(`Session expired: ${a}`),C.delete(a),null):(b.lastUsed=c,b.dek)}(a);if(b)return A().enc.Hex.parse(b);D.warn("getDEK: Invalid or expired session token, falling back to default encryption")}let c=await y(n.ENCRYPTION_KEY,null);if(!c){if(D.info("getDEK: No encryption metadata found, initializing default encryption"),!await K())return D.error("getDEK: Failed to initialize default encryption"),null;return await N(a,b)}if("user"!==c[H])return await L();{if(!a||b){D.warn("getDEK: Password required for user encryption but not provided, falling back to default encryption");let a=await L();if(a)return a;if(!await K())return D.error("getDEK: Failed to initialize default encryption as fallback"),null;return await L()}let c=await M(a);if(c)return c;return D.warn("getDEK: Failed to get user DEK, falling back to default encryption"),await L()}}catch(a){D.error("getDEK: Failed to get DEK:",a);try{if(D.warn("getDEK: Attempting to initialize default encryption as error recovery"),await K())return await L()}catch(a){D.error("getDEK: Failed to initialize default encryption as error recovery:",a)}return null}}async function O(a,b,c=!1){D.debug("decryptWithPassword: Entering method");try{let d=await N(b,c);if(!d)return null;let e=a.split(":");if(2!==e.length)return D.error("decryptWithPassword: Invalid ciphertext format"),null;let f=A().enc.Hex.parse(e[0]),g=e[1];return A().AES.decrypt(g,d,{iv:f,mode:A().mode.CBC,padding:A().pad.Pkcs7}).toString(A().enc.Utf8)}catch(a){return D.error("decryptWithPassword: Failed to decrypt data:",a),null}}async function P(){return D.debug("isEncryptionInitialized: Entering method"),null!==await y(n.ENCRYPTION_KEY,null)}var Q=c(40410);let R=j("backend/utils/resolveGlobalVars");async function S(a){R.debug("Entering resolveGlobalVars method");let b=await y(n.GLOBAL_ENV_VARS,{}),c=function(a){if(!a||"object"!=typeof a)return!1;let b=Object.keys(a);if(0===b.length)return!0;let c=a[b[0]];return c&&"object"==typeof c&&"value"in c&&"metadata"in c&&"object"==typeof c.metadata&&"isSecret"in c.metadata}(b);R.debug(`Loaded ${Object.keys(b).length} global environment variables (${c?"new":"old"} format)`);let d={};if(c)for(let[a,c]of Object.entries(b))d[a]=c.value;else d={...b};let e=async a=>{let b=a.match(/\$\{global:([^}]+)\}/g);if(!b)return a;let c=a;for(let a of b){let b=a.substring(9,a.length-1);if(void 0!==d[b]){let e=d[b];if(e.startsWith("encrypted:")){R.debug(`Decrypting encrypted global variable: ${b}`);try{let a=e.substring(10),c=await O(a);if(c)e=c,R.debug(`Successfully decrypted global variable: ${b}`);else{R.warn(`Failed to decrypt global variable: ${b}`);continue}}catch(a){R.error(`Error decrypting global variable: ${b}`,a);continue}}else if(e.startsWith("encrypted_failed:")){R.warn(`Skipping failed encrypted global variable: ${b}`);continue}R.debug(`Resolved global variable: ${b}`),c=c.replace(a,e)}else R.warn(`Global variable not found: ${b}`)}return c},f=async a=>{if("string"==typeof a)return await e(a);if(Array.isArray(a))return await Promise.all(a.map(a=>f(a)));if(null!==a&&"object"==typeof a){let b={};for(let[c,d]of Object.entries(a))b[c]=await f(d);return b}return a},g=await f(a);return"object"==typeof a&&null!==a&&R.debug("Resolved global variables result:",JSON.stringify(g,null,2)),R.debug("Completed global variable resolution"),g}async function T(a,b=0){if(R.debug(`Entering resolveAndDecryptApiKey method (depth: ${b})`),!a)return R.warn("Empty value provided"),null;if(b>=10)return R.warn(`Maximum resolution depth reached (10) for value: ${a}`),a;let c=a;if(c.startsWith("encrypted:")){R.debug(`Decrypting encrypted value at depth ${b}`);try{let a=c.substring(10),d=await O(a);if(!d)return R.warn(`Failed to decrypt value at depth ${b}`),null;R.debug(`Successfully decrypted value at depth ${b}`),R.verbose(d),c=d}catch(a){return R.error(`Error decrypting value at depth ${b}:`,a),null}}else c.startsWith("encrypted_failed:")&&(R.warn(`Skipping failed encrypted value at depth ${b}`),c=c.substring(17));if(c.includes("${global:")){R.debug(`Resolving global variables at depth ${b}`);try{let a=await S(c);if(R.verbose(a),a!==c)return R.debug(`Value changed after resolving globals at depth ${b}, processing recursively`),T(a,b+1);c=a}catch(a){return R.error(`Error resolving global variables at depth ${b}:`,a),null}}return R.debug(`Completed resolveAndDecryptApiKey at depth ${b}`),c}(0,Q.D)([S,T]),(0,d.A)(S,"40520b537d1d43f510acbccd60e3e7d42ce215c157",null),(0,d.A)(T,"60de87c4c5950c080550cb766970e88ae9c9a0ca25",null)},32631:(a,b,c)=>{c.d(b,{D:()=>h}),c(21124);var d=c(38301),e=c(19815);c(84040),c(9718);let f=(0,e.h)("frontend/contexts/ThemeContext"),g=(0,d.createContext)(void 0),h=()=>{let a=(0,d.useContext)(g);if(!a)throw f.error("useTheme hook used outside of ThemeProvider"),Error("useTheme must be used within a ThemeProvider");return f.debug("useTheme hook accessed"),a}},38296:(a,b,c)=>{c.d(b,{A:()=>C});var d=c(21124),e=c(38301),f=c(54573),g=c(81637),h=c(79515),i=c(20830),j=c(53773),k=c(82666),l=c(37674),m=c(67101),n=c(41893),o=c(95587),p=c(77028),q=c(44079),r=c(6537),s=c(19815),t=c(49938),u=c(47902),v=c(11480),w=c(93083),x=c(85557),y=c(91034),z=c(82571),A=c(92173);let B=(0,s.h)("frontend/components/mcp/MCPEnvManager/EnvEditor"),C=({serverName:a,initialEnv:b,onSave:c,onDelete:s,onServerRestart:C})=>{let{globalEnvVars:D}=(0,t.rX)(),[E,F]=(0,e.useState)([]),[G,H]=(0,e.useState)(!1),[I,J]=(0,e.useState)(!1),[K,L]=(0,e.useState)(!1),[M,N]=(0,e.useState)(null);(0,e.useEffect)(()=>{B.debug(`Initializing environment variables for server: ${a}`,{variableCount:Object.keys(b).length}),F(Object.entries(b).map(([a,b])=>{let c="object"==typeof b&&null!==b&&"value"in b?b.value:b,d="object"==typeof b&&null!==b&&"metadata"in b?b.metadata:{isSecret:(0,z.xc)(a)},e=c.match(/\$\{global:([^}]+)\}/);if(e){let b=e[1];return{key:a,value:c,isSecret:d.isSecret,isBound:!0,boundTo:b}}let f="string"==typeof c&&(c.startsWith("encrypted:")||c.startsWith("encrypted_failed:"));return{key:a,value:f?A.gF:c,isSecret:d.isSecret,isEncrypted:f}}))},[b]);let O=async b=>{B.debug(`Removing environment variable at index: ${b}`);let c=E[b];if("Global"===a&&s&&c.key)try{await s(c.key),F(E.filter((a,c)=>c!==b))}catch(a){B.error(`Failed to delete environment variable: ${c.key}`,a)}else F(E.filter((a,c)=>c!==b)),H(!0)},P=(a,b,c)=>{let d=[...E];if("isSecret"===b){let b=d[a];b.isSecret&&!c?d[a]={...b,isSecret:c,value:"",isEncrypted:!1,showWarning:!0}:d[a]={...b,isSecret:c}}else{let e={...d[a],[b]:c,isSecret:"key"===b?(0,z.xc)(c):d[a].isSecret};"key"===b&&(e.isValidKey=""===c||/^[a-zA-Z0-9_]+$/.test(c)),"value"===b&&(d[a].isEncrypted&&(e.isEncrypted=!1),d[a].showWarning&&c&&(e.showWarning=!1)),d[a]=e}F(d),H(!0)},Q=async()=>{if(E.some(a=>""!==a.key&&!1===a.isValidKey))return void B.error("Cannot save: Some variable names contain invalid characters");B.debug(`Saving environment variables for server: ${a}`,{variableCount:E.length}),J(!0);try{let b=E.reduce((a,b)=>{let{key:c,value:d,isBound:e,boundTo:f,isSecret:g,isEncrypted:h}=b;return c&&(e&&f?a[c]={value:`$\{global:${f}}`,metadata:{isSecret:g}}:g&&d===A.gF||(a[c]={value:d,metadata:{isSecret:g}})),a},{});await c(b),H(!1),C&&"Global"!==a&&(B.debug(`Restarting server after env variable changes: ${a}`),await C(a))}catch(a){B.error("Failed to save environment variables:",a)}J(!1)};return(0,d.jsxs)(f.A,{sx:{p:3,borderRadius:2,border:1,borderColor:a=>"dark"===a.palette.mode?"#3a3a3a":"#e5e7eb"},children:[(0,d.jsxs)(g.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:3},children:[(0,d.jsxs)(h.default,{variant:"h6",sx:{fontWeight:"semibold"},children:["Environment Variables - ",a]}),(0,d.jsx)(i.A,{variant:"contained",color:"primary",size:"small",startIcon:(0,d.jsx)(u.A,{}),onClick:()=>{B.debug("Adding new environment variable"),F([...E,{key:"",value:"",isSecret:!1}]),H(!0)},children:"Add Variable"})]}),(0,d.jsx)(j.A,{spacing:3,children:E.map((a,b)=>(0,d.jsxs)(k.Ay,{container:!0,spacing:2,alignItems:"flex-start",children:[(0,d.jsx)(k.Ay,{item:!0,xs:12,sm:5,children:(0,d.jsx)(l.A,{fullWidth:!0,placeholder:"Variable name",value:a.key,onChange:a=>P(b,"key",a.target.value),error:!1===a.isValidKey,helperText:!1===a.isValidKey?"Only alphanumeric characters and underscores allowed":"",size:"small"})}),(0,d.jsx)(k.Ay,{item:!0,xs:12,sm:5,children:(0,d.jsx)(l.A,{fullWidth:!0,type:a.isSecret?"password":"text",placeholder:a.showWarning?"Re-enter value":"Value",value:a.value,onChange:a=>P(b,"value",a.target.value),InputProps:{readOnly:a.isBound,startAdornment:a.isEncrypted?(0,d.jsx)(m.A,{position:"start",children:(0,d.jsx)(v.A,{fontSize:"small",titleAccess:"This value is stored encrypted"})}):null,endAdornment:a.isBound?(0,d.jsx)(m.A,{position:"end",children:(0,d.jsx)(n.A,{size:"small",label:`Bound to global: ${a.boundTo}`,color:"primary",variant:"outlined",onDelete:()=>(a=>{B.debug(`Unbinding variable at index: ${a}`);let b=[...E];b[a]={...b[a],isBound:!1,boundTo:void 0},F(b),H(!0)})(b),deleteIcon:(0,d.jsx)(w.A,{fontSize:"small"})})}):null},error:a.showWarning,helperText:a.showWarning?"You must re-enter the value after switching from secret to normal mode":"",size:"small",sx:{bgcolor:b=>a.isBound?"dark"===b.palette.mode?"#1a1a1a":"#f9fafb":b.palette.background.paper}})}),(0,d.jsx)(k.Ay,{item:!0,xs:12,sm:2,children:(0,d.jsxs)(g.default,{sx:{display:"flex",alignItems:"center",mt:.5},children:[(0,d.jsx)(o.A,{control:(0,d.jsx)(p.A,{checked:a.isSecret,onChange:a=>P(b,"isSecret",a.target.checked),size:"small"}),label:"Secret",sx:{mr:1}}),!a.isBound&&(0,d.jsx)(q.A,{size:"small",color:"primary",onClick:()=>(a=>{B.debug(`Opening bind modal for variable at index: ${a}`),N(a),L(!0)})(b),title:"Bind to global variable",sx:{mr:1},children:(0,d.jsx)(x.A,{fontSize:"small"})}),(0,d.jsx)(q.A,{size:"small",color:"error",onClick:()=>O(b),title:"Remove variable",children:(0,d.jsx)(y.A,{fontSize:"small"})})]})})]},b))}),(0,d.jsx)(r.A,{open:K,onClose:()=>{L(!1),N(null)},children:(0,d.jsxs)(g.default,{sx:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",width:400,maxWidth:"90%",bgcolor:"background.paper",boxShadow:24,p:4,borderRadius:2},children:[(0,d.jsx)(h.default,{variant:"h6",sx:{mb:2},children:"Bind to Global Variable"}),0===Object.keys(D).length?(0,d.jsx)(h.default,{color:"text.secondary",sx:{mb:2},children:"No global variables available. Add some in Settings first."}):(0,d.jsx)(g.default,{sx:{maxHeight:300,overflow:"auto",mb:2},children:Object.entries(D).map(([a,b])=>(0,d.jsxs)(i.A,{fullWidth:!0,variant:"text",onClick:()=>(a=>{if(null!==M){B.debug(`Binding variable at index ${M} to global variable: ${a}`);let b=[...E];b[M]={...b[M],isBound:!0,boundTo:a,value:`$\{global:${a}}`},F(b),L(!1),N(null),H(!0)}})(a),sx:{justifyContent:"space-between",textAlign:"left",mb:1,p:1,borderRadius:1},children:[(0,d.jsx)(h.default,{variant:"body2",children:a}),(0,d.jsx)(h.default,{variant:"caption",color:"text.secondary",children:b&&"object"==typeof b&&b.metadata&&b.metadata.isSecret?A.gF:b&&"object"==typeof b?b.value:b})]},a))}),(0,d.jsx)(g.default,{sx:{display:"flex",justifyContent:"flex-end"},children:(0,d.jsx)(i.A,{variant:"outlined",onClick:()=>{L(!1),N(null)},children:"Cancel"})})]})}),G&&(0,d.jsx)(g.default,{sx:{display:"flex",justifyContent:"flex-end",mt:3},children:(0,d.jsx)(i.A,{variant:"contained",color:"success",onClick:Q,disabled:I||E.some(a=>""!==a.key&&!1===a.isValidKey),children:I?"Saving...":"Save Changes"})})]})}},82571:(a,b,c)=>{c.d(b,{xc:()=>e,yo:()=>f});let d=["key","secret","token","password"],e=a=>d.some(b=>a.toLowerCase().includes(b)),f=a=>{if(!a)return a;if(a.includes("_-_-_")){let b=a.split("_-_-_");return 3===b.length?b[2]:a}let b=/^mcp_(.+)_[0-9a-z]+$/.exec(a);if(b&&b[1])return b[1];let c=a.indexOf("__");return c>0&&c+2<a.length?a.slice(c+2):a}},84040:(a,b,c)=>{c.d(b,{Ic:()=>g});var d=c(32631);let e=(0,c(19815).h)("frontend/utils/theme"),f={light:{background:"#FFFFFF",foreground:"#2C3E50",paperBackground:"#F5F6FA",textSecondary:"#7F8C8D",border:"#e5e7eb",heading:"#111",text:"#333",secondaryText:"#666",error:{background:"#fef2f2",border:"#fecaca",text:"#dc2626"}},dark:{background:"#1a1a1a",foreground:"#f0f0f0",paperBackground:"#2a2a2a",textSecondary:"#aaaaaa",border:"#3a3a3a",heading:"#f8f8f8",text:"#f0f0f0",secondaryText:"#aaa",error:{background:"#3a2222",border:"#5a3333",text:"#f87171"}}};function g(){let{isDarkMode:a}=(0,d.D)();return e.debug(`useThemeUtils called with isDarkMode: ${a}`),{getThemeValue:(b,c)=>a?c:b,getThemeColor:b=>{let c=b.split("."),d=f[a?"dark":"light"];for(let a of c)if(!d||"object"!=typeof d||!(a in d))return e.warn(`Theme color path not found: ${b}`),"";else d=d[a];return d},colors:a?f.dark:f.light,isDarkMode:a}}},92173:(a,b,c)=>{c.d(b,{RJ:()=>e,gF:()=>d});let d="masked:********",e="********"}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=1986,exports.ids=[1986],exports.modules={423:(a,b,c)=>{c.d(b,{A:()=>s});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(68333),i=c(6636),j=c(29565),k=c(33105);function l(a){return(0,k.Ay)("MuiCardActionArea",a)}let m=(0,j.A)("MuiCardActionArea",["root","focusVisible","focusHighlight"]);var n=c(14328),o=c(20385),p=c(21124);let q=(0,g.Ay)(n.A,{name:"MuiCardActionArea",slot:"Root",overridesResolver:(a,b)=>b.root})((0,h.A)(({theme:a})=>({display:"block",textAlign:"inherit",borderRadius:"inherit",width:"100%",[`&:hover .${m.focusHighlight}`]:{opacity:(a.vars||a).palette.action.hoverOpacity,"@media (hover: none)":{opacity:0}},[`&.${m.focusVisible} .${m.focusHighlight}`]:{opacity:(a.vars||a).palette.action.focusOpacity}}))),r=(0,g.Ay)("span",{name:"MuiCardActionArea",slot:"FocusHighlight",overridesResolver:(a,b)=>b.focusHighlight})((0,h.A)(({theme:a})=>({overflow:"hidden",pointerEvents:"none",position:"absolute",top:0,right:0,bottom:0,left:0,borderRadius:"inherit",opacity:0,backgroundColor:"currentcolor",transition:a.transitions.create("opacity",{duration:a.transitions.duration.short})}))),s=d.forwardRef(function(a,b){let c=(0,i.b)({props:a,name:"MuiCardActionArea"}),{children:d,className:g,focusVisibleClassName:h,slots:j={},slotProps:k={},...m}=c,n=(a=>{let{classes:b}=a;return(0,f.A)({root:["root"],focusHighlight:["focusHighlight"]},l,b)})(c),s={slots:j,slotProps:k},[t,u]=(0,o.A)("root",{elementType:q,externalForwardedProps:{...s,...m},shouldForwardComponentProp:!0,ownerState:c,ref:b,className:(0,e.A)(n.root,g),additionalProps:{focusVisibleClassName:(0,e.A)(h,n.focusVisible)}}),[v,w]=(0,o.A)("focusHighlight",{elementType:r,externalForwardedProps:s,ownerState:c,ref:b,className:n.focusHighlight});return(0,p.jsxs)(t,{...u,children:[d,(0,p.jsx)(v,{...w})]})})},11402:(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:"M14.94 4.66h-4.72l2.36-2.36zm-4.69 14.71h4.66l-2.33 2.33zM6.1 6.27 1.6 17.73h1.84l.92-2.45h5.11l.92 2.45h1.84L7.74 6.27zm-1.13 7.37 1.94-5.18 1.94 5.18zm10.76 2.5h6.12v1.59h-8.53v-1.29l5.92-8.56h-5.88v-1.6h8.3v1.26z"}),"SortByAlpha")},22042:(a,b,c)=>{c.d(b,{A:()=>Q});var d=c(38301),e=c(43249),f=c(2783),g=c(38404),h=c(94633),i=c(18168),j=c(60839),k=c(68333),l=c(6636),m=c(74907);function n(a){return(1+Math.sin(Math.PI*a-Math.PI/2))/2}var o=c(14758),p=c(5141),q=c(21124);let r={width:99,height:99,position:"absolute",top:-9999,overflow:"scroll"};var s=c(27080);let t=(0,s.A)((0,q.jsx)("path",{d:"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"}),"KeyboardArrowLeft"),u=(0,s.A)((0,q.jsx)("path",{d:"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"}),"KeyboardArrowRight");var v=c(14328),w=c(29565),x=c(33105);function y(a){return(0,x.Ay)("MuiTabScrollButton",a)}let z=(0,w.A)("MuiTabScrollButton",["root","vertical","horizontal","disabled"]),A=(0,i.Ay)(v.A,{name:"MuiTabScrollButton",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,c.orientation&&b[c.orientation]]}})({width:40,flexShrink:0,opacity:.8,[`&.${z.disabled}`]:{opacity:0},variants:[{props:{orientation:"vertical"},style:{width:"100%",height:40,"& svg":{transform:"var(--TabScrollButton-svgRotate)"}}}]}),B=d.forwardRef(function(a,b){let c=(0,l.b)({props:a,name:"MuiTabScrollButton"}),{className:d,slots:i={},slotProps:j={},direction:k,orientation:m,disabled:n,...o}=c,p=(0,g.I)(),r={isRtl:p,...c},s=(a=>{let{classes:b,orientation:c,disabled:d}=a;return(0,f.A)({root:["root",c,d&&"disabled"]},y,b)})(r),v=i.StartScrollButtonIcon??t,w=i.EndScrollButtonIcon??u,x=(0,h.A)({elementType:v,externalSlotProps:j.startScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:r}),z=(0,h.A)({elementType:w,externalSlotProps:j.endScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:r});return(0,q.jsx)(A,{component:"div",className:(0,e.A)(s.root,d),ref:b,role:null,ownerState:r,tabIndex:null,...o,style:{...o.style,..."vertical"===m&&{"--TabScrollButton-svgRotate":`rotate(${p?-90:90}deg)`}},children:"left"===k?(0,q.jsx)(v,{...x}):(0,q.jsx)(w,{...z})})});var C=c(87974);function D(a){return(0,x.Ay)("MuiTabs",a)}let E=(0,w.A)("MuiTabs",["root","vertical","list","flexContainer","flexContainerVertical","centered","scroller","fixed","scrollableX","scrollableY","hideScrollbar","scrollButtons","scrollButtonsHideMobile","indicator"]);var F=c(97896),G=c(20385);let H=(a,b)=>a===b?a.firstChild:b&&b.nextElementSibling?b.nextElementSibling:a.firstChild,I=(a,b)=>a===b?a.lastChild:b&&b.previousElementSibling?b.previousElementSibling:a.lastChild,J=(a,b,c)=>{let d=!1,e=c(a,b);for(;e;){if(e===a.firstChild){if(d)return;d=!0}let b=e.disabled||"true"===e.getAttribute("aria-disabled");if(e.hasAttribute("tabindex")&&!b)return void e.focus();e=c(a,e)}},K=(0,i.Ay)("div",{name:"MuiTabs",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[{[`& .${E.scrollButtons}`]:b.scrollButtons},{[`& .${E.scrollButtons}`]:c.scrollButtonsHideMobile&&b.scrollButtonsHideMobile},b.root,c.vertical&&b.vertical]}})((0,k.A)(({theme:a})=>({overflow:"hidden",minHeight:48,WebkitOverflowScrolling:"touch",display:"flex",variants:[{props:({ownerState:a})=>a.vertical,style:{flexDirection:"column"}},{props:({ownerState:a})=>a.scrollButtonsHideMobile,style:{[`& .${E.scrollButtons}`]:{[a.breakpoints.down("sm")]:{display:"none"}}}}]}))),L=(0,i.Ay)("div",{name:"MuiTabs",slot:"Scroller",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.scroller,c.fixed&&b.fixed,c.hideScrollbar&&b.hideScrollbar,c.scrollableX&&b.scrollableX,c.scrollableY&&b.scrollableY]}})({position:"relative",display:"inline-block",flex:"1 1 auto",whiteSpace:"nowrap",variants:[{props:({ownerState:a})=>a.fixed,style:{overflowX:"hidden",width:"100%"}},{props:({ownerState:a})=>a.hideScrollbar,style:{scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}}},{props:({ownerState:a})=>a.scrollableX,style:{overflowX:"auto",overflowY:"hidden"}},{props:({ownerState:a})=>a.scrollableY,style:{overflowY:"auto",overflowX:"hidden"}}]}),M=(0,i.Ay)("div",{name:"MuiTabs",slot:"List",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.list,b.flexContainer,c.vertical&&b.flexContainerVertical,c.centered&&b.centered]}})({display:"flex",variants:[{props:({ownerState:a})=>a.vertical,style:{flexDirection:"column"}},{props:({ownerState:a})=>a.centered,style:{justifyContent:"center"}}]}),N=(0,i.Ay)("span",{name:"MuiTabs",slot:"Indicator",overridesResolver:(a,b)=>b.indicator})((0,k.A)(({theme:a})=>({position:"absolute",height:2,bottom:0,width:"100%",transition:a.transitions.create(),variants:[{props:{indicatorColor:"primary"},style:{backgroundColor:(a.vars||a).palette.primary.main}},{props:{indicatorColor:"secondary"},style:{backgroundColor:(a.vars||a).palette.secondary.main}},{props:({ownerState:a})=>a.vertical,style:{height:"100%",width:2,right:0}}]}))),O=(0,i.Ay)(function(a){let{onChange:b,...c}=a,e=d.useRef(),f=d.useRef(null),g=()=>{e.current=f.current.offsetHeight-f.current.clientHeight};return(0,o.A)(()=>{let a=(0,m.A)(()=>{let a=e.current;g(),a!==e.current&&b(e.current)}),c=(0,p.A)(f.current);return c.addEventListener("resize",a),()=>{a.clear(),c.removeEventListener("resize",a)}},[b]),d.useEffect(()=>{g(),b(e.current)},[b]),(0,q.jsx)("div",{style:r,...c,ref:f})})({overflowX:"auto",overflowY:"hidden",scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}}),P={},Q=d.forwardRef(function(a,b){let c=(0,l.b)({props:a,name:"MuiTabs"}),i=(0,j.A)(),k=(0,g.I)(),{"aria-label":o,"aria-labelledby":r,action:s,centered:t=!1,children:u,className:v,component:w="div",allowScrollButtonsMobile:x=!1,indicatorColor:y="primary",onChange:z,orientation:A="horizontal",ScrollButtonComponent:E,scrollButtons:Q="auto",selectionFollowsFocus:R,slots:S={},slotProps:T={},TabIndicatorProps:U={},TabScrollButtonProps:V={},textColor:W="primary",value:X,variant:Y="standard",visibleScrollbar:Z=!1,...$}=c,_="scrollable"===Y,aa="vertical"===A,ab=aa?"scrollTop":"scrollLeft",ac=aa?"top":"left",ad=aa?"bottom":"right",ae=aa?"clientHeight":"clientWidth",af=aa?"height":"width",ag={...c,component:w,allowScrollButtonsMobile:x,indicatorColor:y,orientation:A,vertical:aa,scrollButtons:Q,textColor:W,variant:Y,visibleScrollbar:Z,fixed:!_,hideScrollbar:_&&!Z,scrollableX:_&&!aa,scrollableY:_&&aa,centered:t&&!_,scrollButtonsHideMobile:!x},ah=(a=>{let{vertical:b,fixed:c,hideScrollbar:d,scrollableX:e,scrollableY:g,centered:h,scrollButtonsHideMobile:i,classes:j}=a;return(0,f.A)({root:["root",b&&"vertical"],scroller:["scroller",c&&"fixed",d&&"hideScrollbar",e&&"scrollableX",g&&"scrollableY"],list:["list","flexContainer",b&&"flexContainerVertical",b&&"vertical",h&&"centered"],indicator:["indicator"],scrollButtons:["scrollButtons",i&&"scrollButtonsHideMobile"],scrollableX:[e&&"scrollableX"],hideScrollbar:[d&&"hideScrollbar"]},D,j)})(ag),ai=(0,h.A)({elementType:S.StartScrollButtonIcon,externalSlotProps:T.startScrollButtonIcon,ownerState:ag}),aj=(0,h.A)({elementType:S.EndScrollButtonIcon,externalSlotProps:T.endScrollButtonIcon,ownerState:ag}),[ak,al]=d.useState(!1),[am,an]=d.useState(P),[ao,ap]=d.useState(!1),[aq,ar]=d.useState(!1),[as,at]=d.useState(!1),[au,av]=d.useState({overflow:"hidden",scrollbarWidth:0}),aw=new Map,ax=d.useRef(null),ay=d.useRef(null),az={slots:S,slotProps:{indicator:U,scrollButton:V,...T}},aA=()=>{let a,b,c=ax.current;if(c){let b=c.getBoundingClientRect();a={clientWidth:c.clientWidth,scrollLeft:c.scrollLeft,scrollTop:c.scrollTop,scrollWidth:c.scrollWidth,top:b.top,bottom:b.bottom,left:b.left,right:b.right}}if(c&&!1!==X){let a=ay.current.children;if(a.length>0){let c=a[aw.get(X)];b=c?c.getBoundingClientRect():null}}return{tabsMeta:a,tabMeta:b}},aB=(0,C.A)(()=>{let a,{tabsMeta:b,tabMeta:c}=aA(),d=0;aa?(a="top",c&&b&&(d=c.top-b.top+b.scrollTop)):(a=k?"right":"left",c&&b&&(d=(k?-1:1)*(c[a]-b[a]+b.scrollLeft)));let e={[a]:d,[af]:c?c[af]:0};if("number"!=typeof am[a]||"number"!=typeof am[af])an(e);else{let b=Math.abs(am[a]-e[a]),c=Math.abs(am[af]-e[af]);(b>=1||c>=1)&&an(e)}}),aC=(a,{animation:b=!0}={})=>{b?function(a,b,c,d={},e=()=>{}){let{ease:f=n,duration:g=300}=d,h=null,i=b[a],j=!1,k=d=>{if(j)return void e(Error("Animation cancelled"));null===h&&(h=d);let l=Math.min(1,(d-h)/g);if(b[a]=f(l)*(c-i)+i,l>=1)return void requestAnimationFrame(()=>{e(null)});requestAnimationFrame(k)};i===c?e(Error("Element already at target position")):requestAnimationFrame(k)}(ab,ax.current,a,{duration:i.transitions.duration.standard}):ax.current[ab]=a},aD=a=>{let b=ax.current[ab];aa?b+=a:b+=a*(k?-1:1),aC(b)},aE=()=>{let a=ax.current[ae],b=0,c=Array.from(ay.current.children);for(let d=0;d<c.length;d+=1){let e=c[d];if(b+e[ae]>a){0===d&&(b=a);break}b+=e[ae]}return b},aF=()=>{aD(-1*aE())},aG=()=>{aD(aE())},[aH,{onChange:aI,...aJ}]=(0,G.A)("scrollbar",{className:(0,e.A)(ah.scrollableX,ah.hideScrollbar),elementType:O,shouldForwardComponentProp:!0,externalForwardedProps:az,ownerState:ag}),aK=d.useCallback(a=>{aI?.(a),av({overflow:null,scrollbarWidth:a})},[aI]),[aL,aM]=(0,G.A)("scrollButtons",{className:(0,e.A)(ah.scrollButtons,V.className),elementType:B,externalForwardedProps:az,ownerState:ag,additionalProps:{orientation:A,slots:{StartScrollButtonIcon:S.startScrollButtonIcon||S.StartScrollButtonIcon,EndScrollButtonIcon:S.endScrollButtonIcon||S.EndScrollButtonIcon},slotProps:{startScrollButtonIcon:ai,endScrollButtonIcon:aj}}}),aN=(0,C.A)(a=>{let{tabsMeta:b,tabMeta:c}=aA();c&&b&&(c[ac]<b[ac]?aC(b[ab]+(c[ac]-b[ac]),{animation:a}):c[ad]>b[ad]&&aC(b[ab]+(c[ad]-b[ad]),{animation:a}))}),aO=(0,C.A)(()=>{_&&!1!==Q&&at(!as)});d.useEffect(()=>{let a,b,c=(0,m.A)(()=>{ax.current&&aB()}),d=(0,p.A)(ax.current);return d.addEventListener("resize",c),"undefined"!=typeof ResizeObserver&&(a=new ResizeObserver(c),Array.from(ay.current.children).forEach(b=>{a.observe(b)})),"undefined"!=typeof MutationObserver&&(b=new MutationObserver(b=>{b.forEach(b=>{b.removedNodes.forEach(b=>{a?.unobserve(b)}),b.addedNodes.forEach(b=>{a?.observe(b)})}),c(),aO()})).observe(ay.current,{childList:!0}),()=>{c.clear(),d.removeEventListener("resize",c),b?.disconnect(),a?.disconnect()}},[aB,aO]),d.useEffect(()=>{let a=Array.from(ay.current.children),b=a.length;if("undefined"!=typeof IntersectionObserver&&b>0&&_&&!1!==Q){let c=a[0],d=a[b-1],e={root:ax.current,threshold:.99},f=new IntersectionObserver(a=>{ap(!a[0].isIntersecting)},e);f.observe(c);let g=new IntersectionObserver(a=>{ar(!a[0].isIntersecting)},e);return g.observe(d),()=>{f.disconnect(),g.disconnect()}}},[_,Q,as,u?.length]),d.useEffect(()=>{al(!0)},[]),d.useEffect(()=>{aB()}),d.useEffect(()=>{aN(P!==am)},[aN,am]),d.useImperativeHandle(s,()=>({updateIndicator:aB,updateScrollButtons:aO}),[aB,aO]);let[aP,aQ]=(0,G.A)("indicator",{className:(0,e.A)(ah.indicator,U.className),elementType:N,externalForwardedProps:az,ownerState:ag,additionalProps:{style:am}}),aR=(0,q.jsx)(aP,{...aQ}),aS=0,aT=d.Children.map(u,a=>{if(!d.isValidElement(a))return null;let b=void 0===a.props.value?aS:a.props.value;aw.set(b,aS);let c=b===X;return aS+=1,d.cloneElement(a,{fullWidth:"fullWidth"===Y,indicator:c&&!ak&&aR,selected:c,selectionFollowsFocus:R,onChange:z,textColor:W,value:b,...1===aS&&!1===X&&!a.props.tabIndex?{tabIndex:0}:{}})}),aU=(()=>{let a={};a.scrollbarSizeListener=_?(0,q.jsx)(aH,{...aJ,onChange:aK}):null;let b=_&&("auto"===Q&&(ao||aq)||!0===Q);return a.scrollButtonStart=b?(0,q.jsx)(aL,{direction:k?"right":"left",onClick:aF,disabled:!ao,...aM}):null,a.scrollButtonEnd=b?(0,q.jsx)(aL,{direction:k?"left":"right",onClick:aG,disabled:!aq,...aM}):null,a})(),[aV,aW]=(0,G.A)("root",{ref:b,className:(0,e.A)(ah.root,v),elementType:K,externalForwardedProps:{...az,...$,component:w},ownerState:ag}),[aX,aY]=(0,G.A)("scroller",{ref:ax,className:ah.scroller,elementType:L,externalForwardedProps:az,ownerState:ag,additionalProps:{style:{overflow:au.overflow,[aa?`margin${k?"Left":"Right"}`:"marginBottom"]:Z?void 0:-au.scrollbarWidth}}}),[aZ,a$]=(0,G.A)("list",{ref:ay,className:(0,e.A)(ah.list,ah.flexContainer),elementType:M,externalForwardedProps:az,ownerState:ag,getSlotProps:a=>({...a,onKeyDown:b=>{(a=>{if(a.altKey||a.shiftKey||a.ctrlKey||a.metaKey)return;let b=ay.current,c=(0,F.A)(b).activeElement;if("tab"!==c.getAttribute("role"))return;let d="horizontal"===A?"ArrowLeft":"ArrowUp",e="horizontal"===A?"ArrowRight":"ArrowDown";switch("horizontal"===A&&k&&(d="ArrowRight",e="ArrowLeft"),a.key){case d:a.preventDefault(),J(b,c,I);break;case e:a.preventDefault(),J(b,c,H);break;case"Home":a.preventDefault(),J(b,null,H);break;case"End":a.preventDefault(),J(b,null,I)}})(b),a.onKeyDown?.(b)}})});return(0,q.jsxs)(aV,{...aW,children:[aU.scrollButtonStart,aU.scrollbarSizeListener,(0,q.jsxs)(aX,{...aY,children:[(0,q.jsx)(aZ,{"aria-label":o,"aria-labelledby":r,"aria-orientation":"vertical"===A?"vertical":null,role:"tablist",...a$,children:aT}),ak&&aR]}),aU.scrollButtonEnd]})})},30717:(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:"M10 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8z"}),"Folder")},34304:(a,b,c)=>{c.d(b,{A:()=>r});var d=c(38301),e=c(43249),f=c(2783),g=c(14328),h=c(6638),i=c(18168),j=c(68333),k=c(6636),l=c(29565),m=c(33105);function n(a){return(0,m.Ay)("MuiTab",a)}let o=(0,l.A)("MuiTab",["root","labelIcon","textColorInherit","textColorPrimary","textColorSecondary","selected","disabled","fullWidth","wrapped","iconWrapper","icon"]);var p=c(21124);let q=(0,i.Ay)(g.A,{name:"MuiTab",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,c.label&&c.icon&&b.labelIcon,b[`textColor${(0,h.A)(c.textColor)}`],c.fullWidth&&b.fullWidth,c.wrapped&&b.wrapped,{[`& .${o.iconWrapper}`]:b.iconWrapper},{[`& .${o.icon}`]:b.icon}]}})((0,j.A)(({theme:a})=>({...a.typography.button,maxWidth:360,minWidth:90,position:"relative",minHeight:48,flexShrink:0,padding:"12px 16px",overflow:"hidden",whiteSpace:"normal",textAlign:"center",lineHeight:1.25,variants:[{props:({ownerState:a})=>a.label&&("top"===a.iconPosition||"bottom"===a.iconPosition),style:{flexDirection:"column"}},{props:({ownerState:a})=>a.label&&"top"!==a.iconPosition&&"bottom"!==a.iconPosition,style:{flexDirection:"row"}},{props:({ownerState:a})=>a.icon&&a.label,style:{minHeight:72,paddingTop:9,paddingBottom:9}},{props:({ownerState:a,iconPosition:b})=>a.icon&&a.label&&"top"===b,style:{[`& > .${o.icon}`]:{marginBottom:6}}},{props:({ownerState:a,iconPosition:b})=>a.icon&&a.label&&"bottom"===b,style:{[`& > .${o.icon}`]:{marginTop:6}}},{props:({ownerState:a,iconPosition:b})=>a.icon&&a.label&&"start"===b,style:{[`& > .${o.icon}`]:{marginRight:a.spacing(1)}}},{props:({ownerState:a,iconPosition:b})=>a.icon&&a.label&&"end"===b,style:{[`& > .${o.icon}`]:{marginLeft:a.spacing(1)}}},{props:{textColor:"inherit"},style:{color:"inherit",opacity:.6,[`&.${o.selected}`]:{opacity:1},[`&.${o.disabled}`]:{opacity:(a.vars||a).palette.action.disabledOpacity}}},{props:{textColor:"primary"},style:{color:(a.vars||a).palette.text.secondary,[`&.${o.selected}`]:{color:(a.vars||a).palette.primary.main},[`&.${o.disabled}`]:{color:(a.vars||a).palette.text.disabled}}},{props:{textColor:"secondary"},style:{color:(a.vars||a).palette.text.secondary,[`&.${o.selected}`]:{color:(a.vars||a).palette.secondary.main},[`&.${o.disabled}`]:{color:(a.vars||a).palette.text.disabled}}},{props:({ownerState:a})=>a.fullWidth,style:{flexShrink:1,flexGrow:1,flexBasis:0,maxWidth:"none"}},{props:({ownerState:a})=>a.wrapped,style:{fontSize:a.typography.pxToRem(12)}}]}))),r=d.forwardRef(function(a,b){let c=(0,k.b)({props:a,name:"MuiTab"}),{className:g,disabled:i=!1,disableFocusRipple:j=!1,fullWidth:l,icon:m,iconPosition:o="top",indicator:r,label:s,onChange:t,onClick:u,onFocus:v,selected:w,selectionFollowsFocus:x,textColor:y="inherit",value:z,wrapped:A=!1,...B}=c,C={...c,disabled:i,disableFocusRipple:j,selected:w,icon:!!m,iconPosition:o,label:!!s,fullWidth:l,textColor:y,wrapped:A},D=(a=>{let{classes:b,textColor:c,fullWidth:d,wrapped:e,icon:g,label:i,selected:j,disabled:k}=a,l={root:["root",g&&i&&"labelIcon",`textColor${(0,h.A)(c)}`,d&&"fullWidth",e&&"wrapped",j&&"selected",k&&"disabled"],icon:["iconWrapper","icon"]};return(0,f.A)(l,n,b)})(C),E=m&&s&&d.isValidElement(m)?d.cloneElement(m,{className:(0,e.A)(D.icon,m.props.className)}):m;return(0,p.jsxs)(q,{focusRipple:!j,className:(0,e.A)(D.root,g),ref:b,role:"tab","aria-selected":w,disabled:i,onClick:a=>{!w&&t&&t(a,z),u&&u(a)},onFocus:a=>{x&&!w&&t&&t(a,z),v&&v(a)},ownerState:C,tabIndex:w?0:-1,...B,children:["top"===o||"start"===o?(0,p.jsxs)(d.Fragment,{children:[E,s]}):(0,p.jsxs)(d.Fragment,{children:[s,E]}),r]})})},38941:(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:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2m0 16H8V7h11z"}),"ContentCopy")},46410:(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.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2m0 12H4V8h16z"}),"FolderOpen")},52399:(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:"m4 12 1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8z"}),"ArrowUpward")},63757:(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 18h6v-2H3zM3 6v2h18V6zm0 7h12v-2H3z"}),"Sort")},91314:(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:"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"}),"Home")},95345:(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:"M19 2h-4.18C14.4.84 13.3 0 12 0S9.6.84 9.18 2H5c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2m-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1m7 18H5V4h2v3h10V4h2z"}),"ContentPaste")},98810:(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:"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zM6 20V4h7v5h5v11z"}),"InsertDriveFileOutlined")}};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
exports.id=2181,exports.ids=[2181],exports.modules={1133:(a,b,c)=>{"use strict";c.r(b),c.d(b,{MCPService:()=>aj,mcpService:()=>ak});var d=c(37601),e=c(32524),f=c(79748),g=c.n(f),h=c(33873),i=c.n(h),j=c(50846),k=c(43326),l=c(51805),m=c(68780),n=c(73456);let o=(0,j.h)("backend/services/mcp/tools"),p=0x80000000-1;async function q(a,b){if(o.debug("Entering listServerTools method"),!a)return o.warn(`Server ${b} not connected`),{tools:[],error:"Server not connected"};try{o.info(`Listing tools for server ${b}`);let c=await a.listTools();o.verbose("Raw response from MCP server:",c);let d=(c.tools||[]).map(a=>({name:a.name,description:a.description||"",inputSchema:a.inputSchema||{}}));return o.verbose("Processed tools:",d),{tools:d}}catch(c){o.warn(`Failed to list tools for server ${b}:`,c);let a=c instanceof Error?c.message:"Unknown error";return{tools:[],error:a.includes("Connection timeout")?a:`Failed to list tools: ${a}`}}}async function r(a,b,c,d,e,f){if(o.debug("Entering callTool method"),!a)return o.warn(`Server ${b} not found`),{success:!1,error:`Server ${b} not found`,statusCode:404};let g=void 0!==e&&e>0?Math.min(1e3*e,p):p;try{o.debug(`Original args for tool ${c}:`,d);let b=await (0,n.c)(d),e=function(a,b){if(!a)return{};let c={};for(let d in a){let e=a[d];null==e?(o.debug(`Normalizing undefined/null value for parameter '${d}' in tool '${b}'`),d.includes("number")||d.endsWith("Count")||d.endsWith("Id")||d.endsWith("Limit")?(c[d]=0,o.debug(`Using default value 0 for likely number parameter: ${d}`)):d.includes("bool")||d.startsWith("is")||d.startsWith("has")||d.startsWith("should")?(c[d]=!1,o.debug(`Using default value false for likely boolean parameter: ${d}`)):d.includes("array")||d.endsWith("s")||d.endsWith("List")||d.endsWith("Items")?(c[d]=[],o.debug(`Using empty array for likely array parameter: ${d}`)):d.includes("object")||d.endsWith("Options")||d.endsWith("Config")||d.endsWith("Settings")?(c[d]={},o.debug(`Using empty object for likely object parameter: ${d}`)):(c[d]="",o.debug(`Using empty string for parameter with unknown type: ${d}`))):c[d]=e}return c}("object"==typeof b&&null!==b?b:{},c);o.debug(`Normalized args for tool ${c}:`,e),o.debug(`Calling tool ${c} with SDK timeout ${g}ms`);let h=await a.callTool({name:c,arguments:e},void 0,{timeout:g,resetTimeoutOnProgress:!0,onprogress:a=>{o.debug(`Progress for tool ${c}: ${a.progress}${void 0!==a.total?`/${a.total}`:""}${a.message?` — ${a.message}`:""}`),f?.(a)}});return{success:!0,data:h}}catch(e){o.warn(`Failed to call tool ${c} on server ${b}:`,e);let a=e instanceof Error?e.message:"Unknown error",d=500;if(e instanceof m.Nh&&e.code===m.O4.RequestTimeout){let a=Math.round(g/1e3);return o.warn(`Tool ${c} execution timed out after ${a} seconds`),{success:!1,error:`Tool execution timed out after ${a} seconds`,errorType:"timeout",toolName:c,timeout:a,statusCode:408}}if(a.includes("401")||a.includes("Unauthorized")||a.includes("invalid_token")||a.includes("token_expired"))return o.info(`OAuth authentication error detected for tool ${c} on server ${b}`),{success:!1,error:"OAuth authentication failed or tokens have expired. Please re-authenticate the server.",statusCode:401,requiresAuthentication:!0};return(a.includes("404")||a.includes("Not Found"))&&(o.info(`404 error detected for tool ${c} on server ${b} - may indicate OAuth issues`),d=404,a="Tool endpoint not found (404). This may indicate OAuth authentication issues or the server may not be properly configured."),e instanceof m.Nh?(a=`Failed to call tool: ${a} (Code: ${e.code})`,-32601===e.code?d=404:-32602===e.code?d=400:-32603===e.code&&(d=500)):a=`Failed to call tool: ${a}`,{success:!1,error:a,statusCode:d}}}let s=(0,j.h)("backend/services/mcp/resources");async function t(a,b){if(s.debug("Entering listServerResources method"),!a)return s.warn(`Server ${b} not connected`),{resources:[],error:"Server not connected"};try{s.info(`Listing resources for server ${b}`);let c=(await a.listResources()).resources||[];return s.verbose("Processed resources:",c),{resources:c}}catch(c){if(c instanceof m.Nh&&-32601===c.code)return s.debug(`Server ${b} does not support resources/list`),{resources:[]};s.warn(`Failed to list resources for server ${b}:`,c);let a=c instanceof Error?c.message:"Unknown error";return{resources:[],error:a.includes("Connection timeout")?a:`Failed to list resources: ${a}`}}}async function u(a,b){if(s.debug("Entering listServerResourceTemplates method"),!a)return s.warn(`Server ${b} not connected`),{resourceTemplates:[],error:"Server not connected"};try{return s.info(`Listing resource templates for server ${b}`),{resourceTemplates:(await a.listResourceTemplates()).resourceTemplates||[]}}catch(c){if(c instanceof m.Nh&&-32601===c.code)return s.debug(`Server ${b} does not support resources/templates/list`),{resourceTemplates:[]};s.warn(`Failed to list resource templates for server ${b}:`,c);let a=c instanceof Error?c.message:"Unknown error";return{resourceTemplates:[],error:a.includes("Connection timeout")?a:`Failed to list resource templates: ${a}`}}}async function v(a,b,c){if(s.debug("Entering readResource method"),!a)return s.warn(`Server ${b} not found`),{success:!1,error:`Server ${b} not found`,statusCode:404};try{let d=await (0,n.c)(c);s.info(`Reading resource ${d} from server ${b}`);let e=await a.readResource({uri:d});return{success:!0,data:e}}catch(e){s.warn(`Failed to read resource ${c} on server ${b}:`,e);let a=e instanceof Error?e.message:"Unknown error",d=500;return e instanceof m.Nh?(a=`Failed to read resource: ${a} (Code: ${e.code})`,-32601===e.code?d=404:-32602===e.code&&(d=400)):a=`Failed to read resource: ${a}`,{success:!1,error:a,statusCode:d}}}let w=(0,j.h)("backend/services/mcp/prompts");async function x(a,b){if(w.debug("Entering listServerPrompts method"),!a)return w.warn(`Server ${b} not connected`),{prompts:[],error:"Server not connected"};try{return w.info(`Listing prompts for server ${b}`),{prompts:(await a.listPrompts()).prompts||[]}}catch(c){if(c instanceof m.Nh&&-32601===c.code)return w.debug(`Server ${b} does not support prompts/list`),{prompts:[]};w.warn(`Failed to list prompts for server ${b}:`,c);let a=c instanceof Error?c.message:"Unknown error";return{prompts:[],error:a.includes("Connection timeout")?a:`Failed to list prompts: ${a}`}}}async function y(a,b,c,d){if(w.debug("Entering getPrompt method"),!a)return w.warn(`Server ${b} not found`),{success:!1,error:`Server ${b} not found`,statusCode:404};try{let e;if(d&&Object.keys(d).length>0){let a=await (0,n.c)(d);e="object"==typeof a&&null!==a?a:void 0}w.info(`Getting prompt ${c} from server ${b}`);let f=await a.getPrompt({name:c,arguments:e});return{success:!0,data:f}}catch(e){w.warn(`Failed to get prompt ${c} on server ${b}:`,e);let a=e instanceof Error?e.message:"Unknown error",d=500;return e instanceof m.Nh?(a=`Failed to get prompt: ${a} (Code: ${e.code})`,-32601===e.code?d=404:-32602===e.code&&(d=400)):a=`Failed to get prompt: ${a}`,{success:!1,error:a,statusCode:d}}}var z=c(17748),A=c(40829),B=c(27299);let C=new Set(["npx","bunx","uvx","pipx","dlx"]),D=new Set(["pnpm","yarn","bun","npm"]),E=new Set(["dlx","exec","x"]);function F(a,b=[]){let c=((a||"").split(/[\\/]/).filter(Boolean).pop()||"").toLowerCase().replace(/\.(cmd|exe|bat|ps1)$/i,"");if(C.has(c))return!0;if(D.has(c)){let a=(b[0]||"").toLowerCase();return E.has(a)}return!1}function G(a){return"stdio"===a.transport&&F(a.command,a.args??[])}var H=c(4231),I=c(58302),J=c(77823),K=c(72238),L=c(29021),M=c(21820),N=c(77213),O=c(25096);let P=new Set(["node","npm","npx"]);var Q=c(79551);let R=(0,j.h)("backend/services/mcp/roots");function S(){return global.__mcp_node_roots}function T(a){let b=[];for(let c of S().values())if(c.serverName===a)for(let a of c.roots)b.includes(a)||b.push(a);return b}async function U(a){let b=function(a){let b=a.trim();if(!b)return null;if(b.startsWith("file://"))return b;if(/^[a-zA-Z][a-zA-Z0-9+.-]*:\/\//.test(b))return R.warn(`Ignoring non-file root URI: ${b}`),null;try{return(0,Q.pathToFileURL)(b).href}catch(a){return R.warn(`Could not convert root "${b}" to a file URI:`,a),null}}(await (0,n.c)(a));return b?{uri:b,name:function(a){try{let b=new URL(a).pathname.replace(/\/+$/,"").split("/").pop();return b?decodeURIComponent(b):void 0}catch{return}}(b)}:null}async function V(a){let b=a.roots,c=[...Array.isArray(b)?b:[],...T(a.name)],d=[],e=new Set;for(let a of c){if("string"!=typeof a||!a.trim())continue;let b=await U(a);b&&!e.has(b.uri)&&(e.add(b.uri),d.push(b))}if(0===d.length&&"string"==typeof a.rootPath&&a.rootPath.trim()){let b=await U(a.rootPath);if(b)return[b]}return d}async function W(a){try{let{loadServerConfigs:b}=await Promise.resolve().then(c.bind(c,51805)),d=await b();if(Array.isArray(d)){let b=d.find(b=>b.name===a.name);if(b)return b}}catch(b){R.warn(`Could not re-load config for ${a.name}, using connect-time config:`,b)}return a}void 0===global.__mcp_node_roots&&(global.__mcp_node_roots=new Map);var X=c(20433),Y=c(48999);let Z=(0,j.h)("backend/services/mcp/sampling");function $(a){return a.sampling}function _(a){let b=$(a);return b?.enabled?JSON.stringify({m:b.modelId,t:b.maxTokens,r:b.maxCallsPerMinute}):""}let aa=(0,j.h)("backend/services/mcp/connection");function ab(a){let b={};if(a)for(let[c,d]of Object.entries(a))d&&"object"==typeof d&&"value"in d?b[c]=d.value:b[c]=d;return b}function ac(a){return JSON.stringify({command:a.command,args:a.args??[],env:ab(a.env),cwd:String(a.cwd??""),rootPath:a.rootPath??""})}function ad(a){return JSON.stringify({transport:a.transport,url:a.serverUrl??"",headers:a.headers??{},requestInit:a.requestInit??{},eventSourceInit:a.eventSourceInit??{},reconnectionOptions:a.reconnectionOptions??{},sessionId:a.sessionId??"",oauthClientId:a.oauthClientId??"",oauthClientInformation:a.oauthClientInformation??{},oauthClientSecret:a.oauthClientSecret??"",oauthTokens:a.oauthTokens??{}})}function ae(a){aa.debug("Entering createNewClient method");let b=function(a){let b=$(a);return!!(b?.enabled&&b.modelId)}(a),c=new H.K({name:`flujo-${a.name}-client`,version:"3.9.0"},{capabilities:{experimental:{},roots:{listChanged:!0},...b?{sampling:{}}:{}}});return c.setRequestHandler(m.WQ,async()=>{let b=await V(await W(a));return R.debug(`roots/list for ${a.name}: ${b.length} root(s)`),{roots:b}}),b&&function(a,b){let c=[];a.setRequestHandler(m.u9,async a=>{let d=$(b);if(!d?.enabled||!d.modelId)throw new m.Nh(m.O4.InvalidRequest,"Sampling is not enabled for this server");let e=d.maxCallsPerMinute??10,f=Date.now(),g=f-6e4;for(;c.length>0&&c[0]<g;)c.shift();if(c.length>=e)throw Z.warn(`Sampling rate limit (${e}/min) hit for ${b.name}`),new m.Nh(m.O4.InvalidRequest,`Sampling rate limit of ${e}/min exceeded`);c.push(f);let h=await X.modelService.getModel(d.modelId);if(!h)throw new m.Nh(m.O4.InternalError,`Sampling model not found: ${d.modelId}`);let i=await X.modelService.resolveAndDecryptApiKey(h.ApiKey);if(!i)throw new m.Nh(m.O4.InternalError,"Could not resolve the sampling model API key");let j=a.params,k=function(a){let b=[];for(let c of(a.systemPrompt&&b.push({role:"system",content:a.systemPrompt}),a.messages||[])){let a=c.content,d=a?.type==="text"&&"string"==typeof a.text?a.text:`[unsupported ${a?.type||"non-text"} content omitted]`;b.push({role:c.role,content:d})}return b}(j),l="number"==typeof j.temperature?j.temperature:.7;Z.info(`Sampling for ${b.name} via model ${h.name} (${k.length} messages)`);let n=(0,Y.getCompletionAdapter)(h),{completion:o}=await n.createCompletion({model:h,apiKey:i,messages:k,temperature:l}),p=o.choices?.[0]?.message?.content;return{role:"assistant",content:{type:"text",text:"string"==typeof p?p:""},model:h.name,stopReason:"endTurn"}})}(c,a),c.__flujoCapKey=_(a),c}function af(a){if(aa.debug("Entering createTransport method"),"streamable"===a.transport){aa.info(`Creating streamable http transport for server ${a.name} with URL ${a.serverUrl}`);let b={};if(a.requestInit&&"object"==typeof a.requestInit&&(b.requestInit=a.requestInit),a.reconnectionOptions&&"object"==typeof a.reconnectionOptions&&(b.reconnectionOptions=a.reconnectionOptions),"string"==typeof a.sessionId&&a.sessionId.length>0&&(b.sessionId=a.sessionId),a.headers&&"object"==typeof a.headers){let c=Object.fromEntries(Object.entries(a.headers).filter(([a,b])=>a&&"string"==typeof b));Object.keys(c).length>0&&(b.requestInit={...b.requestInit||{},headers:{...b.requestInit?.headers||{},...c}},aa.info(`Applied ${Object.keys(c).length} custom header(s) for ${a.name}: ${Object.keys(c).join(", ")}`))}a.oauthClientId||a.oauthClientInformation?(aa.info(`Setting up OAuth authentication for ${a.name}`),b.authProvider=(0,O.C)(a),a.oauthTokens?.access_token?(aa.debug(`OAuth provider configured for ${a.name} with existing tokens`),aa.debug(`Token expires in: ${a.oauthTokens.expires_in} seconds`)):aa.debug(`OAuth provider configured for ${a.name} - will initiate OAuth flow if needed`)):aa.debug(`No OAuth configuration found for ${a.name}`);let c=new J.j(new URL(a.serverUrl),b);return c.__flujoHttpKey=ad(a),c}if("sse"===a.transport){aa.info(`Creating legacy sse transport for server ${a.name} with URL ${a.serverUrl}`);let b={};if(a.requestInit&&"object"==typeof a.requestInit&&(b.requestInit=a.requestInit),a.eventSourceInit&&"object"==typeof a.eventSourceInit&&(b.eventSourceInit=a.eventSourceInit),a.headers&&"object"==typeof a.headers){let c=Object.fromEntries(Object.entries(a.headers).filter(([a,b])=>a&&"string"==typeof b));Object.keys(c).length>0&&(b.requestInit={...b.requestInit||{},headers:{...b.requestInit?.headers||{},...c}},aa.info(`Applied ${Object.keys(c).length} custom header(s) for ${a.name}: ${Object.keys(c).join(", ")}`))}let c=new K.A(new URL(a.serverUrl),b);return c.__flujoHttpKey=ad(a),c}return"websocket"===a.transport?(aa.info(`Creating WebSocket transport for server ${a.name} with URL ${a.websocketUrl}`),new I.I(new URL(a.websocketUrl))):function(a){if(aa.debug("Entering createStdioTransport method"),"stdio"!==a.transport)throw Error("Cannot create stdio transport for non-stdio config");let b=a.command,c=a.args?[...a.args]:[],e=`${N.VL}/${a.name}`;aa.info(`Creating stdio transport for server ${a.name}`),aa.debug(`Original command: ${b}`),aa.debug(`Original args: ${JSON.stringify(c)}`),aa.debug(`Server directory: ${e}`);let f=!h.isAbsolute(b)&&(b.includes("/")||b.includes("\\")),g=!b.includes("/")&&!b.includes("\\");if(aa.debug(`Is relative path: ${f}`),aa.debug(`Is just filename: ${g}`),"win32"===M.platform()&&b.toLowerCase().endsWith(".bat"))if(aa.debug(`Detected .bat file on Windows: ${b}`),g){let a=h.join((0,k.ok)(),e,b);aa.debug(`Checking if file exists at: ${a}`);let d=L.existsSync(a);aa.debug(`File exists: ${d}`),d?(aa.debug(`Using full path to .bat file: ${a}`),c=["/c",a,...c]):(aa.warn(`WARNING: .bat file not found at ${a}`),c=["/c",b,...c]),b="cmd.exe"}else aa.debug(`Using cmd.exe with path as provided: ${b}`),c=["/c",b,...c],b="cmd.exe";let i=function(a,b){if(!a||!(!a.includes("/")&&!a.includes("\\")))return a;let c=a.toLowerCase();if(!P.has(c))return a;if("node"===c)return b.execPath||a;if(!b.execPath)return a;let d=b.dirname(b.execPath);for(let a of"win32"===b.platform?[`${c}.cmd`,`${c}.exe`,c]:[c]){let c=b.joinPath(d,a);if(b.fileExists(c))return c}return a}(b,{execPath:process.execPath,platform:M.platform(),dirname:h.dirname,joinPath:h.join,fileExists:L.existsSync});i!==b&&(aa.debug(`Resolved Node toolchain command "${b}" to absolute path: ${i}`),b=i),aa.debug(`Final command: ${b}`),aa.debug(`Final args: ${JSON.stringify(c)}`);let j=function({command:a,args:b=[],rootPath:c,cwd:d,serverName:e,defaultCwd:f}){let g=c||d||f;return e&&F(a,b)&&(g.split(/[\\/]/).filter(Boolean).pop()||"")===e&&function(a){let b=a.match(/^(.*[\\/])[^\\/]+[\\/]*$/);return b?b[1].replace(/[\\/]+$/,""):""}(g)||g}({command:a.command,args:a.args,rootPath:a.rootPath,cwd:a.cwd,serverName:a.name,defaultCwd:`${N.VL}/${a.name}`}),l=h.isAbsolute(j)?j:h.join((0,k.ok)(),j);aa.debug(`cwd: ${l}`),aa.debug(`env: ${JSON.stringify(a.env)}`),aa.info(`Creating StdioClientTransport for ${a.name} with stderr: 'pipe'`);let m=ab(a.env);aa.verbose("Transformed environment variables",JSON.stringify(m));let n={command:b,args:c,env:m,cwd:l,stderr:"pipe"},o=new d.oQ(n);return o.__flujoStdioKey=ac(a),o.stderr?aa.info(`Stderr stream is available for ${a.name}`):aa.warn(`Stderr stream is NOT available for ${a.name}`),o}(a)}function ag(a,b){return null!==a.exitCode||null!==a.signalCode?Promise.resolve(!0):new Promise(c=>{let d=()=>{clearTimeout(e),c(!0)},e=setTimeout(()=>{a.removeListener("exit",d),c(!1)},b);e.unref?.(),a.once("exit",d)})}async function ah(a,b,c,e){aa.debug("Entering safelyCloseClient method");let f=e?.gracePeriodMs??15e3,g=e?.killEscalationMs??5e3;try{if(a.transport instanceof d.oQ){let c=a.transport._process;if(c&&null===c.exitCode&&null===c.signalCode){try{c.stdin&&!c.stdin.destroyed&&(c.stdin.end(),aa.debug(`Closed stdin for graceful shutdown for ${b}`))}catch(a){aa.warn(`Error closing stdin for ${b}:`,a)}let a=await ag(c,f);if(!a){aa.warn(`Process did not exit within ${f}ms after stdin close, sending SIGTERM for ${b}`);try{c.kill("SIGTERM")}catch(a){aa.error(`Error sending SIGTERM for ${b}:`,a)}a=await ag(c,g)}if(a)aa.info(`Process exited gracefully for ${b}`);else{aa.warn(`Process did not respond to SIGTERM, sending SIGKILL for ${b}`);try{c.kill("SIGKILL")}catch(a){aa.error(`Error sending SIGKILL for ${b}:`,a)}}}}await a.close(),aa.info(`Client closed successfully for ${b}`)}catch(a){aa.warn(`Error closing client for ${b}:`,a)}}void 0===global.__mcp_recovery&&(global.__mcp_recovery=new Map),void 0===global.__mcp_connecting&&(global.__mcp_connecting=new Set),void 0===global.__mcp_starting_up&&(global.__mcp_starting_up=!0),void 0===global.__mcp_active_transports&&(global.__mcp_active_transports=new Map);let ai=(0,j.h)("backend/services/mcp/index");class aj{get connectingServers(){return global.__mcp_connecting}get activeTransports(){return global.__mcp_active_transports}static{this.MAX_STDERR_LOG_ENTRIES=200}appendStderrLog(a,b){let c=this.stderrLogs.get(a)||[];c.push(b),c.length>aj.MAX_STDERR_LOG_ENTRIES&&c.splice(0,c.length-aj.MAX_STDERR_LOG_ENTRIES),this.stderrLogs.set(a,c)}deregisterClient(a){this.clients.delete(a),this.removeFromGlobalRecovery(a),this.activeTransports.delete(a)}constructor(){this.clients=new Map,this.stderrLogs=new Map,this.lastConnectionError=new Map,this.inFlightConnects=new Map,this.recover_attempted=!1,this.connectionRetryTimers=new Map,this.connectionRetryAttempts=new Map,this.attemptRecovery()}attemptRecovery(){!this.recover_attempted&&global.__mcp_recovery&&global.__mcp_recovery.size>0&&(ai.info(`Attempting to recover ${global.__mcp_recovery.size} clients from global recovery map`),global.__mcp_recovery.forEach((a,b)=>{this.clients.set(b,a),ai.info(`Recovered client for server: ${b}`)})),this.recover_attempted=!0}addToGlobalRecovery(a,b){global.__mcp_recovery||(global.__mcp_recovery=new Map),global.__mcp_recovery.set(a,b),ai.debug(`Added client for server ${a} to global recovery map`)}removeFromGlobalRecovery(a){global.__mcp_recovery&&global.__mcp_recovery.has(a)&&(global.__mcp_recovery.delete(a),ai.debug(`Removed client for server ${a} from global recovery map`))}clearRetryTimer(a){let b=this.connectionRetryTimers.get(a);b&&(clearTimeout(b),this.connectionRetryTimers.delete(a),ai.debug(`Cleared retry timer for server ${a}`))}scheduleConnectionRetry(a,b){this.clearRetryTimer(a);let c=this.connectionRetryAttempts.get(a)||0;if(c>=5){ai.warn(`Maximum retry attempts (5) reached for server ${a}, stopping retries`),this.connectionRetryAttempts.delete(a);return}let d=Math.min(5e3*Math.pow(2,c),3e5);ai.info(`Scheduling connection retry for server ${a} in ${d}ms (attempt ${c+1}/5)`);let e=setTimeout(async()=>{ai.info(`Attempting to reconnect server ${a} (attempt ${c+1}/5)`);let b=await this.getServerConfig(a);if(!b){ai.info(`Server ${a} configuration not found, stopping retry attempts`),this.connectionRetryAttempts.delete(a);return}if(b.disabled){ai.info(`Server ${a} is now disabled, stopping retry attempts`),this.connectionRetryAttempts.delete(a);return}let d=this.getClient(a);if(d)try{await d.ping({timeout:5e3}),ai.info(`Server ${a} is already connected and responsive, cancelling retry`),this.connectionRetryAttempts.delete(a);return}catch(b){ai.warn(`Server ${a} has a registered client but ping failed (${b instanceof Error?b.message:String(b)}); reconnecting from scratch`)}this.connectionRetryAttempts.set(a,c+1);try{let e=d?await this.forceReconnect(a):await this.connectServer(b);if(e.success)ai.info(`Successfully reconnected server ${a} after ${c+1} attempts`),this.connectionRetryAttempts.delete(a);else{if(ai.warn(`Failed to reconnect server ${a}: ${e.error}`),e.requiresAuthentication){ai.info(`Server ${a} requires authentication, stopping retry attempts`),this.connectionRetryAttempts.delete(a);return}this.scheduleConnectionRetry(a,b)}}catch(c){ai.error(`Error during retry connection for server ${a}:`,c),this.scheduleConnectionRetry(a,b)}},d);this.connectionRetryTimers.set(a,e)}isStartingUp(){return!0===global.__mcp_starting_up}setStartingUp(a){global.__mcp_starting_up=a,ai.info(`Backend startup state set to: ${a?"starting":"complete"}`)}getClient(a){let b=this.clients.get(a);if(!b){let c=global.__mcp_recovery?.get(a);c&&(this.clients.set(a,c),b=c,ai.debug(`getClient: adopted ${a} from the global recovery map`))}return ai.debug(`getClient: Looking for client: ${a}`,b?"Found":"Not found"),b}async loadServerConfigs(){ai.debug("loadServerConfigs: Entering method");try{let a=await (0,l.loadServerConfigs)();if(!Array.isArray(a))return ai.warn("loadServerConfigs: Received non-array response",a),a;return ai.debug(`loadServerConfigs: Loaded ${a.length} server configs`),a}catch(a){return ai.warn("loadServerConfigs: Failed to load server configs:",a),{success:!1,error:`Failed to load server configs: ${a instanceof Error?a.message:"Unknown error"}`}}}async getServerConfig(a){ai.debug(`getServerConfig: Looking up config for server ${a}`);let b=await this.loadServerConfigs();if(!Array.isArray(b))return ai.warn(`getServerConfig: Failed to load configs for ${a}:`,b.error),null;let c=b.find(b=>b.name===a);return c||(ai.warn(`getServerConfig: Server ${a} not found in configs`),null)}async isServerDisabled(a){let b=await this.getServerConfig(a);return b?.disabled===!0}async connectServer(a){let b="string"==typeof a?a:a.name,c=this.inFlightConnects.get(b);if(c)return ai.debug(`connectServer: reusing in-flight connection attempt for ${b}`),c;let d=this.connectServerInternal(a).finally(()=>{this.inFlightConnects.delete(b)});return this.inFlightConnects.set(b,d),d}async connectServerInternal(a){let b;if("string"==typeof a){ai.info(`connectServer: Looking up config for server ${a}`);let c=await this.getServerConfig(a);if(!c)return ai.warn(`connectServer: Server ${a} not found in configs`),{success:!1,error:`Server configuration for "${a}" not found. The server may have been deleted or not properly configured.`};b=c}else b=a;if((("string"==typeof a?b:await this.getServerConfig(b.name))??b).disabled)return ai.info(`connectServer: Server ${b.name} is disabled — refusing to create a client/transport`),this.clearRetryTimer(b.name),this.connectionRetryAttempts.delete(b.name),{success:!1,error:`Server '${b.name}' is disabled. Enable it on the MCP page to use it.`};let c=(0,e.A)();ai.info(`connectServer: Starting connection for server ${b.name} [RequestID: ${c}]`),this.connectingServers.add(b.name);try{this.stderrLogs.set(b.name,[]);let a=this.clients.get(b.name);if(a){let{needsNewClient:c,reason:e}=function(a,b){if(aa.debug("Entering shouldRecreateClient method"),(a.__flujoCapKey??"")!==_(b))return{needsNewClient:!0,reason:"Client capabilities (sampling) changed"};if("websocket"===b.transport){if(!(a.transport instanceof I.I))return{needsNewClient:!0,reason:"Transport type changed to websocket"}}else if("streamable"===b.transport){if(!(a.transport instanceof J.j))return{needsNewClient:!0,reason:"Transport type changed to streamable"};let c=a.transport,d=c._url?.toString();if(void 0!==d&&d!==new URL(b.serverUrl).toString())return{needsNewClient:!0,reason:"Streamable server URL changed"};let e=c.__flujoHttpKey;if(!e)return{needsNewClient:!0,reason:"Existing streamable transport has no config key"};if(e!==ad(b))return{needsNewClient:!0,reason:"Streamable auth/connection parameters changed"}}else if("sse"===b.transport){if(!(a.transport instanceof K.A))return{needsNewClient:!0,reason:"Transport type changed to sse"};let c=a.transport,d=c._url?.toString();if(void 0!==d&&d!==new URL(b.serverUrl).toString())return{needsNewClient:!0,reason:"SSE server URL changed"};let e=c.__flujoHttpKey;if(!e)return{needsNewClient:!0,reason:"Existing sse transport has no config key"};if(e!==ad(b))return{needsNewClient:!0,reason:"SSE auth/connection parameters changed"}}else{if(!(a.transport instanceof d.oQ))return{needsNewClient:!0,reason:"Transport type changed to stdio"};if("stdio"!==b.transport)return{needsNewClient:!0,reason:"Transport type changed from stdio"};let c=a.transport.__flujoStdioKey;if(!c)return{needsNewClient:!0,reason:"Existing stdio transport has no config key"};if(c!==ac(b))return{needsNewClient:!0,reason:"Connection parameters changed"}}return{needsNewClient:!1}}(a,b);if(!c)return ai.info(`connectServer: Server ${b.name} is already connected`),this.lastConnectionError.delete(b.name),this.clearRetryTimer(b.name),this.connectionRetryAttempts.delete(b.name),{success:!0};ai.info(`connectServer: Existing client for ${b.name} is stale (${e}), recreating`),this.deregisterClient(b.name);try{await ah(a,b.name,b)}catch(a){ai.debug(`connectServer: error closing stale client for ${b.name}: ${a instanceof Error?a.message:String(a)}`)}a=void 0}a=ae(b);let c=af(b);if(c instanceof d.oQ&&c.stderr){let a=b.name;c.stderr.on("data",b=>{let c=b.toString();ai.warn(`stderr: [${a}]: ${c}`),this.appendStderrLog(a,c)})}return await a.connect(c),c.onclose=()=>{if(this.activeTransports.get(b.name)!==c)return void ai.debug(`connectServer: ignoring close event from a stale/deregistered transport for ${b.name}`);ai.warn(`connectServer: Connection closed for server ${b.name}`),this.deregisterClient(b.name),this.getServerConfig(b.name).then(a=>{if(!a||a.disabled)return void ai.info(`Server ${b.name} is now disabled, skipping reconnection logic`);ai.info(`Connection closed for enabled server ${b.name}, scheduling reconnection`),this.scheduleConnectionRetry(b.name,a)}).catch(a=>{ai.warn(`Error checking server config for ${b.name} during onclose:`,a)})},c.onerror=a=>{if((0,z.lO)(a))return void ai.debug(`connectServer: transient SSE stream disconnect for ${b.name} (self-healing, ignored): ${a instanceof Error?a.message:String(a)}`);if(this.activeTransports.get(b.name)!==c)return void ai.debug(`connectServer: ignoring error event from a stale/deregistered transport for ${b.name}`);if(ai.error(`connectServer: Transport error for server ${b.name}:`),a instanceof Error){ai.error(`Error name: ${a.name}`),ai.error(`Error message: ${a.message}`),ai.error(`Error stack: ${a.stack}`);let b=a.code;void 0!==b&&ai.error(`Error code: ${b}`),ai.error(`Error chain: ${(0,z.jf)(a)}`)}else if(a&&"object"==typeof a){ai.error(`Error type: ${typeof a}`),ai.error(`Error constructor: ${a.constructor?.name||"Unknown"}`);let b=Object.getOwnPropertyNames(a);b.length>0?(ai.error(`Error properties: ${b.join(", ")}`),b.forEach(b=>{try{let c=a[b];ai.error(` ${b}: ${"function"==typeof c?"[Function]":JSON.stringify(c)}`)}catch(a){ai.error(` ${b}: [Unable to serialize: ${a}]`)}})):ai.error("Error object has no enumerable properties");try{let b=JSON.stringify(a);ai.error(`JSON stringified error: ${b}`)}catch(a){ai.error(`Cannot JSON stringify error: ${a}`)}}else ai.error(`Error value: ${String(a)} (type: ${typeof a})`);this.appendStderrLog(b.name,`Transport error: ${(0,z.jf)(a)}`),this.deregisterClient(b.name),this.getServerConfig(b.name).then(a=>{if(!a||a.disabled)return void ai.info(`Server ${b.name} is now disabled, skipping reconnection after transport error`);ai.info(`Transport error for enabled server ${b.name}, scheduling reconnection`),this.scheduleConnectionRetry(b.name,a)}).catch(a=>{ai.warn(`Error checking server config for ${b.name} during onerror:`,a)})},this.clients.set(b.name,a),this.activeTransports.set(b.name,c),this.addToGlobalRecovery(b.name,a),this.lastConnectionError.delete(b.name),this.clearRetryTimer(b.name),this.connectionRetryAttempts.delete(b.name),ai.info(`connectServer: Successfully connected to ${b.name}`),{success:!0}}catch(f){ai.error(`connectServer: Failed to connect to server ${b.name}:`,f);let a=f instanceof Error?f.message:String(f),c=f instanceof Error?f.name:"";if(a.includes("OAuth authentication required")||"OAuthAuthenticationRequired"===c){if(ai.info(`OAuth authentication required for server ${b.name}`),"streamable"===b.transport){let a=b;a.authorizationUrl&&ai.info(`Authorization URL available for ${b.name}: ${a.authorizationUrl}`)}return{success:!1,error:a,requiresAuthentication:!0}}if((0,z.Ah)(f)){if(ai.info(`OAuth authentication error detected for server ${b.name}: ${a}`),"streamable"===b.transport){let a=b;if(!a.oauthScopes||0===a.oauthScopes.length){ai.info(`Dynamically enabling OAuth for server ${b.name} due to authentication error`);try{let c={...a,oauthScopes:["read"]},d=await this.loadServerConfigs();if(Array.isArray(d)){let a=d.findIndex(a=>a.name===b.name);-1!==a&&(d[a]=c,await (0,l.q)(new Map(d.map(a=>[a.name,a]))),ai.info(`Updated config for ${b.name} to enable OAuth`))}}catch(a){ai.warn(`Failed to update config for ${b.name} to enable OAuth:`,a)}}}return{success:!1,error:"OAuth authentication failed or tokens have expired. Please re-authenticate.",requiresAuthentication:!0}}let d=this.stderrLogs.get(b.name)||[],e=(0,z.ox)(f,b,d);return this.lastConnectionError.set(b.name,e),{success:!1,error:e}}finally{this.connectingServers.delete(b.name)}}async testConnection(a){ai.info(`testConnection: Testing connection to ${a.name||"(unnamed)"} via ${a.transport} transport`);let b=[],c=null,e=null;try{let f;c=ae(a),(e=af(a))instanceof d.oQ&&e.stderr&&e.stderr.on("data",a=>{b.push(a.toString())}),e.onerror=a=>{b.push(`Transport error: ${(0,z.jf)(a)}`)};let g=G(a)?9e4:15e3,h=G(a),i=new Promise((a,b)=>{f=setTimeout(()=>b(Error(`Connection timeout after ${g/1e3}s`+(h?" — the package may still be downloading via npx/uvx. Try running the Test again (the package is cached after the first download), or verify the command and network access.":""))),g)});try{await Promise.race([c.connect(e),i])}finally{f&&clearTimeout(f)}let j=0;try{let a=await c.listTools();j=Array.isArray(a?.tools)?a.tools.length:0}catch(b){ai.debug(`testConnection: connected to ${a.name} but listTools failed: ${b instanceof Error?b.message:String(b)}`)}return ai.info(`testConnection: Successfully connected to ${a.name} (${j} tools)`),{success:!0,data:{toolCount:j}}}catch(d){ai.warn(`testConnection: Failed to connect to ${a.name}:`,d);let c=(0,z.Ah)(d);return{success:!1,error:(0,z.ox)(d,a,b),requiresAuthentication:c}}finally{if(c)try{await ah(c,a.name,a,{gracePeriodMs:3e3,killEscalationMs:2e3})}catch(b){ai.debug(`testConnection: error closing test client for ${a.name}: ${b instanceof Error?b.message:String(b)}`)}}}setNodeRoots(a,b,c){for(let d of function(a,b,c){let d=(c??[]).filter(a=>"string"==typeof a&&a.trim().length>0),e=S().get(b),f=new Set([a]);e&&f.add(e.serverName);let g=new Map;for(let a of f)g.set(a,T(a));0===d.length?S().delete(b)&&R.debug(`Cleared node roots for node ${b}`):(S().set(b,{serverName:a,roots:d}),R.debug(`Registered ${d.length} node root(s) for node ${b} on server ${a}`));let h=[];for(let a of f){let b=T(a),c=g.get(a)??[];(b.length!==c.length||b.some((a,b)=>a!==c[b]))&&h.push(a)}return h}(a,b,c))this.notifyRootsChanged(d)}notifyRootsChanged(a){let b=this.getClient(a);if(!b)return void ai.debug(`notifyRootsChanged: ${a} not connected, skipping notification`);try{b.sendRootsListChanged().catch(b=>{ai.warn(`notifyRootsChanged: failed to notify ${a}:`,b)}),ai.debug(`notifyRootsChanged: sent roots/list_changed to ${a}`)}catch(b){ai.warn(`notifyRootsChanged: failed to notify ${a}:`,b)}}async disconnectServer(a){ai.debug(`disconnectServer: Entering method for server ${a}`),this.clearRetryTimer(a),this.connectionRetryAttempts.delete(a);let b=this.getClient(a);if(!b)return ai.warn(`disconnectServer: Server ${a} not found in clients map`),this.removeFromGlobalRecovery(a),this.activeTransports.delete(a),{success:!1,error:`Server ${a} not found`};this.deregisterClient(a);try{let c=await this.getServerConfig(a);return await ah(b,a,c||void 0),ai.info(`disconnectServer: Disconnected server ${a}`),{success:!0}}catch(b){return ai.warn(`disconnectServer: Failed to disconnect server ${a}:`,b),{success:!1,error:`Failed to disconnect server: ${b instanceof Error?b.message:"Unknown error"}`}}}async forceReconnect(a){ai.info(`forceReconnect: Forcing fresh connection for server ${a}`);let b=this.clients.get(a);if(b){this.deregisterClient(a);let c=await this.getServerConfig(a);try{await ah(b,a,c||void 0)}catch(b){ai.debug(`forceReconnect: error closing stale client for ${a}: ${b instanceof Error?b.message:String(b)}`)}}return this.connectServer(a)}async listServerTools(a){if(ai.debug(`listServerTools: Entering method for server ${a}`),await this.isServerDisabled(a)){let b=`Server '${a}' is disabled. Enable it on the MCP page to use it.`;return ai.warn(`listServerTools: ${b}`),{tools:[],error:b}}let b=this.getClient(a);b||ai.warn(`listServerTools: Client not found for ${a}`);let c=await q(b,a);if(c.error){ai.warn(`listServerTools: Listing tools for ${a} failed (${c.error}); forcing reconnect and retrying once`);let d=await this.forceReconnect(a);if(!d.success)return ai.warn(`listServerTools: Reconnect for ${a} failed: ${d.error}`),{tools:[],error:d.error||c.error};b=this.clients.get(a),(c=await q(b,a)).error?ai.warn(`listServerTools: Retry after reconnect still failed for ${a}:`,c.error):ai.info(`listServerTools: Recovered after reconnect for ${a}; listed ${c.tools.length} tools`)}else ai.info(`listServerTools: Listed ${c.tools.length} tools for ${a}`);return c}async callTool(a,b,c,d,e){if(ai.debug(`callTool: Entering method for server ${a}, tool ${b}`),await this.isServerDisabled(a)){let b=`Server '${a}' is disabled. Enable it on the MCP page to use it.`;return ai.warn(`callTool: ${b}`),{success:!1,error:b}}let f=this.getClient(a);if(!f){ai.warn(`callTool: No client for ${a}; forcing reconnect before calling ${b}`);let c=await this.forceReconnect(a);c.success?f=this.clients.get(a):ai.warn(`callTool: Reconnect for ${a} failed: ${c.error}`)}let g=await r(f,a,b,c,d,e);return ai.info(`callTool: Called tool ${b} on ${a}`),g}async listWithReconnect(a,b,c){if(await this.isServerDisabled(a)){let b=`Server '${a}' is disabled. Enable it on the MCP page to use it.`;return ai.warn(`listWithReconnect: ${b}`),{...c,error:b}}let d=this.clients.get(a);d||ai.warn(`listWithReconnect: Client not found for ${a}`);let e=await b(d,a);if(!e.error)return e;ai.warn(`listWithReconnect: Listing for ${a} failed (${e.error}); forcing reconnect and retrying once`);let f=await this.forceReconnect(a);return f.success?(d=this.clients.get(a),(e=await b(d,a)).error?ai.warn(`listWithReconnect: Retry after reconnect still failed for ${a}:`,e.error):ai.info(`listWithReconnect: Recovered after reconnect for ${a}`),e):(ai.warn(`listWithReconnect: Reconnect for ${a} failed: ${f.error}`),{...c,error:f.error||e.error})}async listServerResources(a){return ai.debug(`listServerResources: Entering method for server ${a}`),this.listWithReconnect(a,t,{resources:[]})}async listServerResourceTemplates(a){return ai.debug(`listServerResourceTemplates: Entering method for server ${a}`),this.listWithReconnect(a,u,{resourceTemplates:[]})}async readResource(a,b){ai.debug(`readResource: Entering method for server ${a}, uri ${b}`);let c=this.clients.get(a);c||ai.warn(`readResource: Client not found for ${a}`);let d=await v(c,a,b);return ai.info(`readResource: Read resource ${b} on ${a}`),d}async listServerPrompts(a){return ai.debug(`listServerPrompts: Entering method for server ${a}`),this.listWithReconnect(a,x,{prompts:[]})}async getPrompt(a,b,c){ai.debug(`getPrompt: Entering method for server ${a}, prompt ${b}`);let d=this.clients.get(a);d||ai.warn(`getPrompt: Client not found for ${a}`);let e=await y(d,a,b,c);return ai.info(`getPrompt: Got prompt ${b} on ${a}`),e}async resolveOAuthSecretForSave(a,b){return a===B.RJ?b??"":a?a.startsWith("${global:")||a.startsWith("encrypted:")||a.startsWith("encrypted_failed:")?a:await (0,A.Rs)(a):""}async ensureRemoteServerRootDir(a){try{if(!["streamable","sse","websocket"].includes(a.transport))return;let b=(a.rootPath||"").trim();if(!b)return;let c=i().resolve((0,k.ok)(),b);if(i().dirname(c)===c)return;await g().mkdir(c,{recursive:!0}),ai.debug(`ensureRemoteServerRootDir: ensured ${c} for ${a.name}`)}catch(b){ai.warn(`ensureRemoteServerRootDir: could not create root dir for ${a.name}:`,b)}}async updateServerConfig(a,b){ai.debug(`updateServerConfig: Entering method for server ${a}`);let c=await this.loadServerConfigs();if(!Array.isArray(c))return ai.warn("updateServerConfig: Failed to load configs:",c.error),c;let d=c.find(b=>b.name===a),e=!!d&&"string"==typeof b.name&&b.name!==a;if(e&&c.some(a=>a.name===b.name))return ai.warn(`updateServerConfig: Refusing to rename ${a} -> ${b.name}: name already in use`),{success:!1,error:`A server named "${b.name}" already exists`};if(!d&&b.name)ai.info(`updateServerConfig: Creating new server config for ${b.name}`),d={name:b.name,transport:"stdio",command:"",args:[],env:{},disabled:!1,autoApprove:[],_buildCommand:"",_installCommand:"",rootPath:""},c.push(d);else if(!d)return ai.warn(`updateServerConfig: Server ${a} not found`),{success:!1,error:`Server ${a} not found`};if(b.env){ai.debug(`updateServerConfig: Resolving global variables in env for ${a}`);try{ai.debug(`Original env variables for ${a}:`,JSON.stringify(b.env,null,2)),b.env=await (0,n.c)(b.env),ai.debug(`Resolved env variables for ${a}:`,JSON.stringify(b.env,null,2)),ai.debug(`updateServerConfig: Successfully resolved global variables for ${a}`)}catch(b){ai.warn(`updateServerConfig: Error resolving global variables for ${a}:`,b)}}let f=b.oauthClientSecret;if(void 0!==f){let a=d.oauthClientSecret;b.oauthClientSecret=await this.resolveOAuthSecretForSave(f,a)}let g={...d};g={...d,...b};let h=JSON.stringify(d.roots??[])!==JSON.stringify(g.roots??[])||(d.rootPath??"")!==(g.rootPath??""),i=c.findIndex(b=>b.name===a);-1!==i?c[i]=g:g.name&&c.push(g);let j=await (0,l.q)(new Map(c.map(a=>[a.name,a])));return j.success?(await this.ensureRemoteServerRootDir(g),e?(this.clients.has(a)?await this.disconnectServer(a):(this.clearRetryTimer(a),this.connectionRetryAttempts.delete(a)),this.removeFromGlobalRecovery(a),this.stderrLogs.delete(a),this.lastConnectionError.delete(a),await this.handleConnectionStateChange(g.name,g)):await this.handleConnectionStateChange(a,g),h&&this.notifyRootsChanged(g.name),ai.info(`updateServerConfig: Successfully updated config for ${a}${e?` (renamed to ${g.name})`:""}`),g):(ai.warn(`updateServerConfig: Failed to save config for ${a}:`,j.error),j)}async handleConnectionStateChange(a,b){ai.debug(`handleConnectionStateChange: Entering method for server ${a}`);let c=!!this.getClient(a),d=!b.disabled;if(c&&!d){ai.info(`handleConnectionStateChange: Disconnecting disabled server ${a}`);try{await this.disconnectServer(a)}catch(b){ai.warn(`handleConnectionStateChange: Failed to disconnect server ${a} during update:`,b)}}else!c&&d?(ai.info(`handleConnectionStateChange: Connecting previously disabled server ${a}`),await this.connectServer(b)):c&&d?(ai.info(`handleConnectionStateChange: Re-applying config to connected server ${a}`),await this.connectServer(b)):d||(ai.info(`handleConnectionStateChange: Clearing retry timers for disabled server ${a}`),this.clearRetryTimer(a),this.connectionRetryAttempts.delete(a))}async clearRetryTimersForDisabledServers(){ai.debug("clearRetryTimersForDisabledServers: Checking for disabled servers with active retry timers");try{let a=await this.loadServerConfigs();if(!Array.isArray(a))return void ai.warn("clearRetryTimersForDisabledServers: Failed to load server configs");for(let b of a.filter(a=>a.disabled))this.connectionRetryTimers.has(b.name)&&(ai.info(`clearRetryTimersForDisabledServers: Clearing retry timer for disabled server ${b.name}`),this.clearRetryTimer(b.name),this.connectionRetryAttempts.delete(b.name))}catch(a){ai.error("clearRetryTimersForDisabledServers: Error clearing retry timers:",a)}}async deleteServerConfig(a){ai.debug(`deleteServerConfig: Entering method for server ${a}`),this.clients.has(a)&&(ai.info(`deleteServerConfig: Disconnecting server ${a} before deletion`),await this.disconnectServer(a));let b=await this.loadServerConfigs();if(!Array.isArray(b))return ai.warn("deleteServerConfig: Failed to load configs:",b.error),b;let c=b.findIndex(b=>b.name===a);if(-1===c)return ai.warn(`deleteServerConfig: Server ${a} not found in configs`),{success:!1,error:`Server ${a} not found`};b.splice(c,1),ai.debug(`deleteServerConfig: Saving updated configs after deleting ${a}`);let d=await (0,l.q)(new Map(b.map(a=>[a.name,a])));return d.success?ai.info(`deleteServerConfig: Successfully deleted server ${a}`):ai.warn(`deleteServerConfig: Error saving configs after deleting ${a}:`,d.error),d}async getServerStatus(a){this.getClient(a);let b=await this.getServerConfig(a);if(!b)return ai.warn(`getServerStatus: Server ${a} not found`),{status:"error",message:`Server ${a} configuration not found. The server may have been deleted or not properly configured.`};if(b.disabled)return ai.debug(`getServerStatus: Server ${a} is disabled`),{status:"disconnected"};if("streamable"===b.transport&&b.oauthScopes&&b.oauthScopes.length>0){if(!b.oauthTokens||!b.oauthTokens.access_token)return ai.info(`getServerStatus: Server ${a} requires OAuth authentication but has no valid tokens`),{status:"requires_authentication",message:"OAuth authentication required. Click the authenticate button to complete the OAuth flow."};if(!b.oauthTokens.refresh_token&&b.oauthTokens.expires_in&&b.oauthTokens.issued_at){let c=b.oauthTokens.issued_at,d=b.oauthTokens.expires_in;if(Math.floor(Date.now()/1e3)>=c+d)return ai.info(`getServerStatus: OAuth tokens for ${a} have expired and no refresh token is available`),{status:"requires_authentication",message:"OAuth tokens have expired. Please re-authenticate."}}}let c=(this.stderrLogs.get(a)||[]).join("\n").trim(),d=this.lastConnectionError.get(a);if(this.getClient(a))return ai.info(`getServerStatus: Server ${a} is connected`),{status:"connected",stderrOutput:c||void 0};{let b=this.isStartingUp()&&!this.lastConnectionError.has(a);if(this.connectingServers.has(a)||b)return ai.info(`getServerStatus: Server ${a} is still connecting`),{status:"connecting",message:"Server is starting up. This may take a few moments."};if(c&&(c.includes("OAuth authentication required")||c.includes("invalid_token")))return ai.info(`getServerStatus: OAuth authentication error detected for ${a}`),{status:"requires_authentication",message:"OAuth authentication required. Please complete the OAuth flow.",stderrOutput:c};let e=c||d;return e?(ai.info(`getServerStatus: Using ${c?"stderr output":"persisted connection error"} as error message for ${a}`),{status:"error",message:e,stderrOutput:c||void 0}):(ai.info(`getServerStatus: No specific error details available for ${a}`),{status:"error",message:`Server ${a} is configured but not connected. The server process may have crashed or been terminated.`,stderrOutput:void 0})}}async startEnabledServers(){ai.info("Starting all enabled servers"),this.setStartingUp(!0);try{await this.clearRetryTimersForDisabledServers();let a=await this.loadServerConfigs();if(!Array.isArray(a))return void ai.warn("Failed to load server configs, cannot start servers");let b=a.filter(a=>!a.disabled);ai.info(`Found ${b.length} enabled servers to start`),ai.debug(`${b}`),b.forEach(a=>this.connectingServers.add(a.name)),await Promise.all(b.map(a=>(ai.info(`Starting server: ${a.name}`),this.connectServer(a).catch(b=>{ai.error(`Failed to start server ${a.name}:`,b)}))))}finally{this.setStartingUp(!1)}}async getAvailableClients(){try{let a=await this.loadServerConfigs();if(!a||"error"in a)return ai.warn("getAvailableClients: Failed to load server configs:",a?.error),[];return(await Promise.all(a.map(async a=>{try{let b=await this.getServerStatus(a.name);return{name:a.name,status:"string"==typeof b?b:b.status,connected:"string"==typeof b?"connected"===b:"connected"===b.status}}catch(b){return ai.warn(`getAvailableClients: Error getting status for ${a.name}:`,b),{name:a.name,status:"error",connected:!1}}}))).map(a=>`${a.name} (${a.status})`)}catch(a){return ai.error("getAvailableClients: Error getting available clients:",a),[]}}}let ak=new aj},7573:(a,b,c)=>{"use strict";c.d(b,{s:()=>j});var d=c(37067),e=c.n(d),f=c(44708),g=c.n(f),h=c(78975),i=c(81251);function j(a){let{apiKey:b,baseURL:c,maxRetries:d=2,timeout:f=i.l}=a,j=!c||c.trim().toLowerCase().startsWith("https")?new(g()).Agent({keepAlive:!1}):new(e()).Agent({keepAlive:!1});return new h.Ay({apiKey:b,baseURL:c,httpAgent:j,maxRetries:d,timeout:f})}},17748:(a,b,c)=>{"use strict";c.d(b,{Ah:()=>r,dX:()=>t,jf:()=>o,lO:()=>s,ox:()=>p});var d=c(29021),e=c(33873),f=c(21820),g=c(68780),h=c(50846),i=c(77213),j=c(43326);let k=(0,h.h)("app/api/mcp/utils");function l(a){return k.debug("Entering isLikelyFilePath method"),a.includes(".")&&(a.includes("/")||a.includes("\\")||/\.[a-zA-Z0-9]+$/.test(a))}let m=new Set(["UNABLE_TO_VERIFY_LEAF_SIGNATURE","UNABLE_TO_GET_ISSUER_CERT_LOCALLY","UNABLE_TO_GET_ISSUER_CERT","SELF_SIGNED_CERT_IN_CHAIN","DEPTH_ZERO_SELF_SIGNED_CERT","CERT_HAS_EXPIRED","CERT_UNTRUSTED","ERR_TLS_CERT_ALTNAME_INVALID"]),n=/unable to verify|self[- ]signed certificate|certificate has expired|altname|leaf signature|unable to get local issuer/i;function o(a){let{messages:b,codes:c}=function(a){let b=[],c=[],d=a,e=0;for(;d&&e<10;){if(d instanceof Error){d.message&&b.push(d.message);let a=d.code;"string"==typeof a&&c.push(a)}else"string"==typeof d&&b.push(d);let a=d?.cause,f=d?.errors;if(a)d=a;else if(Array.isArray(f)&&f.length>0)d=f[0];else break;e++}return{messages:b,codes:c}}(a),d=Array.from(new Set(b.filter(Boolean))),e=d.join(": ");e||(e=a instanceof Error?a.message||a.name:String(a));let f=Array.from(new Set(c));return f.length>0&&!f.some(a=>e.includes(a))&&(e+=` (${f.join(", ")})`),(f.some(a=>m.has(a))||d.some(a=>n.test(a)))&&(e+=`
|
|
2
|
+
|
|
3
|
+
This looks like a TLS certificate trust problem: the server presents a certificate signed by a custom/private CA that Node.js does not trust by default.
|
|
4
|
+
To fix it, start FLUJO so Node trusts your CA:
|
|
5
|
+
• Trust the OS certificate store (default in FLUJO): NODE_OPTIONS=--use-system-ca, or
|
|
6
|
+
• Point Node at the CA file: set NODE_EXTRA_CA_CERTS=C:\\path\\to\\root-ca.crt (or FLUJO_EXTRA_CA_CERTS)
|
|
7
|
+
then restart FLUJO. (curl works because it uses the OS trust store; Node does not unless told to.)`),e}function p(a,b,c){k.debug("Entering enhanceConnectionErrorMessage method"),k.info(`Received ${c.length} stderr log entries for ${b.name}`),c.length>0&&k.info(`Stderr logs for ${b.name}:
|
|
8
|
+
${c.join("\n")}`);let h=c.join("\n").trim();if(h)return k.info(`Using stderr output as primary error information for ${b.name}: ${h}`),h;if(k.warn(`No stderr output available for ${b.name}`),!(a instanceof Error))return o(a);let m=a.message;if(k.debug(`Enhancing error message for: ${m}`),m.includes("Connection timeout"))return m;if(a instanceof g.Nh){if(k.debug(`MCP Error code: ${a.code}`),a.code===g.O4.ConnectionClosed)try{let a=`${i.VL}/${b.name}`;if("stdio"===b.transport){let c=b.command;if(k.debug(`Server directory: ${a}`),k.debug(`Executable path: ${c}`),"cmd.exe"===c&&b.args&&b.args.length>1&&"/c"===b.args[0]){let c=b.args[1];k.debug(`Checking .bat file: ${c}`);let f=e.isAbsolute(c)?c:e.join((0,j.ok)(),a,c);k.debug(`Full .bat file path: ${f}`);let g=d.existsSync(f);if(k.debug(`.bat file exists: ${g}`),!g)return`MCP connection closed: ${m}. The .bat file does not exist: ${f}${h?"\n\nStderr output:\n"+h:""}`}else if(l(c)){k.debug(`Checking if executable exists: ${c}`);let b=d.existsSync(c);if(k.debug(`Executable exists: ${b}`),!b){let b=e.join((0,j.ok)(),a,c);k.debug(`Checking in server directory: ${b}`);let f=d.existsSync(b);if(k.debug(`Executable exists in server directory: ${f}`),!f)return`MCP connection closed: ${m}. The executable file does not exist: ${c} or ${b}${h?"\n\nStderr output:\n"+h:""}`}}if(b.args&&b.args.length>0){let c=b.args[0];if(l(c)){k.debug(`Checking script file: ${c}`);let b=((k.debug("Entering isAbsolutePath method"),"win32"===f.platform())?/^[a-zA-Z]:[/\\]/.test(c)||c.startsWith("\\\\"):c.startsWith("/"))?c:e.join((0,j.ok)(),a,c);k.debug(`Full script path: ${b}`);let g=d.existsSync(b);if(k.debug(`Script exists: ${g}`),!g)return`MCP connection closed: ${m}. The script file does not exist: ${b}${h?"\n\nStderr output:\n"+h:""}`}}}else if("websocket"===b.transport)try{new URL(b.websocketUrl)}catch(a){return`MCP connection closed: ${m}. Invalid WebSocket URL: ${b.websocketUrl}${h?"\n\nStderr output:\n"+h:""}`}if(h)return`MCP connection closed: ${m}. Check if the server is running and accessible.
|
|
9
|
+
|
|
10
|
+
Stderr output:
|
|
11
|
+
${h}`;return`MCP connection closed: ${m}. Check if the server is running and accessible.`}catch(a){return k.warn("Error checking file existence:",a),`MCP connection closed: ${m}. Error checking files: ${a instanceof Error?a.message:"Unknown error"}${h?"\n\nStderr output:\n"+h:""}`}return h?`MCP error ${a.code}: ${m}
|
|
12
|
+
|
|
13
|
+
Stderr output:
|
|
14
|
+
${h}`:`MCP error ${a.code}: ${m}`}let n=o(a);return h?`${n}
|
|
15
|
+
|
|
16
|
+
Stderr output:
|
|
17
|
+
${h}`:n}let q=["OAuth authentication required","UnauthorizedError","invalid_token","token_expired","HTTP 401","HTTP 403","Missing Authorization header","Authorization header is required"];function r(a){if(!(a instanceof Error))return!1;if("OAuthAuthenticationRequired"===a.name)return!0;let b=a.code;if(401===b||403===b)return!0;let c=a.errorCode;return"string"==typeof c&&c.length>0||q.some(b=>a.message.includes(b))}function s(a){let b=a instanceof Error?a.message:String(a);return b.includes("SSE stream disconnected")||b.includes("Failed to reconnect SSE stream")||b.includes("Maximum reconnection attempts")||/\bterminated\b/i.test(b)}function t(a){return k.debug("Entering formatErrorResponse method"),{error:`Internal server error: ${a instanceof Error?a.message:"Unknown error"}`}}},20433:(a,b,c)=>{"use strict";c.d(b,{modelService:()=>E});var d=c(78975),e=c(92372),f=c(46480),g=c(50846),h=c(27299),i=c(40829);let j=(0,g.h)("backend/services/model/provider");function k(a){if(a.includes("openrouter.ai"))return"openrouter";if(a.includes("api.x.ai"))return"xai";if(a.includes("generativelanguage.googleapis.com"))return"gemini";if(a.includes("api.anthropic.com"))return"anthropic";if(a.includes("api.mistral.ai"))return"mistral";else if(a.includes("api.openai.com"))return"openai";else return"ollama"}async function l(){j.debug("fetchOpenRouterModels: Entering method");let a=await fetch("https://openrouter.ai/api/v1/models",{headers:{"Content-Type":"application/json",Accept:"application/json"}});if(!a.ok)throw Error(`OpenRouter API error: ${a.status} ${a.statusText}`);let b=await a.json();return b.data&&Array.isArray(b.data)?b.data.map(a=>({id:a.id,name:a.name||a.id,description:a.description})):[]}async function m(a,b){j.debug("fetchOpenAIModels: Entering method");let c=b;c=c.endsWith("/")?`${c}models`:`${c}/models`,j.debug(`Fetching models from: ${c}`);let d={"Content-Type":"application/json"};a&&(b.includes("anthropic")?(d["x-api-key"]=`${a}`,d["anthropic-version"]="2023-06-01"):d.Authorization=`Bearer ${a}`);try{j.verbose(`fetching models @${c} with ${JSON.stringify(d)}`);let a=await fetch(c,{headers:d});if(!a.ok)throw j.verbose("model list response",a),Error(`API error: ${a.status} ${a.statusText}`);let e=await a.json();if(e.data&&Array.isArray(e.data)){if(j.debug("Successfully parsed response in standard OpenAI format"),b.includes("api.openai.com"))return e.data.filter(a=>a.id.includes("gpt")).map(a=>({id:a.id,name:a.id,description:`OpenAI ${a.id}`}));return e.data.filter(a=>a.id).map(a=>({id:a.id,name:a.name||a.id,description:a.description||`Model ${a.id}`}))}if("list"===e.object&&Array.isArray(e.data))return j.debug("Parsing response in Ollama format"),e.data.map(a=>({id:a.id,name:a.id,description:`${a.owned_by?`${a.owned_by}: `:""}${a.id}`}));return j.warn("Could not parse API response in any known format",{data:e}),[]}catch(a){throw j.error(`Error fetching models from ${c}:`,a),a}}async function n(a,b,c){j.debug(`fetchModelsFromProvider: Fetching models for provider: ${a}`);try{if("openrouter"===a)return await l();return await m(c,b)}catch(b){return j.error(`fetchModelsFromProvider: Error fetching models for provider ${a}:`,b),[]}}let o=(0,g.h)("backend/services/model/cache");class p{getCacheKey(a){return a.toLowerCase().replace(/\/$/,"")}isValid(a){return Date.now()-a.timestamp<a.ttl}get(a){let b=this.getCacheKey(a),c=this.cache.get(b);return c?this.isValid(c)?(o.debug("Cache hit",{baseUrl:a,key:b,modelCount:c.models.length}),c.models):(o.debug("Cache miss - entry expired",{baseUrl:a,key:b,age:Date.now()-c.timestamp}),this.cache.delete(b),null):(o.debug("Cache miss - no entry found",{baseUrl:a,key:b}),null)}set(a,b,c){let d=this.getCacheKey(a),e={models:b,timestamp:Date.now(),ttl:c||this.DEFAULT_TTL};this.cache.set(d,e),o.debug("Models cached",{baseUrl:a,key:d,modelCount:b.length,ttl:e.ttl})}clear(a){let b=this.getCacheKey(a),c=this.cache.delete(b);o.debug("Cache cleared",{baseUrl:a,key:b,deleted:c})}clearAll(){let a=this.cache.size;this.cache.clear(),o.debug("All cache cleared",{entriesCleared:a})}getStats(){let a=this.cache.size,b=0,c=0;for(let a of this.cache.values())this.isValid(a)?b++:c++;return{totalEntries:a,validEntries:b,expiredEntries:c}}cleanup(){let a=[];for(let[b,c]of this.cache.entries())this.isValid(c)||a.push(b);a.forEach(a=>this.cache.delete(a)),a.length>0&&o.debug("Cache cleanup completed",{expiredEntriesRemoved:a.length})}constructor(){this.cache=new Map,this.DEFAULT_TTL=3e5}}let q=new p;var r=c(73814),s=c(7573),t=c(48999);let u=(0,g.h)("backend/services/model/testConnection"),v=[{role:"user",content:"Reply with the single word: pong"}],w=["premature close","econnreset","socket hang up","epipe","und_err","terminated","network","fetch failed"];function x(a){if(!a)return;let b=["retry-after","x-ratelimit-reset","x-ratelimit-remaining","x-ratelimit-limit"],c={};for(let d of Object.keys(a))b.includes(d.toLowerCase())&&(c[d.toLowerCase()]=String(a[d]));return Object.keys(c).length>0?c:void 0}async function y(a,b,c){let e=Date.now();try{let d=(0,s.s)({apiKey:c,baseURL:b,maxRetries:0}),f=await d.chat.completions.create({model:a,messages:v,temperature:0}),g=Date.now()-e,h=f?.error;if(h)return{ok:!1,durationMs:g,error:{message:h.message||"Provider returned an error in the response body",code:void 0!==h.code?String(h.code):void 0,type:h.type,body:h}};return{ok:!0,status:200,durationMs:g,content:f.choices?.[0]?.message?.content?.slice(0,500)??"",usage:f.usage}}catch(c){let a=Date.now()-e;if(c instanceof d.Ay.APIError){let b=c.error,d=x(c.headers);return{ok:!1,status:c.status,durationMs:a,error:{name:c.name,message:c.message,status:c.status,code:c.code??void 0,type:c.type??void 0,param:c.param??void 0,retryAfter:d?.["retry-after"],headers:d,body:b,stack:c.stack}}}let b=c instanceof Error?c.message:String(c);return{ok:!1,durationMs:a,error:{name:c instanceof Error?c.name:void 0,message:b,code:c?.code,stack:c instanceof Error?c.stack:void 0}}}}async function z(a,b,c){let d=Date.now(),e=(b||"https://api.openai.com/v1").replace(/\/+$/,""),f=`${e}/chat/completions`;try{let b=await r.A.post(f,{model:a,messages:v,temperature:0},{headers:{Authorization:`Bearer ${c}`,"Content-Type":"application/json"},timeout:6e5,validateStatus:()=>!0}),e=Date.now()-d,g=b.data;if(b.status<200||b.status>=300||g?.error){let a=g?.error??g;return{ok:!1,status:b.status,durationMs:e,error:{message:a?.message||`HTTP ${b.status}`,status:b.status,code:a?.code!==void 0?String(a.code):void 0,type:a?.type,headers:x(b.headers),body:a}}}return{ok:!0,status:b.status,durationMs:e,content:g?.choices?.[0]?.message?.content?.slice(0,500)??"",usage:g?.usage}}catch(b){let a=Date.now()-d;return{ok:!1,status:b.response?.status,durationMs:a,error:{name:b.name,message:b.message,status:b.response?.status,code:b.code,body:b.response?.data,stack:b.stack}}}}async function A(a,b){let c=Date.now();try{let d=(0,t.getCompletionAdapter)(a),{completion:e}=await d.createCompletion({model:a,apiKey:b,messages:[...v],temperature:0}),f=Date.now()-c,g=e?.error;if(g)return{ok:!1,durationMs:f,error:{message:g.message||"Provider returned an error"}};return{ok:!0,status:200,durationMs:f,content:e.choices?.[0]?.message?.content?.slice(0,500)??"",usage:e.usage}}catch(a){return{ok:!1,durationMs:Date.now()-c,error:{name:a instanceof Error?a.name:void 0,message:a instanceof Error?a.message:String(a),stack:a instanceof Error?a.stack:void 0}}}}async function B(a){let{modelName:b,baseUrl:c,apiKey:d,provider:e,adapter:f,model:g}=a;if(u.info("Testing model connection",{modelName:b,baseUrl:c,provider:e,adapter:f,hasApiKey:!!d}),f&&"openai"!==f&&g){let a=await A(g,d),h={ok:a.ok,durationMs:0,content:"n/a — native SDK adapter; the axios cross-check applies only to OpenAI-compatible endpoints."},i=a.ok?`Connected successfully via the ${f} adapter (native SDK). The model and credentials are working.`:`The native ${f} adapter failed: ${a.error?.message??"unknown error"}. Check the model name and the ${"claude-cli"===f?"OAuth token (claude setup-token) and that the `claude` CLI is installed":"API key"}.`;return{ok:a.ok,model:b,baseUrl:c,provider:e,sdk:a,axios:h,diagnosis:i}}let[h,i]=await Promise.all([y(b,c,d),z(b,c,d)]),j={ok:h.ok,model:b,baseUrl:c,provider:e,sdk:h,axios:i,diagnosis:function(a,b){if(a.ok&&b.ok)return"Both the SDK and axios reached the provider successfully. The model, key, and base URL are working.";if(a.ok&&!b.ok)return`The SDK succeeded but the axios cross-check failed. This is unusual; the model is usable via flows. axios error: ${b.error?.message??"unknown"}.`;if(!a.ok&&b.ok)return!function(a){if(!a)return!1;let b=a.toLowerCase();return w.some(a=>b.includes(a))}(a.error?.message)?`The SDK failed but axios succeeded. Likely an SDK/transport issue rather than the provider or key. SDK error: ${a.error?.message??"unknown"}.`:'The SDK failed with a transport error ("'+(a.error?.message??"")+'") while axios succeeded against the same endpoint and key. This is the keep-alive / "Premature close" connection-reuse bug, not a provider or key problem. The flow engine now disables keep-alive to avoid it.';let c=a.error?.status??b.error?.status;if(401===c||403===c)return"Both attempts failed with an auth error. The API key is missing, invalid, or lacks access to this model.";if(429===c){let b=a.error?.retryAfter??a.error?.headers?.["retry-after"];return"Both attempts were rate-limited (429) by the provider"+(b?` (retry after ${b}s)`:"")+'. For OpenRouter ":free" models this is a hard daily/throughput limit — try a paid model or wait.'}return 404===c?"Both attempts returned 404. The model name is probably wrong for this provider/base URL.":`Both the SDK and axios failed to reach the provider. SDK error: ${a.error?.message??"unknown"}; axios error: ${b.error?.message??"unknown"}. Check the base URL and network connectivity.`}(h,i)};return u.info("Model connection test complete",{modelName:b,sdkOk:h.ok,axiosOk:i.ok}),j}let C=(0,g.h)("backend/services/model/index");class D{async loadModels(){C.debug("loadModels: Entering method");try{return await (0,e.YM)(f.Z.MODELS,[])}catch(a){return C.warn("loadModels: Failed to load models:",a),[]}}async getModel(a){C.debug(`getModel: Looking for model with ID: ${a}`);try{let b=(await this.loadModels()).find(b=>b.id===a)||null;if(b)return C.debug(`getModel: Model ${a} found`),b;return C.debug(`getModel: Model ${a} not found`),null}catch(b){return C.error(`getModel: Error finding model ${a}:`,b),null}}async addModel(a){C.debug("addModel: Entering method");try{let b=await this.loadModels();if(a.displayName&&a.displayName.trim()){let c=a.displayName.trim();if(b.find(a=>a.displayName?.toLowerCase()===c.toLowerCase()))return{success:!1,error:`A model with the display name "${c}" already exists`};a.displayName=c}let c={...a,ApiKey:await this.resolveApiKeyForSave(a.ApiKey,void 0)},d=[...b,c];return await (0,e.VH)(f.Z.MODELS,d),{success:!0,model:c}}catch(a){return C.warn("addModel: Failed to add model:",a),{success:!1,error:a instanceof Error?a.message:"Failed to add model"}}}async resolveApiKeyForSave(a,b){let c=a??"";return c===h.RJ?b??"":c.startsWith("${global:")||c.startsWith("encrypted:")||c.startsWith("encrypted_failed:")?c:""===c.trim()?"":await (0,i.Rs)(c)}async updateModel(a){C.debug("updateModel: Entering method");try{if(C.verbose("updateModel: full model before validation",JSON.stringify(a)),!a.id)return C.warn("updateModel: Missing model ID"),{success:!1,error:"Model ID is required"};let b=await this.loadModels(),c=b.find(b=>b.id===a.id);if(!c)return C.warn("updateModel: Model not found",{modelId:a.id}),{success:!1,error:"Model not found"};if(!a.provider)return C.warn("updateModel: Missing provider",{modelId:a.id}),{success:!1,error:"Provider is required"};if(a.displayName&&a.displayName.trim()){let c=a.displayName.trim(),d=b.find(b=>b.displayName?.toLowerCase()===c.toLowerCase()&&b.id!==a.id);if(d){let b=`A model with the display name "${c}" already exists (ID: ${d.id})`;return C.warn("updateModel: Duplicate display name",{modelId:a.id,displayName:c,duplicateId:d.id,duplicateDisplayName:d.displayName}),{success:!1,error:b}}a.displayName=c}let d={...c,...a};d.ApiKey=await this.resolveApiKeyForSave(a.ApiKey,c.ApiKey);let g=b.map(b=>b.id===a.id?d:b);return C.verbose("updateModel: Updating models",JSON.stringify(d)),await (0,e.VH)(f.Z.MODELS,g),C.debug("updateModel: Model updated successfully",{modelId:a.id,displayName:d.displayName}),{success:!0,model:d}}catch(b){return C.error("updateModel: Failed to update model",{modelId:a.id,displayName:a.displayName,error:b instanceof Error?b.message:b}),{success:!1,error:b instanceof Error?b.message:"An unexpected error occurred while updating the model"}}}async deleteModel(a){C.debug("deleteModel: Entering method");try{if(!a)return C.warn("deleteModel: Missing model ID"),{success:!1,error:"Model ID is required"};let b=await this.loadModels(),c=b.find(b=>b.id===a);if(!c)return C.warn("deleteModel: Model not found",{modelId:a}),{success:!1,error:"Model not found"};C.debug("deleteModel: Attempting to delete model",{modelId:a,displayName:c.displayName});let d=b.filter(b=>b.id!==a);return await (0,e.VH)(f.Z.MODELS,d),C.debug("deleteModel: Model deleted successfully",{modelId:a,displayName:c.displayName}),{success:!0}}catch(b){return C.error("deleteModel: Failed to delete model",{modelId:a,error:b instanceof Error?b.message:b}),{success:!1,error:b instanceof Error?b.message:"An unexpected error occurred while deleting the model"}}}async listModels(){C.debug("listModels: Entering method");try{let a=await this.loadModels();return C.debug("listModels: Models loaded successfully",{count:a.length}),{success:!0,models:a}}catch(a){return C.error("listModels: Failed to list models",{error:a instanceof Error?a.message:a}),{success:!1,error:a instanceof Error?a.message:"An unexpected error occurred while listing models"}}}async fetchProviderModels(a,b,c,d){C.debug(`fetchProviderModels: Fetching models for baseUrl: ${a}`,{modelId:b,hasApiKey:!!d,searchTerm:c?`"${c}"`:"none"});try{let e=q.get(a);if(e)C.debug("Using cached models",{count:e.length});else{let c;if(C.debug("Cache miss - fetching from provider"),b){C.debug(`Looking up model with ID: ${b}`);let d=(await this.loadModels()).find(a=>a.id===b);d&&d.provider?(c=d.provider,C.debug(`Using stored provider: ${c}`)):(c=k(a),C.debug(`Provider determined from URL as: ${c}`))}else c=k(a),C.debug(`Provider determined from URL as: ${c}`);let f=null;if(d&&d!==h.RJ)f=await (0,i.GN)(d),C.debug("Using directly-supplied API key for provider fetch");else if(b){C.debug(`Looking up stored API key for model ID: ${b}`);let a=await this.getModel(b);a?(f=await (0,i.GN)(a.ApiKey),C.debug("Resolved stored API key for provider fetch")):C.warn(`Model with ID ${b} not found for API key resolution`)}else C.warn("No API key supplied and no modelId provided - provider fetch will be unauthenticated");C.info(`Fetching models from provider: ${c}`),e=await n(c,a,f),C.debug(`Successfully fetched ${e.length} models from provider`),q.set(a,e)}if(c&&c.trim()){let a=function(a,b){if(!b||0===b.trim().length)return a;let c=b.toLowerCase().trim();return a.filter(a=>{let b=a.id.toLowerCase(),d=a.name.toLowerCase();if(b.includes(c)||d.includes(c))return!0;let e=a=>{let b=0,d=0;for(;b<a.length&&d<c.length;)a[b]===c[d]&&d++,b++;return d===c.length};return e(b)||e(d)}).sort((a,b)=>{let d=a.id.toLowerCase(),e=b.id.toLowerCase(),f=a.name.toLowerCase(),g=b.name.toLowerCase(),h=d.includes(c)||f.includes(c),i=e.includes(c)||g.includes(c);return h&&!i?-1:!h&&i?1:a.id.length-b.id.length})}(e,c);return C.debug("Search filtering applied",{searchTerm:`"${c}"`,originalCount:e.length,filteredCount:a.length}),a}return e}catch(b){throw C.error(`fetchProviderModels: Error fetching models for ${a}:`,b),b}}async testModel(a){let{modelId:b,apiKey:c}=a,d=a.name,e=a.baseUrl,f=a.provider,g=a.adapter,j=null,k=null;if(c&&c!==h.RJ&&(k=await (0,i.GN)(c)),b&&(j=await this.getModel(b))&&(d=d||j.name,e=e||j.baseUrl,f=f||j.provider,g=g||j.adapter,k||(k=await (0,i.GN)(j.ApiKey))),!d)throw Error("Model name is required to run a test");if(!k)throw Error("Could not resolve an API key for this model");return B({modelName:d,baseUrl:e,apiKey:k,provider:f,adapter:g,model:j??void 0})}async generateChatCompletion(a){let{modelIdentifier:b,messages:c,tools:e}=a;C.debug("generateChatCompletion: Entering method",{modelIdentifier:b,messageCount:c?.length||0,hasTools:!!(e&&e.length>0)});try{let d=await this.loadModels(),f=b.trim().toLowerCase(),g=d.filter(a=>(a.displayName?.trim().toLowerCase()||"")===f);if(0===g.length&&(g=d.filter(a=>(a.name||"").trim().toLowerCase()===f)),0===g.length)return{success:!1,error:{message:`Model not found: model-${b}`,type:"invalid_request_error",code:"model_not_found",param:"model"},statusCode:404};if(g.length>1)return{success:!1,error:{message:`The identifier "${b}" matches more than one configured model. Address the model by its unique display name instead.`,type:"invalid_request_error",code:"model_ambiguous",param:"model"},statusCode:400};let h=g[0];if("claude-cli"===h.adapter&&e&&e.length>0)return{success:!1,error:{message:"Tool definitions are not supported for this model via the direct completion endpoint.",type:"invalid_request_error",code:"tools_not_supported_for_this_model",param:"tools"},statusCode:400};let j=await (0,i.GN)(h.ApiKey);if(!j)return{success:!1,error:{message:"Failed to resolve the API key for this model.",type:"api_error",code:"api_key_error",param:null},statusCode:500};let k="number"==typeof a.temperature?a.temperature:h.temperature?parseFloat(h.temperature):0,l=(0,t.getCompletionAdapter)(h);C.debug("generateChatCompletion: calling completion adapter",{adapter:h.adapter||"openai",model:h.name,temperature:k});let{completion:m}=await l.createCompletion({model:h,apiKey:j,messages:c,tools:e&&e.length>0?e:void 0,temperature:k,maxTurns:1});if(m&&"object"==typeof m&&"error"in m&&m.error){let a=m.error;return C.warn("generateChatCompletion: provider returned an in-band error object",{code:a?.code,type:a?.type}),{success:!1,error:D.sanitizeProviderError(a),statusCode:502}}if(!m?.choices?.[0])return{success:!1,error:{message:"Invalid response structure from provider: missing choices.",type:"api_error",code:"invalid_provider_response",param:null},statusCode:502};return{success:!0,completion:{...m,model:`model-${b}`}}}catch(a){if(C.error("generateChatCompletion: provider call failed",{modelIdentifier:b,error:a instanceof Error?a.message:String(a)}),a instanceof d.Ay.APIError){let b=a.error,c=D.sanitizeProviderError(b,a.message);return{success:!1,error:{message:c.message,type:"api_error"!==c.type?c.type:"string"==typeof a.type?a.type:"api_error",code:"provider_error"!==c.code?c.code:"string"==typeof a.code?a.code:"provider_error",param:c.param??("string"==typeof a.param?a.param:null)},statusCode:"number"==typeof a.status?a.status:500}}return{success:!1,error:{message:a instanceof Error?a.message:"Failed to generate completion",type:"api_error",code:"internal_error",param:null},statusCode:500}}}static sanitizeProviderError(a,b){let c=b||("string"==typeof a?.message?a.message:"")||"Provider returned an unspecified error.";b&&"string"==typeof a?.message&&a.message&&a.message!==b&&(c=`${b} - ${a.message}`);let d=a?.metadata;if(d){let a;if("string"==typeof d.raw)try{let b=JSON.parse(d.raw);a=b?.error?.message||b?.message||d.raw}catch{a=d.raw}else if(d.raw&&"object"==typeof d.raw){let b=d.raw;a=b.error?.message||b.message}let b=[];d.provider_name&&b.push(String(d.provider_name)),a&&b.push(a),b.length>0&&(c=`${c} (upstream: ${b.join(": ")})`)}return{message:c,type:"string"==typeof a?.type?a.type:"api_error",code:"string"==typeof a?.code?a.code:"provider_error",param:"string"==typeof a?.param?a.param:null}}constructor(){this.encryptApiKey=i.Rs,this.decryptApiKey=i.Tt,this.resolveAndDecryptApiKey=i.GN,this.isEncryptionConfigured=i.yg,this.isUserEncryptionEnabled=i.eS,this.setEncryptionKey=i.nB,this.initializeDefaultEncryption=i.hO}}let E=new D},25096:(a,b,c)=>{"use strict";c.d(b,{C:()=>i});var d=c(50846),e=c(51805),f=c(73456);let g=(0,d.h)("backend/services/mcp/oauth");class h{constructor(a,b){this.config=a,this._redirectUrl=b,this._clientMetadata={redirect_uris:[b],client_name:`FLUJO MCP Client - ${a.name}`,client_uri:"https://github.com/mario-andreschak/FLUJO",grant_types:["authorization_code","refresh_token"],response_types:["code"],token_endpoint_auth_method:"client_secret_post",scope:a.oauthScopes?.join(" ")||"read"},g.info(`Created OAuth client provider for ${a.name}`),g.verbose("OAuth client metadata",JSON.stringify(this._clientMetadata))}get redirectUrl(){return this._redirectUrl}get clientMetadata(){return this._clientMetadata}state(){return encodeURIComponent(JSON.stringify({serverName:this.config.name}))}async clientInformation(){if(this.config.oauthClientInformation)return g.debug(`Returning stored client information for ${this.config.name}`),this.config.oauthClientInformation;if(this.config.oauthClientId){let a=this.config.oauthClientSecret?await (0,f.G)(this.config.oauthClientSecret)??void 0:void 0;return g.debug(`Created client information from config for ${this.config.name}`),{client_id:this.config.oauthClientId,client_secret:a}}g.debug(`No client information available for ${this.config.name}`)}async persist(){let a=await (0,e.loadServerConfigs)();if(!Array.isArray(a))return void g.warn(`persist: failed to load server configs for ${this.config.name}, cannot persist OAuth state`);let b=new Map(a.map(a=>[a.name,a]));b.set(this.config.name,this.config);let c=await (0,e.q)(b);c.success||g.warn(`persist: failed to save OAuth state for ${this.config.name}: ${c.error}`)}async invalidateCredentials(a){g.info(`Invalidating OAuth credentials for ${this.config.name} (scope: ${a})`),("all"===a||"tokens"===a)&&(this.config.oauthTokens=void 0),("all"===a||"client"===a)&&(this.config.oauthClientInformation=void 0,this.config.oauthClientMetadata=void 0),("all"===a||"verifier"===a)&&(this.config.oauthCodeVerifier=void 0),await this.persist()}async saveClientInformation(a){g.info(`Saving client information for ${this.config.name}`),g.verbose("Client information to save",JSON.stringify(a)),this.config.oauthClientInformation={client_id:a.client_id,client_secret:a.client_secret,client_id_issued_at:a.client_id_issued_at,client_secret_expires_at:a.client_secret_expires_at},this.config.oauthClientMetadata={redirect_uris:a.redirect_uris,client_name:a.client_name,client_uri:a.client_uri,grant_types:a.grant_types,response_types:a.response_types,token_endpoint_auth_method:a.token_endpoint_auth_method,scope:a.scope,contacts:a.contacts,tos_uri:a.tos_uri,policy_uri:a.policy_uri,jwks_uri:a.jwks_uri,jwks:a.jwks,software_id:a.software_id,software_version:a.software_version},await this.persist(),g.info(`Client information saved for ${this.config.name}`)}async tokens(){if(this.config.oauthTokens){if(g.debug(`Returning stored tokens for ${this.config.name}`),this.config.oauthTokens.expires_in&&this.config.oauthTokens.issued_at){let a=this.config.oauthTokens.issued_at,b=this.config.oauthTokens.expires_in,c=Math.floor(Date.now()/1e3),d=a+b;c>=d?g.info(`Access token for ${this.config.name} has expired (issued: ${a}, expires: ${d}, current: ${c}); SDK will refresh via refresh_token`):g.debug(`Tokens for ${this.config.name} are valid (expires in ${d-c} seconds)`)}return this.config.oauthTokens}g.debug(`No tokens available for ${this.config.name}`)}async saveTokens(a){g.info(`Saving OAuth tokens for ${this.config.name}`),g.verbose("Tokens to save",JSON.stringify({...a,access_token:a.access_token?"[REDACTED]":void 0,refresh_token:a.refresh_token?"[REDACTED]":void 0}));let b={...a,issued_at:Math.floor(Date.now()/1e3)};this.config.oauthTokens=b,await this.persist(),g.info(`OAuth tokens saved for ${this.config.name}`)}async redirectToAuthorization(a){g.info(`Authorization required for ${this.config.name}`),g.info(`Authorization URL: ${a.toString()}`),this.config.authorizationUrl=a.toString();let b=Error(`OAuth authentication required for ${this.config.name}. Please complete the OAuth flow.`);throw b.name="OAuthAuthenticationRequired",b}async saveCodeVerifier(a){g.debug(`Saving code verifier for ${this.config.name}`),this.config.oauthCodeVerifier=a,await this.persist(),g.debug(`Code verifier saved for ${this.config.name}`)}async codeVerifier(){if(!this.config.oauthCodeVerifier){let a=`No code verifier found for ${this.config.name}`;throw g.error(a),Error(a)}return g.debug(`Returning code verifier for ${this.config.name}`),this.config.oauthCodeVerifier}}function i(a,b="http://localhost:4200/api/oauth/callback"){return new h(a,b)}},27299:(a,b,c)=>{"use strict";c.d(b,{RJ:()=>d});let d="********"},39727:()=>{},40829:(a,b,c)=>{"use strict";c.d(b,{GN:()=>l,Rs:()=>j,Tt:()=>k,eS:()=>n,hO:()=>i,nB:()=>h,yg:()=>m});var d=c(50846),e=c(73456),f=c(58739);let g=(0,d.h)("backend/services/model/encryption");async function h(a){g.debug("setEncryptionKey: Entering method"),g.warn("setEncryptionKey: This function is deprecated. Use initializeDefaultEncryption or initializeEncryption from secure.ts instead.");try{return{success:await (0,f.initializeDefaultEncryption)()}}catch(a){return g.warn("setEncryptionKey: Failed to set encryption key:",a),{success:!1,error:a instanceof Error?a.message:"Failed to set encryption key"}}}async function i(){g.debug("initializeDefaultEncryption: Entering method");try{let a=await (0,f.initializeDefaultEncryption)();return a?g.info("initializeDefaultEncryption: Default encryption initialized successfully"):g.error("initializeDefaultEncryption: Failed to initialize default encryption"),a}catch(a){return g.error("initializeDefaultEncryption: Failed to initialize default encryption:",a),!1}}async function j(a){g.debug("encryptApiKey: Entering method");try{if(!a||""===a.trim())return g.warn("encryptApiKey: Empty API key provided"),"";if(!await m()&&(g.warn("encryptApiKey: Encryption is not configured, initializing default encryption"),!await i()))return g.error("encryptApiKey: Failed to initialize default encryption"),`encrypted_failed:${a}`;let b=await (0,f.encryptWithPassword)(a);if(!b)return g.error("encryptApiKey: encryptWithPassword returned null"),`encrypted_failed:${a}`;return`encrypted:${b}`}catch(b){return g.error("encryptApiKey: Failed to encrypt API key:",b),`encrypted_failed:${a}`}}async function k(a){g.debug("decryptApiKey: Entering method");try{if(a&&a.startsWith("${global:"))return(await (0,e.c)({key:a})).key;if(a&&a.startsWith("encrypted_failed:"))return a.substring(17);return await (0,f.decryptWithPassword)(a)}catch(a){return g.warn("decryptApiKey: Failed to decrypt API key:",a),null}}async function l(a){g.debug("resolveAndDecryptApiKey: Entering method");try{return await (0,e.G)(a)}catch(a){return g.warn("resolveAndDecryptApiKey: Failed to resolve or decrypt API key:",a),null}}async function m(){g.debug("isEncryptionConfigured: Entering method");try{return await (0,f.isEncryptionInitialized)()}catch(a){return g.warn("isEncryptionConfigured: Failed to check encryption status:",a),!1}}async function n(){g.debug("isUserEncryptionEnabled: Entering method");try{return await (0,f.isUserEncryptionEnabled)()}catch(a){return g.warn("isUserEncryptionEnabled: Failed to check user encryption status:",a),!1}}},41561:(a,b,c)=>{"use strict";c.d(b,{m:()=>d});let d=50},47990:()=>{},48999:(a,b,c)=>{"use strict";c.d(b,{getCompletionAdapter:()=>E});var d=c(50846),e=c(7573);let f=(0,d.h)("backend/services/model/adapters/openaiAdapter");class g{async createCompletion({model:a,apiKey:b,messages:c,tools:d,temperature:g}){let h=(0,e.s)({apiKey:b,baseURL:a.baseUrl}),i={model:a.name,messages:c,temperature:g};return d&&d.length>0&&(i.tools=d),f.debug("createCompletion via OpenAI-compatible API",{model:a.name,baseUrl:a.baseUrl,toolCount:d?.length||0}),{completion:await h.chat.completions.create(i)}}}var h=c(23514);function i(a){return"string"==typeof a?a:Array.isArray(a)?a.filter(a=>!!a&&"text"===a.type).map(a=>a.text).join(""):""}let j=/^data:([^;,]+)(?:;[^,]*)?,([\s\S]*)$/;function k(a){if(!Array.isArray(a))return[];let b=[];for(let c of a){if(!c||"image_url"!==c.type)continue;let a=c.image_url?.url;if(!a)continue;let d=j.exec(a);d&&/;base64/i.test(a)?b.push({url:a,mimeType:d[1],base64:d[2]}):b.push({url:a})}return b}function l(a){switch((a||"").toLowerCase()){case"image/jpeg":case"image/jpg":return"image/jpeg";case"image/gif":return"image/gif";case"image/webp":return"image/webp";default:return"image/png"}}function m(a){if(!a)return{};try{let b=JSON.parse(a);return b&&"object"==typeof b?b:{}}catch{return{}}}var n=c(81251);let o=(0,d.h)("backend/services/model/adapters/anthropicAdapter");class p{async createCompletion({model:a,apiKey:b,messages:c,tools:d,temperature:e}){let f=new h.Ay({apiKey:b,...a.baseUrl?{baseURL:a.baseUrl}:{},timeout:n.l}),{system:g,messages:j}=function(a){let b=[],c=[],d=(a,b)=>{let d={type:"tool_result",tool_use_id:a,content:b},e=c[c.length-1];e&&"user"===e.role&&Array.isArray(e.content)&&e.content.every(a=>"tool_result"===a.type)?e.content.push(d):c.push({role:"user",content:[d]})};for(let e of a){if("system"===e.role){let a=i(e.content);a&&b.push(a);continue}if("tool"===e.role){d(e.tool_call_id,i(e.content));continue}if("user"===e.role){let a=i(e.content),b=k(e.content);if(0===b.length){c.push({role:"user",content:a});continue}let d=[];for(let c of(a&&d.push({type:"text",text:a}),b))c.base64?d.push({type:"image",source:{type:"base64",media_type:l(c.mimeType),data:c.base64}}):d.push({type:"image",source:{type:"url",url:c.url}});c.push({role:"user",content:d});continue}if("assistant"===e.role){let a=[],b=i(e.content??"");for(let c of(b&&a.push({type:"text",text:b}),e.tool_calls??[]))"function"===c.type&&a.push({type:"tool_use",id:c.id,name:c.function.name,input:m(c.function.arguments)});c.push({role:"assistant",content:a.length>0?a:b});continue}}return{system:b.length>0?b.join("\n\n"):void 0,messages:c}}(c),p=function(a){if(a&&0!==a.length)return a.filter(a=>"function"===a.type).map(a=>({name:a.function.name,description:a.function.description,input_schema:a.function.parameters??{type:"object",properties:{}}}))}(d),q={model:a.name,max_tokens:8192,temperature:e,messages:j,...g?{system:g}:{},...p?{tools:p}:{}};o.debug("createCompletion via Anthropic SDK",{model:a.name,toolCount:p?.length||0,hasSystem:!!g});let r=await f.messages.create(q);return{completion:function(a,b){let c="",d=[];for(let a of b.content)"text"===a.type?c+=a.text:"tool_use"===a.type&&d.push({id:a.id,type:"function",function:{name:a.name,arguments:JSON.stringify(a.input??{})}});let e="tool_use"===b.stop_reason?"tool_calls":"max_tokens"===b.stop_reason?"length":"stop";return{id:b.id,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:b.model||a,choices:[{index:0,finish_reason:e,logprobs:null,message:{role:"assistant",content:c||null,refusal:null,...d.length>0?{tool_calls:d}:{}}}],usage:{prompt_tokens:b.usage.input_tokens,completion_tokens:b.usage.output_tokens,total_tokens:b.usage.input_tokens+b.usage.output_tokens}}}(a.name,r)}}}var q=c(13344),r=c(32524);let s=(0,d.h)("backend/services/model/adapters/geminiAdapter");class t{async createCompletion({model:a,apiKey:b,messages:c,tools:d,temperature:e}){let f=new q.M4({apiKey:b,httpOptions:{timeout:n.l}}),{systemInstruction:g,contents:h}=function(a){let b=[],c=[],d=new Map;for(let e of a){if("system"===e.role){let a=i(e.content);a&&b.push(a);continue}if("user"===e.role){let a=i(e.content),b=[];for(let c of(a&&b.push({text:a}),k(e.content)))c.base64&&c.mimeType&&b.push({inlineData:{mimeType:c.mimeType,data:c.base64}});c.push({role:"user",parts:b.length>0?b:[{text:""}]});continue}if("assistant"===e.role){let a=[],b=i(e.content??"");for(let c of(b&&a.push({text:b}),e.tool_calls??[]))"function"===c.type&&(d.set(c.id,c.function.name),a.push({functionCall:{name:c.function.name,args:m(c.function.arguments)}}));c.push({role:"model",parts:a.length>0?a:[{text:""}]});continue}if("tool"===e.role){let a,b=d.get(e.tool_call_id)||e.tool_call_id,f=i(e.content);try{let b=JSON.parse(f);a=b&&"object"==typeof b&&!Array.isArray(b)?b:{result:b}}catch{a={result:f}}let g={functionResponse:{name:b,response:a}},h=c[c.length-1];h&&"user"===h.role&&Array.isArray(h.parts)&&h.parts.every(a=>"functionResponse"in a)?h.parts.push(g):c.push({role:"user",parts:[g]});continue}}return{systemInstruction:b.length>0?b.join("\n\n"):void 0,contents:c}}(c),j=function(a){if(a&&0!==a.length)return a.filter(a=>"function"===a.type).map(a=>({name:a.function.name,description:a.function.description,parametersJsonSchema:a.function.parameters??{type:"object",properties:{}}}))}(d);s.debug("createCompletion via Gemini GenAI SDK",{model:a.name,toolCount:j?.length||0,hasSystem:!!g});let l=await f.models.generateContent({model:a.name,contents:h,config:{temperature:e,...g?{systemInstruction:g}:{},...j?{tools:[{functionDeclarations:j}]}:{}}});return{completion:function(a,b){let c=b.candidates?.[0],d=c?.content?.parts??[],e="",f=[];for(let a of d)"string"==typeof a.text?e+=a.text:a.functionCall&&f.push({id:`call_${(0,r.A)()}`,type:"function",function:{name:a.functionCall.name??"",arguments:JSON.stringify(a.functionCall.args??{})}});let g=f.length>0?"tool_calls":"stop",h=b.usageMetadata;return{id:`gemini_${(0,r.A)()}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:a,choices:[{index:0,finish_reason:g,logprobs:null,message:{role:"assistant",content:e||null,refusal:null,...f.length>0?{tool_calls:f}:{}}}],usage:h?{prompt_tokens:h.promptTokenCount??0,completion_tokens:h.candidatesTokenCount??0,total_tokens:h.totalTokenCount??0}:void 0}}(a.name,l)}}}var u=c(1133),v=c(77213),w=c(63674);function x(a,b){return"string"==typeof b&&b?a.describe(b):a}var y=c(41561);let z=(0,d.h)("backend/services/model/adapters/claudeSubscriptionAdapter"),A=y.m,B="flujo";function C(a){return a.replace(/[^a-zA-Z0-9_-]/g,"_")}class D{async createCompletion({model:a,apiKey:b,messages:d,tools:e,toolNameMap:f,maxTurns:g,requestToolApproval:h,onTranscriptMessage:j}){let m,n,o,p,{query:q,createSdkMcpServer:s,tool:t}=await c.e(2695).then(c.bind(c,32695)),{systemPrompt:y,content:D}=function(a){let b=[],c=[],d=[];for(let e of a){if("system"===e.role){let a=i(e.content);a&&b.push(a);continue}if("tool"===e.role||"user"!==e.role&&"assistant"!==e.role)continue;let a=i(e.content??"");a&&c.push({role:e.role,text:a}),"user"===e.role&&d.push(...k(e.content))}let e=c.length<=1?c[0]?.text??"":c.map(a=>`${"assistant"===a.role?"Assistant":"Human"}: ${a.text}`).join("\n\n"),f=b.length>0?b.join("\n\n"):void 0;if(0===d.length)return{systemPrompt:f,content:e};let g=[];for(let a of(e&&g.push({type:"text",text:e}),d))a.base64?g.push({type:"image",source:{type:"base64",media_type:l(a.mimeType),data:a.base64}}):g.push({type:"image",source:{type:"url",url:a.url}});return{systemPrompt:f,content:g}}(d),E=new Set,F=null,G=new AbortController,H=[],I=Date.now(),J=0,K=a=>{let b={...a,id:`m_${(0,r.A)()}`,timestamp:I+J++};H.push(b),j?.(b)},L=a=>{K({role:"assistant",content:"",tool_calls:[{id:a.id,type:"function",function:{name:a.name,arguments:a.argsJson}}]}),K({role:"tool",tool_call_id:a.id,content:a.resultContent})},M=(e??[]).filter(a=>"function"===a.type).map(a=>{var b;let c=a.function.name,d=c.startsWith("handoff_to_")||"handoff"===c,e=f?.[c];if(!d&&!e)return null;let g=a.function.description??"",h=(b=a.function.parameters)&&"object"==typeof b?function a(b){let c=b.properties&&"object"==typeof b.properties?b.properties:{},d=new Set(Array.isArray(b.required)?b.required:[]),e={};for(let[b,f]of Object.entries(c)){let c=function b(c){let d;if(!c||"object"!=typeof c)return w.bz();if(Array.isArray(c.enum)&&c.enum.length>0)return c.enum.every(a=>"string"==typeof a)?x(w.k5(c.enum),c.description):x(w.bz(),c.description);let e=c.type;switch(Array.isArray(e)?e.find(a=>"null"!==a):e){case"string":d=w.Yj();break;case"number":d=w.ai();break;case"integer":d=w.ai().int();break;case"boolean":d=w.zM();break;case"array":d=w.YO(b(c.items));break;case"object":d=c.properties&&"object"==typeof c.properties&&Object.keys(c.properties).length>0?w.Ik(a(c)).passthrough():w.g1(w.Yj(),w.bz());break;default:d=w.bz()}return Array.isArray(e)&&e.includes("null")&&(d=d.nullable()),x(d,c.description)}(f);d.has(b)||(c=c.optional()),e[b]=c}return e}(b):{};if(d)return t(c,g,h,async a=>F?{content:[{type:"text",text:"Already handing off."}]}:(F={name:c,args:a??{}},z.debug("Claude subscription requested handoff",{tool:c}),{content:[{type:"text",text:"Handing off."}]}));let{server:i,tool:j,timeout:k}=e,l=function(a,b,c){let d=`${C(a)}__${C(b)}`;d.length>110&&(d=d.slice(0,110));let e=d,f=2;for(;c.has(e);){let a=`_${f++}`;e=d.slice(0,110-a.length)+a}return c.add(e),e}(i,j,E);return t(l,g,h,async a=>{let b,c;z.debug("Claude subscription tool call",{server:i,tool:j,exposedAs:l});let d=await u.mcpService.callTool(i,j,a??{},k??v.aI);return d.success?(b=d.data,c=JSON.stringify(d.data)):b={content:[{type:"text",text:c=`Error: ${d.error??"Unknown error"}`}],isError:!0},L({id:`call_${(0,r.A)()}`,name:l,argsJson:JSON.stringify(a??{}),resultContent:c}),b})}).filter(a=>null!==a),N=M.length>0?{[B]:s({name:B,version:"1.0.0",tools:M})}:void 0,O={...process.env};O.CLAUDE_CODE_OAUTH_TOKEN=b,delete O.ANTHROPIC_API_KEY,z.debug("createCompletion via Claude Agent SDK",{model:a.name,toolCount:M.length,hasSystem:!!y,hasImages:"string"!=typeof D,maxTurns:g&&g>0?g:A});let P=q({prompt:async function*(){yield{type:"user",parent_tool_use_id:null,message:{role:"user",content:D}}}(),options:{model:a.name,env:O,abortController:G,maxTurns:g&&g>0?g:A,...y?{systemPrompt:y}:{},tools:[],...N?{mcpServers:N}:{},canUseTool:async(a,b,c)=>{if(!a.startsWith(`mcp__${B}__`))return{behavior:"deny",message:`Tool ${a} is not permitted for this node.`};if(h){let d=a.replace(`mcp__${B}__`,"");return await h({id:c.toolUseID,name:d,args:b??{}})?{behavior:"allow",updatedInput:b}:(L({id:c.toolUseID,name:d,argsJson:JSON.stringify(b??{}),resultContent:"Tool call rejected by the user."}),{behavior:"deny",message:"Tool call rejected by the user."})}return{behavior:"allow",updatedInput:b}}}}),Q="",R="",S=0;try{for await(let a of P){if(F){G.abort();break}if("assistant"===a.type){let b=a.message,c=b?.content;if(Array.isArray(c))for(let a of c)a?.type==="text"&&"string"==typeof a.text&&(R+=a.text);b?.usage&&(n=b.usage,S+=b.usage.output_tokens??0)}else if("result"===a.type){if(m=a.usage,"success"===a.subtype)Q=a.result??"";else if(!F){let b=a.errors,c=Array.isArray(b)&&b.length?b.join("; "):a.subtype;throw Error(`Claude subscription run failed: ${c}`)}}}}catch(a){if(!F)throw a}let T=Q||R,U=(p=m||n,(p?.input_tokens??0)+(p?.cache_creation_input_tokens??0)+(p?.cache_read_input_tokens??0)),V=m?.output_tokens??S;if(F){let a=F;o=[{id:`call_${(0,r.A)()}`,type:"function",function:{name:a.name,arguments:JSON.stringify(a.args)}}]}return K({role:"assistant",content:T||(o?null:""),...o?{tool_calls:o}:{}}),{completion:{id:`claude_sub_${(0,r.A)()}`,object:"chat.completion",created:Math.floor(Date.now()/1e3),model:a.name,choices:[{index:0,finish_reason:o?"tool_calls":"stop",logprobs:null,message:{role:"assistant",content:T||null,refusal:null,...o?{tool_calls:o}:{}}}],usage:{prompt_tokens:U,completion_tokens:V,total_tokens:U+V}},transcript:H}}}function E(a){switch(a.adapter){case"anthropic":return new p;case"gemini":return new t;case"claude-cli":return new D;default:return new g}}},51805:(a,b,c)=>{"use strict";c.d(b,{loadServerConfigs:()=>h,q:()=>i});var d=c(92372),e=c(46480);let f=(0,c(50846).h)("backend/services/mcp/config"),g=new Set(["streamable","sse","websocket"]);async function h(){f.debug("Entering loadServerConfigs method");try{let a=await (0,d.YM)(e.Z.MCP_SERVERS,{});return Object.entries(a).map(([a,b])=>{let c=b.transport||"stdio";g.has(c)&&function(a){if("string"!=typeof a)return!1;let b=a.trim();return"/"===b||"\\"===b||/^[A-Za-z]:[\\/]?$/.test(b)}(b.rootPath)&&(f.info(`Normalizing filesystem-root rootPath "${b.rootPath}" of remote server ${a} to mcp-servers/${a}`),b={...b,rootPath:`mcp-servers/${a}`});let d={name:a,disabled:!1,autoApprove:[],rootPath:"",env:{},_buildCommand:"",_installCommand:""};return"streamable"===c?{...d,...b,name:a,requestInit:b.requestInit&&"object"==typeof b.requestInit?b.requestInit:void 0,reconnectionOptions:b.reconnectionOptions&&"object"==typeof b.reconnectionOptions?b.reconnectionOptions:void 0,sessionId:b.sessionId||void 0,oauthClientId:b.oauthClientId||"",oauthClientSecret:b.oauthClientSecret||"",oauthScopes:b.oauthScopes||(b.oauthClientId||b.oauthClientInformation?["read"]:void 0),oauthClientMetadata:b.oauthClientMetadata,oauthClientInformation:b.oauthClientInformation,oauthTokens:b.oauthTokens,oauthCodeVerifier:b.oauthCodeVerifier}:"sse"===c?{...d,...b,name:a,eventSourceInit:b.eventSourceInit&&"object"==typeof b.eventSourceInit?b.eventSourceInit:void 0,requestInit:b.requestInit&&"object"==typeof b.requestInit?b.requestInit:void 0}:"websocket"===c?{...d,...b,name:a,websocketUrl:b.websocketUrl||""}:{...d,...b,name:a,command:b.command||"",args:b.args||[],stderr:b.stderr||"pipe"}})}catch(a){return f.warn("Failed to load server configs",a),{success:!1,error:`Failed to load server configs: ${a instanceof Error?a.message:"Unknown error"}`}}}async function i(a){f.debug("Entering saveConfig method");try{let b=Object.fromEntries(Array.from(a.entries()).map(([a,b])=>{let{name:c,...d}=b;return[a,d]}));return await (0,d.VH)(e.Z.MCP_SERVERS,b),{success:!0}}catch(a){return f.warn("Failed to save config",a),{success:!1,error:`Failed to save config: ${a instanceof Error?a.message:"Unknown error"}`}}}},77213:(a,b,c)=>{"use strict";c.d(b,{VL:()=>d,aI:()=>e});let d="mcp-servers",e=300},81251:(a,b,c)=>{"use strict";c.d(b,{l:()=>d});let d=18e6}};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
"use strict";exports.id=22,exports.ids=[22],exports.modules={5390:function(a,b,c){var d=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.parseProxyResponse=void 0;let e=(0,d(c(11223)).default)("https-proxy-agent:parse-proxy-response");b.parseProxyResponse=function(a){return new Promise((b,c)=>{let d=0,f=[];function g(){let i=a.read();i?function(i){f.push(i),d+=i.length;let j=Buffer.concat(f,d),k=j.indexOf("\r\n\r\n");if(-1===k){e("have not received end of HTTP headers yet..."),g();return}let l=j.slice(0,k).toString("ascii").split("\r\n"),m=l.shift();if(!m)return a.destroy(),c(Error("No header received from proxy CONNECT response"));let n=m.split(" "),o=+n[1],p=n.slice(2).join(" "),q={};for(let b of l){if(!b)continue;let d=b.indexOf(":");if(-1===d)return a.destroy(),c(Error(`Invalid header from proxy CONNECT response: "${b}"`));let e=b.slice(0,d).toLowerCase(),f=b.slice(d+1).trimStart(),g=q[e];"string"==typeof g?q[e]=[g,f]:Array.isArray(g)?g.push(f):q[e]=f}e("got proxy server response: %o %o",m,q),h(),b({connect:{statusCode:o,statusText:p,headers:q},buffered:j})}(i):a.once("readable",g)}function h(){a.removeListener("end",i),a.removeListener("error",j),a.removeListener("readable",g)}function i(){h(),e("onend"),c(Error("Proxy connection ended before receiving CONNECT response"))}function j(a){h(),e("onerror %o",a),c(a)}a.on("error",j),a.on("end",i),g()})}},30266:function(a,b,c){var d=this&&this.__createBinding||(Object.create?function(a,b,c,d){void 0===d&&(d=c);var e=Object.getOwnPropertyDescriptor(b,c);(!e||("get"in e?!b.__esModule:e.writable||e.configurable))&&(e={enumerable:!0,get:function(){return b[c]}}),Object.defineProperty(a,d,e)}:function(a,b,c,d){void 0===d&&(d=c),a[d]=b[c]}),e=this&&this.__setModuleDefault||(Object.create?function(a,b){Object.defineProperty(a,"default",{enumerable:!0,value:b})}:function(a,b){a.default=b}),f=this&&this.__importStar||function(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)"default"!==c&&Object.prototype.hasOwnProperty.call(a,c)&&d(b,a,c);return e(b,a),b};Object.defineProperty(b,"__esModule",{value:!0}),b.req=b.json=b.toBuffer=void 0;let g=f(c(81630)),h=f(c(55591));async function i(a){let b=0,c=[];for await(let d of a)b+=d.length,c.push(d);return Buffer.concat(c,b)}b.toBuffer=i,b.json=async function(a){let b=(await i(a)).toString("utf8");try{return JSON.parse(b)}catch(a){throw a.message+=` (input: ${b})`,a}},b.req=function(a,b={}){let c=(("string"==typeof a?a:a.href).startsWith("https:")?h:g).request(a,b),d=new Promise((a,b)=>{c.once("response",a).once("error",b).end()});return c.then=d.then.bind(d),c}},60022:function(a,b,c){var d=this&&this.__createBinding||(Object.create?function(a,b,c,d){void 0===d&&(d=c);var e=Object.getOwnPropertyDescriptor(b,c);(!e||("get"in e?!b.__esModule:e.writable||e.configurable))&&(e={enumerable:!0,get:function(){return b[c]}}),Object.defineProperty(a,d,e)}:function(a,b,c,d){void 0===d&&(d=c),a[d]=b[c]}),e=this&&this.__setModuleDefault||(Object.create?function(a,b){Object.defineProperty(a,"default",{enumerable:!0,value:b})}:function(a,b){a.default=b}),f=this&&this.__importStar||function(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)"default"!==c&&Object.prototype.hasOwnProperty.call(a,c)&&d(b,a,c);return e(b,a),b},g=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(b,"__esModule",{value:!0}),b.HttpsProxyAgent=void 0;let h=f(c(91645)),i=f(c(34631)),j=g(c(12412)),k=g(c(11223)),l=c(78563),m=c(79551),n=c(5390),o=(0,k.default)("https-proxy-agent"),p=a=>void 0===a.servername&&a.host&&!h.isIP(a.host)?{...a,servername:a.host}:a;class q extends l.Agent{constructor(a,b){super(b),this.options={path:void 0},this.proxy="string"==typeof a?new m.URL(a):a,this.proxyHeaders=b?.headers??{},o("Creating new HttpsProxyAgent instance: %o",this.proxy.href);let c=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,""),d=this.proxy.port?parseInt(this.proxy.port,10):"https:"===this.proxy.protocol?443:80;this.connectOpts={ALPNProtocols:["http/1.1"],...b?s(b,"headers"):null,host:c,port:d}}async connect(a,b){let c,{proxy:d}=this;if(!b.host)throw TypeError('No "host" provided');"https:"===d.protocol?(o("Creating `tls.Socket`: %o",this.connectOpts),c=i.connect(p(this.connectOpts))):(o("Creating `net.Socket`: %o",this.connectOpts),c=h.connect(this.connectOpts));let e="function"==typeof this.proxyHeaders?this.proxyHeaders():{...this.proxyHeaders},f=h.isIPv6(b.host)?`[${b.host}]`:b.host,g=`CONNECT ${f}:${b.port} HTTP/1.1\r
|
|
2
|
+
`;if(d.username||d.password){let a=`${decodeURIComponent(d.username)}:${decodeURIComponent(d.password)}`;e["Proxy-Authorization"]=`Basic ${Buffer.from(a).toString("base64")}`}for(let a of(e.Host=`${f}:${b.port}`,e["Proxy-Connection"]||(e["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close"),Object.keys(e)))g+=`${a}: ${e[a]}\r
|
|
3
|
+
`;let k=(0,n.parseProxyResponse)(c);c.write(`${g}\r
|
|
4
|
+
`);let{connect:l,buffered:m}=await k;if(a.emit("proxyConnect",l),this.emit("proxyConnect",l,a),200===l.statusCode)return(a.once("socket",r),b.secureEndpoint)?(o("Upgrading socket connection to TLS"),i.connect({...s(p(b),"host","path","port"),socket:c})):c;c.destroy();let q=new h.Socket({writable:!1});return q.readable=!0,a.once("socket",a=>{o("Replaying proxy buffer for failed request"),(0,j.default)(a.listenerCount("data")>0),a.push(m),a.push(null)}),q}}function r(a){a.resume()}function s(a,...b){let c,d={};for(c in a)b.includes(c)||(d[c]=a[c]);return d}q.protocols=["http","https"],b.HttpsProxyAgent=q},78563:function(a,b,c){var d=this&&this.__createBinding||(Object.create?function(a,b,c,d){void 0===d&&(d=c);var e=Object.getOwnPropertyDescriptor(b,c);(!e||("get"in e?!b.__esModule:e.writable||e.configurable))&&(e={enumerable:!0,get:function(){return b[c]}}),Object.defineProperty(a,d,e)}:function(a,b,c,d){void 0===d&&(d=c),a[d]=b[c]}),e=this&&this.__setModuleDefault||(Object.create?function(a,b){Object.defineProperty(a,"default",{enumerable:!0,value:b})}:function(a,b){a.default=b}),f=this&&this.__importStar||function(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)"default"!==c&&Object.prototype.hasOwnProperty.call(a,c)&&d(b,a,c);return e(b,a),b},g=this&&this.__exportStar||function(a,b){for(var c in a)"default"===c||Object.prototype.hasOwnProperty.call(b,c)||d(b,a,c)};Object.defineProperty(b,"__esModule",{value:!0}),b.Agent=void 0;let h=f(c(91645)),i=f(c(81630)),j=c(55591);g(c(30266),b);let k=Symbol("AgentBaseInternalState");class l extends i.Agent{constructor(a){super(a),this[k]={}}isSecureEndpoint(a){if(a){if("boolean"==typeof a.secureEndpoint)return a.secureEndpoint;if("string"==typeof a.protocol)return"https:"===a.protocol}let{stack:b}=Error();return"string"==typeof b&&b.split("\n").some(a=>-1!==a.indexOf("(https.js:")||-1!==a.indexOf("node:https:"))}incrementSockets(a){if(this.maxSockets===1/0&&this.maxTotalSockets===1/0)return null;this.sockets[a]||(this.sockets[a]=[]);let b=new h.Socket({writable:!1});return this.sockets[a].push(b),this.totalSocketCount++,b}decrementSockets(a,b){if(!this.sockets[a]||null===b)return;let c=this.sockets[a],d=c.indexOf(b);-1!==d&&(c.splice(d,1),this.totalSocketCount--,0===c.length&&delete this.sockets[a])}getName(a){return this.isSecureEndpoint(a)?j.Agent.prototype.getName.call(this,a):super.getName(a)}createSocket(a,b,c){let d={...b,secureEndpoint:this.isSecureEndpoint(b)},e=this.getName(d),f=this.incrementSockets(e);Promise.resolve().then(()=>this.connect(a,d)).then(g=>{if(this.decrementSockets(e,f),g instanceof i.Agent)try{return g.addRequest(a,d)}catch(a){return c(a)}this[k].currentSocket=g,super.createSocket(a,b,c)},a=>{this.decrementSockets(e,f),c(a)})}createConnection(){let a=this[k].currentSocket;if(this[k].currentSocket=void 0,!a)throw Error("No socket was returned in the `connect()` function");return a}get defaultPort(){return this[k].defaultPort??("https:"===this.protocol?443:80)}set defaultPort(a){this[k]&&(this[k].defaultPort=a)}get protocol(){return this[k].protocol??(this.isSecureEndpoint()?"https:":"http:")}set protocol(a){this[k]&&(this[k].protocol=a)}}b.Agent=l}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=2253,exports.ids=[2253],exports.modules={19787:(a,b,c)=>{c.d(b,{A:()=>u});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(68333),i=c(6636),j=c(14328),k=c(66512),l=c(29565),m=c(33105);function n(a){return(0,m.Ay)("MuiAccordionSummary",a)}let o=(0,l.A)("MuiAccordionSummary",["root","expanded","focusVisible","disabled","gutters","contentGutters","content","expandIconWrapper"]);var p=c(20385),q=c(21124);let r=(0,g.Ay)(j.A,{name:"MuiAccordionSummary",slot:"Root",overridesResolver:(a,b)=>b.root})((0,h.A)(({theme:a})=>{let b={duration:a.transitions.duration.shortest};return{display:"flex",width:"100%",minHeight:48,padding:a.spacing(0,2),transition:a.transitions.create(["min-height","background-color"],b),[`&.${o.focusVisible}`]:{backgroundColor:(a.vars||a).palette.action.focus},[`&.${o.disabled}`]:{opacity:(a.vars||a).palette.action.disabledOpacity},[`&:hover:not(.${o.disabled})`]:{cursor:"pointer"},variants:[{props:a=>!a.disableGutters,style:{[`&.${o.expanded}`]:{minHeight:64}}}]}})),s=(0,g.Ay)("span",{name:"MuiAccordionSummary",slot:"Content",overridesResolver:(a,b)=>b.content})((0,h.A)(({theme:a})=>({display:"flex",textAlign:"start",flexGrow:1,margin:"12px 0",variants:[{props:a=>!a.disableGutters,style:{transition:a.transitions.create(["margin"],{duration:a.transitions.duration.shortest}),[`&.${o.expanded}`]:{margin:"20px 0"}}}]}))),t=(0,g.Ay)("span",{name:"MuiAccordionSummary",slot:"ExpandIconWrapper",overridesResolver:(a,b)=>b.expandIconWrapper})((0,h.A)(({theme:a})=>({display:"flex",color:(a.vars||a).palette.action.active,transform:"rotate(0deg)",transition:a.transitions.create("transform",{duration:a.transitions.duration.shortest}),[`&.${o.expanded}`]:{transform:"rotate(180deg)"}}))),u=d.forwardRef(function(a,b){let c=(0,i.b)({props:a,name:"MuiAccordionSummary"}),{children:g,className:h,expandIcon:j,focusVisibleClassName:l,onClick:m,slots:o,slotProps:u,...v}=c,{disabled:w=!1,disableGutters:x,expanded:y,toggle:z}=d.useContext(k.A),A={...c,expanded:y,disabled:w,disableGutters:x},B=(a=>{let{classes:b,expanded:c,disabled:d,disableGutters:e}=a;return(0,f.A)({root:["root",c&&"expanded",d&&"disabled",!e&&"gutters"],focusVisible:["focusVisible"],content:["content",c&&"expanded",!e&&"contentGutters"],expandIconWrapper:["expandIconWrapper",c&&"expanded"]},n,b)})(A),C={slots:o,slotProps:u},[D,E]=(0,p.A)("root",{ref:b,shouldForwardComponentProp:!0,className:(0,e.A)(B.root,h),elementType:r,externalForwardedProps:{...C,...v},ownerState:A,additionalProps:{focusRipple:!1,disableRipple:!0,disabled:w,"aria-expanded":y,focusVisibleClassName:(0,e.A)(B.focusVisible,l)},getSlotProps:a=>({...a,onClick:b=>{a.onClick?.(b),z&&z(b),m&&m(b)}})}),[F,G]=(0,p.A)("content",{className:B.content,elementType:s,externalForwardedProps:C,ownerState:A}),[H,I]=(0,p.A)("expandIconWrapper",{className:B.expandIconWrapper,elementType:t,externalForwardedProps:C,ownerState:A});return(0,q.jsxs)(D,{...E,children:[(0,q.jsx)(F,{...G,children:g}),j&&(0,q.jsx)(H,{...I,children:j})]})})},61628:(a,b,c)=>{c.d(b,{A:()=>v});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(68333),i=c(6636),j=c(99561),k=c(54573),l=c(66512),m=c(65603),n=c(20385),o=c(29565),p=c(33105);function q(a){return(0,p.Ay)("MuiAccordion",a)}let r=(0,o.A)("MuiAccordion",["root","heading","rounded","expanded","disabled","gutters","region"]);var s=c(21124);let t=(0,g.Ay)(k.A,{name:"MuiAccordion",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[{[`& .${r.region}`]:b.region},b.root,!c.square&&b.rounded,!c.disableGutters&&b.gutters]}})((0,h.A)(({theme:a})=>{let b={duration:a.transitions.duration.shortest};return{position:"relative",transition:a.transitions.create(["margin"],b),overflowAnchor:"none","&::before":{position:"absolute",left:0,top:-1,right:0,height:1,content:'""',opacity:1,backgroundColor:(a.vars||a).palette.divider,transition:a.transitions.create(["opacity","background-color"],b)},"&:first-of-type":{"&::before":{display:"none"}},[`&.${r.expanded}`]:{"&::before":{opacity:0},"&:first-of-type":{marginTop:0},"&:last-of-type":{marginBottom:0},"& + &":{"&::before":{display:"none"}}},[`&.${r.disabled}`]:{backgroundColor:(a.vars||a).palette.action.disabledBackground}}}),(0,h.A)(({theme:a})=>({variants:[{props:a=>!a.square,style:{borderRadius:0,"&:first-of-type":{borderTopLeftRadius:(a.vars||a).shape.borderRadius,borderTopRightRadius:(a.vars||a).shape.borderRadius},"&:last-of-type":{borderBottomLeftRadius:(a.vars||a).shape.borderRadius,borderBottomRightRadius:(a.vars||a).shape.borderRadius,"@supports (-ms-ime-align: auto)":{borderBottomLeftRadius:0,borderBottomRightRadius:0}}}},{props:a=>!a.disableGutters,style:{[`&.${r.expanded}`]:{margin:"16px 0"}}}]}))),u=(0,g.Ay)("h3",{name:"MuiAccordion",slot:"Heading",overridesResolver:(a,b)=>b.heading})({all:"unset"}),v=d.forwardRef(function(a,b){let c=(0,i.b)({props:a,name:"MuiAccordion"}),{children:g,className:h,defaultExpanded:k=!1,disabled:o=!1,disableGutters:p=!1,expanded:r,onChange:v,square:w=!1,slots:x={},slotProps:y={},TransitionComponent:z,TransitionProps:A,...B}=c,[C,D]=(0,m.A)({controlled:r,default:k,name:"Accordion",state:"expanded"}),E=d.useCallback(a=>{D(!C),v&&v(a,!C)},[C,v,D]),[F,...G]=d.Children.toArray(g),H=d.useMemo(()=>({expanded:C,disabled:o,disableGutters:p,toggle:E}),[C,o,p,E]),I={...c,square:w,disabled:o,disableGutters:p,expanded:C},J=(a=>{let{classes:b,square:c,expanded:d,disabled:e,disableGutters:g}=a;return(0,f.A)({root:["root",!c&&"rounded",d&&"expanded",e&&"disabled",!g&&"gutters"],heading:["heading"],region:["region"]},q,b)})(I),K={slots:{transition:z,...x},slotProps:{transition:A,...y}},[L,M]=(0,n.A)("root",{elementType:t,externalForwardedProps:{...K,...B},className:(0,e.A)(J.root,h),shouldForwardComponentProp:!0,ownerState:I,ref:b,additionalProps:{square:w}}),[N,O]=(0,n.A)("heading",{elementType:u,externalForwardedProps:K,className:J.heading,ownerState:I}),[P,Q]=(0,n.A)("transition",{elementType:j.A,externalForwardedProps:K,ownerState:I});return(0,s.jsxs)(L,{...M,children:[(0,s.jsx)(N,{...O,children:(0,s.jsx)(l.A.Provider,{value:H,children:F})}),(0,s.jsx)(P,{in:C,timeout:"auto",...Q,children:(0,s.jsx)("div",{"aria-labelledby":F.props.id,id:F.props["aria-controls"],role:"region",className:J.region,children:G})})]})})},66512:(a,b,c)=>{c.d(b,{A:()=>d});let d=c(38301).createContext({})},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})})},95803:(a,b,c)=>{c.d(b,{A:()=>o});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(68333),i=c(6636),j=c(29565),k=c(33105);function l(a){return(0,k.Ay)("MuiAccordionDetails",a)}(0,j.A)("MuiAccordionDetails",["root"]);var m=c(21124);let n=(0,g.Ay)("div",{name:"MuiAccordionDetails",slot:"Root",overridesResolver:(a,b)=>b.root})((0,h.A)(({theme:a})=>({padding:a.spacing(1,2,2)}))),o=d.forwardRef(function(a,b){let c=(0,i.b)({props:a,name:"MuiAccordionDetails"}),{className:d,...g}=c,h=(a=>{let{classes:b}=a;return(0,f.A)({root:["root"]},l,b)})(c);return(0,m.jsx)(n,{className:(0,e.A)(h.root,d),ref:b,ownerState:c,...g})})}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports.id=232,exports.ids=[232],exports.modules={77358:(a,b,c)=>{if(!globalThis.DOMException)try{let{MessageChannel:a}=c(73566),b=new a().port1,d=new ArrayBuffer;b.postMessage(d,[d,d])}catch(a){"DOMException"===a.constructor.name&&(globalThis.DOMException=a.constructor)}a.exports=globalThis.DOMException},80232:(a,b,c)=>{"use strict";c.d(b,{fileFromPath:()=>n});var d,e,f=c(29021),g=c(33873),h=c(77358),i=c(80693);let j=function(a){if("object"!==Object.prototype.toString.call(a).slice(8,-1).toLowerCase())return!1;let b=Object.getPrototypeOf(a);return null==b||(b.constructor&&b.constructor.toString())===Object.toString()};c(52369);var k=function(a,b,c,d,e){if("m"===d)throw TypeError("Private method is not writable");if("a"===d&&!e)throw TypeError("Private accessor was defined without a setter");if("function"==typeof b?a!==b||!e:!b.has(a))throw TypeError("Cannot write private member to an object whose class did not declare it");return"a"===d?e.call(a,c):e?e.value=c:b.set(a,c),c},l=function(a,b,c,d){if("a"===c&&!d)throw TypeError("Private accessor was defined without a getter");if("function"==typeof b?a!==b||!d:!b.has(a))throw TypeError("Cannot read private member from an object whose class did not declare it");return"m"===c?d:"a"===c?d.call(a):d?d.value:b.get(a)};class m{constructor(a){d.set(this,void 0),e.set(this,void 0),k(this,d,a.path,"f"),k(this,e,a.start||0,"f"),this.name=(0,g.basename)(l(this,d,"f")),this.size=a.size,this.lastModified=a.lastModified}slice(a,b){return new m({path:l(this,d,"f"),lastModified:this.lastModified,size:b-a,start:a})}async *stream(){let{mtimeMs:a}=await f.promises.stat(l(this,d,"f"));if(a>this.lastModified)throw new h("The requested file could not be read, typically due to permission problems that have occurred after a reference to a file was acquired.","NotReadableError");this.size&&(yield*(0,f.createReadStream)(l(this,d,"f"),{start:l(this,e,"f"),end:l(this,e,"f")+this.size-1}))}get[(d=new WeakMap,e=new WeakMap,Symbol.toStringTag)](){return"File"}}async function n(a,b,c){let d=await f.promises.stat(a);return function(a,{mtimeMs:b,size:c},d,e={}){let f;j(d)?[e,f]=[d,void 0]:f=d;let g=new m({path:a,size:c,lastModified:b});return f||(f=g.name),new i.Z([g],f,{...e,lastModified:g.lastModified})}(a,d,b,c)}}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=2471,exports.ids=[2471],exports.modules={92471:(a,b,c)=>{c.d(b,{toFormData:()=>l});var d=c(65257),e=c(36472);let f=0,g={START_BOUNDARY:f++,HEADER_FIELD_START:f++,HEADER_FIELD:f++,HEADER_VALUE_START:f++,HEADER_VALUE:f++,HEADER_VALUE_ALMOST_DONE:f++,HEADERS_ALMOST_DONE:f++,PART_DATA_START:f++,PART_DATA:f++,END:f++},h={PART_BOUNDARY:1,LAST_BOUNDARY:2},i=a=>32|a,j=()=>{};class k{constructor(a){this.index=0,this.flags=0,this.onHeaderEnd=j,this.onHeaderField=j,this.onHeadersEnd=j,this.onHeaderValue=j,this.onPartBegin=j,this.onPartData=j,this.onPartEnd=j,this.boundaryChars={};let b=new Uint8Array((a="\r\n--"+a).length);for(let c=0;c<a.length;c++)b[c]=a.charCodeAt(c),this.boundaryChars[b[c]]=!0;this.boundary=b,this.lookbehind=new Uint8Array(this.boundary.length+8),this.state=g.START_BOUNDARY}write(a){let b,c,d=0,e=a.length,f=this.index,{lookbehind:j,boundary:k,boundaryChars:l,index:m,state:n,flags:o}=this,p=this.boundary.length,q=p-1,r=a.length,s=a=>{this[a+"Mark"]=d},t=a=>{delete this[a+"Mark"]},u=(a,b,c,d)=>{(void 0===b||b!==c)&&this[a](d&&d.subarray(b,c))},v=(b,c)=>{let e=b+"Mark";e in this&&(c?(u(b,this[e],d,a),delete this[e]):(u(b,this[e],a.length,a),this[e]=0))};for(d=0;d<e;d++)switch(b=a[d],n){case g.START_BOUNDARY:if(m===k.length-2){if(45===b)o|=h.LAST_BOUNDARY;else if(13!==b)return;m++;break}if(m-1==k.length-2){if(o&h.LAST_BOUNDARY&&45===b)n=g.END,o=0;else{if(o&h.LAST_BOUNDARY||10!==b)return;m=0,u("onPartBegin"),n=g.HEADER_FIELD_START}break}b!==k[m+2]&&(m=-2),b===k[m+2]&&m++;break;case g.HEADER_FIELD_START:n=g.HEADER_FIELD,s("onHeaderField"),m=0;case g.HEADER_FIELD:if(13===b){t("onHeaderField"),n=g.HEADERS_ALMOST_DONE;break}if(m++,45===b)break;if(58===b){if(1===m)return;v("onHeaderField",!0),n=g.HEADER_VALUE_START;break}if((c=i(b))<97||c>122)return;break;case g.HEADER_VALUE_START:if(32===b)break;s("onHeaderValue"),n=g.HEADER_VALUE;case g.HEADER_VALUE:13===b&&(v("onHeaderValue",!0),u("onHeaderEnd"),n=g.HEADER_VALUE_ALMOST_DONE);break;case g.HEADER_VALUE_ALMOST_DONE:if(10!==b)return;n=g.HEADER_FIELD_START;break;case g.HEADERS_ALMOST_DONE:if(10!==b)return;u("onHeadersEnd"),n=g.PART_DATA_START;break;case g.PART_DATA_START:n=g.PART_DATA,s("onPartData");case g.PART_DATA:if(f=m,0===m){for(d+=q;d<r&&!(a[d]in l);)d+=p;d-=q,b=a[d]}if(m<k.length)k[m]===b?(0===m&&v("onPartData",!0),m++):m=0;else if(m===k.length)m++,13===b?o|=h.PART_BOUNDARY:45===b?o|=h.LAST_BOUNDARY:m=0;else if(m-1===k.length)if(o&h.PART_BOUNDARY){if(m=0,10===b){o&=~h.PART_BOUNDARY,u("onPartEnd"),u("onPartBegin"),n=g.HEADER_FIELD_START;break}}else o&h.LAST_BOUNDARY&&45===b?(u("onPartEnd"),n=g.END,o=0):m=0;m>0?j[m-1]=b:f>0&&(u("onPartData",0,f,new Uint8Array(j.buffer,j.byteOffset,j.byteLength)),f=0,s("onPartData"),d--);break;case g.END:break;default:throw Error(`Unexpected state entered: ${n}`)}v("onHeaderField"),v("onHeaderValue"),v("onPartData"),this.index=m,this.state=n,this.flags=o}end(){if(this.state===g.HEADER_FIELD_START&&0===this.index||this.state===g.PART_DATA&&this.index===this.boundary.length)this.onPartEnd();else if(this.state!==g.END)throw Error("MultipartParser.end(): stream ended unexpectedly")}}async function l(a,b){let c,f,g,h,i,j;if(!/multipart/i.test(b))throw TypeError("Failed to fetch");let l=b.match(/boundary=(?:"([^"]+)"|([^;]+))/i);if(!l)throw TypeError("no or bad content-type header, no multipart boundary");let m=new k(l[1]||l[2]),n=[],o=new e.fS,p=a=>{g+=t.decode(a,{stream:!0})},q=a=>{n.push(a)},r=()=>{let a=new d.ZH(n,j,{type:i});o.append(h,a)},s=()=>{o.append(h,g)},t=new TextDecoder("utf-8");for await(let b of(t.decode(),m.onPartBegin=function(){m.onPartData=p,m.onPartEnd=s,c="",f="",g="",h="",i="",j=null,n.length=0},m.onHeaderField=function(a){c+=t.decode(a,{stream:!0})},m.onHeaderValue=function(a){f+=t.decode(a,{stream:!0})},m.onHeaderEnd=function(){if(f+=t.decode(),"content-disposition"===(c=c.toLowerCase())){let a=f.match(/\bname=("([^"]*)"|([^()<>@,;:\\"/[\]?={}\s\t]+))/i);a&&(h=a[2]||a[3]||""),(j=function(a){let b=a.match(/\bfilename=("(.*?)"|([^()<>@,;:\\"/[\]?={}\s\t]+))($|;\s)/i);if(!b)return;let c=b[2]||b[3]||"",d=c.slice(c.lastIndexOf("\\")+1);return(d=d.replace(/%22/g,'"')).replace(/&#(\d{4});/g,(a,b)=>String.fromCharCode(b))}(f))&&(m.onPartData=q,m.onPartEnd=r)}else"content-type"===c&&(i=f);f="",c=""},a))m.write(b);return m.end(),o}}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=2666,exports.ids=[2666],exports.modules={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})})})}};
|