flujo-ai 3.29.0 → 3.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.next/BUILD_ID +1 -1
- package/.next/app-build-manifest.json +457 -450
- package/.next/app-path-routes-manifest.json +30 -29
- package/.next/build-manifest.json +6 -6
- package/.next/prerender-manifest.json +30 -30
- package/.next/react-loadable-manifest.json +2 -2
- package/.next/required-server-files.json +4 -4
- package/.next/server/app/_not-found/page.js +4 -4
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/api/approvals/[id]/route.js +1 -1
- package/.next/server/app/api/approvals/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/approvals/route.js +2 -2
- package/.next/server/app/api/approvals/route.js.nft.json +1 -1
- package/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/backup/route.js +1 -1
- package/.next/server/app/api/backup/route.js.nft.json +1 -1
- package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/browse/route.js +1 -1
- package/.next/server/app/api/browse/route.js.nft.json +1 -1
- package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/bugs/enhance/route.js +3 -3
- package/.next/server/app/api/bugs/enhance/route.js.nft.json +1 -1
- package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cwd/route.js +1 -1
- package/.next/server/app/api/cwd/route.js.nft.json +1 -1
- package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/encryption/secure/route.js +1 -1
- package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
- package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/env/route.js +2 -2
- package/.next/server/app/api/env/route.js.nft.json +1 -1
- package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/[id]/route.js +1 -1
- package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js +1 -1
- package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/[id]/versions/[versionId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/[id]/versions/route.js +1 -1
- package/.next/server/app/api/flow/[id]/versions/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/[id]/versions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/compile/route.js +1 -1
- package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/generate/route.js +1 -1
- package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/improve/route.js +1 -1
- package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/prompt-renderer/route.js +2 -2
- package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/quick-chat/route.js +1 -1
- package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/repair/route.js +1 -1
- package/.next/server/app/api/flow/repair/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/route.js +1 -1
- package/.next/server/app/api/flow/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/git/route.js +2 -2
- package/.next/server/app/api/git/route.js.nft.json +1 -1
- package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/init/route.js +1 -1
- package/.next/server/app/api/init/route.js.nft.json +1 -1
- package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/local-models/capability/route.js +2 -2
- package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/local-models/pull/route.js +2 -2
- package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/local-models/suggest/route.js +2 -2
- package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/app-sandbox/route.js +1 -1
- package/.next/server/app/api/mcp/app-sandbox/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/app-sandbox/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/cancel/route.js +2 -2
- package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/oauth-capability/route.js +1 -1
- package/.next/server/app/api/mcp/oauth-capability/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/oauth-capability/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/route.js +1 -1
- package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/test-connection/route.js +1 -1
- package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp-registry/route.js +2 -2
- package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp-registry/spotlight/route.js +1 -1
- package/.next/server/app/api/mcp-registry/spotlight/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/[id]/route.js +1 -1
- package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/provider/route.js +2 -2
- package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
- package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/route.js +1 -1
- package/.next/server/app/api/model/route.js.nft.json +1 -1
- package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/test/route.js +2 -2
- package/.next/server/app/api/model/test/route.js.nft.json +1 -1
- package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/callback/route.js +2 -2
- package/.next/server/app/api/oauth/callback/route.js.nft.json +1 -1
- package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/initiate/route.js +2 -2
- package/.next/server/app/api/oauth/initiate/route.js.nft.json +1 -1
- package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/reset/route.js +2 -2
- package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
- package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/build/route.js +1 -1
- package/.next/server/app/api/packages/build/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/build/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/derive-secrets/route.js +1 -1
- package/.next/server/app/api/packages/derive-secrets/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/derive-secrets/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/install/route.js +1 -1
- package/.next/server/app/api/packages/install/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/install/status/route.js +1 -1
- package/.next/server/app/api/packages/install/status/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/install/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/installed/route.js +1 -1
- package/.next/server/app/api/packages/installed/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/installed/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/resolve/route.js +1 -1
- package/.next/server/app/api/packages/resolve/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/resolve/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/scan-targets/route.js +1 -1
- package/.next/server/app/api/packages/scan-targets/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/scan-targets/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/search/route.js +1 -0
- package/.next/server/app/api/packages/search/route.js.nft.json +1 -0
- package/.next/server/app/api/packages/search/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/packages/uninstall/route.js +1 -1
- package/.next/server/app/api/packages/uninstall/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/uninstall/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/route.js +2 -2
- package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/run/route.js +2 -2
- package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/runs/route.js +2 -2
- package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/preview-schedule/route.js +1 -1
- package/.next/server/app/api/planned-executions/preview-schedule/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/reconcile/route.js +1 -1
- package/.next/server/app/api/planned-executions/reconcile/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/route.js +1 -1
- package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/auth/resend/route.js +1 -1
- package/.next/server/app/api/registry/auth/resend/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/auth/resend/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/auth/reset/route.js +1 -1
- package/.next/server/app/api/registry/auth/reset/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/auth/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/auth/route.js +1 -1
- package/.next/server/app/api/registry/auth/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/auth/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/oauth/callback/route.js +1 -1
- package/.next/server/app/api/registry/oauth/callback/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/oauth/callback/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/oauth/initiate/route.js +1 -1
- package/.next/server/app/api/registry/oauth/initiate/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/oauth/initiate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/publish/route.js +1 -1
- package/.next/server/app/api/registry/publish/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/publish/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/settings/route.js +1 -1
- package/.next/server/app/api/registry/settings/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/settings/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/restore/route.js +1 -1
- package/.next/server/app/api/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/runs/active/route.js +2 -2
- package/.next/server/app/api/runs/active/route.js.nft.json +1 -1
- package/.next/server/app/api/runs/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/storage/route.js +1 -1
- package/.next/server/app/api/storage/route.js.nft.json +1 -1
- package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/update/route.js +1 -1
- package/.next/server/app/api/update/route.js.nft.json +1 -1
- package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/waves/route.js +1 -1
- package/.next/server/app/api/waves/route.js.nft.json +1 -1
- package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/webhooks/[id]/route.js +1 -1
- package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/chat/page.js +8 -8
- package/.next/server/app/chat/page.js.nft.json +1 -1
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/chat.html +1 -1
- package/.next/server/app/chat.rsc +3 -3
- package/.next/server/app/docs/page.js +5 -5
- package/.next/server/app/docs/page.js.nft.json +1 -1
- package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/docs.html +1 -1
- package/.next/server/app/docs.rsc +3 -3
- package/.next/server/app/executions/page.js +2 -2
- package/.next/server/app/executions/page.js.nft.json +1 -1
- package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/executions.html +1 -1
- package/.next/server/app/executions.rsc +3 -3
- package/.next/server/app/flows/page.js +2 -2
- package/.next/server/app/flows/page.js.nft.json +1 -1
- package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
- package/.next/server/app/flows.html +1 -1
- package/.next/server/app/flows.rsc +3 -3
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +3 -3
- package/.next/server/app/mcp/page.js +4 -4
- package/.next/server/app/mcp/page.js.nft.json +1 -1
- package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp-flows/route.js +1 -1
- package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
- package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
- package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
- package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp.html +1 -1
- package/.next/server/app/mcp.rsc +3 -3
- package/.next/server/app/models/page.js +2 -2
- package/.next/server/app/models/page.js.nft.json +1 -1
- package/.next/server/app/models/page_client-reference-manifest.js +1 -1
- package/.next/server/app/packages/page.js +2 -2
- package/.next/server/app/packages/page.js.nft.json +1 -1
- package/.next/server/app/packages/page_client-reference-manifest.js +1 -1
- package/.next/server/app/packages.html +1 -1
- package/.next/server/app/packages.rsc +3 -3
- package/.next/server/app/page.js +3 -3
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page.js +2 -2
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +3 -3
- package/.next/server/app/v1/chat/completions/route.js +1 -1
- package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +3 -3
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/events/route.js +3 -3
- package/.next/server/app/v1/chat/events/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/events/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/models/route.js +2 -2
- package/.next/server/app/v1/models/route.js.nft.json +1 -1
- package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/waves/page.js +4 -4
- package/.next/server/app/waves/page.js.nft.json +1 -1
- package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
- package/.next/server/app/waves.html +1 -1
- package/.next/server/app/waves.rsc +3 -3
- package/.next/server/app-paths-manifest.json +30 -29
- package/.next/server/chunks/166.js +2 -2
- package/.next/server/chunks/1690.js +1 -0
- package/.next/server/chunks/2273.js +2 -0
- package/.next/server/chunks/237.js +1 -0
- package/.next/server/chunks/2695.js +2 -2
- package/.next/server/chunks/2866.js +2 -0
- package/.next/server/chunks/{8730.js → 3489.js} +1 -1
- package/.next/server/chunks/3570.js +27 -27
- package/.next/server/chunks/3912.js +2 -0
- package/.next/server/chunks/3984.js +4 -4
- package/.next/server/chunks/4566.js +6 -0
- package/.next/server/chunks/544.js +10 -10
- package/.next/server/chunks/5548.js +62 -0
- package/.next/server/chunks/5561.js +1 -1
- package/.next/server/chunks/5705.js +1 -0
- package/.next/server/chunks/6404.js +2 -0
- package/.next/server/chunks/6432.js +1 -1
- package/.next/server/chunks/694.js +3 -0
- package/.next/server/chunks/7579.js +1 -1
- package/.next/server/chunks/7724.js +1 -0
- package/.next/server/chunks/8034.js +1 -0
- package/.next/server/chunks/8037.js +1 -0
- package/.next/server/chunks/8092.js +1 -1
- package/.next/server/chunks/{8568.js → 8192.js} +1 -1
- package/.next/server/chunks/{6518.js → 826.js} +2 -2
- package/.next/server/chunks/8298.js +1 -0
- package/.next/server/chunks/8321.js +1 -1
- package/.next/server/chunks/8366.js +90 -0
- package/.next/server/chunks/8615.js +1 -0
- package/.next/server/chunks/8645.js +2 -0
- package/.next/server/chunks/8851.js +1 -0
- package/.next/server/chunks/9313.js +1 -0
- package/.next/server/chunks/94.js +1 -1
- package/.next/server/chunks/9406.js +2 -2
- package/.next/server/chunks/9509.js +2 -2
- package/.next/server/chunks/9576.js +2 -0
- package/.next/server/chunks/9724.js +1 -1
- package/.next/server/chunks/9957.js +1 -0
- package/.next/server/chunks/9983.js +2 -0
- package/.next/server/edge-instrumentation.js.map +1 -1
- package/.next/server/functions-config-manifest.json +2 -2
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-manifest.json +5 -5
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages-manifest.json +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/server/src/middleware.js +2 -2
- package/.next/server/src/middleware.js.map +1 -1
- package/.next/static/A9jP2ydtYbqx-IayWP2Sg/_buildManifest.js +1 -0
- package/.next/static/chunks/1496-d478bce7d7c85080.js +1 -0
- package/.next/static/chunks/1641-e5ff8f112da0a335.js +1 -0
- package/.next/static/chunks/{8345.bc5534ec13abc9ee.js → 2969.eb9ff8cd2a5034b0.js} +1 -1
- package/.next/static/chunks/{2005-f9d38c39f10c321f.js → 3189-fa8ec6d719d5e72b.js} +1 -1
- package/.next/static/chunks/3452-a639f121f2953f50.js +62 -0
- package/.next/static/chunks/3560-5bdceef09b50e1c3.js +1 -0
- package/.next/static/chunks/3711-0050bb4d345c2c9c.js +1 -0
- package/.next/static/chunks/4147-20897d83b3cd3978.js +39 -0
- package/.next/static/chunks/469-1f043fe082d9f475.js +1 -0
- package/.next/static/chunks/5441-cb0c31de8bce65c3.js +1 -0
- package/.next/static/chunks/{3827-9e9a6e11ef808d90.js → 8041-05830e887c133085.js} +1 -1
- package/.next/static/chunks/8678-c6c6be2672f337f6.js +1 -0
- package/.next/static/chunks/8855-f802599c4af81cca.js +1 -0
- package/.next/static/chunks/app/_not-found/page-26055690a2426e22.js +1 -0
- package/.next/static/chunks/app/api/approvals/[id]/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/approvals/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/backup/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/browse/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/bugs/enhance/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/cwd/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/encryption/secure/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/env/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/versions/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/flow/compile/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/flow/generate/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/flow/improve/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/flow/prompt-renderer/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/flow/quick-chat/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/flow/repair/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/flow/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/git/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/init/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/local-models/capability/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/local-models/pull/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/local-models/suggest/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/app-sandbox/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/cancel/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/oauth-capability/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/test-connection/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp/test-connection/stream/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/spotlight/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/model/[id]/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/model/provider/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/model/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/model/test/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/oauth/callback/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/oauth/initiate/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/oauth/reset/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/packages/build/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/packages/derive-secrets/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/packages/install/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/packages/install/status/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/packages/installed/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/packages/resolve/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/packages/scan-targets/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/packages/search/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/packages/uninstall/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/run/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/reconcile/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/registry/auth/resend/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/registry/auth/reset/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/registry/auth/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/registry/oauth/callback/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/registry/oauth/initiate/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/registry/publish/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/registry/settings/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/restore/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/runs/active/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/storage/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/update/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/waves/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/api/webhooks/[id]/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/chat/page-558edb21321a32d0.js +1 -0
- package/.next/static/chunks/app/docs/{page-250523af44e96120.js → page-fc30f613607b8a26.js} +1 -1
- package/.next/static/chunks/app/executions/{page-1d8557a642114697.js → page-e71689c7256af1e8.js} +1 -1
- package/.next/static/chunks/app/flows/page-e90e8d7b4c1bd1c8.js +1 -0
- package/.next/static/chunks/app/layout-038b35b382eef11d.js +1 -0
- package/.next/static/chunks/app/mcp/page-6041156fc67ef361.js +1 -0
- package/.next/static/chunks/app/mcp-flows/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/mcp-proxy/[server]/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/models/{error-5732fbb053e182c5.js → error-1718b538d6967e56.js} +1 -1
- package/.next/static/chunks/app/models/{loading-57d1c02d0817fc47.js → loading-1687ae86584f5b1b.js} +1 -1
- package/.next/static/chunks/app/models/page-d16f2721e7a93b43.js +1 -0
- package/.next/static/chunks/app/packages/page-c6b0e7aa95bc1064.js +1 -0
- package/.next/static/chunks/app/page-5c7fccd019942d46.js +1 -0
- package/.next/static/chunks/app/settings/page-fb336bb049bab72a.js +1 -0
- package/.next/static/chunks/app/v1/chat/completions/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/inject/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/chat/events/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/v1/models/route-1a4c9e7a416ccbcf.js +1 -0
- package/.next/static/chunks/app/waves/page-3cf4b47b12662196.js +1 -0
- package/.next/static/chunks/{main-app-faff38c77cb00119.js → main-app-2de821d2899bb841.js} +1 -1
- package/.next/static/chunks/{webpack-08eb993682e1fb1a.js → webpack-2d8e0c13c0b865fe.js} +1 -1
- package/.next/trace +10 -10
- package/.next/types/app/api/approvals/[id]/route.ts +1 -1
- package/.next/types/app/api/approvals/route.ts +1 -1
- package/.next/types/app/api/backup/route.ts +1 -1
- package/.next/types/app/api/browse/route.ts +1 -1
- package/.next/types/app/api/bugs/enhance/route.ts +1 -1
- package/.next/types/app/api/cwd/route.ts +1 -1
- package/.next/types/app/api/encryption/secure/route.ts +1 -1
- package/.next/types/app/api/env/route.ts +1 -1
- package/.next/types/app/api/flow/[id]/route.ts +1 -1
- package/.next/types/app/api/flow/[id]/versions/[versionId]/route.ts +1 -1
- package/.next/types/app/api/flow/[id]/versions/route.ts +1 -1
- package/.next/types/app/api/flow/compile/route.ts +1 -1
- package/.next/types/app/api/flow/generate/route.ts +1 -1
- package/.next/types/app/api/flow/improve/route.ts +1 -1
- package/.next/types/app/api/flow/prompt-renderer/route.ts +1 -1
- package/.next/types/app/api/flow/quick-chat/route.ts +1 -1
- package/.next/types/app/api/flow/repair/route.ts +1 -1
- package/.next/types/app/api/flow/route.ts +1 -1
- package/.next/types/app/api/git/route.ts +1 -1
- package/.next/types/app/api/init/route.ts +1 -1
- package/.next/types/app/api/local-models/capability/route.ts +1 -1
- package/.next/types/app/api/local-models/pull/route.ts +1 -1
- package/.next/types/app/api/local-models/suggest/route.ts +1 -1
- package/.next/types/app/api/mcp/app-sandbox/route.ts +1 -1
- package/.next/types/app/api/mcp/cancel/route.ts +1 -1
- package/.next/types/app/api/mcp/oauth-capability/route.ts +1 -1
- package/.next/types/app/api/mcp/servers/[name]/prompts/get/route.ts +1 -1
- package/.next/types/app/api/mcp/servers/[name]/prompts/route.ts +1 -1
- package/.next/types/app/api/mcp/servers/[name]/resources/read/route.ts +1 -1
- package/.next/types/app/api/mcp/servers/[name]/resources/route.ts +1 -1
- package/.next/types/app/api/mcp/servers/[name]/route.ts +1 -1
- package/.next/types/app/api/mcp/servers/[name]/status/route.ts +1 -1
- package/.next/types/app/api/mcp/servers/[name]/tools/[toolName]/route.ts +1 -1
- package/.next/types/app/api/mcp/servers/[name]/tools/route.ts +1 -1
- package/.next/types/app/api/mcp/servers/route.ts +1 -1
- package/.next/types/app/api/mcp/test-connection/route.ts +1 -1
- package/.next/types/app/api/mcp/test-connection/stream/route.ts +1 -1
- package/.next/types/app/api/mcp-registry/route.ts +1 -1
- package/.next/types/app/api/mcp-registry/spotlight/route.ts +1 -1
- package/.next/types/app/api/model/[id]/route.ts +1 -1
- package/.next/types/app/api/model/provider/route.ts +1 -1
- package/.next/types/app/api/model/route.ts +1 -1
- package/.next/types/app/api/model/test/route.ts +1 -1
- package/.next/types/app/api/oauth/callback/route.ts +1 -1
- package/.next/types/app/api/oauth/initiate/route.ts +1 -1
- package/.next/types/app/api/oauth/reset/route.ts +1 -1
- package/.next/types/app/api/packages/build/route.ts +1 -1
- package/.next/types/app/api/packages/derive-secrets/route.ts +1 -1
- package/.next/types/app/api/packages/install/route.ts +1 -1
- package/.next/types/app/api/packages/install/status/route.ts +1 -1
- package/.next/types/app/api/packages/installed/route.ts +1 -1
- package/.next/types/app/api/packages/resolve/route.ts +1 -1
- package/.next/types/app/api/packages/scan-targets/route.ts +1 -1
- package/.next/types/app/api/packages/search/route.ts +347 -0
- package/.next/types/app/api/packages/uninstall/route.ts +1 -1
- package/.next/types/app/api/planned-executions/[id]/route.ts +1 -1
- package/.next/types/app/api/planned-executions/[id]/run/route.ts +1 -1
- package/.next/types/app/api/planned-executions/[id]/runs/route.ts +1 -1
- package/.next/types/app/api/planned-executions/preview-schedule/route.ts +1 -1
- package/.next/types/app/api/planned-executions/reconcile/route.ts +1 -1
- package/.next/types/app/api/planned-executions/route.ts +1 -1
- package/.next/types/app/api/registry/auth/resend/route.ts +1 -1
- package/.next/types/app/api/registry/auth/reset/route.ts +1 -1
- package/.next/types/app/api/registry/auth/route.ts +1 -1
- package/.next/types/app/api/registry/oauth/callback/route.ts +1 -1
- package/.next/types/app/api/registry/oauth/initiate/route.ts +1 -1
- package/.next/types/app/api/registry/publish/route.ts +1 -1
- package/.next/types/app/api/registry/settings/route.ts +1 -1
- package/.next/types/app/api/restore/route.ts +1 -1
- package/.next/types/app/api/runs/active/route.ts +1 -1
- package/.next/types/app/api/storage/route.ts +1 -1
- package/.next/types/app/api/update/route.ts +1 -1
- package/.next/types/app/api/waves/route.ts +1 -1
- package/.next/types/app/api/webhooks/[id]/route.ts +1 -1
- package/.next/types/app/chat/page.ts +1 -1
- package/.next/types/app/docs/page.ts +1 -1
- package/.next/types/app/executions/page.ts +1 -1
- package/.next/types/app/flows/page.ts +1 -1
- package/.next/types/app/layout.ts +1 -1
- package/.next/types/app/mcp/page.ts +1 -1
- package/.next/types/app/mcp-flows/route.ts +1 -1
- package/.next/types/app/mcp-proxy/[server]/route.ts +1 -1
- package/.next/types/app/models/page.ts +1 -1
- package/.next/types/app/packages/page.ts +1 -1
- package/.next/types/app/page.ts +1 -1
- package/.next/types/app/settings/page.ts +1 -1
- package/.next/types/app/v1/chat/completions/route.ts +1 -1
- package/.next/types/app/v1/chat/conversations/[conversationId]/breakpoints/route.ts +1 -1
- package/.next/types/app/v1/chat/conversations/[conversationId]/cancel/route.ts +1 -1
- package/.next/types/app/v1/chat/conversations/[conversationId]/debug/continue/route.ts +1 -1
- package/.next/types/app/v1/chat/conversations/[conversationId]/debug/step/route.ts +1 -1
- package/.next/types/app/v1/chat/conversations/[conversationId]/edit-state/route.ts +1 -1
- package/.next/types/app/v1/chat/conversations/[conversationId]/events/route.ts +1 -1
- package/.next/types/app/v1/chat/conversations/[conversationId]/inject/route.ts +1 -1
- package/.next/types/app/v1/chat/conversations/[conversationId]/resources/route.ts +1 -1
- package/.next/types/app/v1/chat/conversations/[conversationId]/respond/route.ts +1 -1
- package/.next/types/app/v1/chat/conversations/[conversationId]/route.ts +1 -1
- package/.next/types/app/v1/chat/conversations/route.ts +1 -1
- package/.next/types/app/v1/chat/events/route.ts +1 -1
- package/.next/types/app/v1/models/route.ts +1 -1
- package/.next/types/app/waves/page.ts +1 -1
- package/.next/types/routes.d.ts +2 -1
- package/.next/types/validator.ts +9 -0
- package/README.md +1 -1
- package/bin/flujo.mjs +120 -120
- package/next.config.mjs +139 -139
- package/package.json +1 -1
- package/scripts/launch-next.mjs +112 -112
- package/.next/server/chunks/1083.js +0 -2
- package/.next/server/chunks/1819.js +0 -2
- package/.next/server/chunks/2368.js +0 -2
- package/.next/server/chunks/2666.js +0 -1
- package/.next/server/chunks/2985.js +0 -1
- package/.next/server/chunks/3101.js +0 -1
- package/.next/server/chunks/3273.js +0 -1
- package/.next/server/chunks/3648.js +0 -1
- package/.next/server/chunks/38.js +0 -2
- package/.next/server/chunks/3951.js +0 -151
- package/.next/server/chunks/4239.js +0 -1
- package/.next/server/chunks/4426.js +0 -6
- package/.next/server/chunks/4663.js +0 -1
- package/.next/server/chunks/5148.js +0 -1
- package/.next/server/chunks/5786.js +0 -2
- package/.next/server/chunks/6219.js +0 -1
- package/.next/server/chunks/6588.js +0 -2
- package/.next/server/chunks/8339.js +0 -1
- package/.next/server/chunks/8667.js +0 -1
- package/.next/server/chunks/9251.js +0 -1
- package/.next/server/chunks/9253.js +0 -3
- package/.next/server/chunks/991.js +0 -2
- package/.next/static/JGMk-MwwdpQ94asqw-mUR/_buildManifest.js +0 -1
- package/.next/static/chunks/2233-1139c1d3ef356980.js +0 -1
- package/.next/static/chunks/289-98f50bfcf833d661.js +0 -1
- package/.next/static/chunks/2988-0b197a9b468a2df9.js +0 -1
- package/.next/static/chunks/3418-a2f5d0c4f29ee2fb.js +0 -1
- package/.next/static/chunks/3958-5641a828b320f2fe.js +0 -100
- package/.next/static/chunks/5661-1b976072cc3d2fed.js +0 -1
- package/.next/static/chunks/6947-0ff3545efb53e959.js +0 -1
- package/.next/static/chunks/8054-f33d06ecea5d36e4.js +0 -1
- package/.next/static/chunks/8855-02889c9ab4bf0bcf.js +0 -1
- package/.next/static/chunks/8863-c140a742178a4a87.js +0 -1
- package/.next/static/chunks/app/_not-found/page-81dc485d60f94046.js +0 -1
- package/.next/static/chunks/app/api/approvals/[id]/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/approvals/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/backup/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/browse/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/bugs/enhance/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/cwd/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/encryption/secure/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/env/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/flow/[id]/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/flow/[id]/versions/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/flow/compile/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/flow/generate/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/flow/improve/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/flow/prompt-renderer/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/flow/quick-chat/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/flow/repair/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/flow/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/git/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/init/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/local-models/capability/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/local-models/pull/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/local-models/suggest/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/mcp/app-sandbox/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/mcp/cancel/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/mcp/oauth-capability/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/mcp/test-connection/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/mcp/test-connection/stream/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/mcp-registry/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/mcp-registry/spotlight/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/model/[id]/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/model/provider/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/model/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/model/test/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/oauth/callback/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/oauth/initiate/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/oauth/reset/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/packages/build/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/packages/derive-secrets/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/packages/install/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/packages/install/status/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/packages/installed/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/packages/resolve/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/packages/scan-targets/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/packages/uninstall/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/run/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/reconcile/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/registry/auth/resend/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/registry/auth/reset/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/registry/auth/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/registry/oauth/callback/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/registry/oauth/initiate/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/registry/publish/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/registry/settings/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/restore/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/runs/active/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/storage/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/update/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/waves/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/api/webhooks/[id]/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/chat/page-2b69c5e35164f553.js +0 -1
- package/.next/static/chunks/app/flows/page-3f0d7cca2edff792.js +0 -1
- package/.next/static/chunks/app/layout-81f91fb3b894951a.js +0 -1
- package/.next/static/chunks/app/mcp/page-0e90177062130679.js +0 -1
- package/.next/static/chunks/app/mcp-flows/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/mcp-proxy/[server]/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/models/page-c69e10b83c06535d.js +0 -1
- package/.next/static/chunks/app/packages/page-bf8aad441c664433.js +0 -1
- package/.next/static/chunks/app/page-d3ea90b065b95d1e.js +0 -1
- package/.next/static/chunks/app/settings/page-4a9952c514f284e0.js +0 -1
- package/.next/static/chunks/app/v1/chat/completions/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/inject/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/v1/chat/events/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/v1/models/route-7d60cffa598f4779.js +0 -1
- package/.next/static/chunks/app/waves/page-3ca939f0f7e817b1.js +0 -1
- /package/.next/static/{JGMk-MwwdpQ94asqw-mUR → A9jP2ydtYbqx-IayWP2Sg}/_ssgManifest.js +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=7579,exports.ids=[7579],exports.modules={17579:(a,b,c)=>{let d;c.d(b,{internalCallTool:()=>bn,internalToolDefinitions:()=>aT});var e=c(33873),f=c.n(e),g=c(29021),h=c(18230),i=c(11659),j=c(12763),k=c(50010),l=c(35432),m=c(64551),n=c(89850),o=c(8336),p=c(78606),q=c(17587);function r(a,b,c,d){return"number"!=typeof a||Number.isNaN(a)?d:Math.max(b,Math.min(c,Math.floor(a)))}let s={type:"arrowclosed",width:20,height:20,color:"#1976d2"},t={stroke:"#1976d2",strokeWidth:2},u={type:"arrowclosed",width:20,height:20,color:"#009688"},v={stroke:"#009688",strokeWidth:2},w=new Set(["full-history","latest-message","isolated"]),x=new Set(["steps","final-only"]),y=new Set(["full-conversation","latest-message"]);function z(a,b={}){let{keepPills:c=!1,wiredServers:d=new Set,validHandoffNames:e=new Set}=b,f=(0,o.A$)(a);if(0===f.length)return{text:a,stripped:!1,unresolved:[]};let g="",h=0,i=!1,j=[];for(let b of f){g+=a.slice(h,b.index),h=b.index+b.fullMatch.length;let f=!1;c&&(f="handoff"===b.server?e.has(b.name):d.has(b.server)),f?g+=b.fullMatch:(g+=b.name,i=!0,c&&j.push(b.fullMatch))}return{text:g+=a.slice(h),stripped:i,unresolved:j}}function A(a,b,c){let d=b.filter(b=>b.from===a).map(a=>c.get(a.to)).filter(Boolean).map(a=>({id:a.key??"",label:a.label,type:a.type}));return new Set((0,q.E9)(d).values())}function B(a,b){if(b.some(b=>b.id===a))return a;let c=a.toLowerCase(),d=b.find(a=>a.name.toLowerCase()===c);return d?d.id:null}var C=c(54898),D=c(52122);let E=(0,h.h)("backend/services/flow/generationContext");function F(a,b){let c=String(a).replace(/\s+/g," ").trim();return c.length<=b?c:`${c.slice(0,b).trimEnd()}…`}async function G(){let a=await j.modelService.loadModels(),b=a.map(a=>({id:a.id,name:a.name,...a.displayName?{displayName:a.displayName}:{},...a.description?{description:F(a.description,100)}:{}})),c=[],d={};try{let a=await D.mcpService.loadServerConfigs();if(Array.isArray(a))for(let b of a){if(b.disabled)continue;let a=!1;try{let c=await D.mcpService.getServerStatus(b.name);a=c?.status==="connected"}catch(a){E.debug(`getServerStatus failed for ${b.name}; listing name only`,a)}if(!a){c.push({name:b.name,connected:!1});continue}let{tools:e}=await D.mcpService.listServerTools(b.name),f=(e??[]).filter(a=>a.name).map(a=>({name:a.name,...a.description?{description:F(a.description,100)}:{}}));d[b.name]=f.map(a=>a.name),c.push({name:b.name,connected:!0,tools:f})}}catch(a){E.warn("Could not load MCP servers for the authoring context",a)}let e=[];try{e=await i.flowService.loadFlows()}catch(a){E.warn("Could not load flows for the authoring context",a)}let f={models:b,servers:c,flows:e.map(a=>({id:a.id,name:a.name,...a.description?{description:F(a.description,300)}:{},nodeCount:a.nodes?.length??0}))};return{blocks:f,compile:{models:a.map(a=>({id:a.id,name:a.name,displayName:a.displayName})),servers:c.map(a=>({name:a.name})),serverTools:d,flows:e.map(a=>({id:a.id,name:a.name}))},catalog:function(a){let b=[];for(let c of(b.push("AVAILABLE MODELS (reference by id or name):"),0===a.models.length&&b.push(" (none configured)"),a.models)){let a=c.displayName&&c.displayName!==c.name?`"${c.displayName}" (${c.name})`:c.name,d=c.description?` — ${c.description}`:"";b.push(` - id: ${c.id} — ${a}${d}`)}for(let c of(b.push("",'AVAILABLE MCP SERVERS (attach to process nodes via "servers"):'),0===a.servers.length&&b.push(" (none configured)"),a.servers)){if(!c.connected){b.push(` - ${c.name} (offline — tools unknown; may still be used)`);continue}b.push(` - ${c.name}:`);let a=(c.tools??[]).slice(0,20);for(let c of a){let a=c.description?` — ${c.description}`:"";b.push(` - ${c.name}${a}`)}let d=(c.tools?.length??0)-a.length;d>0&&b.push(` - …and ${d} more`)}for(let c of(b.push("",'EXISTING FLOWS (usable as subflow targets via "flow"):'),0===a.flows.length&&b.push(" (none)"),a.flows.slice(0,15))){let a=c.description?` — ${c.description}`:` — ${c.nodeCount} nodes`;b.push(` - "${c.name}"${a}`)}return a.flows.length>15&&b.push(` - …and ${a.flows.length-15} more`),b.join("\n")}(f),validatorServers:c.map(a=>({name:a.name,status:a.connected?"connected":"disconnected"}))}}let H=(0,h.h)("backend/services/flow/compileFlow");async function I(a,b={}){if(!a||"object"!=typeof a||Array.isArray(a))return{success:!1,error:"The spec must be a JSON object (a FlowSpec)",statusCode:400};let c=await G(),d=c.compile;if(b.updateFlowId){let a=d.flows??[];if(!a.some(a=>a.id===b.updateFlowId))return{success:!1,error:`No flow with id "${b.updateFlowId}" to update`,statusCode:404};d={...d,flows:a.filter(a=>a.id!==b.updateFlowId)}}let e=function(a,b={},c={}){let d=[],e=(a,b,c)=>d.push({severity:"error",code:a,message:b,nodeKey:c}),f=(a,b,c)=>d.push({severity:"warning",code:a,message:b,nodeKey:c}),g=b.models??[],h=new Set((b.servers??[]).map(a=>a.name)),i=b.serverTools??{},j=r(c.maxDepth,0,3,3),k=r(c.maxFlows,1,8,8),l=[],m=[...(b.flows??[]).map(a=>a.name)],o=[],q=0;var C=function a(d,C,D){let E=Array.isArray(d?.nodes)?d.nodes:[],F=Array.isArray(d?.edges)?d.edges:[],H=function(a,b){let c=(a??"").trim().replace(/[^\w-]+/g,"_").replace(/^_+|_+$/g,"");c||(c="generated_flow");let d=new Set(b.map(a=>a.toLowerCase()));if(!d.has(c.toLowerCase()))return c;for(let a=2;;a++){let b=`${c}_${a}`;if(!d.has(b.toLowerCase()))return b}}(d?.name,m);m.push(H),q++;let I=(0,n.A)(),J=[...D,H],K=new Map,L=[],M=[],N=new Map(E.filter(a=>a?.key&&"string"==typeof a.key).map(a=>[a.key,a]));for(let d of E){let l=d?.key;if(!l||"string"!=typeof l){e("node-missing-key",'A node is missing its "key" — every node needs a unique key.');continue}if(K.has(l)){e("node-duplicate-key",`Duplicate node key "${l}" — keys must be unique; the later node was dropped.`,l);continue}let m=d.type;if("mcp"===m){e("mcp-node-not-allowed",`Node "${l}": do not emit "mcp" nodes — attach servers to a process node via its "servers" list instead.`,l);continue}if("start"!==m&&"process"!==m&&"finish"!==m&&"subflow"!==m&&"resource"!==m&&"signal"!==m){e("unknown-node-type",`Node "${l}" has unknown type "${String(m)}".`,l);continue}let p={},s="string"==typeof d.prompt?d.prompt:void 0;if("start"===m){let{text:a,stripped:b,unresolved:e}=z(s??"",c.keepPills?{keepPills:!0,wiredServers:new Set((d.servers??[]).map(a=>a.name)),validHandoffNames:A(l,F,N)}:{});for(let a of(b&&!c.keepPills&&f("pill-stripped",`Node "${l}": binding pills are not supported in generated prompts and were replaced with plain names.`,l),e))f("pill-unresolved",`Node "${l}": pill "${a}" not resolved against wired servers — stripped.`,l);p.promptTemplate=a}else if("process"===m){let{text:a,stripped:b,unresolved:e}=z(s??"",c.keepPills?{keepPills:!0,wiredServers:new Set((d.servers??[]).map(a=>a.name)),validHandoffNames:A(l,F,N)}:{});for(let a of(b&&!c.keepPills&&f("pill-stripped",`Node "${l}": binding pills are not supported in generated prompts and were replaced with plain names.`,l),e))f("pill-unresolved",`Node "${l}": pill "${a}" not resolved against wired servers — stripped.`,l);if(p.promptTemplate=a,d.model){let a=function(a,b){if(b.some(b=>b.id===a))return a;let c=a.toLowerCase(),d=b.find(a=>a.displayName?.toLowerCase()===c);if(d)return d.id;let e=b.find(a=>a.name?.toLowerCase()===c);return e?e.id:null}(d.model,g);a?p.boundModel=a:(p.boundModel=d.model,f("model-unresolved",`Node "${l}": model "${d.model}" does not match any configured model (by id, display name, or name).`,l))}void 0!==d.inputMode&&(w.has(d.inputMode)?(p.inputMode=d.inputMode,"isolated"===d.inputMode&&"string"==typeof d.isolatedPrompt&&(p.isolatedPrompt=d.isolatedPrompt)):f("invalid-input-mode",`Node "${l}": inputMode "${String(d.inputMode)}" is not valid (full-history | latest-message | isolated); omitted.`,l)),"boolean"==typeof d.allowCallerPrompt&&(p.allowCallerPrompt=d.allowCallerPrompt),void 0!==d.outputMode&&(y.has(d.outputMode)?p.outputMode=d.outputMode:f("invalid-output-mode",`Node "${l}": outputMode "${String(d.outputMode)}" is not valid on a process node (full-conversation | latest-message); omitted.`,l)),void 0!==d.maxTurns&&("number"!=typeof d.maxTurns||Number.isNaN(d.maxTurns)?f("invalid-max-turns",`Node "${l}": maxTurns "${String(d.maxTurns)}" is not a number; omitted.`,l):p.maxTurns=r(d.maxTurns,1,1e3,1)),"boolean"==typeof d.excludeModelPrompt&&(p.excludeModelPrompt=d.excludeModelPrompt),"boolean"==typeof d.excludeStartNodePrompt&&(p.excludeStartNodePrompt=d.excludeStartNodePrompt),"boolean"==typeof d.excludeSystemPrompt&&(p.excludeSystemPrompt=d.excludeSystemPrompt),Array.isArray(d.allowedTools)&&(p.allowedTools=d.allowedTools.filter(a=>"string"==typeof a&&a)),"string"==typeof d.captureVariable&&d.captureVariable.trim()&&(p.captureVariable=d.captureVariable.trim()),"string"==typeof d.captureResource&&d.captureResource.trim()&&(p.captureResource=d.captureResource.trim()),"string"==typeof d.captureKv&&d.captureKv.trim()&&(p.captureKv=d.captureKv.trim())}else if("subflow"===m){if(function(c,d,g,h,i){let l=Array.isArray(c.parallelFlows)&&c.parallelFlows.length>0,m=Array.isArray(c.parallelSubflowSpecs)&&c.parallelSubflowSpecs.length>0,n="string"==typeof c.parallelFlowsVariable?c.parallelFlowsVariable.trim():"";if([void 0!==c.flow&&null!==c.flow?"flow":null,void 0!==c.subflowSpec&&null!==c.subflowSpec?"subflowSpec":null,l?"parallelFlows":null,m?"parallelSubflowSpecs":null,void 0!==c.generateSubflow&&null!==c.generateSubflow?"generateSubflow":null].filter(Boolean).length>1&&f("subflow-multiple-sources",`Node "${d}": a subflow node should have only one target source ("flow", "subflowSpec", "parallelFlows", "parallelSubflowSpecs", or "generateSubflow"); applying precedence flow > subflowSpec > parallelFlows > parallelSubflowSpecs > generateSubflow.`,d),!0===c.mapOverList){let a=void 0!==c.flow&&null!==c.flow||void 0!==c.subflowSpec&&null!==c.subflowSpec;(l||m)&&e("subflow-map-and-parallel",`Node "${d}": "mapOverList" runs a SINGLE child once per item and cannot be combined with "parallelFlows"/"parallelSubflowSpecs".`,d),a?(i.mapOverList=!0,void 0!==c.itemSplit&&("json-array"===c.itemSplit||"lines"===c.itemSplit?i.itemSplit=c.itemSplit:f("invalid-item-split",`Node "${d}": itemSplit "${String(c.itemSplit)}" is not valid (json-array | lines); using json-array.`,d)),!0===c.sequential&&(i.sequential=!0),G(c,i)):e("subflow-map-no-child",`Node "${d}": "mapOverList" needs a single child ("flow" or "subflowSpec") to run once per item.`,d)}let p=Array.isArray(c.spawnBriefs)?c.spawnBriefs.filter(a=>"string"==typeof a&&""!==a.trim()):[];if(p.length>0){let a=void 0!==c.flow&&null!==c.flow||void 0!==c.subflowSpec&&null!==c.subflowSpec;l||m?e("subflow-spawn-and-parallel",`Node "${d}": "spawnBriefs" runs a SINGLE child once per brief and cannot be combined with "parallelFlows"/"parallelSubflowSpecs".`,d):!0===c.mapOverList?e("subflow-spawn-and-map",`Node "${d}": "spawnBriefs" cannot be combined with "mapOverList"; use one lane source or the other.`,d):a?(i.spawnBriefs=p,G(c,i)):e("subflow-spawn-no-child",`Node "${d}": "spawnBriefs" needs a single child ("flow" or "subflowSpec") to spawn once per brief.`,d)}if(n&&(!0===c.mapOverList?e("subflow-map-and-parallel-var",`Node "${d}": "parallelFlowsVariable" (dynamic fan-out) cannot be combined with "mapOverList".`,d):i.parallelSubflowIdsVar=n),c.flow){if(h.some(a=>a.toLowerCase()===c.flow.toLowerCase()))return e("subflow-cycle",`Node "${d}": flow "${c.flow}" refers to an ancestor flow, which would create a cycle.`,d);let a=B(c.flow,[...b.flows??[],...o]);return a?i.subflowId=a:e("subflow-unresolved",`Node "${d}": flow "${c.flow}" does not match any existing flow (by id or name).`,d)}if(c.subflowSpec){if(g+1>j)return e("subflow-too-deep",`Node "${d}": nested subflows may not go deeper than ${j} level(s); this inline subflow was not compiled.`,d);if(q>=k)return e("subflow-too-many",`Node "${d}": compiling this inline subflow would exceed the maximum of ${k} flows in one bundle; it was not compiled.`,d);let b=a(c.subflowSpec,g+1,h);return b?i.subflowId=b.id:e("subflow-child-empty",`Node "${d}": the inline "subflowSpec" produced no usable flow.`,d)}if(l){let a=[];for(let f of c.parallelFlows){if("string"!=typeof f||!f){e("parallel-flow-invalid",`Node "${d}": a "parallelFlows" entry is missing or not a string.`,d);continue}if(h.some(a=>a.toLowerCase()===f.toLowerCase())){e("subflow-cycle",`Node "${d}": parallel flow "${f}" refers to an ancestor flow, which would create a cycle.`,d);continue}let c=B(f,[...b.flows??[],...o]);c?a.includes(c)||a.push(c):e("parallel-flow-unresolved",`Node "${d}": parallel flow "${f}" does not match any existing flow (by id or name).`,d)}a.length>0?(i.parallelSubflowIds=a,G(c,i)):e("parallel-empty",`Node "${d}": "parallelFlows" resolved to no runnable lanes.`,d);return}if(m){let b=[];for(let f of c.parallelSubflowSpecs){if(!f||"object"!=typeof f){e("parallel-spec-invalid",`Node "${d}": a "parallelSubflowSpecs" entry is not a FlowSpec object.`,d);continue}if(g+1>j){e("subflow-too-deep",`Node "${d}": nested subflows may not go deeper than ${j} level(s); a parallel inline subflow was not compiled.`,d);continue}if(q>=k){e("subflow-too-many",`Node "${d}": compiling a parallel inline subflow would exceed the maximum of ${k} flows in one bundle; it was not compiled.`,d);continue}let c=a(f,g+1,h);c?b.push(c.id):e("subflow-child-empty",`Node "${d}": a "parallelSubflowSpecs" entry produced no usable flow.`,d)}b.length>0?(i.parallelSubflowIds=b,G(c,i)):e("parallel-empty",`Node "${d}": "parallelSubflowSpecs" produced no runnable lanes.`,d);return}n&&i.parallelSubflowIdsVar?G(c,i):void 0!==c.generateSubflow&&null!==c.generateSubflow?e("subflow-generate-unsupported",`Node "${d}": "generateSubflow" is only available through the AI flow generator. Use "subflowSpec" for deterministic nested authoring, or "flow" to reference an existing flow.`,d):e("subflow-missing-flow",`Node "${d}": subflow nodes need a "flow" (existing flow), a "subflowSpec" (inline child), "parallelFlows"/"parallelSubflowSpecs" (concurrent children), or "generateSubflow".`,d)}(d,l,C,J,p),void 0!==d.inputMode&&(w.has(d.inputMode)?p.inputMode=d.inputMode:f("invalid-input-mode",`Node "${l}": inputMode "${String(d.inputMode)}" is not valid (full-history | latest-message | isolated); omitted.`,l)),void 0!==d.outputMode&&(x.has(d.outputMode)?p.outputMode=d.outputMode:f("invalid-output-mode",`Node "${l}": outputMode "${String(d.outputMode)}" is not valid (steps | final-only); omitted.`,l)),void 0!==s){let{text:a,stripped:b,unresolved:d}=z(s,c.keepPills?{keepPills:!0}:{});for(let a of(b&&!c.keepPills&&f("pill-stripped",`Node "${l}": binding pills are not supported in generated prompts and were replaced with plain names.`,l),d))f("pill-unresolved",`Node "${l}": pill "${a}" not resolved against wired servers — stripped.`,l);p.promptTemplate=a}"boolean"==typeof d.allowCallerPrompt&&(p.allowCallerPrompt=d.allowCallerPrompt),"boolean"==typeof d.allowCallerFanout&&(p.allowCallerFanout=d.allowCallerFanout),"string"==typeof d.captureVariable&&d.captureVariable.trim()&&(p.captureVariable=d.captureVariable.trim()),"string"==typeof d.captureResource&&d.captureResource.trim()&&(p.captureResource=d.captureResource.trim()),"string"==typeof d.captureKv&&d.captureKv.trim()&&(p.captureKv=d.captureKv.trim())}else if("resource"===m){let a="string"==typeof d.runName?d.runName.trim():"",b="string"==typeof d.server?d.server.trim():"",c="string"==typeof d.uri?d.uri.trim():"";a?(p.scope="run",p.runName=a,(b||c)&&f("resource-both-bindings",`Node "${l}": a resource node is EITHER a run artifact ("runName") or a static MCP resource ("server"+"uri"); kept the run artifact.`,l)):(p.scope="mcp",b&&(p.boundServer=b),c&&(p.uri=c),b&&c?h.has(b)||f("server-unknown",`Node "${l}": MCP server "${b}" is not configured in FLUJO.`,l):f("resource-missing-binding",`Node "${l}": a static resource node needs both "server" and "uri" (or a "runName" for a run artifact).`,l))}else if("signal"===m){let a="string"==typeof d.topic?d.topic.trim():"";a?p.topic=a:f("signal-missing-topic",`Node "${l}": a signal node needs a "topic" to emit.`,l),"string"==typeof d.payloadTemplate&&d.payloadTemplate?p.payloadTemplate=d.payloadTemplate:void 0!==s&&(p.payloadTemplate=s)}let t={id:(0,n.A)(),type:m,position:{x:0,y:0},data:{label:"finish"===m?"Finish Node":d.label||`${m.charAt(0).toUpperCase()}${m.slice(1)} Node`,type:m,...d.description?{description:d.description}:{},properties:p}};if(K.set(l,t),L.push(t),"process"===m&&Array.isArray(d.servers)){let a=new Set;for(let b of d.servers){let c,d=b?.name;if(!d||"string"!=typeof d){f("server-missing-name",`Node "${l}": a server reference is missing its "name"; skipped.`,l);continue}if(a.has(d))continue;a.add(d),h.has(d)||f("server-unknown",`Node "${l}": MCP server "${d}" is not configured in FLUJO.`,l);let e=i[d];if(Array.isArray(b.tools)){if(c=b.tools.filter(a=>"string"==typeof a&&a),e){let a=c.filter(a=>!e.includes(a));a.length>0&&f("tool-unknown",`Node "${l}": server "${d}" does not report tool(s): ${a.join(", ")}.`,l)}}else c=e?[...e]:[];let g={id:(0,n.A)(),type:"mcp",position:{x:0,y:0},data:{label:d,type:"mcp",properties:{boundServer:d,enabledTools:c}}};L.push(g),M.push({processKey:l,mcpNode:g})}}else"process"!==m&&Array.isArray(d.servers)&&d.servers.length>0&&f("servers-on-non-process",`Node "${l}": only process nodes can have "servers"; ignored.`,l)}if(0===K.size)return e("no-usable-nodes","No usable nodes — the spec must contain at least a start node and one step."),null;let O=[],P=new Set;for(let a of F){let b,c=a?.from,d=a?.to,g=c?K.get(c):void 0,h=d?K.get(d):void 0;if(!g||!h){e("edge-unknown-node",`Edge "${String(c)}" -> "${String(d)}" references a node key that does not exist (or was dropped).`);continue}if(g===h){e("edge-self-loop",`Edge "${c}" -> "${d}": a node cannot connect to itself.`);continue}if("resource"===g.type||"resource"===h.type){if(("resource"!==g.type||"process"!==h.type)&&("process"!==g.type||"resource"!==h.type)){e("resource-edge-invalid",`Edge "${c}" -> "${d}": resource nodes connect only to process nodes.`);continue}a.condition&&f("resource-edge-condition",`Edge "${c}" -> "${d}": conditions do not apply to resource wiring; dropped.`),!0===a.bidirectional&&f("resource-edge-bidirectional",`Edge "${c}" -> "${d}": resource wiring is directional (read vs write); "bidirectional" was ignored — add the opposite edge explicitly if the step both reads and writes.`);let b=`${c}->${d}`;if(P.has(b)){f("edge-duplicate",`Edge "${c}" -> "${d}" appears more than once; kept the first.`);continue}P.add(b),O.push(function(a,b){let c="resource"===a.type?"resource-out":"process-right-resource",d="resource"===b.type?"resource-in":"process-left-resource";return{id:`${a.id}:${c}->${b.id}:${d}`,source:a.id,sourceHandle:c,target:b.id,targetHandle:d,type:"resourceEdge",data:{edgeType:"resource"},animated:!1,markerEnd:{...u},style:{...v}}}(g,h));continue}if("start"===h.type){e("edge-into-start",`Edge "${c}" -> "${d}": nothing may connect INTO a start node.`);continue}if("finish"===g.type){e("edge-out-of-finish",`Edge "${c}" -> "${d}": nothing may connect OUT OF a finish node.`);continue}let i=`${c}->${d}`;if(P.has(i)){f("edge-duplicate",`Edge "${c}" -> "${d}" appears more than once; kept the first.`);continue}P.add(i);let j=!0===a.bidirectional;j&&("start"===g.type||"finish"===h.type)&&(f("bidirectional-illegal",`Edge "${c}" -> "${d}" cannot be bidirectional; downgraded to one-way.`),j=!1);let k=a.condition;k&&"object"==typeof k&&("process"!==g.type?f("edge-condition-non-process",`Edge "${c}" -> "${d}" has a condition but leaves a ${g.type} node; conditions only route from process nodes and were dropped.`):(0,p.C)(k.kind)?"always"===k.kind?b={kind:"always",..."last-message"===k.target?{target:"last-message"}:{},...!0===k.negate?{negate:!0}:{}}:"string"!=typeof k.value||0===k.value.length?f("edge-condition-value",`Edge "${c}" -> "${d}" has a condition with no "value"; the condition was dropped.`):("regex"!==k.kind||(0,p.wM)(k.value)||f("edge-condition-regex",`Edge "${c}" -> "${d}" has a regex condition that does not compile; it is kept but will never match at runtime.`),b={kind:k.kind,value:k.value,..."last-message"===k.target?{target:"last-message"}:{},...!0===k.ignoreCase?{ignoreCase:!0}:{},...!0===k.negate?{negate:!0}:{}}):f("edge-condition-kind",`Edge "${c}" -> "${d}" has an unknown condition kind "${String(k.kind)}"; the condition was dropped.`)),O.push(function(a,b,c,d){let e=`${a.type}-bottom`,f=`${b.type}-top`;return{id:`${a.id}:${e}->${b.id}:${f}`,source:a.id,sourceHandle:e,target:b.id,targetHandle:f,type:"custom",data:{edgeType:"standard",...c?{bidirectional:!0}:{},...d?{condition:d}:{}},animated:!0}}(g,h,j,b))}for(let{processKey:a,mcpNode:b}of M){let c=K.get(a);O.push(function(a,b){let c="process-right-mcp",d="mcp-left";return{id:`${a.id}:${c}->${b.id}:${d}`,source:a.id,sourceHandle:c,target:b.id,targetHandle:d,type:"mcpEdge",data:{edgeType:"mcp"},animated:!1,markerEnd:{...s},markerStart:{...s},style:{...t}}}(c,b))}!function(a,b,c,d,e){let f=new Map;for(let a of c){let b=a.data?.edgeType;"mcp"!==b&&"resource"!==b&&(f.has(a.source)||f.set(a.source,[]),f.get(a.source).push(a.target))}let g=[...b.values()],h=g.filter(a=>"resource"===a.type),i=g.filter(a=>"resource"!==a.type),j=i.filter(a=>"start"===a.type),k=j.length>0?j:i.slice(0,1),l=new Map,m=k.map(a=>({id:a.id,depth:0}));for(let a of m)l.set(a.id,0);for(;m.length;){let{id:a,depth:b}=m.shift();for(let c of f.get(a)??[])l.has(c)||(l.set(c,b+1),m.push({id:c,depth:b+1}))}let n=0;for(let a of l.values())n=Math.max(n,a);for(let a of i)l.has(a.id)||l.set(a.id,n+1);let o=new Map;for(let[a,c]of b)o.set(c.id,a);let p=new Map;for(let a of i){let b=o.get(a.id),c=e&&b?e[b]:void 0;if(c&&"number"==typeof c.x&&"number"==typeof c.y){a.position={x:c.x,y:c.y};continue}let d=l.get(a.id),f=p.get(d)??0;p.set(d,f+1),a.position={x:250+280*f,y:150+170*d}}let q=new Map;for(let{processKey:a,mcpNode:c}of d){let d=b.get(a),e=q.get(a)??0;q.set(a,e+1),c.position={x:d.position.x+320,y:d.position.y+150*e}}let r=new Map(g.map(a=>[a.id,a])),s=new Map,t=0;for(let a of h){let b=o.get(a.id),d=e&&b?e[b]:void 0;if(d&&"number"==typeof d.x&&"number"==typeof d.y){a.position={x:d.x,y:d.y};continue}let f=c.find(b=>b.data?.edgeType==="resource"&&(b.source===a.id||b.target===a.id)),g=f?f.source===a.id?f.target:f.source:void 0,h=g?r.get(g):void 0;if(h){let b=s.get(h.id)??0;s.set(h.id,b+1),a.position={x:h.position.x-320,y:h.position.y+150*b}}else{let b=0;for(let a of i)b=Math.max(b,a.position.y);a.position={x:250+280*t,y:b+170},t++}}}(0,K,O,M,0===C?c.positions:void 0);let Q={id:I,name:H,...d?.description?{description:d.description}:{},nodes:L,edges:O};return l.push(Q),o.push({id:Q.id,name:Q.name}),Q}(a,0,[]),D=l,E=d;let F=E.filter(a=>"error"===a.severity).length;return{flow:C,flows:D,issues:E,errorCount:F,warningCount:E.length-F};function G(a,b){void 0!==a.concurrencyLimit&&("number"!=typeof a.concurrencyLimit||Number.isNaN(a.concurrencyLimit)?f("invalid-concurrency-limit",`Node "${a.key}": concurrencyLimit "${String(a.concurrencyLimit)}" is not a number; using the runtime default.`,a.key):b.concurrencyLimit=Math.max(1,Math.floor(a.concurrencyLimit))),"string"==typeof a.joinSeparator&&(b.joinSeparator=a.joinSeparator),void 0!==a.errorStrategy&&("fail-fast"===a.errorStrategy||"collect-all"===a.errorStrategy?b.errorStrategy=a.errorStrategy:f("invalid-error-strategy",`Node "${a.key}": errorStrategy "${String(a.errorStrategy)}" is not valid (fail-fast | collect-all); using collect-all.`,a.key))}}(a,d,{keepPills:b.keepPills});if(!e.flow)return{success:!1,error:"The spec could not be compiled into a flow",statusCode:422,issues:e.issues.map(a=>({severity:a.severity,code:a.code,message:a.message}))};b.updateFlowId&&(e.flow.id=b.updateFlowId);let f=e.flows.flatMap(a=>(0,C.nC)(a,{models:c.compile.models,servers:c.validatorServers,serverTools:c.compile.serverTools}).issues),g=function(a,b){let c=[...a.map(a=>({severity:a.severity,code:a.code,message:a.message})),...b.issues],d=c.filter(a=>"error"===a.severity).length;return{issues:c,errorCount:d,warningCount:c.length-d,isRunnable:0===d}}(e.issues,{issues:f,errorCount:0,warningCount:0,isRunnable:!0}),h=!1;if(b.save&&0===g.errorCount){for(let a of e.flows)await i.flowService.saveFlow(a);h=!0,H.info(`Compiled and saved ${e.flows.length} flow(s); root "${e.flow.name}" (${e.flow.id})`)}else b.save&&H.info(`Compiled flow "${e.flow.name}" has ${g.errorCount} error(s); NOT saved`);return{success:!0,flow:e.flow,flows:e.flows,validation:g,saved:h}}var J=c(32205),K=c(79111),L=c(34115),M=c(76654);let N=(0,h.h)("backend/execution/flow/loadConversationState");async function O(a){try{(0,K.ln)(a)}catch{N.warn("Rejected unsafe conversationId on load",{conversationId:a});return}if(J.FlowExecutor.conversationStates.has(a))return N.debug("Loaded state from memory",{conversationId:a}),J.FlowExecutor.conversationStates.get(a);let b=`conversations/${a}`;try{let c=await (0,K.YM)(b,void 0);if(c){N.debug("Loaded state from storage",{conversationId:a}),await (0,L.recoverMessagesFromLog)(c);try{let d=(0,L.repairDanglingToolCalls)(c);d.length&&(N.info("Repaired dangling tool call(s) on load",{conversationId:a,count:d.length}),await (0,L.appendRawForState)(c,d.map(a=>({type:"message",message:a}))),await (0,M.persistConversationState)(b,c))}catch(b){N.warn("Failed to repair dangling tool calls on load; continuing",{conversationId:a,repairError:b})}return J.FlowExecutor.conversationStates.set(a,c),c}}catch(b){N.warn("Error loading conversation state from storage",{conversationId:a,error:b})}}var P=c(96249),Q=c(63129),R=c(51172);let S=`A FlowSpec is a JSON object describing a FLUJO flow semantically — node keys and edges, no coordinates, no ids, no layout:
|
|
1
|
+
"use strict";exports.id=7579,exports.ids=[7579],exports.modules={17579:(a,b,c)=>{let d;c.d(b,{internalCallTool:()=>bn,internalToolDefinitions:()=>aT});var e=c(33873),f=c.n(e),g=c(29021),h=c(18230),i=c(11659),j=c(12763),k=c(50010),l=c(35432),m=c(64551),n=c(89850),o=c(8336),p=c(78606),q=c(17587);function r(a,b,c,d){return"number"!=typeof a||Number.isNaN(a)?d:Math.max(b,Math.min(c,Math.floor(a)))}let s={type:"arrowclosed",width:20,height:20,color:"#1976d2"},t={stroke:"#1976d2",strokeWidth:2},u={type:"arrowclosed",width:20,height:20,color:"#009688"},v={stroke:"#009688",strokeWidth:2},w=new Set(["full-history","latest-message","isolated"]),x=new Set(["steps","final-only"]),y=new Set(["full-conversation","latest-message"]);function z(a,b={}){let{keepPills:c=!1,wiredServers:d=new Set,validHandoffNames:e=new Set}=b,f=(0,o.A$)(a);if(0===f.length)return{text:a,stripped:!1,unresolved:[]};let g="",h=0,i=!1,j=[];for(let b of f){g+=a.slice(h,b.index),h=b.index+b.fullMatch.length;let f=!1;c&&(f="handoff"===b.server?e.has(b.name):d.has(b.server)),f?g+=b.fullMatch:(g+=b.name,i=!0,c&&j.push(b.fullMatch))}return{text:g+=a.slice(h),stripped:i,unresolved:j}}function A(a,b,c){let d=b.filter(b=>b.from===a).map(a=>c.get(a.to)).filter(Boolean).map(a=>({id:a.key??"",label:a.label,type:a.type}));return new Set((0,q.E9)(d).values())}function B(a,b){if(b.some(b=>b.id===a))return a;let c=a.toLowerCase(),d=b.find(a=>a.name.toLowerCase()===c);return d?d.id:null}var C=c(54898),D=c(52122);let E=(0,h.h)("backend/services/flow/generationContext");function F(a,b){let c=String(a).replace(/\s+/g," ").trim();return c.length<=b?c:`${c.slice(0,b).trimEnd()}…`}async function G(){let a=await j.modelService.loadModels(),b=a.map(a=>({id:a.id,name:a.name,...a.displayName?{displayName:a.displayName}:{},...a.description?{description:F(a.description,100)}:{}})),c=[],d={};try{let a=await D.mcpService.loadServerConfigs();if(Array.isArray(a))for(let b of a){if(b.disabled)continue;let a=!1;try{let c=await D.mcpService.getServerStatus(b.name);a=c?.status==="connected"}catch(a){E.debug(`getServerStatus failed for ${b.name}; listing name only`,a)}if(!a){c.push({name:b.name,connected:!1});continue}let{tools:e}=await D.mcpService.listServerTools(b.name),f=(e??[]).filter(a=>a.name).map(a=>({name:a.name,...a.description?{description:F(a.description,100)}:{}}));d[b.name]=f.map(a=>a.name),c.push({name:b.name,connected:!0,tools:f})}}catch(a){E.warn("Could not load MCP servers for the authoring context",a)}let e=[];try{e=await i.flowService.loadFlows()}catch(a){E.warn("Could not load flows for the authoring context",a)}let f={models:b,servers:c,flows:e.map(a=>({id:a.id,name:a.name,...a.description?{description:F(a.description,300)}:{},nodeCount:a.nodes?.length??0}))};return{blocks:f,compile:{models:a.map(a=>({id:a.id,name:a.name,displayName:a.displayName})),servers:c.map(a=>({name:a.name})),serverTools:d,flows:e.map(a=>({id:a.id,name:a.name}))},catalog:function(a){let b=[];for(let c of(b.push("AVAILABLE MODELS (reference by id or name):"),0===a.models.length&&b.push(" (none configured)"),a.models)){let a=c.displayName&&c.displayName!==c.name?`"${c.displayName}" (${c.name})`:c.name,d=c.description?` — ${c.description}`:"";b.push(` - id: ${c.id} — ${a}${d}`)}for(let c of(b.push("",'AVAILABLE MCP SERVERS (attach to process nodes via "servers"):'),0===a.servers.length&&b.push(" (none configured)"),a.servers)){if(!c.connected){b.push(` - ${c.name} (offline — tools unknown; may still be used)`);continue}b.push(` - ${c.name}:`);let a=(c.tools??[]).slice(0,20);for(let c of a){let a=c.description?` — ${c.description}`:"";b.push(` - ${c.name}${a}`)}let d=(c.tools?.length??0)-a.length;d>0&&b.push(` - …and ${d} more`)}for(let c of(b.push("",'EXISTING FLOWS (usable as subflow targets via "flow"):'),0===a.flows.length&&b.push(" (none)"),a.flows.slice(0,15))){let a=c.description?` — ${c.description}`:` — ${c.nodeCount} nodes`;b.push(` - "${c.name}"${a}`)}return a.flows.length>15&&b.push(` - …and ${a.flows.length-15} more`),b.join("\n")}(f),validatorServers:c.map(a=>({name:a.name,status:a.connected?"connected":"disconnected"}))}}let H=(0,h.h)("backend/services/flow/compileFlow");async function I(a,b={}){if(!a||"object"!=typeof a||Array.isArray(a))return{success:!1,error:"The spec must be a JSON object (a FlowSpec)",statusCode:400};let c=await G(),d=c.compile;if(b.updateFlowId){let a=d.flows??[];if(!a.some(a=>a.id===b.updateFlowId))return{success:!1,error:`No flow with id "${b.updateFlowId}" to update`,statusCode:404};d={...d,flows:a.filter(a=>a.id!==b.updateFlowId)}}let e=function(a,b={},c={}){let d=[],e=(a,b,c)=>d.push({severity:"error",code:a,message:b,nodeKey:c}),f=(a,b,c)=>d.push({severity:"warning",code:a,message:b,nodeKey:c}),g=b.models??[],h=new Set((b.servers??[]).map(a=>a.name)),i=b.serverTools??{},j=r(c.maxDepth,0,3,3),k=r(c.maxFlows,1,8,8),l=[],m=[...(b.flows??[]).map(a=>a.name)],o=[],q=0;var C=function a(d,C,D){let E=Array.isArray(d?.nodes)?d.nodes:[],F=Array.isArray(d?.edges)?d.edges:[],H=function(a,b){let c=(a??"").trim().replace(/[^\w-]+/g,"_").replace(/^_+|_+$/g,"");c||(c="generated_flow");let d=new Set(b.map(a=>a.toLowerCase()));if(!d.has(c.toLowerCase()))return c;for(let a=2;;a++){let b=`${c}_${a}`;if(!d.has(b.toLowerCase()))return b}}(d?.name,m);m.push(H),q++;let I=(0,n.A)(),J=[...D,H],K=new Map,L=[],M=[],N=new Map(E.filter(a=>a?.key&&"string"==typeof a.key).map(a=>[a.key,a]));for(let d of E){let l=d?.key;if(!l||"string"!=typeof l){e("node-missing-key",'A node is missing its "key" — every node needs a unique key.');continue}if(K.has(l)){e("node-duplicate-key",`Duplicate node key "${l}" — keys must be unique; the later node was dropped.`,l);continue}let m=d.type;if("mcp"===m){e("mcp-node-not-allowed",`Node "${l}": do not emit "mcp" nodes — attach servers to a process node via its "servers" list instead.`,l);continue}if("start"!==m&&"process"!==m&&"finish"!==m&&"subflow"!==m&&"resource"!==m&&"signal"!==m){e("unknown-node-type",`Node "${l}" has unknown type "${String(m)}".`,l);continue}let p={},s="string"==typeof d.prompt?d.prompt:void 0;if("start"===m){let{text:a,stripped:b,unresolved:e}=z(s??"",c.keepPills?{keepPills:!0,wiredServers:new Set((d.servers??[]).map(a=>a.name)),validHandoffNames:A(l,F,N)}:{});for(let a of(b&&!c.keepPills&&f("pill-stripped",`Node "${l}": binding pills are not supported in generated prompts and were replaced with plain names.`,l),e))f("pill-unresolved",`Node "${l}": pill "${a}" not resolved against wired servers — stripped.`,l);p.promptTemplate=a}else if("process"===m){let{text:a,stripped:b,unresolved:e}=z(s??"",c.keepPills?{keepPills:!0,wiredServers:new Set((d.servers??[]).map(a=>a.name)),validHandoffNames:A(l,F,N)}:{});for(let a of(b&&!c.keepPills&&f("pill-stripped",`Node "${l}": binding pills are not supported in generated prompts and were replaced with plain names.`,l),e))f("pill-unresolved",`Node "${l}": pill "${a}" not resolved against wired servers — stripped.`,l);if(p.promptTemplate=a,d.model){let a=function(a,b){if(b.some(b=>b.id===a))return a;let c=a.toLowerCase(),d=b.find(a=>a.displayName?.toLowerCase()===c);if(d)return d.id;let e=b.find(a=>a.name?.toLowerCase()===c);return e?e.id:null}(d.model,g);a?p.boundModel=a:(p.boundModel=d.model,f("model-unresolved",`Node "${l}": model "${d.model}" does not match any configured model (by id, display name, or name).`,l))}void 0!==d.inputMode&&(w.has(d.inputMode)?(p.inputMode=d.inputMode,"isolated"===d.inputMode&&"string"==typeof d.isolatedPrompt&&(p.isolatedPrompt=d.isolatedPrompt)):f("invalid-input-mode",`Node "${l}": inputMode "${String(d.inputMode)}" is not valid (full-history | latest-message | isolated); omitted.`,l)),"boolean"==typeof d.allowCallerPrompt&&(p.allowCallerPrompt=d.allowCallerPrompt),void 0!==d.outputMode&&(y.has(d.outputMode)?p.outputMode=d.outputMode:f("invalid-output-mode",`Node "${l}": outputMode "${String(d.outputMode)}" is not valid on a process node (full-conversation | latest-message); omitted.`,l)),void 0!==d.maxTurns&&("number"!=typeof d.maxTurns||Number.isNaN(d.maxTurns)?f("invalid-max-turns",`Node "${l}": maxTurns "${String(d.maxTurns)}" is not a number; omitted.`,l):p.maxTurns=r(d.maxTurns,1,1e3,1)),"boolean"==typeof d.excludeModelPrompt&&(p.excludeModelPrompt=d.excludeModelPrompt),"boolean"==typeof d.excludeStartNodePrompt&&(p.excludeStartNodePrompt=d.excludeStartNodePrompt),"boolean"==typeof d.excludeSystemPrompt&&(p.excludeSystemPrompt=d.excludeSystemPrompt),Array.isArray(d.allowedTools)&&(p.allowedTools=d.allowedTools.filter(a=>"string"==typeof a&&a)),"string"==typeof d.captureVariable&&d.captureVariable.trim()&&(p.captureVariable=d.captureVariable.trim()),"string"==typeof d.captureResource&&d.captureResource.trim()&&(p.captureResource=d.captureResource.trim()),"string"==typeof d.captureKv&&d.captureKv.trim()&&(p.captureKv=d.captureKv.trim())}else if("subflow"===m){if(function(c,d,g,h,i){let l=Array.isArray(c.parallelFlows)&&c.parallelFlows.length>0,m=Array.isArray(c.parallelSubflowSpecs)&&c.parallelSubflowSpecs.length>0,n="string"==typeof c.parallelFlowsVariable?c.parallelFlowsVariable.trim():"";if([void 0!==c.flow&&null!==c.flow?"flow":null,void 0!==c.subflowSpec&&null!==c.subflowSpec?"subflowSpec":null,l?"parallelFlows":null,m?"parallelSubflowSpecs":null,void 0!==c.generateSubflow&&null!==c.generateSubflow?"generateSubflow":null].filter(Boolean).length>1&&f("subflow-multiple-sources",`Node "${d}": a subflow node should have only one target source ("flow", "subflowSpec", "parallelFlows", "parallelSubflowSpecs", or "generateSubflow"); applying precedence flow > subflowSpec > parallelFlows > parallelSubflowSpecs > generateSubflow.`,d),!0===c.mapOverList){let a=void 0!==c.flow&&null!==c.flow||void 0!==c.subflowSpec&&null!==c.subflowSpec;(l||m)&&e("subflow-map-and-parallel",`Node "${d}": "mapOverList" runs a SINGLE child once per item and cannot be combined with "parallelFlows"/"parallelSubflowSpecs".`,d),a?(i.mapOverList=!0,void 0!==c.itemSplit&&("json-array"===c.itemSplit||"lines"===c.itemSplit?i.itemSplit=c.itemSplit:f("invalid-item-split",`Node "${d}": itemSplit "${String(c.itemSplit)}" is not valid (json-array | lines); using json-array.`,d)),!0===c.sequential&&(i.sequential=!0),G(c,i)):e("subflow-map-no-child",`Node "${d}": "mapOverList" needs a single child ("flow" or "subflowSpec") to run once per item.`,d)}let p=Array.isArray(c.spawnBriefs)?c.spawnBriefs.filter(a=>"string"==typeof a&&""!==a.trim()):[];if(p.length>0){let a=void 0!==c.flow&&null!==c.flow||void 0!==c.subflowSpec&&null!==c.subflowSpec;l||m?e("subflow-spawn-and-parallel",`Node "${d}": "spawnBriefs" runs a SINGLE child once per brief and cannot be combined with "parallelFlows"/"parallelSubflowSpecs".`,d):!0===c.mapOverList?e("subflow-spawn-and-map",`Node "${d}": "spawnBriefs" cannot be combined with "mapOverList"; use one lane source or the other.`,d):a?(i.spawnBriefs=p,G(c,i)):e("subflow-spawn-no-child",`Node "${d}": "spawnBriefs" needs a single child ("flow" or "subflowSpec") to spawn once per brief.`,d)}if(n&&(!0===c.mapOverList?e("subflow-map-and-parallel-var",`Node "${d}": "parallelFlowsVariable" (dynamic fan-out) cannot be combined with "mapOverList".`,d):i.parallelSubflowIdsVar=n),c.flow){if(h.some(a=>a.toLowerCase()===c.flow.toLowerCase()))return e("subflow-cycle",`Node "${d}": flow "${c.flow}" refers to an ancestor flow, which would create a cycle.`,d);let a=B(c.flow,[...b.flows??[],...o]);return a?i.subflowId=a:e("subflow-unresolved",`Node "${d}": flow "${c.flow}" does not match any existing flow (by id or name).`,d)}if(c.subflowSpec){if(g+1>j)return e("subflow-too-deep",`Node "${d}": nested subflows may not go deeper than ${j} level(s); this inline subflow was not compiled.`,d);if(q>=k)return e("subflow-too-many",`Node "${d}": compiling this inline subflow would exceed the maximum of ${k} flows in one bundle; it was not compiled.`,d);let b=a(c.subflowSpec,g+1,h);return b?i.subflowId=b.id:e("subflow-child-empty",`Node "${d}": the inline "subflowSpec" produced no usable flow.`,d)}if(l){let a=[];for(let f of c.parallelFlows){if("string"!=typeof f||!f){e("parallel-flow-invalid",`Node "${d}": a "parallelFlows" entry is missing or not a string.`,d);continue}if(h.some(a=>a.toLowerCase()===f.toLowerCase())){e("subflow-cycle",`Node "${d}": parallel flow "${f}" refers to an ancestor flow, which would create a cycle.`,d);continue}let c=B(f,[...b.flows??[],...o]);c?a.includes(c)||a.push(c):e("parallel-flow-unresolved",`Node "${d}": parallel flow "${f}" does not match any existing flow (by id or name).`,d)}a.length>0?(i.parallelSubflowIds=a,G(c,i)):e("parallel-empty",`Node "${d}": "parallelFlows" resolved to no runnable lanes.`,d);return}if(m){let b=[];for(let f of c.parallelSubflowSpecs){if(!f||"object"!=typeof f){e("parallel-spec-invalid",`Node "${d}": a "parallelSubflowSpecs" entry is not a FlowSpec object.`,d);continue}if(g+1>j){e("subflow-too-deep",`Node "${d}": nested subflows may not go deeper than ${j} level(s); a parallel inline subflow was not compiled.`,d);continue}if(q>=k){e("subflow-too-many",`Node "${d}": compiling a parallel inline subflow would exceed the maximum of ${k} flows in one bundle; it was not compiled.`,d);continue}let c=a(f,g+1,h);c?b.push(c.id):e("subflow-child-empty",`Node "${d}": a "parallelSubflowSpecs" entry produced no usable flow.`,d)}b.length>0?(i.parallelSubflowIds=b,G(c,i)):e("parallel-empty",`Node "${d}": "parallelSubflowSpecs" produced no runnable lanes.`,d);return}n&&i.parallelSubflowIdsVar?G(c,i):void 0!==c.generateSubflow&&null!==c.generateSubflow?e("subflow-generate-unsupported",`Node "${d}": "generateSubflow" is only available through the AI flow generator. Use "subflowSpec" for deterministic nested authoring, or "flow" to reference an existing flow.`,d):e("subflow-missing-flow",`Node "${d}": subflow nodes need a "flow" (existing flow), a "subflowSpec" (inline child), "parallelFlows"/"parallelSubflowSpecs" (concurrent children), or "generateSubflow".`,d)}(d,l,C,J,p),void 0!==d.inputMode&&(w.has(d.inputMode)?p.inputMode=d.inputMode:f("invalid-input-mode",`Node "${l}": inputMode "${String(d.inputMode)}" is not valid (full-history | latest-message | isolated); omitted.`,l)),void 0!==d.outputMode&&(x.has(d.outputMode)?p.outputMode=d.outputMode:f("invalid-output-mode",`Node "${l}": outputMode "${String(d.outputMode)}" is not valid (steps | final-only); omitted.`,l)),void 0!==s){let{text:a,stripped:b,unresolved:d}=z(s,c.keepPills?{keepPills:!0}:{});for(let a of(b&&!c.keepPills&&f("pill-stripped",`Node "${l}": binding pills are not supported in generated prompts and were replaced with plain names.`,l),d))f("pill-unresolved",`Node "${l}": pill "${a}" not resolved against wired servers — stripped.`,l);p.promptTemplate=a}"boolean"==typeof d.allowCallerPrompt&&(p.allowCallerPrompt=d.allowCallerPrompt),"boolean"==typeof d.allowCallerFanout&&(p.allowCallerFanout=d.allowCallerFanout),"string"==typeof d.captureVariable&&d.captureVariable.trim()&&(p.captureVariable=d.captureVariable.trim()),"string"==typeof d.captureResource&&d.captureResource.trim()&&(p.captureResource=d.captureResource.trim()),"string"==typeof d.captureKv&&d.captureKv.trim()&&(p.captureKv=d.captureKv.trim())}else if("resource"===m){let a="string"==typeof d.runName?d.runName.trim():"",b="string"==typeof d.server?d.server.trim():"",c="string"==typeof d.uri?d.uri.trim():"";a?(p.scope="run",p.runName=a,(b||c)&&f("resource-both-bindings",`Node "${l}": a resource node is EITHER a run artifact ("runName") or a static MCP resource ("server"+"uri"); kept the run artifact.`,l)):(p.scope="mcp",b&&(p.boundServer=b),c&&(p.uri=c),b&&c?h.has(b)||f("server-unknown",`Node "${l}": MCP server "${b}" is not configured in FLUJO.`,l):f("resource-missing-binding",`Node "${l}": a static resource node needs both "server" and "uri" (or a "runName" for a run artifact).`,l))}else if("signal"===m){let a="string"==typeof d.topic?d.topic.trim():"";a?p.topic=a:f("signal-missing-topic",`Node "${l}": a signal node needs a "topic" to emit.`,l),"string"==typeof d.payloadTemplate&&d.payloadTemplate?p.payloadTemplate=d.payloadTemplate:void 0!==s&&(p.payloadTemplate=s)}let t={id:(0,n.A)(),type:m,position:{x:0,y:0},data:{label:"finish"===m?"Finish Node":d.label||`${m.charAt(0).toUpperCase()}${m.slice(1)} Node`,type:m,...d.description?{description:d.description}:{},properties:p}};if(K.set(l,t),L.push(t),"process"===m&&Array.isArray(d.servers)){let a=new Set;for(let b of d.servers){let c,d=b?.name;if(!d||"string"!=typeof d){f("server-missing-name",`Node "${l}": a server reference is missing its "name"; skipped.`,l);continue}if(a.has(d))continue;a.add(d),h.has(d)||f("server-unknown",`Node "${l}": MCP server "${d}" is not configured in FLUJO.`,l);let e=i[d];if(Array.isArray(b.tools)){if(c=b.tools.filter(a=>"string"==typeof a&&a),e){let a=c.filter(a=>!e.includes(a));a.length>0&&f("tool-unknown",`Node "${l}": server "${d}" does not report tool(s): ${a.join(", ")}.`,l)}}else c=e?[...e]:[];let g={id:(0,n.A)(),type:"mcp",position:{x:0,y:0},data:{label:d,type:"mcp",properties:{boundServer:d,enabledTools:c}}};L.push(g),M.push({processKey:l,mcpNode:g})}}else"process"!==m&&Array.isArray(d.servers)&&d.servers.length>0&&f("servers-on-non-process",`Node "${l}": only process nodes can have "servers"; ignored.`,l)}if(0===K.size)return e("no-usable-nodes","No usable nodes — the spec must contain at least a start node and one step."),null;let O=[],P=new Set;for(let a of F){let b,c=a?.from,d=a?.to,g=c?K.get(c):void 0,h=d?K.get(d):void 0;if(!g||!h){e("edge-unknown-node",`Edge "${String(c)}" -> "${String(d)}" references a node key that does not exist (or was dropped).`);continue}if(g===h){e("edge-self-loop",`Edge "${c}" -> "${d}": a node cannot connect to itself.`);continue}if("resource"===g.type||"resource"===h.type){if(("resource"!==g.type||"process"!==h.type)&&("process"!==g.type||"resource"!==h.type)){e("resource-edge-invalid",`Edge "${c}" -> "${d}": resource nodes connect only to process nodes.`);continue}a.condition&&f("resource-edge-condition",`Edge "${c}" -> "${d}": conditions do not apply to resource wiring; dropped.`),!0===a.bidirectional&&f("resource-edge-bidirectional",`Edge "${c}" -> "${d}": resource wiring is directional (read vs write); "bidirectional" was ignored — add the opposite edge explicitly if the step both reads and writes.`);let b=`${c}->${d}`;if(P.has(b)){f("edge-duplicate",`Edge "${c}" -> "${d}" appears more than once; kept the first.`);continue}P.add(b),O.push(function(a,b){let c="resource"===a.type?"resource-out":"process-right-resource",d="resource"===b.type?"resource-in":"process-left-resource";return{id:`${a.id}:${c}->${b.id}:${d}`,source:a.id,sourceHandle:c,target:b.id,targetHandle:d,type:"resourceEdge",data:{edgeType:"resource"},animated:!1,markerEnd:{...u},style:{...v}}}(g,h));continue}if("start"===h.type){e("edge-into-start",`Edge "${c}" -> "${d}": nothing may connect INTO a start node.`);continue}if("finish"===g.type){e("edge-out-of-finish",`Edge "${c}" -> "${d}": nothing may connect OUT OF a finish node.`);continue}let i=`${c}->${d}`;if(P.has(i)){f("edge-duplicate",`Edge "${c}" -> "${d}" appears more than once; kept the first.`);continue}P.add(i);let j=!0===a.bidirectional;j&&("start"===g.type||"finish"===h.type)&&(f("bidirectional-illegal",`Edge "${c}" -> "${d}" cannot be bidirectional; downgraded to one-way.`),j=!1);let k=a.condition;k&&"object"==typeof k&&("process"!==g.type?f("edge-condition-non-process",`Edge "${c}" -> "${d}" has a condition but leaves a ${g.type} node; conditions only route from process nodes and were dropped.`):(0,p.C)(k.kind)?"always"===k.kind?b={kind:"always",..."last-message"===k.target?{target:"last-message"}:{},...!0===k.negate?{negate:!0}:{}}:"string"!=typeof k.value||0===k.value.length?f("edge-condition-value",`Edge "${c}" -> "${d}" has a condition with no "value"; the condition was dropped.`):("regex"!==k.kind||(0,p.wM)(k.value)||f("edge-condition-regex",`Edge "${c}" -> "${d}" has a regex condition that does not compile; it is kept but will never match at runtime.`),b={kind:k.kind,value:k.value,..."last-message"===k.target?{target:"last-message"}:{},...!0===k.ignoreCase?{ignoreCase:!0}:{},...!0===k.negate?{negate:!0}:{}}):f("edge-condition-kind",`Edge "${c}" -> "${d}" has an unknown condition kind "${String(k.kind)}"; the condition was dropped.`)),O.push(function(a,b,c,d){let e=`${a.type}-bottom`,f=`${b.type}-top`;return{id:`${a.id}:${e}->${b.id}:${f}`,source:a.id,sourceHandle:e,target:b.id,targetHandle:f,type:"custom",data:{edgeType:"standard",...c?{bidirectional:!0}:{},...d?{condition:d}:{}},animated:!0}}(g,h,j,b))}for(let{processKey:a,mcpNode:b}of M){let c=K.get(a);O.push(function(a,b){let c="process-right-mcp",d="mcp-left";return{id:`${a.id}:${c}->${b.id}:${d}`,source:a.id,sourceHandle:c,target:b.id,targetHandle:d,type:"mcpEdge",data:{edgeType:"mcp"},animated:!1,markerEnd:{...s},markerStart:{...s},style:{...t}}}(c,b))}!function(a,b,c,d,e){let f=new Map;for(let a of c){let b=a.data?.edgeType;"mcp"!==b&&"resource"!==b&&(f.has(a.source)||f.set(a.source,[]),f.get(a.source).push(a.target))}let g=[...b.values()],h=g.filter(a=>"resource"===a.type),i=g.filter(a=>"resource"!==a.type),j=i.filter(a=>"start"===a.type),k=j.length>0?j:i.slice(0,1),l=new Map,m=k.map(a=>({id:a.id,depth:0}));for(let a of m)l.set(a.id,0);for(;m.length;){let{id:a,depth:b}=m.shift();for(let c of f.get(a)??[])l.has(c)||(l.set(c,b+1),m.push({id:c,depth:b+1}))}let n=0;for(let a of l.values())n=Math.max(n,a);for(let a of i)l.has(a.id)||l.set(a.id,n+1);let o=new Map;for(let[a,c]of b)o.set(c.id,a);let p=new Map;for(let a of i){let b=o.get(a.id),c=e&&b?e[b]:void 0;if(c&&"number"==typeof c.x&&"number"==typeof c.y){a.position={x:c.x,y:c.y};continue}let d=l.get(a.id),f=p.get(d)??0;p.set(d,f+1),a.position={x:250+280*f,y:150+170*d}}let q=new Map;for(let{processKey:a,mcpNode:c}of d){let d=b.get(a),e=q.get(a)??0;q.set(a,e+1),c.position={x:d.position.x+320,y:d.position.y+150*e}}let r=new Map(g.map(a=>[a.id,a])),s=new Map,t=0;for(let a of h){let b=o.get(a.id),d=e&&b?e[b]:void 0;if(d&&"number"==typeof d.x&&"number"==typeof d.y){a.position={x:d.x,y:d.y};continue}let f=c.find(b=>b.data?.edgeType==="resource"&&(b.source===a.id||b.target===a.id)),g=f?f.source===a.id?f.target:f.source:void 0,h=g?r.get(g):void 0;if(h){let b=s.get(h.id)??0;s.set(h.id,b+1),a.position={x:h.position.x-320,y:h.position.y+150*b}}else{let b=0;for(let a of i)b=Math.max(b,a.position.y);a.position={x:250+280*t,y:b+170},t++}}}(0,K,O,M,0===C?c.positions:void 0);let Q={id:I,name:H,...d?.description?{description:d.description}:{},nodes:L,edges:O};return l.push(Q),o.push({id:Q.id,name:Q.name}),Q}(a,0,[]),D=l,E=d;let F=E.filter(a=>"error"===a.severity).length;return{flow:C,flows:D,issues:E,errorCount:F,warningCount:E.length-F};function G(a,b){void 0!==a.concurrencyLimit&&("number"!=typeof a.concurrencyLimit||Number.isNaN(a.concurrencyLimit)?f("invalid-concurrency-limit",`Node "${a.key}": concurrencyLimit "${String(a.concurrencyLimit)}" is not a number; using the runtime default.`,a.key):b.concurrencyLimit=Math.max(1,Math.floor(a.concurrencyLimit))),"string"==typeof a.joinSeparator&&(b.joinSeparator=a.joinSeparator),void 0!==a.errorStrategy&&("fail-fast"===a.errorStrategy||"collect-all"===a.errorStrategy?b.errorStrategy=a.errorStrategy:f("invalid-error-strategy",`Node "${a.key}": errorStrategy "${String(a.errorStrategy)}" is not valid (fail-fast | collect-all); using collect-all.`,a.key))}}(a,d,{keepPills:b.keepPills});if(!e.flow)return{success:!1,error:"The spec could not be compiled into a flow",statusCode:422,issues:e.issues.map(a=>({severity:a.severity,code:a.code,message:a.message}))};b.updateFlowId&&(e.flow.id=b.updateFlowId);let f=e.flows.flatMap(a=>(0,C.nC)(a,{models:c.compile.models,servers:c.validatorServers,serverTools:c.compile.serverTools}).issues),g=function(a,b){let c=[...a.map(a=>({severity:a.severity,code:a.code,message:a.message})),...b.issues],d=c.filter(a=>"error"===a.severity).length;return{issues:c,errorCount:d,warningCount:c.length-d,isRunnable:0===d}}(e.issues,{issues:f,errorCount:0,warningCount:0,isRunnable:!0}),h=!1;if(b.save&&0===g.errorCount){for(let a of e.flows)await i.flowService.saveFlow(a);h=!0,H.info(`Compiled and saved ${e.flows.length} flow(s); root "${e.flow.name}" (${e.flow.id})`)}else b.save&&H.info(`Compiled flow "${e.flow.name}" has ${g.errorCount} error(s); NOT saved`);return{success:!0,flow:e.flow,flows:e.flows,validation:g,saved:h}}var J=c(32205),K=c(79111),L=c(34115),M=c(76654);let N=(0,h.h)("backend/execution/flow/loadConversationState");async function O(a){try{(0,K.ln)(a)}catch{N.warn("Rejected unsafe conversationId on load",{conversationId:a});return}if(J.FlowExecutor.conversationStates.has(a))return N.debug("Loaded state from memory",{conversationId:a}),J.FlowExecutor.conversationStates.get(a);let b=`conversations/${a}`;try{let c=await (0,K.YM)(b,void 0);if(c){N.debug("Loaded state from storage",{conversationId:a}),await (0,L.recoverMessagesFromLog)(c);try{let d=(0,L.repairDanglingToolCalls)(c);d.length&&(N.info("Repaired dangling tool call(s) on load",{conversationId:a,count:d.length}),await (0,L.appendRawForState)(c,d.map(a=>({type:"message",message:a}))),await (0,M.persistConversationState)(b,c))}catch(b){N.warn("Failed to repair dangling tool calls on load; continuing",{conversationId:a,repairError:b})}return J.FlowExecutor.conversationStates.set(a,c),c}}catch(b){N.warn("Error loading conversation state from storage",{conversationId:a,error:b})}}var P=c(96249),Q=c(85510),R=c(51172);let S=`A FlowSpec is a JSON object describing a FLUJO flow semantically — node keys and edges, no coordinates, no ids, no layout:
|
|
2
2
|
{
|
|
3
3
|
"name": "short_flow_name", // letters/digits/_/- only
|
|
4
4
|
"description": "what the flow does",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=7724,exports.ids=[7724],exports.modules={354:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M20 6h-8l-2-2H7.17l4 4H20v9.17l1.76 1.76c.15-.28.24-.59.24-.93V8c0-1.1-.9-2-2-2M2.1 2.1.69 3.51l1.56 1.56c-.15.28-.24.59-.24.93L2 18c0 1.1.9 2 2 2h13.17l3.31 3.31 1.41-1.41zM4 18V6.83L15.17 18z"}),"FolderOffOutlined")},2117:(a,b,c)=>{c.d(b,{A:()=>i});var d=c(55511);let e={randomUUID:d.randomUUID},f=new Uint8Array(256),g=f.length,h=[];for(let a=0;a<256;++a)h.push((a+256).toString(16).slice(1));let i=function(a,b,c){if(e.randomUUID&&!b&&!a)return e.randomUUID();let i=(a=a||{}).random??a.rng?.()??(g>f.length-16&&((0,d.randomFillSync)(f),g=0),f.slice(g,g+=16));if(i.length<16)throw Error("Random bytes length must be >= 16");if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,b){if((c=c||0)<0||c+16>b.length)throw RangeError(`UUID byte range ${c}:${c+15} is out of buffer bounds`);for(let a=0;a<16;++a)b[c+a]=i[a];return b}return function(a,b=0){return(h[a[b+0]]+h[a[b+1]]+h[a[b+2]]+h[a[b+3]]+"-"+h[a[b+4]]+h[a[b+5]]+"-"+h[a[b+6]]+h[a[b+7]]+"-"+h[a[b+8]]+h[a[b+9]]+"-"+h[a[b+10]]+h[a[b+11]]+h[a[b+12]]+h[a[b+13]]+h[a[b+14]]+h[a[b+15]]).toLowerCase()}(i)}},5501:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M12 17.27 18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"}),"Star")},8165:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m-2 15-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8z"}),"CheckCircle")},12033:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83 3.75 3.75z"}),"Edit")},18467:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"m9.17 6 2 2H20v10H4V6zM10 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2h-8z"}),"FolderOutlined")},19427:(a,b,c)=>{c.d(b,{A:()=>aa});var d,e,f=c(38301),g=c(43249),h=c(2783),i=c(37489),j=c(92869),k=c(55973),l=c(66335),m=c(62383),n=c(10005);function o(a){return a.normalize("NFD").replace(/[\u0300-\u036f]/g,"")}let p=function(a={}){let{ignoreAccents:b=!0,ignoreCase:c=!0,limit:d,matchFrom:e="any",stringify:f,trim:g=!1}=a;return(a,{inputValue:h,getOptionLabel:i})=>{let j=g?h.trim():h;c&&(j=j.toLowerCase()),b&&(j=o(j));let k=j?a.filter(a=>{let d=(f||i)(a);return c&&(d=d.toLowerCase()),b&&(d=o(d)),"start"===e?d.startsWith(j):d.includes(j)}):a;return"number"==typeof d?k.slice(0,d):k}}(),q=a=>null!==a.current&&a.current.parentElement?.contains(document.activeElement),r=[];function s(a,b,c){if(b||null==a)return"";let d=c(a);return"string"==typeof d?d:""}let t=function(a){let{unstable_isActiveElementInListbox:b=q,unstable_classNamePrefix:c="Mui",autoComplete:d=!1,autoHighlight:e=!1,autoSelect:g=!1,blurOnSelect:h=!1,clearOnBlur:i=!a.freeSolo,clearOnEscape:o=!1,componentName:t="useAutocomplete",defaultValue:u=a.multiple?r:null,disableClearable:v=!1,disableCloseOnSelect:w=!1,disabled:x,disabledItemsFocusable:y=!1,disableListWrap:z=!1,filterOptions:A=p,filterSelectedOptions:B=!1,freeSolo:C=!1,getOptionDisabled:D,getOptionKey:E,getOptionLabel:F=a=>a.label??a,groupBy:G,handleHomeEndKeys:H=!a.freeSolo,id:I,includeInputInList:J=!1,inputValue:K,isOptionEqualToValue:L=(a,b)=>a===b,multiple:M=!1,onChange:N,onClose:O,onHighlightChange:P,onInputChange:Q,onOpen:R,open:S,openOnFocus:T=!1,options:U,readOnly:V=!1,selectOnFocus:W=!a.freeSolo,value:X}=a,Y=(0,j.A)(I),Z=F;Z=a=>{let b=F(a);return"string"!=typeof b?String(b):b};let $=f.useRef(!1),_=f.useRef(!0),aa=f.useRef(null),ab=f.useRef(null),[ac,ad]=f.useState(null),[ae,af]=f.useState(-1),ag=e?0:-1,ah=f.useRef(ag),ai=f.useRef(s(u??X,M,Z)).current,[aj,ak]=(0,k.A)({controlled:X,default:u,name:t}),[al,am]=(0,k.A)({controlled:K,default:ai,name:t,state:"inputValue"}),[an,ao]=f.useState(!1),ap=f.useCallback((a,b,c)=>{if(!(M?aj.length<b.length:null!==b)&&!i)return;let d=s(b,M,Z);al!==d&&(am(d),Q&&Q(a,d,c))},[Z,al,M,Q,am,i,aj]),[aq,ar]=(0,k.A)({controlled:S,default:!1,name:t,state:"open"}),[as,at]=f.useState(!0),au=!M&&null!=aj&&al===Z(aj),av=aq&&!V,aw=av?A(U.filter(a=>!(B&&(M?aj:[aj]).some(b=>null!==b&&L(a,b)))),{inputValue:au&&as?"":al,getOptionLabel:Z}):[],ax=(0,l.A)({filteredOptions:aw,value:aj,inputValue:al});f.useEffect(()=>{let a=aj!==ax.value;(!an||a)&&(!C||a)&&ap(null,aj,"reset")},[aj,ap,an,ax.value,C]);let ay=aq&&aw.length>0&&!V,az=(0,m.A)(a=>{-1===a?aa.current.focus():ac.querySelector(`[data-tag-index="${a}"]`).focus()});f.useEffect(()=>{M&&ae>aj.length-1&&(af(-1),az(-1))},[aj,M,ae,az]);let aA=(0,m.A)(({event:a,index:b,reason:d})=>{if(ah.current=b,-1===b?aa.current.removeAttribute("aria-activedescendant"):aa.current.setAttribute("aria-activedescendant",`${Y}-option-${b}`),P&&["mouse","keyboard","touch"].includes(d)&&P(a,-1===b?null:aw[b],d),!ab.current)return;let e=ab.current.querySelector(`[role="option"].${c}-focused`);e&&(e.classList.remove(`${c}-focused`),e.classList.remove(`${c}-focusVisible`));let f=ab.current;if("listbox"!==ab.current.getAttribute("role")&&(f=ab.current.parentElement.querySelector('[role="listbox"]')),!f)return;if(-1===b){f.scrollTop=0;return}let g=ab.current.querySelector(`[data-option-index="${b}"]`);if(g&&(g.classList.add(`${c}-focused`),"keyboard"===d&&g.classList.add(`${c}-focusVisible`),f.scrollHeight>f.clientHeight&&"mouse"!==d&&"touch"!==d)){let a=f.clientHeight+f.scrollTop,b=g.offsetTop+g.offsetHeight;b>a?f.scrollTop=b-f.clientHeight:g.offsetTop-g.offsetHeight*(1.3*!!G)<f.scrollTop&&(f.scrollTop=g.offsetTop-g.offsetHeight*(1.3*!!G))}}),aB=(0,m.A)(({event:a,diff:b,direction:c="next",reason:e})=>{if(!av)return;let f=function(a,b){if(!ab.current||a<0||a>=aw.length)return -1;let c=a;for(;;){let d=ab.current.querySelector(`[data-option-index="${c}"]`),e=!y&&(!d||d.disabled||"true"===d.getAttribute("aria-disabled"));if(d&&d.hasAttribute("tabindex")&&!e)return c;if((c="next"===b?(c+1)%aw.length:(c-1+aw.length)%aw.length)===a)return -1}}((()=>{let a=aw.length-1;if("reset"===b)return ag;if("start"===b)return 0;if("end"===b)return a;let c=ah.current+b;return c<0?-1===c&&J?-1:z&&-1!==ah.current||Math.abs(b)>1?0:a:c>a?c===a+1&&J?-1:z||Math.abs(b)>1?a:0:c})(),c);if(aA({index:f,reason:e,event:a}),d&&"reset"!==b)if(-1===f)aa.current.value=al;else{let a=Z(aw[f]);aa.current.value=a,0===a.toLowerCase().indexOf(al.toLowerCase())&&al.length>0&&aa.current.setSelectionRange(al.length,a.length)}}),aC=f.useCallback(()=>{if(!av)return;let a=(()=>{var a,b;if(-1!==ah.current&&ax.filteredOptions&&ax.filteredOptions.length!==aw.length&&ax.inputValue===al&&(M?aj.length===ax.value.length&&ax.value.every((a,b)=>Z(aj[b])===Z(a)):(a=ax.value,b=aj,(a?Z(a):"")===(b?Z(b):"")))){let a=ax.filteredOptions[ah.current];if(a)return aw.findIndex(b=>Z(b)===Z(a))}return -1})();if(-1!==a){ah.current=a;return}let b=M?aj[0]:aj;if(0===aw.length||null==b)return void aB({diff:"reset"});if(ab.current){if(null!=b){let a=aw[ah.current];if(M&&a&&-1!==aj.findIndex(b=>L(a,b)))return;let c=aw.findIndex(a=>L(a,b));-1===c?aB({diff:"reset"}):aA({index:c});return}if(ah.current>=aw.length-1)return void aA({index:aw.length-1});aA({index:ah.current})}},[aw.length,!M&&aj,B,aB,aA,av,al,M]),aD=(0,m.A)(a=>{(0,n.A)(ab,a),a&&aC()});f.useEffect(()=>{aC()},[aC]);let aE=a=>{!aq&&(ar(!0),at(!0),R&&R(a))},aF=(a,b)=>{aq&&(ar(!1),O&&O(a,b))},aG=(a,b,c,d)=>{if(M){if(aj.length===b.length&&aj.every((a,c)=>a===b[c]))return}else if(aj===b)return;N&&N(a,b,c,d),ak(b)},aH=f.useRef(!1),aI=(a,b,c="selectOption",d="options")=>{let e=c,f=b;if(M){let a=(f=Array.isArray(aj)?aj.slice():[]).findIndex(a=>L(b,a));-1===a?f.push(b):"freeSolo"!==d&&(f.splice(a,1),e="removeOption")}ap(a,f,e),aG(a,f,e,{option:b}),w||a&&(a.ctrlKey||a.metaKey)||aF(a,e),(!0===h||"touch"===h&&aH.current||"mouse"===h&&!aH.current)&&aa.current.blur()},aJ=(a,b)=>{if(!M)return;""===al&&aF(a,"toggleInput");let c=ae;-1===ae?""===al&&"previous"===b&&(c=aj.length-1):((c+="next"===b?1:-1)<0&&(c=0),c===aj.length&&(c=-1)),af(c=function(a,b){if(-1===a)return -1;let c=a;for(;;){if("next"===b&&c===aj.length||"previous"===b&&-1===c)return -1;let a=ac.querySelector(`[data-tag-index="${c}"]`);if(a&&a.hasAttribute("tabindex")&&!a.disabled&&"true"!==a.getAttribute("aria-disabled"))return c;c+="next"===b?1:-1}}(c,b)),az(c)},aK=a=>{$.current=!0,am(""),Q&&Q(a,"","clear"),aG(a,M?[]:null,"clear")},aL=a=>{ao(!0),T&&!$.current&&aE(a)},aM=a=>{if(b(ab))return void aa.current.focus();ao(!1),_.current=!0,$.current=!1,g&&-1!==ah.current&&av?aI(a,aw[ah.current],"blur"):g&&C&&""!==al?aI(a,al,"blur","freeSolo"):i&&ap(a,aj,"blur"),aF(a,"blur")},aN=a=>{let b=a.target.value;al!==b&&(am(b),at(!1),Q&&Q(a,b,"input")),""===b?v||M||aG(a,null,"clear"):aE(a)},aO=a=>{let b=Number(a.currentTarget.getAttribute("data-option-index"));ah.current!==b&&aA({event:a,index:b,reason:"mouse"})},aP=a=>{aA({event:a,index:Number(a.currentTarget.getAttribute("data-option-index")),reason:"touch"}),aH.current=!0},aQ=a=>{let b=Number(a.currentTarget.getAttribute("data-option-index"));aI(a,aw[b],"selectOption"),aH.current=!1},aR=a=>{aq?aF(a,"toggleInput"):aE(a)},aS=a=>{a.currentTarget.contains(a.target)&&a.target.getAttribute("id")!==Y&&a.preventDefault()},aT=a=>{a.currentTarget.contains(a.target)&&(aa.current.focus(),W&&_.current&&aa.current.selectionEnd-aa.current.selectionStart==0&&aa.current.select(),_.current=!1)},aU=a=>{x||""!==al&&aq||aR(a)},aV=C&&al.length>0;aV=aV||(M?aj.length>0:null!==aj);let aW=aw;return G&&(aW=aw.reduce((a,b,c)=>{let d=G(b);return a.length>0&&a[a.length-1].group===d?a[a.length-1].options.push(b):a.push({key:c,index:c,group:d,options:[b]}),a},[])),x&&an&&aM(),{getRootProps:(a={})=>({...a,onKeyDown:b=>{if(a.onKeyDown&&a.onKeyDown(b),!b.defaultMuiPrevented&&(-1===ae||["ArrowLeft","ArrowRight"].includes(b.key)||(af(-1),az(-1)),229!==b.which))switch(b.key){case"Home":av&&H&&(b.preventDefault(),aB({diff:"start",direction:"next",reason:"keyboard",event:b}));break;case"End":av&&H&&(b.preventDefault(),aB({diff:"end",direction:"previous",reason:"keyboard",event:b}));break;case"PageUp":b.preventDefault(),aB({diff:-5,direction:"previous",reason:"keyboard",event:b}),aE(b);break;case"PageDown":b.preventDefault(),aB({diff:5,direction:"next",reason:"keyboard",event:b}),aE(b);break;case"ArrowDown":b.preventDefault(),aB({diff:1,direction:"next",reason:"keyboard",event:b}),aE(b);break;case"ArrowUp":b.preventDefault(),aB({diff:-1,direction:"previous",reason:"keyboard",event:b}),aE(b);break;case"ArrowLeft":aJ(b,"previous");break;case"ArrowRight":aJ(b,"next");break;case"Enter":if(-1!==ah.current&&av){let a=aw[ah.current],c=!!D&&D(a);if(b.preventDefault(),c)return;aI(b,a,"selectOption"),d&&aa.current.setSelectionRange(aa.current.value.length,aa.current.value.length)}else C&&""!==al&&!1===au&&(M&&b.preventDefault(),aI(b,al,"createOption","freeSolo"));break;case"Escape":av?(b.preventDefault(),b.stopPropagation(),aF(b,"escape")):o&&(""!==al||M&&aj.length>0)&&(b.preventDefault(),b.stopPropagation(),aK(b));break;case"Backspace":if(M&&!V&&""===al&&aj.length>0){let a=-1===ae?aj.length-1:ae,c=aj.slice();c.splice(a,1),aG(b,c,"removeOption",{option:aj[a]})}break;case"Delete":if(M&&!V&&""===al&&aj.length>0&&-1!==ae){let a=aj.slice();a.splice(ae,1),aG(b,a,"removeOption",{option:aj[ae]})}}},onMouseDown:aS,onClick:aT}),getInputLabelProps:()=>({id:`${Y}-label`,htmlFor:Y}),getInputProps:()=>({id:Y,value:al,onBlur:aM,onFocus:aL,onChange:aN,onMouseDown:aU,"aria-activedescendant":av?"":null,"aria-autocomplete":d?"both":"list","aria-controls":ay?`${Y}-listbox`:void 0,"aria-expanded":ay,autoComplete:"off",ref:aa,autoCapitalize:"none",spellCheck:"false",role:"combobox",disabled:x}),getClearProps:()=>({tabIndex:-1,type:"button",onClick:aK}),getPopupIndicatorProps:()=>({tabIndex:-1,type:"button",onClick:aR}),getTagProps:({index:a})=>({key:a,"data-tag-index":a,tabIndex:-1,...!V&&{onDelete:b=>{let c=aj.slice();c.splice(a,1),aG(b,c,"removeOption",{option:aj[a]})}}}),getListboxProps:()=>({role:"listbox",id:`${Y}-listbox`,"aria-labelledby":`${Y}-label`,ref:aD,onMouseDown:a=>{a.preventDefault()}}),getOptionProps:({index:a,option:b})=>{let c=(M?aj:[aj]).some(a=>null!=a&&L(b,a)),d=!!D&&D(b);return{key:E?.(b)??Z(b),tabIndex:-1,role:"option",id:`${Y}-option-${a}`,onMouseMove:aO,onClick:aQ,onTouchStart:aP,"data-option-index":a,"aria-disabled":d,"aria-selected":c}},id:Y,inputValue:al,value:aj,dirty:aV,expanded:av&&ac,popupOpen:av,focused:an||-1!==ae,anchorEl:ac,setAnchorEl:ad,focusedTag:ae,groupedOptions:aW}};var u=c(31605),v=c(18168),w=c(68333),x=c(6636),y=c(6638),z=c(29565),A=c(33105);function B(a){return(0,A.Ay)("MuiListSubheader",a)}(0,z.A)("MuiListSubheader",["root","colorPrimary","colorInherit","gutters","inset","sticky"]);var C=c(21124);let D=(0,v.Ay)("li",{name:"MuiListSubheader",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,"default"!==c.color&&b[`color${(0,y.A)(c.color)}`],!c.disableGutters&&b.gutters,c.inset&&b.inset,!c.disableSticky&&b.sticky]}})((0,w.A)(({theme:a})=>({boxSizing:"border-box",lineHeight:"48px",listStyle:"none",color:(a.vars||a).palette.text.secondary,fontFamily:a.typography.fontFamily,fontWeight:a.typography.fontWeightMedium,fontSize:a.typography.pxToRem(14),variants:[{props:{color:"primary"},style:{color:(a.vars||a).palette.primary.main}},{props:{color:"inherit"},style:{color:"inherit"}},{props:({ownerState:a})=>!a.disableGutters,style:{paddingLeft:16,paddingRight:16}},{props:({ownerState:a})=>a.inset,style:{paddingLeft:72}},{props:({ownerState:a})=>!a.disableSticky,style:{position:"sticky",top:0,zIndex:1,backgroundColor:(a.vars||a).palette.background.paper}}]}))),E=f.forwardRef(function(a,b){let c=(0,x.b)({props:a,name:"MuiListSubheader"}),{className:d,color:e="default",component:f="li",disableGutters:i=!1,disableSticky:j=!1,inset:k=!1,...l}=c,m={...c,color:e,component:f,disableGutters:i,disableSticky:j,inset:k},n=(a=>{let{classes:b,color:c,disableGutters:d,inset:e,disableSticky:f}=a,g={root:["root","default"!==c&&`color${(0,y.A)(c)}`,!d&&"gutters",e&&"inset",!f&&"sticky"]};return(0,h.A)(g,B,b)})(m);return(0,C.jsx)(D,{as:f,className:(0,g.A)(n.root,d),ref:b,ownerState:m,...l})});E&&(E.muiSkipListHighlight=!0);var F=c(54573),G=c(44079),H=c(41893),I=c(88679),J=c(13763),K=c(91003),L=c(37659),M=c(88570),N=c(41606);function O(a){return(0,A.Ay)("MuiAutocomplete",a)}let P=(0,z.A)("MuiAutocomplete",["root","expanded","fullWidth","focused","focusVisible","tag","tagSizeSmall","tagSizeMedium","hasPopupIcon","hasClearIcon","inputRoot","input","inputFocused","endAdornment","clearIndicator","popupIndicator","popupIndicatorOpen","popper","popperDisablePortal","paper","listbox","loading","noOptions","option","groupLabel","groupUl"]);var Q=c(20385);let R=(0,v.Ay)("div",{name:"MuiAutocomplete",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a,{fullWidth:d,hasClearIcon:e,hasPopupIcon:f,inputFocused:g,size:h}=c;return[{[`& .${P.tag}`]:b.tag},{[`& .${P.tag}`]:b[`tagSize${(0,y.A)(h)}`]},{[`& .${P.inputRoot}`]:b.inputRoot},{[`& .${P.input}`]:b.input},{[`& .${P.input}`]:g&&b.inputFocused},b.root,d&&b.fullWidth,f&&b.hasPopupIcon,e&&b.hasClearIcon]}})({[`&.${P.focused} .${P.clearIndicator}`]:{visibility:"visible"},"@media (pointer: fine)":{[`&:hover .${P.clearIndicator}`]:{visibility:"visible"}},[`& .${P.tag}`]:{margin:3,maxWidth:"calc(100% - 6px)"},[`& .${P.inputRoot}`]:{[`.${P.hasPopupIcon}&, .${P.hasClearIcon}&`]:{paddingRight:30},[`.${P.hasPopupIcon}.${P.hasClearIcon}&`]:{paddingRight:56},[`& .${P.input}`]:{width:0,minWidth:30}},[`& .${I.A.root}`]:{paddingBottom:1,"& .MuiInput-input":{padding:"4px 4px 4px 0px"}},[`& .${I.A.root}.${J.A.sizeSmall}`]:{[`& .${I.A.input}`]:{padding:"2px 4px 3px 0"}},[`& .${K.A.root}`]:{padding:9,[`.${P.hasPopupIcon}&, .${P.hasClearIcon}&`]:{paddingRight:39},[`.${P.hasPopupIcon}.${P.hasClearIcon}&`]:{paddingRight:65},[`& .${P.input}`]:{padding:"7.5px 4px 7.5px 5px"},[`& .${P.endAdornment}`]:{right:9}},[`& .${K.A.root}.${J.A.sizeSmall}`]:{paddingTop:6,paddingBottom:6,paddingLeft:6,[`& .${P.input}`]:{padding:"2.5px 4px 2.5px 8px"}},[`& .${L.A.root}`]:{paddingTop:19,paddingLeft:8,[`.${P.hasPopupIcon}&, .${P.hasClearIcon}&`]:{paddingRight:39},[`.${P.hasPopupIcon}.${P.hasClearIcon}&`]:{paddingRight:65},[`& .${L.A.input}`]:{padding:"7px 4px"},[`& .${P.endAdornment}`]:{right:9}},[`& .${L.A.root}.${J.A.sizeSmall}`]:{paddingBottom:1,[`& .${L.A.input}`]:{padding:"2.5px 4px"}},[`& .${J.A.hiddenLabel}`]:{paddingTop:8},[`& .${L.A.root}.${J.A.hiddenLabel}`]:{paddingTop:0,paddingBottom:0,[`& .${P.input}`]:{paddingTop:16,paddingBottom:17}},[`& .${L.A.root}.${J.A.hiddenLabel}.${J.A.sizeSmall}`]:{[`& .${P.input}`]:{paddingTop:8,paddingBottom:9}},[`& .${P.input}`]:{flexGrow:1,textOverflow:"ellipsis",opacity:0},variants:[{props:{fullWidth:!0},style:{width:"100%"}},{props:{size:"small"},style:{[`& .${P.tag}`]:{margin:2,maxWidth:"calc(100% - 4px)"}}},{props:{inputFocused:!0},style:{[`& .${P.input}`]:{opacity:1}}},{props:{multiple:!0},style:{[`& .${P.inputRoot}`]:{flexWrap:"wrap"}}}]}),S=(0,v.Ay)("div",{name:"MuiAutocomplete",slot:"EndAdornment",overridesResolver:(a,b)=>b.endAdornment})({position:"absolute",right:0,top:"50%",transform:"translate(0, -50%)"}),T=(0,v.Ay)(G.A,{name:"MuiAutocomplete",slot:"ClearIndicator",overridesResolver:(a,b)=>b.clearIndicator})({marginRight:-2,padding:4,visibility:"hidden"}),U=(0,v.Ay)(G.A,{name:"MuiAutocomplete",slot:"PopupIndicator",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.popupIndicator,c.popupOpen&&b.popupIndicatorOpen]}})({padding:2,marginRight:-2,variants:[{props:{popupOpen:!0},style:{transform:"rotate(180deg)"}}]}),V=(0,v.Ay)(u.A,{name:"MuiAutocomplete",slot:"Popper",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[{[`& .${P.option}`]:b.option},b.popper,c.disablePortal&&b.popperDisablePortal]}})((0,w.A)(({theme:a})=>({zIndex:(a.vars||a).zIndex.modal,variants:[{props:{disablePortal:!0},style:{position:"absolute"}}]}))),W=(0,v.Ay)(F.A,{name:"MuiAutocomplete",slot:"Paper",overridesResolver:(a,b)=>b.paper})((0,w.A)(({theme:a})=>({...a.typography.body1,overflow:"auto"}))),X=(0,v.Ay)("div",{name:"MuiAutocomplete",slot:"Loading",overridesResolver:(a,b)=>b.loading})((0,w.A)(({theme:a})=>({color:(a.vars||a).palette.text.secondary,padding:"14px 16px"}))),Y=(0,v.Ay)("div",{name:"MuiAutocomplete",slot:"NoOptions",overridesResolver:(a,b)=>b.noOptions})((0,w.A)(({theme:a})=>({color:(a.vars||a).palette.text.secondary,padding:"14px 16px"}))),Z=(0,v.Ay)("ul",{name:"MuiAutocomplete",slot:"Listbox",overridesResolver:(a,b)=>b.listbox})((0,w.A)(({theme:a})=>({listStyle:"none",margin:0,padding:"8px 0",maxHeight:"40vh",overflow:"auto",position:"relative",[`& .${P.option}`]:{minHeight:48,display:"flex",overflow:"hidden",justifyContent:"flex-start",alignItems:"center",cursor:"pointer",paddingTop:6,boxSizing:"border-box",outline:"0",WebkitTapHighlightColor:"transparent",paddingBottom:6,paddingLeft:16,paddingRight:16,[a.breakpoints.up("sm")]:{minHeight:"auto"},[`&.${P.focused}`]:{backgroundColor:(a.vars||a).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},'&[aria-disabled="true"]':{opacity:(a.vars||a).palette.action.disabledOpacity,pointerEvents:"none"},[`&.${P.focusVisible}`]:{backgroundColor:(a.vars||a).palette.action.focus},'&[aria-selected="true"]':{backgroundColor:a.vars?`rgba(${a.vars.palette.primary.mainChannel} / ${a.vars.palette.action.selectedOpacity})`:(0,i.X4)(a.palette.primary.main,a.palette.action.selectedOpacity),[`&.${P.focused}`]:{backgroundColor:a.vars?`rgba(${a.vars.palette.primary.mainChannel} / calc(${a.vars.palette.action.selectedOpacity} + ${a.vars.palette.action.hoverOpacity}))`:(0,i.X4)(a.palette.primary.main,a.palette.action.selectedOpacity+a.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:(a.vars||a).palette.action.selected}},[`&.${P.focusVisible}`]:{backgroundColor:a.vars?`rgba(${a.vars.palette.primary.mainChannel} / calc(${a.vars.palette.action.selectedOpacity} + ${a.vars.palette.action.focusOpacity}))`:(0,i.X4)(a.palette.primary.main,a.palette.action.selectedOpacity+a.palette.action.focusOpacity)}}}}))),$=(0,v.Ay)(E,{name:"MuiAutocomplete",slot:"GroupLabel",overridesResolver:(a,b)=>b.groupLabel})((0,w.A)(({theme:a})=>({backgroundColor:(a.vars||a).palette.background.paper,top:-8}))),_=(0,v.Ay)("ul",{name:"MuiAutocomplete",slot:"GroupUl",overridesResolver:(a,b)=>b.groupUl})({padding:0,[`& .${P.option}`]:{paddingLeft:24}}),aa=f.forwardRef(function(a,b){let c,i=(0,x.b)({props:a,name:"MuiAutocomplete"}),{autoComplete:j=!1,autoHighlight:k=!1,autoSelect:l=!1,blurOnSelect:m=!1,ChipProps:n,className:o,clearIcon:p=d||(d=(0,C.jsx)(M.A,{fontSize:"small"})),clearOnBlur:q=!i.freeSolo,clearOnEscape:r=!1,clearText:s="Clear",closeText:v="Close",componentsProps:w,defaultValue:z=i.multiple?[]:null,disableClearable:A=!1,disableCloseOnSelect:B=!1,disabled:D=!1,disabledItemsFocusable:E=!1,disableListWrap:G=!1,disablePortal:I=!1,filterOptions:J,filterSelectedOptions:K=!1,forcePopupIcon:L="auto",freeSolo:P=!1,fullWidth:aa=!1,getLimitTagsText:ab=a=>`+${a}`,getOptionDisabled:ac,getOptionKey:ad,getOptionLabel:ae,isOptionEqualToValue:af,groupBy:ag,handleHomeEndKeys:ah=!i.freeSolo,id:ai,includeInputInList:aj=!1,inputValue:ak,limitTags:al=-1,ListboxComponent:am,ListboxProps:an,loading:ao=!1,loadingText:ap="Loading…",multiple:aq=!1,noOptionsText:ar="No options",onChange:as,onClose:at,onHighlightChange:au,onInputChange:av,onOpen:aw,open:ax,openOnFocus:ay=!1,openText:az="Open",options:aA,PaperComponent:aB,PopperComponent:aC,popupIcon:aD=e||(e=(0,C.jsx)(N.A,{})),readOnly:aE=!1,renderGroup:aF,renderInput:aG,renderOption:aH,renderTags:aI,selectOnFocus:aJ=!i.freeSolo,size:aK="medium",slots:aL={},slotProps:aM={},value:aN,...aO}=i,{getRootProps:aP,getInputProps:aQ,getInputLabelProps:aR,getPopupIndicatorProps:aS,getClearProps:aT,getTagProps:aU,getListboxProps:aV,getOptionProps:aW,value:aX,dirty:aY,expanded:aZ,id:a$,popupOpen:a_,focused:a0,focusedTag:a1,anchorEl:a2,setAnchorEl:a3,inputValue:a4,groupedOptions:a5}=t({...i,componentName:"Autocomplete"}),a6=!A&&!D&&aY&&!aE,a7=(!P||!0===L)&&!1!==L,{onMouseDown:a8}=aQ(),{ref:a9,...ba}=aV(),bb=ae||(a=>a.label??a),bc={...i,disablePortal:I,expanded:aZ,focused:a0,fullWidth:aa,getOptionLabel:bb,hasClearIcon:a6,hasPopupIcon:a7,inputFocused:-1===a1,popupOpen:a_,size:aK},bd=(a=>{let{classes:b,disablePortal:c,expanded:d,focused:e,fullWidth:f,hasClearIcon:g,hasPopupIcon:i,inputFocused:j,popupOpen:k,size:l}=a,m={root:["root",d&&"expanded",e&&"focused",f&&"fullWidth",g&&"hasClearIcon",i&&"hasPopupIcon"],inputRoot:["inputRoot"],input:["input",j&&"inputFocused"],tag:["tag",`tagSize${(0,y.A)(l)}`],endAdornment:["endAdornment"],clearIndicator:["clearIndicator"],popupIndicator:["popupIndicator",k&&"popupIndicatorOpen"],popper:["popper",c&&"popperDisablePortal"],paper:["paper"],listbox:["listbox"],loading:["loading"],noOptions:["noOptions"],option:["option"],groupLabel:["groupLabel"],groupUl:["groupUl"]};return(0,h.A)(m,O,b)})(bc),be={slots:{paper:aB,popper:aC,...aL},slotProps:{chip:n,listbox:an,...w,...aM}},[bf,bg]=(0,Q.A)("listbox",{elementType:Z,externalForwardedProps:be,ownerState:bc,className:bd.listbox,additionalProps:ba,ref:a9}),[bh,bi]=(0,Q.A)("paper",{elementType:F.A,externalForwardedProps:be,ownerState:bc,className:bd.paper}),[bj,bk]=(0,Q.A)("popper",{elementType:u.A,externalForwardedProps:be,ownerState:bc,className:bd.popper,additionalProps:{disablePortal:I,style:{width:a2?a2.clientWidth:null},role:"presentation",anchorEl:a2,open:a_}});if(aq&&aX.length>0){let a=a=>({className:bd.tag,disabled:D,...aU(a)});c=aI?aI(aX,a,bc):aX.map((b,c)=>{let{key:d,...e}=a({index:c});return(0,C.jsx)(H.A,{label:bb(b),size:aK,...e,...be.slotProps.chip},d)})}if(al>-1&&Array.isArray(c)){let a=c.length-al;!a0&&a>0&&(c=c.splice(0,al)).push((0,C.jsx)("span",{className:bd.tag,children:ab(a)},c.length))}let bl=aF||(a=>(0,C.jsxs)("li",{children:[(0,C.jsx)($,{className:bd.groupLabel,ownerState:bc,component:"div",children:a.group}),(0,C.jsx)(_,{className:bd.groupUl,ownerState:bc,children:a.children})]},a.key)),bm=aH||((a,b)=>{let{key:c,...d}=a;return(0,C.jsx)("li",{...d,children:bb(b)},c)}),bn=(a,b)=>{let c=aW({option:a,index:b});return bm({...c,className:bd.option},a,{selected:c["aria-selected"],index:b,inputValue:a4},bc)},bo=be.slotProps.clearIndicator,bp=be.slotProps.popupIndicator;return(0,C.jsxs)(f.Fragment,{children:[(0,C.jsx)(R,{ref:b,className:(0,g.A)(bd.root,o),ownerState:bc,...aP(aO),children:aG({id:a$,disabled:D,fullWidth:!0,size:"small"===aK?"small":void 0,InputLabelProps:aR(),InputProps:{ref:a3,className:bd.inputRoot,startAdornment:c,onMouseDown:a=>{a.target===a.currentTarget&&a8(a)},...(a6||a7)&&{endAdornment:(0,C.jsxs)(S,{className:bd.endAdornment,ownerState:bc,children:[a6?(0,C.jsx)(T,{...aT(),"aria-label":s,title:s,ownerState:bc,...bo,className:(0,g.A)(bd.clearIndicator,bo?.className),children:p}):null,a7?(0,C.jsx)(U,{...aS(),disabled:D,"aria-label":a_?v:az,title:a_?v:az,ownerState:bc,...bp,className:(0,g.A)(bd.popupIndicator,bp?.className),children:aD}):null]})}},inputProps:{className:bd.input,disabled:D,readOnly:aE,...aQ()}})}),a2?(0,C.jsx)(V,{as:bj,...bk,children:(0,C.jsxs)(W,{as:bh,...bi,children:[ao&&0===a5.length?(0,C.jsx)(X,{className:bd.loading,ownerState:bc,children:ap}):null,0!==a5.length||P||ao?null:(0,C.jsx)(Y,{className:bd.noOptions,ownerState:bc,role:"presentation",onMouseDown:a=>{a.preventDefault()},children:ar}),a5.length>0?(0,C.jsx)(bf,{as:am,...bg,children:a5.map((a,b)=>ag?bl({key:a.key,group:a.group,children:a.options.map((b,c)=>bn(b,a.index+c))}):bn(a,b))}):null]})}):null]})})},31973:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M20 6h-8l-2-2H4c-1.11 0-1.99.89-1.99 2L2 18c0 1.11.89 2 2 2h16c1.11 0 2-.89 2-2V8c0-1.11-.89-2-2-2m0 12H4V6h5.17l2 2H20zm-8-4h2v2h2v-2h2v-2h-2v-2h-2v2h-2z"}),"CreateNewFolderOutlined")},36698:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"}),"Check")},65343:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-2h2zm0-4h-2V7h2z"}),"Error")},66335:(a,b,c)=>{c.d(b,{A:()=>e});var d=c(38301);let e=a=>{let b=d.useRef({});return d.useEffect(()=>{b.current=a}),b.current}},98463:(a,b,c)=>{c.d(b,{A:()=>n});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(6636),i=c(29565),j=c(33105);function k(a){return(0,j.Ay)("MuiCardActions",a)}(0,i.A)("MuiCardActions",["root","spacing"]);var l=c(21124);let m=(0,g.Ay)("div",{name:"MuiCardActions",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,!c.disableSpacing&&b.spacing]}})({display:"flex",alignItems:"center",padding:8,variants:[{props:{disableSpacing:!1},style:{"& > :not(style) ~ :not(style)":{marginLeft:8}}}]}),n=d.forwardRef(function(a,b){let c=(0,h.b)({props:a,name:"MuiCardActions"}),{disableSpacing:d=!1,className:g,...i}=c,j={...c,disableSpacing:d},n=(a=>{let{classes:b,disableSpacing:c}=a;return(0,f.A)({root:["root",!c&&"spacing"]},k,b)})(j);return(0,l.jsx)(m,{className:(0,e.A)(n.root,g),ownerState:j,ref:b,...i})})},99587:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"m22 9.24-7.19-.62L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21 12 17.27 18.18 21l-1.63-7.03zM12 15.4l-3.76 2.27 1-4.28-3.32-2.88 4.38-.38L12 6.1l1.71 4.04 4.38.38-3.32 2.88 1 4.28z"}),"StarBorder")}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=8034,exports.ids=[8034],exports.modules={1312:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2m0 12H4V6h5.17l1.41 1.41.59.59H20zm-7.84-6H8v2h4.16l-1.59 1.59L11.99 17 16 13.01 11.99 9l-1.41 1.41z"}),"DriveFileMoveOutlined")},5748:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M13 13v8h8v-8zM3 21h8v-8H3zM3 3v8h8V3zm13.66-1.31L11 7.34 16.66 13l5.66-5.66z"}),"Widgets")},15059:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2m6.93 6h-2.95c-.32-1.25-.78-2.45-1.38-3.56 1.84.63 3.37 1.91 4.33 3.56M12 4.04c.83 1.2 1.48 2.53 1.91 3.96h-3.82c.43-1.43 1.08-2.76 1.91-3.96M4.26 14C4.1 13.36 4 12.69 4 12s.1-1.36.26-2h3.38c-.08.66-.14 1.32-.14 2s.06 1.34.14 2zm.82 2h2.95c.32 1.25.78 2.45 1.38 3.56-1.84-.63-3.37-1.9-4.33-3.56m2.95-8H5.08c.96-1.66 2.49-2.93 4.33-3.56C8.81 5.55 8.35 6.75 8.03 8M12 19.96c-.83-1.2-1.48-2.53-1.91-3.96h3.82c-.43 1.43-1.08 2.76-1.91 3.96M14.34 14H9.66c-.09-.66-.16-1.32-.16-2s.07-1.35.16-2h4.68c.09.65.16 1.32.16 2s-.07 1.34-.16 2m.25 5.56c.6-1.11 1.06-2.31 1.38-3.56h2.95c-.96 1.65-2.49 2.93-4.33 3.56M16.36 14c.08-.66.14-1.32.14-2s-.06-1.34-.14-2h3.38c.16.64.26 1.31.26 2s-.1 1.36-.26 2z"}),"Language")},21358:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)([(0,e.jsx)("path",{d:"M12 5.99 19.53 19H4.47zM12 2 1 21h22z"},"0"),(0,e.jsx)("path",{d:"M13 16h-2v2h2zm0-6h-2v5h2z"},"1")],"WarningAmber")},25750:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"m12 16.5 4-4h-3v-9h-2v9H8zm9-13h-6v1.99h6v14.03H3V5.49h6V3.5H3c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h18c1.1 0 2-.9 2-2v-14c0-1.1-.9-2-2-2"}),"SystemUpdateAlt")},29320:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m-1 17.93c-3.95-.49-7-3.85-7-7.93 0-.62.08-1.21.21-1.79L9 15v1c0 1.1.9 2 2 2zm6.9-2.54c-.26-.81-1-1.39-1.9-1.39h-1v-3c0-.55-.45-1-1-1H8v-2h2c.55 0 1-.45 1-1V7h2c1.1 0 2-.9 2-2v-.41c2.93 1.19 5 4.06 5 7.41 0 2.08-.8 3.97-2.1 5.39"}),"Public")},30137:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close")},30717:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M10 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")},30873:(a,b,c)=>{c.d(b,{A:()=>I});var d=c(38301),e=c(2783),f=c(74846),g=c(62383),h=c(69979);let i=function(a={}){let{autoHideDuration:b=null,disableWindowBlurListener:c=!1,onClose:e,open:i,resumeHideDuration:j}=a,k=(0,f.A)();d.useEffect(()=>{if(i)return document.addEventListener("keydown",a),()=>{document.removeEventListener("keydown",a)};function a(a){a.defaultPrevented||"Escape"!==a.key||e?.(a,"escapeKeyDown")}},[i,e]);let l=(0,g.A)((a,b)=>{e?.(a,b)}),m=(0,g.A)(a=>{e&&null!=a&&k.start(a,()=>{l(null,"timeout")})});d.useEffect(()=>(i&&m(b),k.clear),[i,b,m,k]);let n=k.clear,o=d.useCallback(()=>{null!=b&&m(null!=j?j:.5*b)},[b,j,m]);return d.useEffect(()=>{if(!c&&i)return window.addEventListener("focus",o),window.addEventListener("blur",n),()=>{window.removeEventListener("focus",o),window.removeEventListener("blur",n)}},[c,i,o,n]),{getRootProps:(b={})=>{let c={...(0,h.A)(a),...(0,h.A)(b)};return{role:"presentation",...b,...c,onBlur:a=>{let b=c.onBlur;b?.(a),o()},onFocus:a=>{let b=c.onFocus;b?.(a),n()},onMouseEnter:a=>{let b=c.onMouseEnter;b?.(a),n()},onMouseLeave:a=>{let b=c.onMouseLeave;b?.(a),o()}}},onClickAway:a=>{e?.(a,"clickaway")}}};var j=c(67943),k=c(46757),l=c(51939);function m(a){return a.substring(2).toLowerCase()}function n(a){let{children:b,disableReactTree:c=!1,mouseEvent:e="onClick",onClickAway:f,touchEvent:h="onTouchEnd"}=a,i=d.useRef(!1),n=d.useRef(null),o=d.useRef(!1),p=d.useRef(!1);d.useEffect(()=>(setTimeout(()=>{o.current=!0},0),()=>{o.current=!1}),[]);let q=(0,j.A)((0,l.A)(b),n),r=(0,g.A)(a=>{let b=p.current;p.current=!1;let d=(0,k.A)(n.current);if(!(!o.current||!n.current||"clientX"in a&&(d.documentElement.clientWidth<a.clientX||d.documentElement.clientHeight<a.clientY))){if(i.current){i.current=!1;return}(a.composedPath?a.composedPath().includes(n.current):!d.documentElement.contains(a.target)||n.current.contains(a.target))||!c&&b||f(a)}}),s=a=>c=>{p.current=!0;let d=b.props[a];d&&d(c)},t={ref:q};return!1!==h&&(t[h]=s(h)),d.useEffect(()=>{if(!1!==h){let a=m(h),b=(0,k.A)(n.current),c=()=>{i.current=!0};return b.addEventListener(a,r),b.addEventListener("touchmove",c),()=>{b.removeEventListener(a,r),b.removeEventListener("touchmove",c)}}},[r,h]),!1!==e&&(t[e]=s(e)),d.useEffect(()=>{if(!1!==e){let a=m(e),b=(0,k.A)(n.current);return b.addEventListener(a,r),()=>{b.removeEventListener(a,r)}}},[r,e]),d.cloneElement(b,t)}var o=c(18168),p=c(60839),q=c(68333),r=c(6636),s=c(6638),t=c(4927),u=c(43249),v=c(37489),w=c(54573),x=c(29565),y=c(33105);function z(a){return(0,y.Ay)("MuiSnackbarContent",a)}(0,x.A)("MuiSnackbarContent",["root","message","action"]);var A=c(21124);let B=(0,o.Ay)(w.A,{name:"MuiSnackbarContent",slot:"Root",overridesResolver:(a,b)=>b.root})((0,q.A)(({theme:a})=>{let b="light"===a.palette.mode?.8:.98,c=(0,v.tL)(a.palette.background.default,b);return{...a.typography.body2,color:a.vars?a.vars.palette.SnackbarContent.color:a.palette.getContrastText(c),backgroundColor:a.vars?a.vars.palette.SnackbarContent.bg:c,display:"flex",alignItems:"center",flexWrap:"wrap",padding:"6px 16px",borderRadius:(a.vars||a).shape.borderRadius,flexGrow:1,[a.breakpoints.up("sm")]:{flexGrow:"initial",minWidth:288}}})),C=(0,o.Ay)("div",{name:"MuiSnackbarContent",slot:"Message",overridesResolver:(a,b)=>b.message})({padding:"8px 0"}),D=(0,o.Ay)("div",{name:"MuiSnackbarContent",slot:"Action",overridesResolver:(a,b)=>b.action})({display:"flex",alignItems:"center",marginLeft:"auto",paddingLeft:16,marginRight:-8}),E=d.forwardRef(function(a,b){let c=(0,r.b)({props:a,name:"MuiSnackbarContent"}),{action:d,className:f,message:g,role:h="alert",...i}=c,j=(a=>{let{classes:b}=a;return(0,e.A)({root:["root"],action:["action"],message:["message"]},z,b)})(c);return(0,A.jsxs)(B,{role:h,square:!0,elevation:6,className:(0,u.A)(j.root,f),ownerState:c,ref:b,...i,children:[(0,A.jsx)(C,{className:j.message,ownerState:c,children:g}),d?(0,A.jsx)(D,{className:j.action,ownerState:c,children:d}):null]})});function F(a){return(0,y.Ay)("MuiSnackbar",a)}(0,x.A)("MuiSnackbar",["root","anchorOriginTopCenter","anchorOriginBottomCenter","anchorOriginTopRight","anchorOriginBottomRight","anchorOriginTopLeft","anchorOriginBottomLeft"]);var G=c(20385);let H=(0,o.Ay)("div",{name:"MuiSnackbar",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,b[`anchorOrigin${(0,s.A)(c.anchorOrigin.vertical)}${(0,s.A)(c.anchorOrigin.horizontal)}`]]}})((0,q.A)(({theme:a})=>({zIndex:(a.vars||a).zIndex.snackbar,position:"fixed",display:"flex",left:8,right:8,justifyContent:"center",alignItems:"center",variants:[{props:({ownerState:a})=>"top"===a.anchorOrigin.vertical,style:{top:8,[a.breakpoints.up("sm")]:{top:24}}},{props:({ownerState:a})=>"top"!==a.anchorOrigin.vertical,style:{bottom:8,[a.breakpoints.up("sm")]:{bottom:24}}},{props:({ownerState:a})=>"left"===a.anchorOrigin.horizontal,style:{justifyContent:"flex-start",[a.breakpoints.up("sm")]:{left:24,right:"auto"}}},{props:({ownerState:a})=>"right"===a.anchorOrigin.horizontal,style:{justifyContent:"flex-end",[a.breakpoints.up("sm")]:{right:24,left:"auto"}}},{props:({ownerState:a})=>"center"===a.anchorOrigin.horizontal,style:{[a.breakpoints.up("sm")]:{left:"50%",right:"auto",transform:"translateX(-50%)"}}}]}))),I=d.forwardRef(function(a,b){let c=(0,r.b)({props:a,name:"MuiSnackbar"}),f=(0,p.A)(),g={enter:f.transitions.duration.enteringScreen,exit:f.transitions.duration.leavingScreen},{action:h,anchorOrigin:{vertical:j,horizontal:k}={vertical:"bottom",horizontal:"left"},autoHideDuration:l=null,children:m,className:o,ClickAwayListenerProps:q,ContentProps:u,disableWindowBlurListener:v=!1,message:w,onBlur:x,onClose:y,onFocus:z,onMouseEnter:B,onMouseLeave:C,open:D,resumeHideDuration:I,slots:J={},slotProps:K={},TransitionComponent:L,transitionDuration:M=g,TransitionProps:{onEnter:N,onExited:O,...P}={},...Q}=c,R={...c,anchorOrigin:{vertical:j,horizontal:k},autoHideDuration:l,disableWindowBlurListener:v,TransitionComponent:L,transitionDuration:M},S=(a=>{let{classes:b,anchorOrigin:c}=a,d={root:["root",`anchorOrigin${(0,s.A)(c.vertical)}${(0,s.A)(c.horizontal)}`]};return(0,e.A)(d,F,b)})(R),{getRootProps:T,onClickAway:U}=i({...R}),[V,W]=d.useState(!0),X={slots:{transition:L,...J},slotProps:{content:u,clickAwayListener:q,transition:P,...K}},[Y,Z]=(0,G.A)("root",{ref:b,className:[S.root,o],elementType:H,getSlotProps:T,externalForwardedProps:{...X,...Q},ownerState:R}),[$,{ownerState:_,...aa}]=(0,G.A)("clickAwayListener",{elementType:n,externalForwardedProps:X,getSlotProps:a=>({onClickAway:(...b)=>{a.onClickAway?.(...b),U(...b)}}),ownerState:R}),[ab,ac]=(0,G.A)("content",{elementType:E,shouldForwardComponentProp:!0,externalForwardedProps:X,additionalProps:{message:w,action:h},ownerState:R}),[ad,ae]=(0,G.A)("transition",{elementType:t.A,externalForwardedProps:X,getSlotProps:a=>({onEnter:(...b)=>{a.onEnter?.(...b),((a,b)=>{W(!1),N&&N(a,b)})(...b)},onExited:(...b)=>{a.onExited?.(...b),(a=>{W(!0),O&&O(a)})(...b)}}),additionalProps:{appear:!0,in:D,timeout:M,direction:"top"===j?"down":"up"},ownerState:R});return!D&&V?null:(0,A.jsx)($,{...aa,...J.clickAwayListener&&{ownerState:_},children:(0,A.jsx)(Y,{...Z,children:(0,A.jsx)(ad,{...ae,children:m||(0,A.jsx)(ab,{...ac})})})})})},38941:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"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(11801),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")},51694:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M4 7v2c0 .55-.45 1-1 1H2v4h1c.55 0 1 .45 1 1v2c0 1.65 1.35 3 3 3h3v-2H7c-.55 0-1-.45-1-1v-2c0-1.3-.84-2.42-2-2.83v-.34C5.16 11.42 6 10.3 6 9V7c0-.55.45-1 1-1h3V4H7C5.35 4 4 5.35 4 7m17 3c-.55 0-1-.45-1-1V7c0-1.65-1.35-3-3-3h-3v2h3c.55 0 1 .45 1 1v2c0 1.3.84 2.42 2 2.83v.34c-1.16.41-2 1.52-2 2.83v2c0 .55-.45 1-1 1h-3v2h3c1.65 0 3-1.35 3-3v-2c0-.55.45-1 1-1h1v-4z"}),"DataObject")},52399:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"m4 12 1.41 1.41L11 7.83V20h2V7.83l5.58 5.59L20 12l-8-8z"}),"ArrowUpward")},55641:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M16.91 14.09 17 14l2 2 4-4.04L21 10h-8.17zM3.98 6.81C2.2 7.85 1 9.79 1 12c0 3.31 2.69 6 6 6 2.21 0 4.15-1.2 5.18-2.99l7.59 7.59 1.41-1.41L2.81 2.81 1.39 4.22zm5.93 5.93C9.58 14.03 8.4 15 7 15c-1.65 0-3-1.35-3-3 0-1.4.97-2.58 2.26-2.91z"}),"KeyOff")},56685:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M20 4H4c-1.11 0-2 .9-2 2v12c0 1.1.89 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.89-2-2-2m0 14H4V8h16zm-2-1h-6v-2h6zM7.5 17l-1.41-1.41L8.67 13l-2.59-2.59L7.5 9l4 4z"}),"Terminal")},63908:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"m12 8-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"}),"ExpandLess")},64956:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M11 7 9.6 8.4l2.6 2.6H2v2h10.2l-2.6 2.6L11 17l5-5zm9 12h-8v2h8c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2h-8v2h8z"}),"Login")},71756:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"m1 9 2 2c4.97-4.97 13.03-4.97 18 0l2-2C16.93 2.93 7.08 2.93 1 9m8 8 3 3 3-3c-1.65-1.66-4.34-1.66-6 0m-4-4 2 2c2.76-2.76 7.24-2.76 10 0l2-2C15.14 9.14 8.87 9.14 5 13"}),"Wifi")},72264:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8"}),"RadioButtonUnchecked")},83013:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M4.5 11h-2V9H1v6h1.5v-2.5h2V15H6V9H4.5zm2.5-.5h1.5V15H10v-4.5h1.5V9H7zm5.5 0H14V15h1.5v-4.5H17V9h-4.5zm9-1.5H18v6h1.5v-2h2c.8 0 1.5-.7 1.5-1.5v-1c0-.8-.7-1.5-1.5-1.5m0 2.5h-2v-1h2z"}),"Http")},91314:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"}),"Home")},91901:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)([(0,e.jsx)("circle",{cx:"20",cy:"12",r:"2"},"0"),(0,e.jsx)("circle",{cx:"4",cy:"12",r:"2"},"1"),(0,e.jsx)("circle",{cx:"12",cy:"20",r:"2"},"2"),(0,e.jsx)("path",{d:"M10.05 8.59 6.03 4.55h-.01l-.31-.32-1.42 1.41 4.02 4.05.01-.01.31.32zm3.893.027 4.405-4.392L19.76 5.64l-4.405 4.393zM10.01 15.36l-1.42-1.41-4.03 4.01-.32.33 1.41 1.41 4.03-4.02zm9.75 2.94-3.99-4.01-.36-.35L14 15.35l3.99 4.01.35.35z"},"3"),(0,e.jsx)("circle",{cx:"12",cy:"4",r:"2"},"4")],"Stream")},95786:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2m-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2m3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1s3.1 1.39 3.1 3.1z"}),"Lock")},98810:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M14 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 @@
|
|
|
1
|
+
"use strict";exports.id=8037,exports.ids=[8037],exports.modules={48037:(a,b,c)=>{c.d(b,{A:()=>D});var d=c(21124),e=c(38301),f=c(60839),g=c(81637),h=c(8521),i=c(79515),j=c(88745),k=c(43312),l=c(68730),m=c(99561),n=c(5748),o=c(1994),p=c(17332),q=c(63908),r=c(36636),s=c(93516),t=c(92543),u=c(28055),v=c(59060);let w=(0,c(19815).h)("frontend/components/Chat/McpAppFrame"),x={name:"FLUJO",version:"1.0.0"};function y(a){let b=(Array.isArray(a?.content)?a.content:[]).map(a=>a?.type==="text"&&"string"==typeof a.text?a.text:"").filter(Boolean).join("\n").trim();return b||(a?.structuredContent&&"object"==typeof a.structuredContent?JSON.stringify(a.structuredContent):"")}let z=null;async function A(){z||(z=fetch("/api/mcp/app-sandbox").then(a=>a.json()).then(a=>"number"==typeof a?.port?a.port:4201).catch(()=>4201));let a=await z;return`${window.location.protocol}//${window.location.hostname}:${a}/sandbox.html`}function B(a){if(a)try{return JSON.parse(a)}catch{return}}function C(a){let b=B(a);return b&&"object"==typeof b?Array.isArray(b.content)?b:{content:[{type:"text",text:a}]}:null}let D=({serverName:a,uri:b,toolName:c,toolArgs:z,toolResultContent:D,onAppMessage:E,onRequestDock:F,onDockable:G,docked:H=!1,visible:I=!0})=>{let J=(0,f.A)(),[K,L]=(0,e.useState)(!1),[M,N]=(0,e.useState)(!1),[O,P]=(0,e.useState)(null),[Q,R]=(0,e.useState)("inline"),S=(0,e.useRef)(null),T=(0,e.useRef)(null),U=(0,e.useRef)(null),V=(0,e.useRef)(!1),W=(0,e.useRef)(E);(0,e.useEffect)(()=>{W.current=E},[E]);let X=(0,e.useRef)(F);(0,e.useEffect)(()=>{X.current=F},[F]);let Y=(0,e.useRef)(G);(0,e.useEffect)(()=>{Y.current=G},[G]);let Z=(0,e.useRef)(H);(0,e.useEffect)(()=>{Z.current=H},[H]);let $=(0,e.useRef)(!1),_=(0,e.useRef)(void 0),aa=(0,e.useCallback)(()=>{try{U.current?.close()}catch{}U.current=null,T.current&&T.current.parentNode&&T.current.parentNode.removeChild(T.current),T.current=null,V.current=!1},[]),ab=(0,e.useCallback)(async()=>{if(!V.current&&S.current){V.current=!0,N(!0),P(null);try{let c=await u.S.readResource(a,b);if(!c||!1===c.success)throw Error(c?.error||"Failed to read the UI resource.");let d=function(a){let b=a?.contents;if(!Array.isArray(b)||0===b.length)throw Error("Resource has no contents");let c=b.find(a=>"string"==typeof a.mimeType&&a.mimeType.replace(/\s+/g,"").startsWith("text/html;profile=mcp-app".replace(/\s+/g,""))&&("string"==typeof a.text||"string"==typeof a.blob))||b.find(a=>"string"==typeof a.text||"string"==typeof a.blob);if(!c)throw Error("Resource has no HTML body");let d="string"==typeof c.text?c.text:atob(c.blob);if(new TextEncoder().encode(d).length>v.Pt)throw Error(`Resource exceeds the ${Math.round(v.Pt/1024)} KiB size cap`);let e=(c._meta??c.meta)?.ui;return{html:d,csp:e?.csp,permissions:e?.permissions}}(c.data),e=await A(),f=document.createElement("iframe");f.title=`MCP App: ${b}`,f.setAttribute("sandbox","allow-scripts allow-same-origin allow-forms"),f.referrerPolicy="origin";let g=(0,t.Sy)(d.permissions);g&&f.setAttribute("allow",g),f.style.cssText=Z.current?"width:100%;height:100%;border:none;background:#fff;":"width:100%;min-height:120px;height:200px;border:none;border-radius:4px;background:#fff;",S.current.appendChild(f),T.current=f;let h=new Promise((a,b)=>{let c=setTimeout(()=>{window.removeEventListener("message",d),b(Error("Timed out waiting for the sandbox proxy."))},1e4),d=b=>{b.source===f.contentWindow&&b.data?.method==="ui/notifications/sandbox-proxy-ready"&&(clearTimeout(c),window.removeEventListener("message",d),a())};window.addEventListener("message",d)}),i=new URL(e);d.csp&&i.searchParams.set("csp",JSON.stringify(d.csp)),f.src=i.href,await h;let j=new t.T1(function(a){return{getServerCapabilities:()=>({tools:{},resources:{}}),setNotificationHandler:()=>{},request:async b=>{let{method:c,params:d}=b;if("tools/call"===c){w.info(`MCP App tools/call: ${a}/${d?.name}`);let b=await u.S.callTool(a,d.name,d.arguments??{});if(!b||!1===b.success)throw Error(b?.error||`Tool call failed: ${d?.name}`);return b.data}if("resources/read"===c){let b=await u.S.readResource(a,d.uri);if(!b||!1===b.success)throw Error(b?.error||`Resource read failed: ${d?.uri}`);return b.data}if("resources/list"===c)return{resources:[]};if("resources/templates/list"===c)return{resourceTemplates:[]};throw Error(`MCP App requested unsupported method: ${c}`)}}}(a),x,{openLinks:{},serverTools:{},serverResources:{},updateModelContext:{text:{}}},{hostContext:{theme:"dark"===J.palette.mode?"dark":"light",platform:"web",displayMode:Z.current?"pip":"inline",availableDisplayModes:["inline","fullscreen","pip"],containerDimensions:{maxHeight:6e3}}});U.current=j,j.onopenlink=async({url:a})=>(window.open(a,"_blank","noopener,noreferrer"),{}),j.ondownloadfile=async({contents:a})=>{try{for(let b of a??[]){let a,c=b?.resource;if(!c)continue;let d=("string"==typeof c.uri?c.uri.split("/").pop():"")||"download",e="string"==typeof c.mimeType?c.mimeType:"application/octet-stream";if("string"==typeof c.blob){let b=Uint8Array.from(atob(c.blob),a=>a.charCodeAt(0));a=new Blob([b],{type:e})}else a=new Blob([String(c.text??"")],{type:e});let f=URL.createObjectURL(a),g=document.createElement("a");g.href=f,g.download=d,document.body.appendChild(g),g.click(),g.remove(),setTimeout(()=>URL.revokeObjectURL(f),4e3)}return{}}catch(a){return w.warn("MCP App download failed",a),{isError:!0}}},j.onloggingmessage=a=>w.debug("MCP App log",a?.data),j.onmessage=async a=>{let b=y(a);return b&&(W.current?W.current(b):w.info(`MCP App message (no chat sink): ${b}`)),{}},j.onupdatemodelcontext=async a=>{let b=y(a);return b&&(W.current?W.current(b):w.info(`MCP App context update (no chat sink): ${b}`)),{}},j.onsizechange=async({width:a,height:b})=>{!Z.current&&("number"==typeof b&&b>0&&(f.style.height=`${b}px`),"number"==typeof a&&a>0&&(f.style.minWidth=`min(${a}px, 100%)`))},j.onrequestdisplaymode=async({mode:a})=>{if("pip"===a)return X.current?(X.current(),R("pip"),j.sendHostContextChange({displayMode:"pip"}),{mode:"pip"}):(R("inline"),j.sendHostContextChange({displayMode:"inline"}),{mode:"inline"});let b="fullscreen"===a?"fullscreen":"inline";return R(b),j.sendHostContextChange({displayMode:b}),{mode:b}},j.oninitialized=()=>{try{let a=j.getAppCapabilities()?.availableDisplayModes;Y.current?.(Array.isArray(a)&&a.includes("pip"))}catch{}let a=B(z);a&&"object"==typeof a&&j.sendToolInput({arguments:a});let b=C(D);b&&j.sendToolResult(b),_.current=D,$.current=!0,N(!1)},await j.connect(new t.hJ(f.contentWindow,f.contentWindow)),await j.sendSandboxResourceReady({html:d.html,csp:d.csp,permissions:d.permissions})}catch(c){w.warn(`Failed to mount MCP App ${b} from ${a}`,c),P(c instanceof Error?c.message:"Failed to load the app."),N(!1),aa()}}},[a,b,z,D,J.palette.mode,aa]),ac=(0,e.useCallback)(()=>{let a=!K;L(a),a&&setTimeout(()=>{ab()},0)},[K,ab]);return((0,e.useEffect)(()=>{H&&!V.current&&ab()},[H,ab]),(0,e.useEffect)(()=>{if(!$.current||!U.current||D===_.current)return;let a=C(D);if(a)try{U.current.sendToolResult(a)}catch(a){w.warn("MCP App re-feed failed",a)}_.current=D},[D]),(0,e.useEffect)(()=>{U.current?.sendHostContextChange({theme:"dark"===J.palette.mode?"dark":"light"})},[J.palette.mode]),(0,e.useEffect)(()=>()=>aa(),[aa]),H)?(0,d.jsxs)(g.default,{sx:{height:"100%",width:"100%",minHeight:0,display:I?"flex":"none",flexDirection:"column"},children:[M&&(0,d.jsxs)(g.default,{sx:{display:"flex",alignItems:"center",gap:1,py:2,justifyContent:"center"},children:[(0,d.jsx)(h.default,{size:16,thickness:6}),(0,d.jsx)(i.default,{variant:"body2",color:"text.secondary",children:"Loading the app…"})]}),O&&(0,d.jsx)(j.A,{severity:"error",sx:{m:1},children:O}),(0,d.jsx)(g.default,{ref:S,sx:{flex:1,minHeight:0,width:"100%",display:O?"none":"block"}})]}):(0,d.jsxs)(g.default,{sx:{mt:1,border:"1px solid",borderColor:"divider",borderRadius:1,overflow:"hidden",..."fullscreen"===Q?{position:"fixed",inset:16,zIndex:1300,bgcolor:"background.paper",boxShadow:6}:{}},children:[(0,d.jsxs)(g.default,{sx:{display:"flex",alignItems:"center",gap:1,px:1,py:.5,bgcolor:"action.hover"},children:[(0,d.jsx)(n.A,{fontSize:"small",color:"primary"}),(0,d.jsxs)(i.default,{variant:"body2",sx:{fontWeight:500},children:["Interactive app from ",a]}),(0,d.jsx)(k.A,{title:"Runs in a separate-origin sandbox (no access to FLUJO's origin, cookies, storage, or DOM). Its tool calls are brokered through this server only.",children:(0,d.jsx)(o.A,{fontSize:"small",color:"action"})}),K&&(0,d.jsx)(k.A,{title:"fullscreen"===Q?"Exit fullscreen":"Fullscreen",children:(0,d.jsx)(l.A,{size:"small",onClick:()=>{let a="fullscreen"===Q?"inline":"fullscreen";R(a),U.current?.sendHostContextChange({displayMode:a})},sx:{minWidth:0,ml:"auto"},children:"fullscreen"===Q?(0,d.jsx)(s.A,{fontSize:"small"}):(0,d.jsx)(r.A,{fontSize:"small"})})}),(0,d.jsx)(l.A,{size:"small",onClick:ac,startIcon:K?(0,d.jsx)(q.A,{}):(0,d.jsx)(p.A,{}),sx:{ml:K?0:"auto"},children:K?"Hide":"Open app"})]}),(0,d.jsx)(m.A,{in:K,unmountOnExit:!0,onExited:aa,children:(0,d.jsxs)(g.default,{sx:{p:1,height:"fullscreen"===Q?"calc(100vh - 100px)":"auto"},children:[M&&(0,d.jsxs)(g.default,{sx:{display:"flex",alignItems:"center",gap:1,py:2,justifyContent:"center"},children:[(0,d.jsx)(h.default,{size:16,thickness:6}),(0,d.jsx)(i.default,{variant:"body2",color:"text.secondary",children:"Loading the app…"})]}),O&&(0,d.jsx)(j.A,{severity:"error",sx:{my:1},children:O}),(0,d.jsx)(g.default,{ref:S,sx:{width:"100%",height:"fullscreen"===Q?"100%":"auto",display:O?"none":"block"}})]})})]})}},59060:(a,b,c)=>{c.d(b,{Gt:()=>e,Pt:()=>d});let d=2097152;function e(a){if(a&&"object"==typeof a){for(let b of[a.ui,a["io.modelcontextprotocol/ui"]])if(b&&"object"==typeof b){let a=b.resourceUri;if("string"==typeof a&&a.trim().toLowerCase().startsWith("ui://"))return a}}}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=8092,exports.ids=[8092],exports.modules={48092:(a,b,c)=>{c.d(b,{F:()=>j,loadEffectiveRoots:()=>l});var d=c(33873),e=c.n(d),f=c(79551),g=c(18230),h=c(94749);let i=(0,g.h)("backend/services/mcp/internal/confinement");function j(a,b){let c=e().relative(a,b);return""===c||!c.startsWith("..")&&!e().isAbsolute(c)}async function k(a,b){let{resolveGlobalVars:d}=await Promise.resolve().then(c.bind(c,87507)),g=(await d(a)).trim();if(!g)return null;if(g.startsWith("file://"))try{return e().resolve((0,f.fileURLToPath)(g))}catch(a){return i.warn(`resolveRootToPath: could not parse file URI "${g}"`,a),null}return e().isAbsolute(g)?e().resolve(g):e().resolve(b,g)}async function l(a,b,d){let{getDataDir:f}=await Promise.resolve().then(c.bind(c,
|
|
1
|
+
"use strict";exports.id=8092,exports.ids=[8092],exports.modules={48092:(a,b,c)=>{c.d(b,{F:()=>j,loadEffectiveRoots:()=>l});var d=c(33873),e=c.n(d),f=c(79551),g=c(18230),h=c(94749);let i=(0,g.h)("backend/services/mcp/internal/confinement");function j(a,b){let c=e().relative(a,b);return""===c||!c.startsWith("..")&&!e().isAbsolute(c)}async function k(a,b){let{resolveGlobalVars:d}=await Promise.resolve().then(c.bind(c,87507)),g=(await d(a)).trim();if(!g)return null;if(g.startsWith("file://"))try{return e().resolve((0,f.fileURLToPath)(g))}catch(a){return i.warn(`resolveRootToPath: could not parse file URI "${g}"`,a),null}return e().isAbsolute(g)?e().resolve(g):e().resolve(b,g)}async function l(a,b,d){let{getDataDir:f}=await Promise.resolve().then(c.bind(c,85510)),g=f(),l=function(a){for(let b of Array.isArray(a)?a:[a]){let a=process.env[b];if(!a||!a.trim())continue;let c=a.split(e().delimiter).map(a=>a.trim()).filter(Boolean).map(a=>e().resolve(a));if(c.length)return c}return null}(b),m=[];try{for(let b of(await (0,h.AC)(a)))m.push(e().isAbsolute(b)?e().resolve(b):e().resolve(g,b))}catch(a){i.warn("loadEffectiveRoots: could not read persisted roots",a)}try{let{getNodeRoots:b,getNodeRootsForId:e}=await Promise.resolve().then(c.bind(c,28181));for(let c of void 0!==d?(()=>{let c=e(a,d);return c.length>0?c:b(a)})():b(a)){let a=await k(c,g);a&&m.push(a)}}catch(a){i.warn("loadEffectiveRoots: could not read node roots",a)}let n=Array.from(new Set(m));if(!l)return 0===n.length?[g]:n;let o=n.filter(a=>l.some(b=>j(b,a)));return o.length?o:l}}};
|