flujo-ai 3.22.0 → 3.24.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 +171 -168
- package/.next/app-path-routes-manifest.json +13 -13
- package/.next/build-manifest.json +7 -7
- package/.next/prerender-manifest.json +12 -12
- package/.next/react-loadable-manifest.json +6 -6
- package/.next/routes-manifest.json +19 -1
- package/.next/server/app/_not-found/page.js +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +1 -1
- 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 +1 -1
- 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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/bugs/enhance/route.js +1 -1
- 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_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 +1 -1
- package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/compile/route.js +1 -1
- package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/generate/route.js +1 -1
- package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/improve/route.js +1 -1
- package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/prompt-renderer/route.js +1 -1
- 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.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 +5 -5
- package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/init/route.js +1 -1
- package/.next/server/app/api/init/route.js.nft.json +1 -1
- package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/cancel/route.js +1 -1
- package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/route.js +1 -1
- package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/test-connection/route.js +1 -1
- package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp-registry/route.js +1 -1
- package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp-registry/spotlight/route_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 +1 -1
- 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 +1 -1
- 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_client-reference-manifest.js +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 +1 -1
- package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
- package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/route.js.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.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.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_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/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 +1 -1
- 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_client-reference-manifest.js +1 -1
- package/.next/server/app/api/update/route.js +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 +10 -10
- package/.next/server/app/chat/page.js.nft.json +1 -1
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/chat.html +1 -1
- package/.next/server/app/chat.rsc +2 -2
- package/.next/server/app/docs/page.js +8 -2
- 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 +2 -2
- 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 +2 -2
- package/.next/server/app/flows/page.js +3 -3
- package/.next/server/app/flows/page.js.nft.json +1 -1
- package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
- package/.next/server/app/flows.html +1 -1
- package/.next/server/app/flows.rsc +2 -2
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +2 -2
- package/.next/server/app/mcp/page.js +7 -7
- 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 +2 -2
- package/.next/server/app/models/page.js +1 -1
- package/.next/server/app/models/page.js.nft.json +1 -1
- package/.next/server/app/models/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +1 -1
- package/.next/server/app/page_client-reference-manifest.js +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 +2 -2
- 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]/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/models/route.js +1 -1
- 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 +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 +1 -1
- package/.next/server/app-paths-manifest.json +13 -13
- package/.next/server/chunks/1083.js +1 -1
- package/.next/server/chunks/1197.js +1 -1
- package/.next/server/chunks/1226.js +1 -1
- package/.next/server/chunks/1373.js +1 -1
- package/.next/server/chunks/2823.js +6 -0
- package/.next/server/chunks/2859.js +1 -1
- package/.next/server/chunks/289.js +1 -1
- package/.next/server/chunks/{1556.js → 2998.js} +1 -1
- package/.next/server/chunks/3291.js +1 -0
- package/.next/server/chunks/3774.js +1 -1
- package/.next/server/chunks/3823.js +7 -6
- package/.next/server/chunks/3984.js +4 -4
- package/.next/server/chunks/4239.js +1 -1
- package/.next/server/chunks/4545.js +17 -0
- package/.next/server/chunks/4561.js +7 -6
- package/.next/server/chunks/4637.js +8 -2
- package/.next/server/chunks/4671.js +1 -1
- package/.next/server/chunks/472.js +1 -1
- package/.next/server/chunks/4771.js +3 -3
- package/.next/server/chunks/5708.js +7 -1
- package/.next/server/chunks/5734.js +4 -4
- package/.next/server/chunks/6996.js +3 -3
- package/.next/server/chunks/701.js +1 -1
- package/.next/server/chunks/7362.js +11 -11
- package/.next/server/chunks/7506.js +1 -1
- package/.next/server/chunks/7723.js +1 -0
- package/.next/server/chunks/7769.js +6 -0
- package/.next/server/chunks/7821.js +1 -1
- package/.next/server/chunks/8652.js +1 -1
- package/.next/server/chunks/8739.js +1 -1
- package/.next/server/chunks/9509.js +2 -2
- package/.next/server/edge-instrumentation.js +2 -0
- package/.next/server/edge-instrumentation.js.map +1 -0
- package/.next/server/edge-runtime-webpack.js +2 -0
- package/.next/server/edge-runtime-webpack.js.map +1 -0
- package/.next/server/instrumentation.js.nft.json +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-manifest.json +33 -2
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/server/src/middleware.js +14 -0
- package/.next/server/src/middleware.js.map +1 -0
- package/.next/static/chunks/3454-a8db9caba457e5fa.js +1 -0
- package/.next/static/chunks/3730-149f2f058529f75f.js +1 -0
- package/.next/static/chunks/4749-f8796d16ff604d54.js +1 -0
- package/.next/static/chunks/6016.8201fa15ab6aa90e.js +1 -0
- package/.next/static/chunks/{6730-c330b55cd0fe4f47.js → 6257-ee5d8d88050d7705.js} +1 -1
- package/.next/static/chunks/{7583.7cb88044a5212b29.js → 7583.7af90b94e3c263f2.js} +1 -1
- package/.next/static/chunks/812-624e93f4c0f671c7.js +1 -0
- package/.next/static/chunks/{9181-8d8ecd3f641b7209.js → 8611-f6d51119761d52ff.js} +3 -3
- package/.next/static/chunks/{9164-3d34bf7eab100ac7.js → 9164-d9f1abba780231e0.js} +1 -1
- package/.next/static/chunks/app/chat/page-6a5b5f9ea2542fb3.js +1 -0
- package/.next/static/chunks/app/docs/page-935b0386917b91bb.js +1 -0
- package/.next/static/chunks/app/executions/page-d72027b0179e8fa2.js +1 -0
- package/.next/static/chunks/app/flows/page-fbce5abe34500f28.js +1 -0
- package/.next/static/chunks/app/mcp/{page-770a870b3d40766b.js → page-8666173926cabf31.js} +1 -1
- package/.next/static/chunks/app/models/{page-5a13ea6ff5ac1b9c.js → page-18dbd8e01cf87e98.js} +1 -1
- package/.next/static/chunks/{main-be8e823624954fab.js → main-9bda5041078d2b6a.js} +1 -1
- package/.next/static/chunks/{webpack-dded92b3d7b33173.js → webpack-f4a471ab560eb19e.js} +1 -1
- package/.next/trace +8 -9
- package/README.md +1 -1
- package/next.config.mjs +139 -119
- package/package.json +1 -1
- package/.next/server/chunks/264.js +0 -17
- package/.next/server/chunks/7214.js +0 -6
- package/.next/server/chunks/7463.js +0 -6
- package/.next/server/chunks/8357.js +0 -1
- package/.next/static/chunks/5545-2ab6e5d749e103cd.js +0 -1
- package/.next/static/chunks/6016.a157e5bde2faa652.js +0 -1
- package/.next/static/chunks/6920-a83ad5c0d5a54cf3.js +0 -1
- package/.next/static/chunks/812-181496bc32cd0cd3.js +0 -1
- package/.next/static/chunks/app/chat/page-3a3efba25b59a747.js +0 -1
- package/.next/static/chunks/app/docs/page-84a92c3d5d8d5e13.js +0 -1
- package/.next/static/chunks/app/executions/page-445afbf37819e3ce.js +0 -1
- package/.next/static/chunks/app/flows/page-74ebca19957cc6db.js +0 -1
- /package/.next/static/{MMmWHUQ3UAJBdRB7G1zGj → eUM7C1boixGI469h5wtIk}/_buildManifest.js +0 -0
- /package/.next/static/{MMmWHUQ3UAJBdRB7G1zGj → eUM7C1boixGI469h5wtIk}/_ssgManifest.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/waves/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"4474":{"*":{"id":"8521","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"55145","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"78922","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"68495","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"34644","name":"*","chunks":[],"async":false}},"24437":{"*":{"id":"24207","name":"*","chunks":[],"async":false}},"25635":{"*":{"id":"79515","name":"*","chunks":[],"async":false}},"26756":{"*":{"id":"29039","name":"*","chunks":[],"async":false}},"27879":{"*":{"id":"92093","name":"*","chunks":[],"async":false}},"31932":{"*":{"id":"44930","name":"*","chunks":[],"async":false}},"36552":{"*":{"id":"52402","name":"*","chunks":[],"async":false}},"43856":{"*":{"id":"84608","name":"*","chunks":[],"async":false}},"45960":{"*":{"id":"41937","name":"*","chunks":[],"async":false}},"57150":{"*":{"id":"54160","name":"*","chunks":[],"async":false}},"58812":{"*":{"id":"78354","name":"*","chunks":[],"async":false}},"63886":{"*":{"id":"75170","name":"*","chunks":[],"async":false}},"71113":{"*":{"id":"63904","name":"*","chunks":[],"async":false}},"72403":{"*":{"id":"49428","name":"*","chunks":[],"async":false}},"80622":{"*":{"id":"82146","name":"*","chunks":[],"async":false}},"81959":{"*":{"id":"31603","name":"*","chunks":[],"async":false}},"85803":{"*":{"id":"85999","name":"*","chunks":[],"async":false}},"89547":{"*":{"id":"71779","name":"*","chunks":[],"async":false}},"94049":{"*":{"id":"81637","name":"*","chunks":[],"async":false}},"94929":{"*":{"id":"61615","name":"*","chunks":[],"async":false}},"95791":{"*":{"id":"96369","name":"*","chunks":[],"async":false}},"98924":{"*":{"id":"29234","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\builtin\\global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\builtin\\global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\http-access-fallback\\error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\http-access-fallback\\error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\metadata\\async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\metadata\\async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\lib\\framework\\boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\lib\\framework\\boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\lib\\metadata\\generate\\icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\lib\\metadata\\generate\\icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\font\\google\\target.css?{\"path\":\"src\\\\app\\\\layout.tsx\",\"import\":\"Geist\",\"arguments\":[{\"variable\":\"--font-geist-sans\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistSans\"}":{"id":59742,"name":"*","chunks":["7177","static/chunks/app/layout-2ebf01d97702a18a.js"],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\font\\google\\target.css?{\"path\":\"src\\\\app\\\\layout.tsx\",\"import\":\"Geist_Mono\",\"arguments\":[{\"variable\":\"--font-geist-mono\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistMono\"}":{"id":3946,"name":"*","chunks":["7177","static/chunks/app/layout-2ebf01d97702a18a.js"],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\globals.css":{"id":13673,"name":"*","chunks":["7177","static/chunks/app/layout-2ebf01d97702a18a.js"],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\frontend\\components\\AppWrapper.tsx":{"id":72403,"name":"*","chunks":["7177","static/chunks/app/layout-2ebf01d97702a18a.js"],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\chat\\page.tsx":{"id":45960,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\docs\\page.tsx":{"id":71113,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\executions\\page.tsx":{"id":31932,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\flows\\page.tsx":{"id":85803,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\mcp\\page.tsx":{"id":95791,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\settings\\page.tsx":{"id":58812,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\page.tsx":{"id":89547,"name":"*","chunks":["2678","static/chunks/2678-c88052addfb0478a.js","4754","static/chunks/4754-5c62bb61142f82d1.js","9244","static/chunks/9244-3281f7fd02003a2c.js","8548","static/chunks/8548-8e4a95334064e8b2.js","1983","static/chunks/1983-242862b3dc022a26.js","1871","static/chunks/1871-dd8c10ed9d37100b.js","2003","static/chunks/2003-460f30484998c05d.js","3077","static/chunks/3077-565833c67440a7fa.js","2619","static/chunks/2619-04bc32f026a0d946.js","8834","static/chunks/8834-bda798efab40c60a.js","9164","static/chunks/9164-3d34bf7eab100ac7.js","8974","static/chunks/app/page-a859e4dbd180df98.js"],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\waves\\page.tsx":{"id":26756,"name":"*","chunks":["3862","static/chunks/1a258343-bcffff1604e3797c.js","2678","static/chunks/2678-c88052addfb0478a.js","4754","static/chunks/4754-5c62bb61142f82d1.js","9244","static/chunks/9244-3281f7fd02003a2c.js","8548","static/chunks/8548-8e4a95334064e8b2.js","1983","static/chunks/1983-242862b3dc022a26.js","2003","static/chunks/2003-460f30484998c05d.js","488","static/chunks/488-623d07c3fbc21e28.js","8480","static/chunks/8480-229fd353b68b570f.js","603","static/chunks/app/waves/page-ec33cf79f6103a9e.js"],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\models\\error.tsx":{"id":27879,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\@mui\\material\\Box\\Box.js":{"id":94049,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\@mui\\material\\CircularProgress\\CircularProgress.js":{"id":4474,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\@mui\\material\\Typography\\Typography.js":{"id":25635,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\shared\\lib\\lazy-dynamic\\dynamic-bailout-to-csr.js":{"id":24437,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\shared\\lib\\lazy-dynamic\\dynamic-bailout-to-csr.js":{"id":24437,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\shared\\lib\\lazy-dynamic\\preload-chunks.js":{"id":36552,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\shared\\lib\\lazy-dynamic\\preload-chunks.js":{"id":36552,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\models\\ModelClient.tsx":{"id":43856,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\frontend\\components\\shared\\Spinner.tsx":{"id":94929,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\":[],"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\layout":[{"inlined":false,"path":"static/css/b496025c9cd768cc.css"},{"inlined":false,"path":"static/css/599369d853c61df7.css"},{"inlined":false,"path":"static/css/39393a79f7cb0dee.css"}],"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\page":[],"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\waves\\page":[{"inlined":false,"path":"static/css/599369d853c61df7.css"}]},"rscModuleMapping":{"4474":{"*":{"id":"65251","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"6060","name":"*","chunks":[],"async":false}},"13673":{"*":{"id":"61135","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"7184","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"36893","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"73041","name":"*","chunks":[],"async":false}},"24437":{"*":{"id":"69389","name":"*","chunks":[],"async":false}},"25635":{"*":{"id":"16825","name":"*","chunks":[],"async":false}},"26756":{"*":{"id":"71494","name":"*","chunks":[],"async":false}},"27879":{"*":{"id":"14867","name":"*","chunks":[],"async":false}},"31932":{"*":{"id":"42389","name":"*","chunks":[],"async":false}},"36552":{"*":{"id":"63112","name":"*","chunks":[],"async":false}},"43856":{"*":{"id":"2671","name":"*","chunks":[],"async":false}},"45960":{"*":{"id":"22516","name":"*","chunks":[],"async":false}},"57150":{"*":{"id":"81170","name":"*","chunks":[],"async":false}},"58812":{"*":{"id":"85431","name":"*","chunks":[],"async":false}},"63886":{"*":{"id":"89748","name":"*","chunks":[],"async":false}},"71113":{"*":{"id":"65793","name":"*","chunks":[],"async":false}},"72403":{"*":{"id":"41306","name":"*","chunks":[],"async":false}},"80622":{"*":{"id":"51384","name":"*","chunks":[],"async":false}},"81959":{"*":{"id":"23597","name":"*","chunks":[],"async":false}},"85803":{"*":{"id":"10057","name":"*","chunks":[],"async":false}},"89547":{"*":{"id":"60967","name":"*","chunks":[],"async":false}},"94049":{"*":{"id":"73737","name":"*","chunks":[],"async":false}},"94929":{"*":{"id":"37997","name":"*","chunks":[],"async":false}},"95791":{"*":{"id":"51016","name":"*","chunks":[],"async":false}},"98924":{"*":{"id":"69576","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
|
|
1
|
+
globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/waves/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"4474":{"*":{"id":"8521","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"77526","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"78922","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"68495","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"12263","name":"*","chunks":[],"async":false}},"24437":{"*":{"id":"24207","name":"*","chunks":[],"async":false}},"25635":{"*":{"id":"79515","name":"*","chunks":[],"async":false}},"26756":{"*":{"id":"29039","name":"*","chunks":[],"async":false}},"27879":{"*":{"id":"92093","name":"*","chunks":[],"async":false}},"31932":{"*":{"id":"44930","name":"*","chunks":[],"async":false}},"36552":{"*":{"id":"52402","name":"*","chunks":[],"async":false}},"43856":{"*":{"id":"84608","name":"*","chunks":[],"async":false}},"52759":{"*":{"id":"76841","name":"*","chunks":[],"async":false}},"57150":{"*":{"id":"54160","name":"*","chunks":[],"async":false}},"58812":{"*":{"id":"78354","name":"*","chunks":[],"async":false}},"62560":{"*":{"id":"76448","name":"*","chunks":[],"async":false}},"63886":{"*":{"id":"75170","name":"*","chunks":[],"async":false}},"71113":{"*":{"id":"63904","name":"*","chunks":[],"async":false}},"72403":{"*":{"id":"49428","name":"*","chunks":[],"async":false}},"80622":{"*":{"id":"82146","name":"*","chunks":[],"async":false}},"81959":{"*":{"id":"31603","name":"*","chunks":[],"async":false}},"89547":{"*":{"id":"71779","name":"*","chunks":[],"async":false}},"94049":{"*":{"id":"81637","name":"*","chunks":[],"async":false}},"94929":{"*":{"id":"61615","name":"*","chunks":[],"async":false}},"95791":{"*":{"id":"96369","name":"*","chunks":[],"async":false}},"98924":{"*":{"id":"29234","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\builtin\\global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\builtin\\global-error.js":{"id":57150,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\client-page.js":{"id":81959,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\client-segment.js":{"id":17989,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\http-access-fallback\\error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\http-access-fallback\\error-boundary.js":{"id":63886,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\metadata\\async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\metadata\\async-metadata.js":{"id":15278,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\client\\components\\render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\client\\components\\render-from-template-context.js":{"id":98924,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\lib\\framework\\boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\lib\\framework\\boundary-components.js":{"id":24431,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\lib\\metadata\\generate\\icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\lib\\metadata\\generate\\icon-mark.js":{"id":80622,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\font\\google\\target.css?{\"path\":\"src\\\\app\\\\layout.tsx\",\"import\":\"Geist\",\"arguments\":[{\"variable\":\"--font-geist-sans\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistSans\"}":{"id":59742,"name":"*","chunks":["7177","static/chunks/app/layout-2ebf01d97702a18a.js"],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\font\\google\\target.css?{\"path\":\"src\\\\app\\\\layout.tsx\",\"import\":\"Geist_Mono\",\"arguments\":[{\"variable\":\"--font-geist-mono\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistMono\"}":{"id":3946,"name":"*","chunks":["7177","static/chunks/app/layout-2ebf01d97702a18a.js"],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\globals.css":{"id":13673,"name":"*","chunks":["7177","static/chunks/app/layout-2ebf01d97702a18a.js"],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\frontend\\components\\AppWrapper.tsx":{"id":72403,"name":"*","chunks":["7177","static/chunks/app/layout-2ebf01d97702a18a.js"],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\chat\\page.tsx":{"id":62560,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\docs\\page.tsx":{"id":71113,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\executions\\page.tsx":{"id":31932,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\flows\\page.tsx":{"id":52759,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\mcp\\page.tsx":{"id":95791,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\page.tsx":{"id":89547,"name":"*","chunks":["2678","static/chunks/2678-c88052addfb0478a.js","4754","static/chunks/4754-5c62bb61142f82d1.js","9244","static/chunks/9244-3281f7fd02003a2c.js","8548","static/chunks/8548-8e4a95334064e8b2.js","1983","static/chunks/1983-242862b3dc022a26.js","1871","static/chunks/1871-dd8c10ed9d37100b.js","2003","static/chunks/2003-460f30484998c05d.js","3077","static/chunks/3077-565833c67440a7fa.js","2619","static/chunks/2619-04bc32f026a0d946.js","8834","static/chunks/8834-bda798efab40c60a.js","9164","static/chunks/9164-d9f1abba780231e0.js","8974","static/chunks/app/page-a859e4dbd180df98.js"],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\settings\\page.tsx":{"id":58812,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\waves\\page.tsx":{"id":26756,"name":"*","chunks":["3862","static/chunks/1a258343-bcffff1604e3797c.js","2678","static/chunks/2678-c88052addfb0478a.js","4754","static/chunks/4754-5c62bb61142f82d1.js","9244","static/chunks/9244-3281f7fd02003a2c.js","8548","static/chunks/8548-8e4a95334064e8b2.js","1983","static/chunks/1983-242862b3dc022a26.js","2003","static/chunks/2003-460f30484998c05d.js","488","static/chunks/488-623d07c3fbc21e28.js","8480","static/chunks/8480-229fd353b68b570f.js","603","static/chunks/app/waves/page-ec33cf79f6103a9e.js"],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\models\\error.tsx":{"id":27879,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\@mui\\material\\Box\\Box.js":{"id":94049,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\@mui\\material\\CircularProgress\\CircularProgress.js":{"id":4474,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\@mui\\material\\Typography\\Typography.js":{"id":25635,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\shared\\lib\\lazy-dynamic\\dynamic-bailout-to-csr.js":{"id":24437,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\shared\\lib\\lazy-dynamic\\dynamic-bailout-to-csr.js":{"id":24437,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\shared\\lib\\lazy-dynamic\\preload-chunks.js":{"id":36552,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\node_modules\\next\\dist\\esm\\shared\\lib\\lazy-dynamic\\preload-chunks.js":{"id":36552,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\models\\ModelClient.tsx":{"id":43856,"name":"*","chunks":[],"async":false},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\frontend\\components\\shared\\Spinner.tsx":{"id":94929,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\":[],"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\layout":[{"inlined":false,"path":"static/css/b496025c9cd768cc.css"},{"inlined":false,"path":"static/css/599369d853c61df7.css"},{"inlined":false,"path":"static/css/39393a79f7cb0dee.css"}],"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\page":[],"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\app\\waves\\page":[{"inlined":false,"path":"static/css/599369d853c61df7.css"}]},"rscModuleMapping":{"4474":{"*":{"id":"65251","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"6060","name":"*","chunks":[],"async":false}},"13673":{"*":{"id":"61135","name":"*","chunks":[],"async":false}},"15278":{"*":{"id":"7184","name":"*","chunks":[],"async":false}},"17989":{"*":{"id":"36893","name":"*","chunks":[],"async":false}},"24431":{"*":{"id":"73041","name":"*","chunks":[],"async":false}},"24437":{"*":{"id":"69389","name":"*","chunks":[],"async":false}},"25635":{"*":{"id":"16825","name":"*","chunks":[],"async":false}},"26756":{"*":{"id":"71494","name":"*","chunks":[],"async":false}},"27879":{"*":{"id":"14867","name":"*","chunks":[],"async":false}},"31932":{"*":{"id":"42389","name":"*","chunks":[],"async":false}},"36552":{"*":{"id":"63112","name":"*","chunks":[],"async":false}},"43856":{"*":{"id":"2671","name":"*","chunks":[],"async":false}},"52759":{"*":{"id":"10057","name":"*","chunks":[],"async":false}},"57150":{"*":{"id":"81170","name":"*","chunks":[],"async":false}},"58812":{"*":{"id":"85431","name":"*","chunks":[],"async":false}},"62560":{"*":{"id":"22516","name":"*","chunks":[],"async":false}},"63886":{"*":{"id":"89748","name":"*","chunks":[],"async":false}},"71113":{"*":{"id":"65793","name":"*","chunks":[],"async":false}},"72403":{"*":{"id":"41306","name":"*","chunks":[],"async":false}},"80622":{"*":{"id":"51384","name":"*","chunks":[],"async":false}},"81959":{"*":{"id":"23597","name":"*","chunks":[],"async":false}},"89547":{"*":{"id":"60967","name":"*","chunks":[],"async":false}},"94049":{"*":{"id":"73737","name":"*","chunks":[],"async":false}},"94929":{"*":{"id":"37997","name":"*","chunks":[],"async":false}},"95791":{"*":{"id":"51016","name":"*","chunks":[],"async":false}},"98924":{"*":{"id":"69576","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><!--
|
|
1
|
+
<!DOCTYPE html><!--eUM7C1boixGI469h5wtIk--><html lang="en"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/b496025c9cd768cc.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/599369d853c61df7.css" data-precedence="next"/><link rel="stylesheet" href="/_next/static/css/39393a79f7cb0dee.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-f4a471ab560eb19e.js"/><script src="/_next/static/chunks/4bd1b696-182b6b13bdad92e3.js" async=""></script><script src="/_next/static/chunks/1255-13d973e0759ea6d6.js" async=""></script><script src="/_next/static/chunks/main-app-faff38c77cb00119.js" async=""></script><script src="/_next/static/chunks/app/layout-2ebf01d97702a18a.js" async=""></script><script src="/_next/static/chunks/1a258343-bcffff1604e3797c.js" async=""></script><script src="/_next/static/chunks/2678-c88052addfb0478a.js" async=""></script><script src="/_next/static/chunks/4754-5c62bb61142f82d1.js" async=""></script><script src="/_next/static/chunks/9244-3281f7fd02003a2c.js" async=""></script><script src="/_next/static/chunks/8548-8e4a95334064e8b2.js" async=""></script><script src="/_next/static/chunks/1983-242862b3dc022a26.js" async=""></script><script src="/_next/static/chunks/2003-460f30484998c05d.js" async=""></script><script src="/_next/static/chunks/488-623d07c3fbc21e28.js" async=""></script><script src="/_next/static/chunks/8480-229fd353b68b570f.js" async=""></script><script src="/_next/static/chunks/app/waves/page-ec33cf79f6103a9e.js" async=""></script><title>FLUJO</title><meta name="description" content="A browser-based application for managing models, MCP servers, flows and chat interactions"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_246ccd __variable_c29908 antialiased"><div hidden=""><!--$--><!--/$--></div><!--$--><!--$!--><template data-dgst="BAILOUT_TO_CLIENT_SIDE_RENDERING"></template><div>Loading theme...</div><!--/$--><!--/$--><script src="/_next/static/chunks/webpack-f4a471ab560eb19e.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[72403,[\"7177\",\"static/chunks/app/layout-2ebf01d97702a18a.js\"],\"default\"]\n3:I[9766,[],\"\"]\n4:I[98924,[],\"\"]\n5:I[81959,[],\"ClientPageRoot\"]\n6:I[26756,[\"3862\",\"static/chunks/1a258343-bcffff1604e3797c.js\",\"2678\",\"static/chunks/2678-c88052addfb0478a.js\",\"4754\",\"static/chunks/4754-5c62bb61142f82d1.js\",\"9244\",\"static/chunks/9244-3281f7fd02003a2c.js\",\"8548\",\"static/chunks/8548-8e4a95334064e8b2.js\",\"1983\",\"static/chunks/1983-242862b3dc022a26.js\",\"2003\",\"static/chunks/2003-460f30484998c05d.js\",\"488\",\"static/chunks/488-623d07c3fbc21e28.js\",\"8480\",\"static/chunks/8480-229fd353b68b570f.js\",\"603\",\"static/chunks/app/waves/page-ec33cf79f6103a9e.js\"],\"default\"]\n9:I[24431,[],\"OutletBoundary\"]\nb:I[15278,[],\"AsyncMetadataOutlet\"]\nd:I[24431,[],\"ViewportBoundary\"]\nf:I[24431,[],\"MetadataBoundary\"]\n10:\"$Sreact.suspense\"\n12:I[57150,[],\"\"]\n:HL[\"/_next/static/css/b496025c9cd768cc.css\",\"style\"]\n:HL[\"/_next/static/css/599369d853c61df7.css\",\"style\"]\n:HL[\"/_next/static/css/39393a79f7cb0dee.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"eUM7C1boixGI469h5wtIk\",\"p\":\"\",\"c\":[\"\",\"waves\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"waves\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/b496025c9cd768cc.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"1\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/599369d853c61df7.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"link\",\"2\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/39393a79f7cb0dee.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"en\",\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_246ccd __variable_c29908 antialiased\",\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]}]]}],{\"children\":[\"waves\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L5\",null,{\"Component\":\"$6\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@7\",\"$@8\"]}],null,[\"$\",\"$L9\",null,{\"children\":[\"$La\",[\"$\",\"$Lb\",null,{\"promise\":\"$@c\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$Ld\",null,{\"children\":\"$Le\"}],null],[\"$\",\"$Lf\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$10\",null,{\"fallback\":null,\"children\":\"$L11\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$12\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"7:{}\n8:\"$0:f:0:1:2:children:2:children:1:props:children:0:props:params\"\n"])</script><script>self.__next_f.push([1,"e:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\na:null\n"])</script><script>self.__next_f.push([1,"c:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"FLUJO\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"A browser-based application for managing models, MCP servers, flows and chat interactions\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"11:\"$c:metadata\"\n"])</script></body></html>
|
|
@@ -13,7 +13,7 @@ f:I[24431,[],"MetadataBoundary"]
|
|
|
13
13
|
:HL["/_next/static/css/b496025c9cd768cc.css","style"]
|
|
14
14
|
:HL["/_next/static/css/599369d853c61df7.css","style"]
|
|
15
15
|
:HL["/_next/static/css/39393a79f7cb0dee.css","style"]
|
|
16
|
-
0:{"P":null,"b":"
|
|
16
|
+
0:{"P":null,"b":"eUM7C1boixGI469h5wtIk","p":"","c":["","waves"],"i":false,"f":[[["",{"children":["waves",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/b496025c9cd768cc.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/css/599369d853c61df7.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","2",{"rel":"stylesheet","href":"/_next/static/css/39393a79f7cb0dee.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":["$","body",null,{"className":"__variable_246ccd __variable_c29908 antialiased","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["waves",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],null,["$","$L9",null,{"children":["$La",["$","$Lb",null,{"promise":"$@c"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$Ld",null,{"children":"$Le"}],null],["$","$Lf",null,{"children":["$","div",null,{"hidden":true,"children":["$","$10",null,{"fallback":null,"children":"$L11"}]}]}]]}],false]],"m":"$undefined","G":["$12",[]],"s":false,"S":true}
|
|
17
17
|
7:{}
|
|
18
18
|
8:"$0:f:0:1:2:children:2:children:1:props:children:0:props:params"
|
|
19
19
|
e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
+
"/_not-found/page": "app/_not-found/page.js",
|
|
2
3
|
"/api/approvals/[id]/route": "app/api/approvals/[id]/route.js",
|
|
3
4
|
"/api/approvals/route": "app/api/approvals/route.js",
|
|
4
5
|
"/api/backup/route": "app/api/backup/route.js",
|
|
@@ -15,8 +16,8 @@
|
|
|
15
16
|
"/api/flow/quick-chat/route": "app/api/flow/quick-chat/route.js",
|
|
16
17
|
"/api/flow/repair/route": "app/api/flow/repair/route.js",
|
|
17
18
|
"/api/flow/route": "app/api/flow/route.js",
|
|
18
|
-
"/api/git/route": "app/api/git/route.js",
|
|
19
19
|
"/api/init/route": "app/api/init/route.js",
|
|
20
|
+
"/api/git/route": "app/api/git/route.js",
|
|
20
21
|
"/api/mcp-registry/route": "app/api/mcp-registry/route.js",
|
|
21
22
|
"/api/mcp-registry/spotlight/route": "app/api/mcp-registry/spotlight/route.js",
|
|
22
23
|
"/api/mcp/cancel/route": "app/api/mcp/cancel/route.js",
|
|
@@ -25,16 +26,14 @@
|
|
|
25
26
|
"/api/mcp/servers/[name]/resources/read/route": "app/api/mcp/servers/[name]/resources/read/route.js",
|
|
26
27
|
"/api/mcp/servers/[name]/resources/route": "app/api/mcp/servers/[name]/resources/route.js",
|
|
27
28
|
"/api/mcp/servers/[name]/route": "app/api/mcp/servers/[name]/route.js",
|
|
28
|
-
"/api/mcp/servers/[name]/status/route": "app/api/mcp/servers/[name]/status/route.js",
|
|
29
|
-
"/api/mcp/servers/[name]/tools/[toolName]/route": "app/api/mcp/servers/[name]/tools/[toolName]/route.js",
|
|
30
29
|
"/api/mcp/servers/[name]/tools/route": "app/api/mcp/servers/[name]/tools/route.js",
|
|
30
|
+
"/api/mcp/servers/[name]/status/route": "app/api/mcp/servers/[name]/status/route.js",
|
|
31
31
|
"/api/mcp/servers/route": "app/api/mcp/servers/route.js",
|
|
32
32
|
"/api/mcp/test-connection/route": "app/api/mcp/test-connection/route.js",
|
|
33
|
-
"/api/model/[id]/route": "app/api/model/[id]/route.js",
|
|
34
33
|
"/api/model/provider/route": "app/api/model/provider/route.js",
|
|
34
|
+
"/api/mcp/servers/[name]/tools/[toolName]/route": "app/api/mcp/servers/[name]/tools/[toolName]/route.js",
|
|
35
35
|
"/api/model/route": "app/api/model/route.js",
|
|
36
36
|
"/api/model/test/route": "app/api/model/test/route.js",
|
|
37
|
-
"/api/oauth/callback/route": "app/api/oauth/callback/route.js",
|
|
38
37
|
"/api/oauth/initiate/route": "app/api/oauth/initiate/route.js",
|
|
39
38
|
"/api/oauth/reset/route": "app/api/oauth/reset/route.js",
|
|
40
39
|
"/api/planned-executions/[id]/route": "app/api/planned-executions/[id]/route.js",
|
|
@@ -42,27 +41,28 @@
|
|
|
42
41
|
"/api/planned-executions/[id]/runs/route": "app/api/planned-executions/[id]/runs/route.js",
|
|
43
42
|
"/api/planned-executions/preview-schedule/route": "app/api/planned-executions/preview-schedule/route.js",
|
|
44
43
|
"/api/planned-executions/reconcile/route": "app/api/planned-executions/reconcile/route.js",
|
|
45
|
-
"/api/planned-executions/route": "app/api/planned-executions/route.js",
|
|
46
44
|
"/api/restore/route": "app/api/restore/route.js",
|
|
45
|
+
"/api/planned-executions/route": "app/api/planned-executions/route.js",
|
|
47
46
|
"/api/runs/active/route": "app/api/runs/active/route.js",
|
|
48
47
|
"/api/storage/route": "app/api/storage/route.js",
|
|
49
48
|
"/api/waves/route": "app/api/waves/route.js",
|
|
50
49
|
"/api/webhooks/[id]/route": "app/api/webhooks/[id]/route.js",
|
|
51
50
|
"/v1/chat/completions/route": "app/v1/chat/completions/route.js",
|
|
52
51
|
"/v1/chat/conversations/[conversationId]/breakpoints/route": "app/v1/chat/conversations/[conversationId]/breakpoints/route.js",
|
|
52
|
+
"/v1/chat/conversations/[conversationId]/cancel/route": "app/v1/chat/conversations/[conversationId]/cancel/route.js",
|
|
53
53
|
"/v1/chat/conversations/[conversationId]/debug/continue/route": "app/v1/chat/conversations/[conversationId]/debug/continue/route.js",
|
|
54
54
|
"/v1/chat/conversations/[conversationId]/debug/step/route": "app/v1/chat/conversations/[conversationId]/debug/step/route.js",
|
|
55
|
-
"/v1/chat/conversations/[conversationId]/cancel/route": "app/v1/chat/conversations/[conversationId]/cancel/route.js",
|
|
56
55
|
"/v1/chat/conversations/[conversationId]/edit-state/route": "app/v1/chat/conversations/[conversationId]/edit-state/route.js",
|
|
57
|
-
"/v1/chat/conversations/route": "app/v1/chat/conversations/route.js",
|
|
58
|
-
"/v1/chat/conversations/[conversationId]/respond/route": "app/v1/chat/conversations/[conversationId]/respond/route.js",
|
|
59
|
-
"/v1/models/route": "app/v1/models/route.js",
|
|
60
|
-
"/_not-found/page": "app/_not-found/page.js",
|
|
61
56
|
"/v1/chat/conversations/[conversationId]/resources/route": "app/v1/chat/conversations/[conversationId]/resources/route.js",
|
|
57
|
+
"/v1/chat/conversations/[conversationId]/respond/route": "app/v1/chat/conversations/[conversationId]/respond/route.js",
|
|
62
58
|
"/v1/chat/conversations/[conversationId]/route": "app/v1/chat/conversations/[conversationId]/route.js",
|
|
63
|
-
"/
|
|
59
|
+
"/v1/chat/conversations/route": "app/v1/chat/conversations/route.js",
|
|
60
|
+
"/v1/models/route": "app/v1/models/route.js",
|
|
64
61
|
"/api/local-models/pull/route": "app/api/local-models/pull/route.js",
|
|
62
|
+
"/api/local-models/capability/route": "app/api/local-models/capability/route.js",
|
|
65
63
|
"/api/local-models/suggest/route": "app/api/local-models/suggest/route.js",
|
|
64
|
+
"/api/oauth/callback/route": "app/api/oauth/callback/route.js",
|
|
65
|
+
"/api/model/[id]/route": "app/api/model/[id]/route.js",
|
|
66
66
|
"/api/mcp/test-connection/stream/route": "app/api/mcp/test-connection/stream/route.js",
|
|
67
67
|
"/api/update/route": "app/api/update/route.js",
|
|
68
68
|
"/mcp-flows/route": "app/mcp-flows/route.js",
|
|
@@ -73,8 +73,8 @@
|
|
|
73
73
|
"/executions/page": "app/executions/page.js",
|
|
74
74
|
"/flows/page": "app/flows/page.js",
|
|
75
75
|
"/mcp/page": "app/mcp/page.js",
|
|
76
|
-
"/settings/page": "app/settings/page.js",
|
|
77
76
|
"/page": "app/page.js",
|
|
77
|
+
"/settings/page": "app/settings/page.js",
|
|
78
78
|
"/waves/page": "app/waves/page.js",
|
|
79
79
|
"/models/page": "app/models/page.js"
|
|
80
80
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
exports.id=1083,exports.ids=[1083],exports.modules={9718:(a,b,c)=>{"use strict";c.d(b,{Zg:()=>d.Z,Mj:()=>g});var d=c(60418),e=c(38301);let f=(0,c(19815).h)("utils/storage/frontend.ts");function g(a,b){f.verbose("useLocalStorage: Entering method");let[c,d]=(0,e.useState)(b),[g,h]=(0,e.useState)(!0),i=(0,e.useRef)(c);return[c,(0,e.useCallback)(async b=>{f.verbose("setValue: Entering method");try{let c=b instanceof Function?b(i.current):b;if(d(c),!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:a,value:c})})).ok)throw Error("Failed to save value")}catch(b){f.warn(`Error setting storage key "${a}":`,b)}},[a]),g]}},11525:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,81170,23)),Promise.resolve().then(c.t.bind(c,23597,23)),Promise.resolve().then(c.t.bind(c,36893,23)),Promise.resolve().then(c.t.bind(c,89748,23)),Promise.resolve().then(c.t.bind(c,6060,23)),Promise.resolve().then(c.t.bind(c,7184,23)),Promise.resolve().then(c.t.bind(c,69576,23)),Promise.resolve().then(c.t.bind(c,73041,23)),Promise.resolve().then(c.t.bind(c,51384,23))},19815:(a,b,c)=>{"use strict";c.d(b,{h:()=>i});let d={LOG_LEVEL:3},e={VERBOSE:-1,DEBUG:0,INFO:1,WARN:2,ERROR:3},f="number"==typeof d.LOG_LEVEL?d.LOG_LEVEL:e.ERROR;function g(a,b=0){if(b>6)return String(a);if(!(a instanceof Error))return a;let c={name:a.name,message:a.message};for(let d of Object.getOwnPropertyNames(a)){if("name"===d||"message"===d)continue;let e=a[d];"function"!=typeof e&&("stack"===d?c.stack=e:"cause"===d?c.cause=g(e,b+1):"errors"===d&&Array.isArray(e)?c.errors=e.map(a=>g(a,b+1)):c[d]=e)}return c}function h(a,b,c,d,h){if(a>=("number"==typeof h?h:f)){if("function"==typeof d)try{d=d()}catch{d="[lazy log data threw]"}let f=new Date().toISOString(),h=`[${f}] [${b}]`,i=`${h} ${c}`;if(void 0!==d)if(d instanceof Error||"object"==typeof d)try{let a=d instanceof Error?g(d):d,b=JSON.stringify(a,(a,b)=>b instanceof Error?g(b):b,2);i+=`:
|
|
2
|
-
${b}`}catch(a){i+=": [Object cannot be stringified]"}else i+=`: ${d}`;switch(a){case e.VERBOSE:console.debug(`[VERBOSE] ${i}`);break;case e.DEBUG:console.debug(i);break;case e.INFO:console.info(i);break;case e.WARN:console.warn(i);break;case e.ERROR:console.error(i);break;default:console.log(i)}}}function i(a,b){let c,d=((c=a.replace(/^src\//,"")).startsWith("/")&&(c=c.substring(1)),c);return{verbose:(a,c)=>{h(e.VERBOSE,d,a,c,b)},debug:(a,c)=>{h(e.DEBUG,d,a,c,b)},info:(a,c)=>{h(e.INFO,d,a,c,b)},warn:(a,c)=>{h(e.WARN,d,a,c,b)},error:(a,c)=>{h(e.ERROR,d,a,c,b)}}}},24677:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,54160,23)),Promise.resolve().then(c.t.bind(c,31603,23)),Promise.resolve().then(c.t.bind(c,68495,23)),Promise.resolve().then(c.t.bind(c,75170,23)),Promise.resolve().then(c.t.bind(c,
|
|
2
|
+
${b}`}catch(a){i+=": [Object cannot be stringified]"}else i+=`: ${d}`;switch(a){case e.VERBOSE:console.debug(`[VERBOSE] ${i}`);break;case e.DEBUG:console.debug(i);break;case e.INFO:console.info(i);break;case e.WARN:console.warn(i);break;case e.ERROR:console.error(i);break;default:console.log(i)}}}function i(a,b){let c,d=((c=a.replace(/^src\//,"")).startsWith("/")&&(c=c.substring(1)),c);return{verbose:(a,c)=>{h(e.VERBOSE,d,a,c,b)},debug:(a,c)=>{h(e.DEBUG,d,a,c,b)},info:(a,c)=>{h(e.INFO,d,a,c,b)},warn:(a,c)=>{h(e.WARN,d,a,c,b)},error:(a,c)=>{h(e.ERROR,d,a,c,b)}}}},24677:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,54160,23)),Promise.resolve().then(c.t.bind(c,31603,23)),Promise.resolve().then(c.t.bind(c,68495,23)),Promise.resolve().then(c.t.bind(c,75170,23)),Promise.resolve().then(c.t.bind(c,77526,23)),Promise.resolve().then(c.t.bind(c,78922,23)),Promise.resolve().then(c.t.bind(c,29234,23)),Promise.resolve().then(c.t.bind(c,12263,23)),Promise.resolve().then(c.bind(c,82146))},30301:(a,b,c)=>{Promise.resolve().then(c.bind(c,41306))},41306:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call the default export of \"C:\\\\Users\\\\MarioAndreschak\\\\Documents\\\\GitHub\\\\FLUJO\\\\src\\\\frontend\\\\components\\\\AppWrapper.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"C:\\Users\\MarioAndreschak\\Documents\\GitHub\\FLUJO\\src\\frontend\\components\\AppWrapper.tsx","default")},41917:(a,b,c)=>{Promise.resolve().then(c.bind(c,49428))},49428:(a,b,c)=>{"use strict";c.d(b,{default:()=>p});var d=c(21124),e=c(38301),f=c.n(e),g=c(13973);let h=(0,c(19815).h)("frontend/components/AppWrapper"),i=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ../contexts/ThemeContext"]},ssr:!1,loading:()=>(0,d.jsx)("div",{children:"Loading theme..."})}),j=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ../contexts/StorageContext"]},ssr:!1,loading:()=>(0,d.jsx)("div",{children:"Loading storage..."})}),k=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ./Navigation"]},ssr:!1,loading:()=>(0,d.jsx)("div",{children:"Loading navigation..."})}),l=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ./EncryptionAuthDialog"]},ssr:!1,loading:()=>null}),m=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ../contexts/TourContext"]},ssr:!1,loading:()=>null}),n=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ./Tour/TourOverlay"]},ssr:!1,loading:()=>null});class o extends f().Component{constructor(a){super(a),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(a){h.error("AppWrapper error boundary caught an error:",a)}render(){return this.state.hasError?(0,d.jsxs)("div",{style:{padding:"20px",textAlign:"center"},children:[(0,d.jsx)("h2",{children:"Something went wrong loading the application."}),(0,d.jsx)("p",{children:"Please try refreshing the page."}),(0,d.jsx)("button",{onClick:()=>window.location.reload(),style:{padding:"8px 16px",background:"#3498DB",color:"white",border:"none",borderRadius:"4px",cursor:"pointer",marginTop:"10px"},children:"Refresh"})]}):this.props.children}}function p({children:a}){return h.debug("Rendering AppWrapper"),(0,d.jsx)(o,{children:(0,d.jsx)(e.Suspense,{fallback:(0,d.jsx)("div",{children:"Loading application..."}),children:(0,d.jsx)(i,{children:(0,d.jsx)(j,{children:(0,d.jsxs)(m,{children:[(0,d.jsxs)(e.Suspense,{fallback:(0,d.jsx)("div",{children:"Loading navigation..."}),children:[(0,d.jsx)(k,{}),(0,d.jsx)(l,{})]}),(0,d.jsx)("main",{children:a}),(0,d.jsx)(n,{})]})})})})})}},51472:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>m,metadata:()=>l});var d=c(75338),e=c(94294),f=c.n(e),g=c(81464),h=c.n(g);c(61135);var i=c(50846),j=c(41306);let k=(0,i.h)("app/layout"),l={title:"FLUJO",description:"A browser-based application for managing models, MCP servers, flows and chat interactions"};function m({children:a}){return k.debug("Rendering RootLayout"),(0,d.jsx)("html",{lang:"en",children:(0,d.jsx)("body",{className:`${f().variable} ${h().variable} antialiased`,children:(0,d.jsx)(j.default,{children:a})})})}},60418:(a,b,c)=>{"use strict";c.d(b,{Z:()=>d});var d=function(a){return a.MODELS="models",a.FLOWS="flows",a.CHAT_HISTORY="history",a.THEME="theme",a.ENCRYPTION_KEY="encryption_key",a.MCP_SERVERS="mcp_servers",a.GLOBAL_ENV_VARS="global_env_vars",a.CURRENT_CONVERSATION_ID="current_conversation_id",a.SELECTED_FLOW_ID="selected_flow_id",a.LAST_PICKED_FLOW_ID="last_picked_flow_id",a.SPEECH_SETTINGS="speech_settings",a.SPOTLIGHT_SERVERS="spotlight_servers",a.PLANNED_EXECUTIONS="planned_executions",a.MCP_AUTO_INSTALL_SETTINGS="mcp_auto_install_settings",a.MCP_QUALITY_SETTINGS="mcp_quality_settings",a.RUN_RESOURCE_SETTINGS="run_resource_settings",a.KV_STORE_SETTINGS="kv_store_settings",a.PENDING_APPROVALS="pending_approvals",a}({})},61135:()=>{}};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"use strict";exports.id=1197,exports.ids=[1197],exports.modules={38296:(a,b,c)=>{c.d(b,{A:()=>C});var d=c(21124),e=c(38301),f=c(54573),g=c(81637),h=c(79515),i=c(68730),j=c(53773),k=c(82666),l=c(37674),m=c(67101),n=c(41893),o=c(95587),p=c(77028),q=c(44079),r=c(6537),s=c(19815),t=c(49938),u=c(47902),v=c(11480),w=c(93083),x=c(85557),y=c(91034),z=c(82571),A=c(92173);let B=(0,s.h)("frontend/components/mcp/MCPEnvManager/EnvEditor"),C=({serverName:a,initialEnv:b,onSave:c,onDelete:s,onServerRestart:C})=>{let{globalEnvVars:D}=(0,t.rX)(),[E,F]=(0,e.useState)([]),[G,H]=(0,e.useState)(!1),[I,J]=(0,e.useState)(!1),[K,L]=(0,e.useState)(!1),[M,N]=(0,e.useState)(null);(0,e.useEffect)(()=>{B.debug(`Initializing environment variables for server: ${a}`,{variableCount:Object.keys(b).length}),F(Object.entries(b).map(([a,b])=>{let c="object"==typeof b&&null!==b&&"value"in b?b.value:b,d="object"==typeof b&&null!==b&&"metadata"in b?b.metadata:{isSecret:(0,z.xc)(a)},e=c.match(/\$\{global:([^}]+)\}/);if(e){let b=e[1];return{key:a,value:c,isSecret:d.isSecret,isBound:!0,boundTo:b}}let f="string"==typeof c&&(c.startsWith("encrypted:")||c.startsWith("encrypted_failed:"));return{key:a,value:f?A.gF:c,isSecret:d.isSecret,isEncrypted:f}}))},[b]);let O=async b=>{B.debug(`Removing environment variable at index: ${b}`);let c=E[b];if("Global"===a&&s&&c.key)try{await s(c.key),F(E.filter((a,c)=>c!==b))}catch(a){B.error(`Failed to delete environment variable: ${c.key}`,a)}else F(E.filter((a,c)=>c!==b)),H(!0)},P=(a,b,c)=>{let d=[...E];if("isSecret"===b){let b=d[a];b.isSecret&&!c?d[a]={...b,isSecret:c,value:"",isEncrypted:!1,showWarning:!0}:d[a]={...b,isSecret:c}}else{let e={...d[a],[b]:c,isSecret:"key"===b?(0,z.xc)(c):d[a].isSecret};"key"===b&&(e.isValidKey=""===c||/^[a-zA-Z0-9_]+$/.test(c)),"value"===b&&(d[a].isEncrypted&&(e.isEncrypted=!1),d[a].showWarning&&c&&(e.showWarning=!1)),d[a]=e}F(d),H(!0)},Q=async()=>{if(E.some(a=>""!==a.key&&!1===a.isValidKey))return void B.error("Cannot save: Some variable names contain invalid characters");B.debug(`Saving environment variables for server: ${a}`,{variableCount:E.length}),J(!0);try{let b=E.reduce((a,b)=>{let{key:c,value:d,isBound:e,boundTo:f,isSecret:g,isEncrypted:h}=b;return c&&(e&&f?a[c]={value:`$\{global:${f}}`,metadata:{isSecret:g}}:g&&d===A.gF||(a[c]={value:d,metadata:{isSecret:g}})),a},{});await c(b),H(!1),C&&"Global"!==a&&(B.debug(`Restarting server after env variable changes: ${a}`),await C(a))}catch(a){B.error("Failed to save environment variables:",a)}J(!1)};return(0,d.jsxs)(f.A,{sx:{p:3,borderRadius:2,border:1,borderColor:a=>"dark"===a.palette.mode?"#3a3a3a":"#e5e7eb"},children:[(0,d.jsxs)(g.default,{sx:{display:"flex",justifyContent:"space-between",alignItems:"center",mb:3},children:[(0,d.jsxs)(h.default,{variant:"h6",sx:{fontWeight:"semibold"},children:["Environment Variables - ",a]}),(0,d.jsx)(i.A,{variant:"contained",color:"primary",size:"small",startIcon:(0,d.jsx)(u.A,{}),onClick:()=>{B.debug("Adding new environment variable"),F([...E,{key:"",value:"",isSecret:!1}]),H(!0)},children:"Add Variable"})]}),(0,d.jsx)(j.A,{spacing:3,children:E.map((a,b)=>(0,d.jsxs)(k.Ay,{container:!0,spacing:2,alignItems:"flex-start",children:[(0,d.jsx)(k.Ay,{item:!0,xs:12,sm:5,children:(0,d.jsx)(l.A,{fullWidth:!0,placeholder:"Variable name",value:a.key,onChange:a=>P(b,"key",a.target.value),error:!1===a.isValidKey,helperText:!1===a.isValidKey?"Only alphanumeric characters and underscores allowed":"",size:"small"})}),(0,d.jsx)(k.Ay,{item:!0,xs:12,sm:5,children:(0,d.jsx)(l.A,{fullWidth:!0,type:a.isSecret?"password":"text",placeholder:a.showWarning?"Re-enter value":"Value",value:a.value,onChange:a=>P(b,"value",a.target.value),InputProps:{readOnly:a.isBound,startAdornment:a.isEncrypted?(0,d.jsx)(m.A,{position:"start",children:(0,d.jsx)(v.A,{fontSize:"small",titleAccess:"This value is stored encrypted"})}):null,endAdornment:a.isBound?(0,d.jsx)(m.A,{position:"end",children:(0,d.jsx)(n.A,{size:"small",label:`Bound to global: ${a.boundTo}`,color:"primary",variant:"outlined",onDelete:()=>(a=>{B.debug(`Unbinding variable at index: ${a}`);let b=[...E];b[a]={...b[a],isBound:!1,boundTo:void 0},F(b),H(!0)})(b),deleteIcon:(0,d.jsx)(w.A,{fontSize:"small"})})}):null},error:a.showWarning,helperText:a.showWarning?"You must re-enter the value after switching from secret to normal mode":"",size:"small",sx:{bgcolor:b=>a.isBound?"dark"===b.palette.mode?"#1a1a1a":"#f9fafb":b.palette.background.paper}})}),(0,d.jsx)(k.Ay,{item:!0,xs:12,sm:2,children:(0,d.jsxs)(g.default,{sx:{display:"flex",alignItems:"center",mt:.5},children:[(0,d.jsx)(o.A,{control:(0,d.jsx)(p.A,{checked:a.isSecret,onChange:a=>P(b,"isSecret",a.target.checked),size:"small"}),label:"Secret",sx:{mr:1}}),!a.isBound&&(0,d.jsx)(q.A,{size:"small",color:"primary",onClick:()=>(a=>{B.debug(`Opening bind modal for variable at index: ${a}`),N(a),L(!0)})(b),title:"Bind to global variable",sx:{mr:1},children:(0,d.jsx)(x.A,{fontSize:"small"})}),(0,d.jsx)(q.A,{size:"small",color:"error",onClick:()=>O(b),title:"Remove variable",children:(0,d.jsx)(y.A,{fontSize:"small"})})]})})]},b))}),(0,d.jsx)(r.A,{open:K,onClose:()=>{L(!1),N(null)},children:(0,d.jsxs)(g.default,{sx:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",width:400,maxWidth:"90%",bgcolor:"background.paper",boxShadow:24,p:4,borderRadius:2},children:[(0,d.jsx)(h.default,{variant:"h6",sx:{mb:2},children:"Bind to Global Variable"}),0===Object.keys(D).length?(0,d.jsx)(h.default,{color:"text.secondary",sx:{mb:2},children:"No global variables available. Add some in Settings first."}):(0,d.jsx)(g.default,{sx:{maxHeight:300,overflow:"auto",mb:2},children:Object.entries(D).map(([a,b])=>(0,d.jsxs)(i.A,{fullWidth:!0,variant:"text",onClick:()=>(a=>{if(null!==M){B.debug(`Binding variable at index ${M} to global variable: ${a}`);let b=[...E];b[M]={...b[M],isBound:!0,boundTo:a,value:`$\{global:${a}}`},F(b),L(!1),N(null),H(!0)}})(a),sx:{justifyContent:"space-between",textAlign:"left",mb:1,p:1,borderRadius:1},children:[(0,d.jsx)(h.default,{variant:"body2",children:a}),(0,d.jsx)(h.default,{variant:"caption",color:"text.secondary",children:b&&"object"==typeof b&&b.metadata&&b.metadata.isSecret?A.gF:b&&"object"==typeof b?b.value:b})]},a))}),(0,d.jsx)(g.default,{sx:{display:"flex",justifyContent:"flex-end"},children:(0,d.jsx)(i.A,{variant:"outlined",onClick:()=>{L(!1),N(null)},children:"Cancel"})})]})}),G&&(0,d.jsx)(g.default,{sx:{display:"flex",justifyContent:"flex-end",mt:3},children:(0,d.jsx)(i.A,{variant:"contained",color:"success",onClick:Q,disabled:I||E.some(a=>""!==a.key&&!1===a.isValidKey),children:I?"Saving...":"Save Changes"})})]})}},44774:(a,b,c)=>{c.r(b),c.d(b,{"40ec842092ea232b6d4aa599a380d422184da5e1ca":()=>T,"602ea7ca289a8eaa1000fb321a71e292e6c766b6bb":()=>U});var d=c(91488);c(27806);let e={LOG_LEVEL:3},f={VERBOSE:-1,DEBUG:0,INFO:1,WARN:2,ERROR:3},g="number"==typeof e.LOG_LEVEL?e.LOG_LEVEL:f.ERROR;function h(a,b=0){if(b>6)return String(a);if(!(a instanceof Error))return a;let c={name:a.name,message:a.message};for(let d of Object.getOwnPropertyNames(a)){if("name"===d||"message"===d)continue;let e=a[d];"function"!=typeof e&&("stack"===d?c.stack=e:"cause"===d?c.cause=h(e,b+1):"errors"===d&&Array.isArray(e)?c.errors=e.map(a=>h(a,b+1)):c[d]=e)}return c}function i(a,b,c,d,e){if(a>=("number"==typeof e?e:g)){if("function"==typeof d)try{d=d()}catch{d="[lazy log data threw]"}let e=new Date().toISOString(),g=`[${e}] [${b}]`,i=`${g} ${c}`;if(void 0!==d)if(d instanceof Error||"object"==typeof d)try{let a=d instanceof Error?h(d):d,b=JSON.stringify(a,(a,b)=>b instanceof Error?h(b):b,2);i+=`:
|
|
2
|
-
${b}`}catch(a){i+=": [Object cannot be stringified]"}else i+=`: ${d}`;switch(a){case f.VERBOSE:console.debug(`[VERBOSE] ${i}`);break;case f.DEBUG:console.debug(i);break;case f.INFO:console.info(i);break;case f.WARN:console.warn(i);break;case f.ERROR:console.error(i);break;default:console.log(i)}}}function j(a,b){let c,d=((c=a.replace(/^src\//,"")).startsWith("/")&&(c=c.substring(1)),c);return{verbose:(a,c)=>{i(f.VERBOSE,d,a,c,b)},debug:(a,c)=>{i(f.DEBUG,d,a,c,b)},info:(a,c)=>{i(f.INFO,d,a,c,b)},warn:(a,c)=>{i(f.WARN,d,a,c,b)},error:(a,c)=>{i(f.ERROR,d,a,c,b)}}}var k=c(29021),l=c(33873),m=c.n(l),n=function(a){return a.MODELS="models",a.FLOWS="flows",a.CHAT_HISTORY="history",a.THEME="theme",a.ENCRYPTION_KEY="encryption_key",a.MCP_SERVERS="mcp_servers",a.GLOBAL_ENV_VARS="global_env_vars",a.CURRENT_CONVERSATION_ID="current_conversation_id",a.SELECTED_FLOW_ID="selected_flow_id",a.SPEECH_SETTINGS="speech_settings",a.SPOTLIGHT_SERVERS="spotlight_servers",a.PLANNED_EXECUTIONS="planned_executions",a.MCP_AUTO_INSTALL_SETTINGS="mcp_auto_install_settings",a.MCP_QUALITY_SETTINGS="mcp_quality_settings",a.RUN_RESOURCE_SETTINGS="run_resource_settings",a.KV_STORE_SETTINGS="kv_store_settings",a.PENDING_APPROVALS="pending_approvals",a}({});function o(){let a=process.env.FLUJO_DATA_DIR;return a&&a.trim().length>0?m().resolve(a):process.cwd()}let p=j("utils/storage/backend"),q=m().join(o(),"db"),r=m().join(o(),".next","storage"),s=a=>m().join(q,`${a}.json`);async function t(){try{await k.promises.access(q),p.verbose(`Storage directory exists: ${q}`)}catch{p.debug(`Creating storage directory: ${q}`),await k.promises.mkdir(q,{recursive:!0})}try{await k.promises.access(r),p.warn(`Old storage directory found: ${r}. This may cause data inconsistency issues.`)}catch{}}let u=new Map,v=0;async function w(a,b){let c=m().dirname(a);await k.promises.mkdir(c,{recursive:!0});let d=`${a}.tmp.${process.pid}.${++v}`;try{await k.promises.writeFile(d,b),await k.promises.rename(d,a)}catch(a){try{await k.promises.unlink(d)}catch{}throw a}}async function x(a,b){let c=s(a),d=(u.get(a)??Promise.resolve()).catch(()=>{}).then(()=>w(c,JSON.stringify(b,null,2)));u.set(a,d);try{await d,p.verbose(`Successfully saved item to: ${c}`)}catch(b){throw p.error(`Error saving item with key "${a}" to ${c}:`,b),b}finally{u.get(a)===d&&u.delete(a)}}async function y(a,b){try{await t();let c=s(a),d=await k.promises.readFile(c,"utf-8");if(0===d.trim().length)return p.warn(`Item with key "${a}" at ${c} is empty; treating as missing and returning default.`),b;try{let a=JSON.parse(d);return p.verbose(`Successfully loaded item from: ${c}`),a}catch(b){p.error(`CRITICAL: Failed to parse JSON from ${c}:`,b);let a=`${c}.corrupted.${Date.now()}.bak`;try{await k.promises.writeFile(a,d),p.info(`Created backup of corrupted file at: ${a}`)}catch(a){p.error("Failed to create backup of corrupted file:",a)}throw Error(`Failed to parse JSON from ${c}. A backup has been created at ${a}. Original error: ${b.message}`)}}catch(c){if("ENOENT"===c.code)return p.verbose(`Item with key "${a}" not found at ${s(a)}, returning default.`),b;throw p.error(`CRITICAL: Error loading item with key "${a}" from ${s(a)}:`,c),c}}var z=c(92347),A=c.n(z);let B=j("utils/encryption/session"),C=global.__flujo_encryption_sessions??(global.__flujo_encryption_sessions=new Map),D=j("utils/encryption/secure");class E extends Error{constructor(a="Encryption is locked: user password required to access secrets"){super(a),this.name="EncryptionLockedError",Object.setPrototypeOf(this,E.prototype)}}let F="data_encryption_key",G="data_encryption_iv",H="data_encryption_salt",I="encryption_type";var J=function(a){return a.DEFAULT="default",a.USER="user",a}(J||{});function K(){let a=A().enc.Utf8.parse("flujo_fixed_salt_v1");return A().PBKDF2("FLUJO~",a,{keySize:8,iterations:1e5})}async function L(){D.debug("initializeDefaultEncryption: Entering method");try{if(await Q())return!0;let a=K(),b=A().lib.WordArray.random(8),c=A().lib.WordArray.random(16),d=A().AES.encrypt(b.toString(),a,{iv:c,mode:A().mode.CBC,padding:A().pad.Pkcs7}),e=A().enc.Utf8.parse("flujo_fixed_salt_v1"),f={[F]:d.toString(),[G]:c.toString(),[H]:e.toString(),encryption_version:1,[I]:"default"};return await x(n.ENCRYPTION_KEY,f),!0}catch(a){return D.error("initializeDefaultEncryption: Failed to initialize default encryption:",a),!1}}async function M(){D.debug("getDefaultDEK: Entering method");try{let a=await y(n.ENCRYPTION_KEY,null);if(!a){if(!await L())return D.error("getDefaultDEK: Failed to initialize default encryption"),null;return await M()}if("default"!==a[I])return D.error("getDefaultDEK: Not using default encryption"),null;let b=a[F],c=A().enc.Hex.parse(a[G]),d=K(),e=A().AES.decrypt(b,d,{iv:c,mode:A().mode.CBC,padding:A().pad.Pkcs7});if(!e.toString())return D.error("getDefaultDEK: Failed to decrypt DEK with default key"),null;return A().enc.Hex.parse(e.toString())}catch(a){return D.error("getDefaultDEK: Failed to get default DEK:",a),null}}async function N(a){D.debug("getUserDEK: Entering method");try{let b=await y(n.ENCRYPTION_KEY,null);if(!b)return D.error("getUserDEK: No encryption metadata found"),null;if("user"!==b[I])return D.error("getUserDEK: Not using user encryption"),null;let c=b[F],d=A().enc.Hex.parse(b[G]),e=A().enc.Hex.parse(b[H]),f=A().PBKDF2(a,e,{keySize:8,iterations:1e5}),g=A().AES.decrypt(c,f,{iv:d,mode:A().mode.CBC,padding:A().pad.Pkcs7});if(!g.toString())return D.error("getUserDEK: Failed to decrypt DEK with provided password"),null;return A().enc.Hex.parse(g.toString())}catch(a){return D.error("getUserDEK: Failed to get user DEK:",a),null}}async function O(a,b=!1){D.debug("getDEK: Entering method");try{if(b&&a){D.debug("getDEK: Using session token");let b=function(a){let b=C.get(a);if(!b)return B.warn(`Session not found: ${a}`),null;let c=Date.now();return c-b.createdAt>72e5?(B.warn(`Session expired: ${a}`),C.delete(a),null):(b.lastUsed=c,b.dek)}(a);if(b)return A().enc.Hex.parse(b);D.warn("getDEK: Invalid or expired session token, falling back to default encryption")}let c=await y(n.ENCRYPTION_KEY,null);if(!c){if(D.info("getDEK: No encryption metadata found, initializing default encryption"),!await L())return D.error("getDEK: Failed to initialize default encryption"),null;return await O(a,b)}if("user"!==c[I])return await M();{let c=global.__flujo_server_dek??null;if(c)return D.debug("getDEK: Using server unlock state for user encryption"),A().enc.Hex.parse(c);if(a&&!b){let b=await N(a);if(b)return b;D.warn("getDEK: Provided password did not yield a valid user DEK")}throw D.warn("getDEK: User encryption is locked (no unlock state or valid credential)"),new E}}catch(a){if(a instanceof E)throw a;D.error("getDEK: Failed to get DEK:",a);try{if(D.warn("getDEK: Attempting to initialize default encryption as error recovery"),await L())return await M()}catch(a){D.error("getDEK: Failed to initialize default encryption as error recovery:",a)}return null}}async function P(a,b,c=!1){D.debug("decryptWithPassword: Entering method");try{let d=await O(b,c);if(!d)return null;let e=a.split(":");if(2!==e.length)return D.error("decryptWithPassword: Invalid ciphertext format"),null;let f=A().enc.Hex.parse(e[0]),g=e[1];return A().AES.decrypt(g,d,{iv:f,mode:A().mode.CBC,padding:A().pad.Pkcs7}).toString(A().enc.Utf8)}catch(a){if(a instanceof E)throw a;return D.error("decryptWithPassword: Failed to decrypt data:",a),null}}async function Q(){return D.debug("isEncryptionInitialized: Entering method"),null!==await y(n.ENCRYPTION_KEY,null)}var R=c(40410);let S=j("backend/utils/resolveGlobalVars");async function T(a){S.debug("Entering resolveGlobalVars method");let b=await y(n.GLOBAL_ENV_VARS,{}),c=function(a){if(!a||"object"!=typeof a)return!1;let b=Object.keys(a);if(0===b.length)return!0;let c=a[b[0]];return c&&"object"==typeof c&&"value"in c&&"metadata"in c&&"object"==typeof c.metadata&&"isSecret"in c.metadata}(b);S.debug(`Loaded ${Object.keys(b).length} global environment variables (${c?"new":"old"} format)`);let d={};if(c)for(let[a,c]of Object.entries(b))d[a]=c.value;else d={...b};let e=async a=>{let b=a.match(/\$\{global:([^}]+)\}/g);if(!b)return a;let c=a;for(let a of b){let b=a.substring(9,a.length-1);if(void 0!==d[b]){let e=d[b];if(e.startsWith("encrypted:")){S.debug(`Decrypting encrypted global variable: ${b}`);try{let a=e.substring(10),c=await P(a);if(c)e=c,S.debug(`Successfully decrypted global variable: ${b}`);else{S.warn(`Failed to decrypt global variable: ${b}`);continue}}catch(a){S.error(`Error decrypting global variable: ${b}`,a);continue}}else if(e.startsWith("encrypted_failed:")){S.warn(`Skipping failed encrypted global variable: ${b}`);continue}S.debug(`Resolved global variable: ${b}`),c=c.replace(a,e)}else S.warn(`Global variable not found: ${b}`)}return c},f=async a=>{if("string"==typeof a)return await e(a);if(Array.isArray(a))return await Promise.all(a.map(a=>f(a)));if(null!==a&&"object"==typeof a){let b={};for(let[c,d]of Object.entries(a))b[c]=await f(d);return b}return a},g=await f(a);return"object"==typeof a&&null!==a&&S.debug("Resolved global variables result:",JSON.stringify(g,null,2)),S.debug("Completed global variable resolution"),g}async function U(a,b=0){if(S.debug(`Entering resolveAndDecryptApiKey method (depth: ${b})`),!a)return S.warn("Empty value provided"),null;if(b>=10)return S.warn(`Maximum resolution depth reached (10) for value: ${a}`),a;let c=a;if(c.startsWith("encrypted:")){S.debug(`Decrypting encrypted value at depth ${b}`);try{let a=c.substring(10),d=await P(a);if(!d)return S.warn(`Failed to decrypt value at depth ${b}`),null;S.debug(`Successfully decrypted value at depth ${b}`),S.verbose(d),c=d}catch(a){return S.error(`Error decrypting value at depth ${b}:`,a),null}}else c.startsWith("encrypted_failed:")&&(S.warn(`Skipping failed encrypted value at depth ${b}`),c=c.substring(17));if(c.includes("${global:")){S.debug(`Resolving global variables at depth ${b}`);try{let a=await T(c);if(S.verbose(a),a!==c)return S.debug(`Value changed after resolving globals at depth ${b}, processing recursively`),U(a,b+1);c=a}catch(a){return S.error(`Error resolving global variables at depth ${b}:`,a),null}}return S.debug(`Completed resolveAndDecryptApiKey at depth ${b}`),c}(0,R.D)([T,U]),(0,d.A)(T,"40ec842092ea232b6d4aa599a380d422184da5e1ca",null),(0,d.A)(U,"602ea7ca289a8eaa1000fb321a71e292e6c766b6bb",null)},92173:(a,b,c)=>{c.d(b,{RJ:()=>e,gF:()=>d});let d="masked:********",e="********"}};
|
|
2
|
+
${b}`}catch(a){i+=": [Object cannot be stringified]"}else i+=`: ${d}`;switch(a){case f.VERBOSE:console.debug(`[VERBOSE] ${i}`);break;case f.DEBUG:console.debug(i);break;case f.INFO:console.info(i);break;case f.WARN:console.warn(i);break;case f.ERROR:console.error(i);break;default:console.log(i)}}}function j(a,b){let c,d=((c=a.replace(/^src\//,"")).startsWith("/")&&(c=c.substring(1)),c);return{verbose:(a,c)=>{i(f.VERBOSE,d,a,c,b)},debug:(a,c)=>{i(f.DEBUG,d,a,c,b)},info:(a,c)=>{i(f.INFO,d,a,c,b)},warn:(a,c)=>{i(f.WARN,d,a,c,b)},error:(a,c)=>{i(f.ERROR,d,a,c,b)}}}var k=c(29021),l=c(33873),m=c.n(l),n=function(a){return a.MODELS="models",a.FLOWS="flows",a.CHAT_HISTORY="history",a.THEME="theme",a.ENCRYPTION_KEY="encryption_key",a.MCP_SERVERS="mcp_servers",a.GLOBAL_ENV_VARS="global_env_vars",a.CURRENT_CONVERSATION_ID="current_conversation_id",a.SELECTED_FLOW_ID="selected_flow_id",a.LAST_PICKED_FLOW_ID="last_picked_flow_id",a.SPEECH_SETTINGS="speech_settings",a.SPOTLIGHT_SERVERS="spotlight_servers",a.PLANNED_EXECUTIONS="planned_executions",a.MCP_AUTO_INSTALL_SETTINGS="mcp_auto_install_settings",a.MCP_QUALITY_SETTINGS="mcp_quality_settings",a.RUN_RESOURCE_SETTINGS="run_resource_settings",a.KV_STORE_SETTINGS="kv_store_settings",a.PENDING_APPROVALS="pending_approvals",a}({});function o(){let a=process.env.FLUJO_DATA_DIR;return a&&a.trim().length>0?m().resolve(a):process.cwd()}let p=j("utils/storage/backend"),q=m().join(o(),"db"),r=m().join(o(),".next","storage"),s=a=>m().join(q,`${a}.json`);async function t(){try{await k.promises.access(q),p.verbose(`Storage directory exists: ${q}`)}catch{p.debug(`Creating storage directory: ${q}`),await k.promises.mkdir(q,{recursive:!0})}try{await k.promises.access(r),p.warn(`Old storage directory found: ${r}. This may cause data inconsistency issues.`)}catch{}}let u=new Map,v=0;async function w(a,b){let c=m().dirname(a);await k.promises.mkdir(c,{recursive:!0});let d=`${a}.tmp.${process.pid}.${++v}`;try{await k.promises.writeFile(d,b),await k.promises.rename(d,a)}catch(a){try{await k.promises.unlink(d)}catch{}throw a}}async function x(a,b){let c=s(a),d=(u.get(a)??Promise.resolve()).catch(()=>{}).then(()=>w(c,JSON.stringify(b,null,2)));u.set(a,d);try{await d,p.verbose(`Successfully saved item to: ${c}`)}catch(b){throw p.error(`Error saving item with key "${a}" to ${c}:`,b),b}finally{u.get(a)===d&&u.delete(a)}}async function y(a,b){try{await t();let c=s(a),d=await k.promises.readFile(c,"utf-8");if(0===d.trim().length)return p.warn(`Item with key "${a}" at ${c} is empty; treating as missing and returning default.`),b;try{let a=JSON.parse(d);return p.verbose(`Successfully loaded item from: ${c}`),a}catch(b){p.error(`CRITICAL: Failed to parse JSON from ${c}:`,b);let a=`${c}.corrupted.${Date.now()}.bak`;try{await k.promises.writeFile(a,d),p.info(`Created backup of corrupted file at: ${a}`)}catch(a){p.error("Failed to create backup of corrupted file:",a)}throw Error(`Failed to parse JSON from ${c}. A backup has been created at ${a}. Original error: ${b.message}`)}}catch(c){if("ENOENT"===c.code)return p.verbose(`Item with key "${a}" not found at ${s(a)}, returning default.`),b;throw p.error(`CRITICAL: Error loading item with key "${a}" from ${s(a)}:`,c),c}}var z=c(92347),A=c.n(z);let B=j("utils/encryption/session"),C=global.__flujo_encryption_sessions??(global.__flujo_encryption_sessions=new Map),D=j("utils/encryption/secure");class E extends Error{constructor(a="Encryption is locked: user password required to access secrets"){super(a),this.name="EncryptionLockedError",Object.setPrototypeOf(this,E.prototype)}}let F="data_encryption_key",G="data_encryption_iv",H="data_encryption_salt",I="encryption_type";var J=function(a){return a.DEFAULT="default",a.USER="user",a}(J||{});function K(){let a=A().enc.Utf8.parse("flujo_fixed_salt_v1");return A().PBKDF2("FLUJO~",a,{keySize:8,iterations:1e5})}async function L(){D.debug("initializeDefaultEncryption: Entering method");try{if(await Q())return!0;let a=K(),b=A().lib.WordArray.random(8),c=A().lib.WordArray.random(16),d=A().AES.encrypt(b.toString(),a,{iv:c,mode:A().mode.CBC,padding:A().pad.Pkcs7}),e=A().enc.Utf8.parse("flujo_fixed_salt_v1"),f={[F]:d.toString(),[G]:c.toString(),[H]:e.toString(),encryption_version:1,[I]:"default"};return await x(n.ENCRYPTION_KEY,f),!0}catch(a){return D.error("initializeDefaultEncryption: Failed to initialize default encryption:",a),!1}}async function M(){D.debug("getDefaultDEK: Entering method");try{let a=await y(n.ENCRYPTION_KEY,null);if(!a){if(!await L())return D.error("getDefaultDEK: Failed to initialize default encryption"),null;return await M()}if("default"!==a[I])return D.error("getDefaultDEK: Not using default encryption"),null;let b=a[F],c=A().enc.Hex.parse(a[G]),d=K(),e=A().AES.decrypt(b,d,{iv:c,mode:A().mode.CBC,padding:A().pad.Pkcs7});if(!e.toString())return D.error("getDefaultDEK: Failed to decrypt DEK with default key"),null;return A().enc.Hex.parse(e.toString())}catch(a){return D.error("getDefaultDEK: Failed to get default DEK:",a),null}}async function N(a){D.debug("getUserDEK: Entering method");try{let b=await y(n.ENCRYPTION_KEY,null);if(!b)return D.error("getUserDEK: No encryption metadata found"),null;if("user"!==b[I])return D.error("getUserDEK: Not using user encryption"),null;let c=b[F],d=A().enc.Hex.parse(b[G]),e=A().enc.Hex.parse(b[H]),f=A().PBKDF2(a,e,{keySize:8,iterations:1e5}),g=A().AES.decrypt(c,f,{iv:d,mode:A().mode.CBC,padding:A().pad.Pkcs7});if(!g.toString())return D.error("getUserDEK: Failed to decrypt DEK with provided password"),null;return A().enc.Hex.parse(g.toString())}catch(a){return D.error("getUserDEK: Failed to get user DEK:",a),null}}async function O(a,b=!1){D.debug("getDEK: Entering method");try{if(b&&a){D.debug("getDEK: Using session token");let b=function(a){let b=C.get(a);if(!b)return B.warn(`Session not found: ${a}`),null;let c=Date.now();return c-b.createdAt>72e5?(B.warn(`Session expired: ${a}`),C.delete(a),null):(b.lastUsed=c,b.dek)}(a);if(b)return A().enc.Hex.parse(b);D.warn("getDEK: Invalid or expired session token, falling back to default encryption")}let c=await y(n.ENCRYPTION_KEY,null);if(!c){if(D.info("getDEK: No encryption metadata found, initializing default encryption"),!await L())return D.error("getDEK: Failed to initialize default encryption"),null;return await O(a,b)}if("user"!==c[I])return await M();{let c=global.__flujo_server_dek??null;if(c)return D.debug("getDEK: Using server unlock state for user encryption"),A().enc.Hex.parse(c);if(a&&!b){let b=await N(a);if(b)return b;D.warn("getDEK: Provided password did not yield a valid user DEK")}throw D.warn("getDEK: User encryption is locked (no unlock state or valid credential)"),new E}}catch(a){if(a instanceof E)throw a;D.error("getDEK: Failed to get DEK:",a);try{if(D.warn("getDEK: Attempting to initialize default encryption as error recovery"),await L())return await M()}catch(a){D.error("getDEK: Failed to initialize default encryption as error recovery:",a)}return null}}async function P(a,b,c=!1){D.debug("decryptWithPassword: Entering method");try{let d=await O(b,c);if(!d)return null;let e=a.split(":");if(2!==e.length)return D.error("decryptWithPassword: Invalid ciphertext format"),null;let f=A().enc.Hex.parse(e[0]),g=e[1];return A().AES.decrypt(g,d,{iv:f,mode:A().mode.CBC,padding:A().pad.Pkcs7}).toString(A().enc.Utf8)}catch(a){if(a instanceof E)throw a;return D.error("decryptWithPassword: Failed to decrypt data:",a),null}}async function Q(){return D.debug("isEncryptionInitialized: Entering method"),null!==await y(n.ENCRYPTION_KEY,null)}var R=c(40410);let S=j("backend/utils/resolveGlobalVars");async function T(a){S.debug("Entering resolveGlobalVars method");let b=await y(n.GLOBAL_ENV_VARS,{}),c=function(a){if(!a||"object"!=typeof a)return!1;let b=Object.keys(a);if(0===b.length)return!0;let c=a[b[0]];return c&&"object"==typeof c&&"value"in c&&"metadata"in c&&"object"==typeof c.metadata&&"isSecret"in c.metadata}(b);S.debug(`Loaded ${Object.keys(b).length} global environment variables (${c?"new":"old"} format)`);let d={};if(c)for(let[a,c]of Object.entries(b))d[a]=c.value;else d={...b};let e=async a=>{let b=a.match(/\$\{global:([^}]+)\}/g);if(!b)return a;let c=a;for(let a of b){let b=a.substring(9,a.length-1);if(void 0!==d[b]){let e=d[b];if(e.startsWith("encrypted:")){S.debug(`Decrypting encrypted global variable: ${b}`);try{let a=e.substring(10),c=await P(a);if(c)e=c,S.debug(`Successfully decrypted global variable: ${b}`);else{S.warn(`Failed to decrypt global variable: ${b}`);continue}}catch(a){S.error(`Error decrypting global variable: ${b}`,a);continue}}else if(e.startsWith("encrypted_failed:")){S.warn(`Skipping failed encrypted global variable: ${b}`);continue}S.debug(`Resolved global variable: ${b}`),c=c.replace(a,e)}else S.warn(`Global variable not found: ${b}`)}return c},f=async a=>{if("string"==typeof a)return await e(a);if(Array.isArray(a))return await Promise.all(a.map(a=>f(a)));if(null!==a&&"object"==typeof a){let b={};for(let[c,d]of Object.entries(a))b[c]=await f(d);return b}return a},g=await f(a);return"object"==typeof a&&null!==a&&S.debug("Resolved global variables result:",JSON.stringify(g,null,2)),S.debug("Completed global variable resolution"),g}async function U(a,b=0){if(S.debug(`Entering resolveAndDecryptApiKey method (depth: ${b})`),!a)return S.warn("Empty value provided"),null;if(b>=10)return S.warn(`Maximum resolution depth reached (10) for value: ${a}`),a;let c=a;if(c.startsWith("encrypted:")){S.debug(`Decrypting encrypted value at depth ${b}`);try{let a=c.substring(10),d=await P(a);if(!d)return S.warn(`Failed to decrypt value at depth ${b}`),null;S.debug(`Successfully decrypted value at depth ${b}`),S.verbose(d),c=d}catch(a){return S.error(`Error decrypting value at depth ${b}:`,a),null}}else c.startsWith("encrypted_failed:")&&(S.warn(`Skipping failed encrypted value at depth ${b}`),c=c.substring(17));if(c.includes("${global:")){S.debug(`Resolving global variables at depth ${b}`);try{let a=await T(c);if(S.verbose(a),a!==c)return S.debug(`Value changed after resolving globals at depth ${b}, processing recursively`),U(a,b+1);c=a}catch(a){return S.error(`Error resolving global variables at depth ${b}:`,a),null}}return S.debug(`Completed resolveAndDecryptApiKey at depth ${b}`),c}(0,R.D)([T,U]),(0,d.A)(T,"40ec842092ea232b6d4aa599a380d422184da5e1ca",null),(0,d.A)(U,"602ea7ca289a8eaa1000fb321a71e292e6c766b6bb",null)},92173:(a,b,c)=>{c.d(b,{RJ:()=>e,gF:()=>d});let d="masked:********",e="********"}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=1226,exports.ids=[1226],exports.modules={81226:(a,b,c)=>{c.d(b,{A_:()=>g,FH:()=>u,Zn:()=>v,dM:()=>t,lk:()=>h,pX:()=>s});var d=c(32524),e=c(49181),f=c(67512);let g=3,h=8;function i(a,b,c,d){return"number"!=typeof a||Number.isNaN(a)?d:Math.max(b,Math.min(c,Math.floor(a)))}let j={type:"arrowclosed",width:20,height:20,color:"#1976d2"},k={stroke:"#1976d2",strokeWidth:2},l={type:"arrowclosed",width:20,height:20,color:"#009688"},m={stroke:"#009688",strokeWidth:2},n=new Set(["full-history","latest-message","isolated"]),o=new Set(["steps","final-only"]),p=new Set(["full-conversation","latest-message"]);function q(a){let b=(0,e.A$)(a);if(0===b.length)return{text:a,stripped:!1};let c="",d=0;for(let e of b)c+=a.slice(d,e.index)+e.name,d=e.index+e.fullMatch.length;return{text:c+=a.slice(d),stripped:!0}}function r(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}function s(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}}function t(a,b={},c={}){let e=[],u=(a,b,c)=>e.push({severity:"error",code:a,message:b,nodeKey:c}),v=(a,b,c)=>e.push({severity:"warning",code:a,message:b,nodeKey:c}),w=b.models??[],x=new Set((b.servers??[]).map(a=>a.name)),y=b.serverTools??{},z=i(c.maxDepth,0,g,g),A=i(c.maxFlows,1,h,h),B=[],C=[...(b.flows??[]).map(a=>a.name)],D=[],E=0;var F=function a(e,g,h){let t=Array.isArray(e?.nodes)?e.nodes:[],F=Array.isArray(e?.edges)?e.edges:[],G=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}}(e?.name,C);C.push(G),E++;let H=(0,d.A)(),I=[...h,G],K=new Map,L=[],M=[];for(let c of t){let e=c?.key;if(!e||"string"!=typeof e){u("node-missing-key",'A node is missing its "key" — every node needs a unique key.');continue}if(K.has(e)){u("node-duplicate-key",`Duplicate node key "${e}" — keys must be unique; the later node was dropped.`,e);continue}let f=c.type;if("mcp"===f){u("mcp-node-not-allowed",`Node "${e}": do not emit "mcp" nodes — attach servers to a process node via its "servers" list instead.`,e);continue}if("start"!==f&&"process"!==f&&"finish"!==f&&"subflow"!==f&&"resource"!==f&&"signal"!==f){u("unknown-node-type",`Node "${e}" has unknown type "${String(f)}".`,e);continue}let h={},j="string"==typeof c.prompt?c.prompt:void 0;if("start"===f){let{text:a,stripped:b}=q(j??"");b&&v("pill-stripped",`Node "${e}": binding pills are not supported in generated prompts and were replaced with plain names.`,e),h.promptTemplate=a}else if("process"===f){let{text:a,stripped:b}=q(j??"");if(b&&v("pill-stripped",`Node "${e}": binding pills are not supported in generated prompts and were replaced with plain names.`,e),h.promptTemplate=a,c.model){let a=function(a,b){if(b.some(b=>b.id===a))return a;let c=a.toLowerCase(),d=b.find(a=>a.displayName?.toLowerCase()===c);if(d)return d.id;let e=b.find(a=>a.name?.toLowerCase()===c);return e?e.id:null}(c.model,w);a?h.boundModel=a:(h.boundModel=c.model,v("model-unresolved",`Node "${e}": model "${c.model}" does not match any configured model (by id, display name, or name).`,e))}void 0!==c.inputMode&&(n.has(c.inputMode)?(h.inputMode=c.inputMode,"isolated"===c.inputMode&&"string"==typeof c.isolatedPrompt&&(h.isolatedPrompt=c.isolatedPrompt)):v("invalid-input-mode",`Node "${e}": inputMode "${String(c.inputMode)}" is not valid (full-history | latest-message | isolated); omitted.`,e)),void 0!==c.outputMode&&(p.has(c.outputMode)?h.outputMode=c.outputMode:v("invalid-output-mode",`Node "${e}": outputMode "${String(c.outputMode)}" is not valid on a process node (full-conversation | latest-message); omitted.`,e)),void 0!==c.maxTurns&&("number"!=typeof c.maxTurns||Number.isNaN(c.maxTurns)?v("invalid-max-turns",`Node "${e}": maxTurns "${String(c.maxTurns)}" is not a number; omitted.`,e):h.maxTurns=i(c.maxTurns,1,1e3,1)),"boolean"==typeof c.excludeModelPrompt&&(h.excludeModelPrompt=c.excludeModelPrompt),"boolean"==typeof c.excludeStartNodePrompt&&(h.excludeStartNodePrompt=c.excludeStartNodePrompt),"boolean"==typeof c.excludeSystemPrompt&&(h.excludeSystemPrompt=c.excludeSystemPrompt),Array.isArray(c.allowedTools)&&(h.allowedTools=c.allowedTools.filter(a=>"string"==typeof a&&a)),"string"==typeof c.captureVariable&&c.captureVariable.trim()&&(h.captureVariable=c.captureVariable.trim()),"string"==typeof c.captureResource&&c.captureResource.trim()&&(h.captureResource=c.captureResource.trim()),"string"==typeof c.captureKv&&c.captureKv.trim()&&(h.captureKv=c.captureKv.trim())}else if("subflow"===f){if(function(c,d,e,f,g){let h=Array.isArray(c.parallelFlows)&&c.parallelFlows.length>0,i=Array.isArray(c.parallelSubflowSpecs)&&c.parallelSubflowSpecs.length>0,j="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,h?"parallelFlows":null,i?"parallelSubflowSpecs":null,void 0!==c.generateSubflow&&null!==c.generateSubflow?"generateSubflow":null].filter(Boolean).length>1&&v("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;(h||i)&&u("subflow-map-and-parallel",`Node "${d}": "mapOverList" runs a SINGLE child once per item and cannot be combined with "parallelFlows"/"parallelSubflowSpecs".`,d),a?(g.mapOverList=!0,void 0!==c.itemSplit&&("json-array"===c.itemSplit||"lines"===c.itemSplit?g.itemSplit=c.itemSplit:v("invalid-item-split",`Node "${d}": itemSplit "${String(c.itemSplit)}" is not valid (json-array | lines); using json-array.`,d)),!0===c.sequential&&(g.sequential=!0),J(c,g)):u("subflow-map-no-child",`Node "${d}": "mapOverList" needs a single child ("flow" or "subflowSpec") to run once per item.`,d)}if(j&&(!0===c.mapOverList?u("subflow-map-and-parallel-var",`Node "${d}": "parallelFlowsVariable" (dynamic fan-out) cannot be combined with "mapOverList".`,d):g.parallelSubflowIdsVar=j),c.flow){if(f.some(a=>a.toLowerCase()===c.flow.toLowerCase()))return u("subflow-cycle",`Node "${d}": flow "${c.flow}" refers to an ancestor flow, which would create a cycle.`,d);let a=r(c.flow,[...b.flows??[],...D]);return a?g.subflowId=a:u("subflow-unresolved",`Node "${d}": flow "${c.flow}" does not match any existing flow (by id or name).`,d)}if(c.subflowSpec){if(e+1>z)return u("subflow-too-deep",`Node "${d}": nested subflows may not go deeper than ${z} level(s); this inline subflow was not compiled.`,d);if(E>=A)return u("subflow-too-many",`Node "${d}": compiling this inline subflow would exceed the maximum of ${A} flows in one bundle; it was not compiled.`,d);let b=a(c.subflowSpec,e+1,f);return b?g.subflowId=b.id:u("subflow-child-empty",`Node "${d}": the inline "subflowSpec" produced no usable flow.`,d)}if(h){let a=[];for(let e of c.parallelFlows){if("string"!=typeof e||!e){u("parallel-flow-invalid",`Node "${d}": a "parallelFlows" entry is missing or not a string.`,d);continue}if(f.some(a=>a.toLowerCase()===e.toLowerCase())){u("subflow-cycle",`Node "${d}": parallel flow "${e}" refers to an ancestor flow, which would create a cycle.`,d);continue}let c=r(e,[...b.flows??[],...D]);c?a.includes(c)||a.push(c):u("parallel-flow-unresolved",`Node "${d}": parallel flow "${e}" does not match any existing flow (by id or name).`,d)}a.length>0?(g.parallelSubflowIds=a,J(c,g)):u("parallel-empty",`Node "${d}": "parallelFlows" resolved to no runnable lanes.`,d);return}if(i){let b=[];for(let g of c.parallelSubflowSpecs){if(!g||"object"!=typeof g){u("parallel-spec-invalid",`Node "${d}": a "parallelSubflowSpecs" entry is not a FlowSpec object.`,d);continue}if(e+1>z){u("subflow-too-deep",`Node "${d}": nested subflows may not go deeper than ${z} level(s); a parallel inline subflow was not compiled.`,d);continue}if(E>=A){u("subflow-too-many",`Node "${d}": compiling a parallel inline subflow would exceed the maximum of ${A} flows in one bundle; it was not compiled.`,d);continue}let c=a(g,e+1,f);c?b.push(c.id):u("subflow-child-empty",`Node "${d}": a "parallelSubflowSpecs" entry produced no usable flow.`,d)}b.length>0?(g.parallelSubflowIds=b,J(c,g)):u("parallel-empty",`Node "${d}": "parallelSubflowSpecs" produced no runnable lanes.`,d);return}j&&g.parallelSubflowIdsVar?J(c,g):void 0!==c.generateSubflow&&null!==c.generateSubflow?u("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):u("subflow-missing-flow",`Node "${d}": subflow nodes need a "flow" (existing flow), a "subflowSpec" (inline child), "parallelFlows"/"parallelSubflowSpecs" (concurrent children), or "generateSubflow".`,d)}(c,e,g,I,h),void 0!==c.inputMode&&(n.has(c.inputMode)?h.inputMode=c.inputMode:v("invalid-input-mode",`Node "${e}": inputMode "${String(c.inputMode)}" is not valid (full-history | latest-message | isolated); omitted.`,e)),void 0!==c.outputMode&&(o.has(c.outputMode)?h.outputMode=c.outputMode:v("invalid-output-mode",`Node "${e}": outputMode "${String(c.outputMode)}" is not valid (steps | final-only); omitted.`,e)),void 0!==j){let{text:a,stripped:b}=q(j);b&&v("pill-stripped",`Node "${e}": binding pills are not supported in generated prompts and were replaced with plain names.`,e),h.promptTemplate=a}"boolean"==typeof c.allowCallerPrompt&&(h.allowCallerPrompt=c.allowCallerPrompt),"string"==typeof c.captureVariable&&c.captureVariable.trim()&&(h.captureVariable=c.captureVariable.trim()),"string"==typeof c.captureResource&&c.captureResource.trim()&&(h.captureResource=c.captureResource.trim()),"string"==typeof c.captureKv&&c.captureKv.trim()&&(h.captureKv=c.captureKv.trim())}else if("resource"===f){let a="string"==typeof c.runName?c.runName.trim():"",b="string"==typeof c.server?c.server.trim():"",d="string"==typeof c.uri?c.uri.trim():"";a?(h.scope="run",h.runName=a,(b||d)&&v("resource-both-bindings",`Node "${e}": a resource node is EITHER a run artifact ("runName") or a static MCP resource ("server"+"uri"); kept the run artifact.`,e)):(h.scope="mcp",b&&(h.boundServer=b),d&&(h.uri=d),b&&d?x.has(b)||v("server-unknown",`Node "${e}": MCP server "${b}" is not configured in FLUJO.`,e):v("resource-missing-binding",`Node "${e}": a static resource node needs both "server" and "uri" (or a "runName" for a run artifact).`,e))}else if("signal"===f){let a="string"==typeof c.topic?c.topic.trim():"";a?h.topic=a:v("signal-missing-topic",`Node "${e}": a signal node needs a "topic" to emit.`,e),"string"==typeof c.payloadTemplate&&c.payloadTemplate?h.payloadTemplate=c.payloadTemplate:void 0!==j&&(h.payloadTemplate=j)}let k={id:(0,d.A)(),type:f,position:{x:0,y:0},data:{label:c.label||`${f.charAt(0).toUpperCase()}${f.slice(1)} Node`,type:f,...c.description?{description:c.description}:{},properties:h}};if(K.set(e,k),L.push(k),"process"===f&&Array.isArray(c.servers)){let a=new Set;for(let b of c.servers){let c,f=b?.name;if(!f||"string"!=typeof f){v("server-missing-name",`Node "${e}": a server reference is missing its "name"; skipped.`,e);continue}if(a.has(f))continue;a.add(f),x.has(f)||v("server-unknown",`Node "${e}": MCP server "${f}" is not configured in FLUJO.`,e);let g=y[f];if(Array.isArray(b.tools)){if(c=b.tools.filter(a=>"string"==typeof a&&a),g){let a=c.filter(a=>!g.includes(a));a.length>0&&v("tool-unknown",`Node "${e}": server "${f}" does not report tool(s): ${a.join(", ")}.`,e)}}else c=g?[...g]:[];let h={id:(0,d.A)(),type:"mcp",position:{x:0,y:0},data:{label:f,type:"mcp",properties:{boundServer:f,enabledTools:c}}};L.push(h),M.push({processKey:e,mcpNode:h})}}else"process"!==f&&Array.isArray(c.servers)&&c.servers.length>0&&v("servers-on-non-process",`Node "${e}": only process nodes can have "servers"; ignored.`,e)}if(0===K.size)return u("no-usable-nodes","No usable nodes — the spec must contain at least a start node and one step."),null;let N=[],O=new Set;for(let a of F){let b,c=a?.from,d=a?.to,e=c?K.get(c):void 0,g=d?K.get(d):void 0;if(!e||!g){u("edge-unknown-node",`Edge "${String(c)}" -> "${String(d)}" references a node key that does not exist (or was dropped).`);continue}if(e===g){u("edge-self-loop",`Edge "${c}" -> "${d}": a node cannot connect to itself.`);continue}if("resource"===e.type||"resource"===g.type){if(("resource"!==e.type||"process"!==g.type)&&("process"!==e.type||"resource"!==g.type)){u("resource-edge-invalid",`Edge "${c}" -> "${d}": resource nodes connect only to process nodes.`);continue}a.condition&&v("resource-edge-condition",`Edge "${c}" -> "${d}": conditions do not apply to resource wiring; dropped.`),!0===a.bidirectional&&v("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(O.has(b)){v("edge-duplicate",`Edge "${c}" -> "${d}" appears more than once; kept the first.`);continue}O.add(b),N.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:{...l},style:{...m}}}(e,g));continue}if("start"===g.type){u("edge-into-start",`Edge "${c}" -> "${d}": nothing may connect INTO a start node.`);continue}if("finish"===e.type){u("edge-out-of-finish",`Edge "${c}" -> "${d}": nothing may connect OUT OF a finish node.`);continue}let h=`${c}->${d}`;if(O.has(h)){v("edge-duplicate",`Edge "${c}" -> "${d}" appears more than once; kept the first.`);continue}O.add(h);let i=!0===a.bidirectional;i&&("start"===e.type||"finish"===g.type)&&(v("bidirectional-illegal",`Edge "${c}" -> "${d}" cannot be bidirectional; downgraded to one-way.`),i=!1);let j=a.condition;j&&"object"==typeof j&&("process"!==e.type?v("edge-condition-non-process",`Edge "${c}" -> "${d}" has a condition but leaves a ${e.type} node; conditions only route from process nodes and were dropped.`):(0,f.C)(j.kind)?"always"===j.kind?b={kind:"always",..."last-message"===j.target?{target:"last-message"}:{},...!0===j.negate?{negate:!0}:{}}:"string"!=typeof j.value||0===j.value.length?v("edge-condition-value",`Edge "${c}" -> "${d}" has a condition with no "value"; the condition was dropped.`):("regex"!==j.kind||(0,f.wM)(j.value)||v("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:j.kind,value:j.value,..."last-message"===j.target?{target:"last-message"}:{},...!0===j.ignoreCase?{ignoreCase:!0}:{},...!0===j.negate?{negate:!0}:{}}):v("edge-condition-kind",`Edge "${c}" -> "${d}" has an unknown condition kind "${String(j.kind)}"; the condition was dropped.`)),N.push(s(e,g,i,b))}for(let{processKey:a,mcpNode:b}of M){let c=K.get(a);N.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:{...j},markerStart:{...j},style:{...k}}}(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,N,M,0===g?c.positions:void 0);let P={id:H,name:G,...e?.description?{description:e.description}:{},nodes:L,edges:N};return B.push(P),D.push({id:P.id,name:P.name}),P}(a,0,[]),G=B,H=e;let I=H.filter(a=>"error"===a.severity).length;return{flow:F,flows:G,issues:H,errorCount:I,warningCount:H.length-I};function J(a,b){void 0!==a.concurrencyLimit&&("number"!=typeof a.concurrencyLimit||Number.isNaN(a.concurrencyLimit)?v("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:v("invalid-error-strategy",`Node "${a.key}": errorStrategy "${String(a.errorStrategy)}" is not valid (fail-fast | collect-all); using collect-all.`,a.key))}}function u(a){let b=Array.isArray(a?.nodes)?a.nodes:[],c=Array.isArray(a?.edges)?a.edges:[],d=new Map;for(let a of b)"mcp"===a.type&&d.set(a.id,a);let e=new Map;for(let a of c){if(a.data?.edgeType!=="mcp")continue;let b=d.get(a.target);if(!b)continue;let c=b.data?.properties??{},f="string"==typeof c.boundServer&&c.boundServer?c.boundServer:b.data?.label;if(!f||"string"!=typeof f)continue;let g=Array.isArray(c.enabledTools)?c.enabledTools.filter(a=>"string"==typeof a&&!!a):void 0,h=e.get(a.source)??[];h.push({name:f,...g?{tools:g}:{}}),e.set(a.source,h)}let f=[];for(let a of b){if("mcp"===a.type)continue;let b=a.type;if("start"!==b&&"process"!==b&&"finish"!==b&&"subflow"!==b&&"resource"!==b&&"signal"!==b)continue;let c=a.data?.properties??{},d={key:a.id,type:b,...a.data?.label?{label:a.data.label}:{},...a.data?.description?{description:a.data.description}:{}};if("start"===b)"string"==typeof c.promptTemplate&&c.promptTemplate&&(d.prompt=c.promptTemplate);else if("process"===b){"string"==typeof c.promptTemplate&&c.promptTemplate&&(d.prompt=c.promptTemplate),"string"==typeof c.boundModel&&c.boundModel&&(d.model=c.boundModel),"string"==typeof c.inputMode&&(d.inputMode=c.inputMode),"string"==typeof c.isolatedPrompt&&c.isolatedPrompt&&(d.isolatedPrompt=c.isolatedPrompt),"string"==typeof c.outputMode&&(d.outputMode=c.outputMode),"number"==typeof c.maxTurns&&c.maxTurns>0&&(d.maxTurns=c.maxTurns),!0===c.excludeModelPrompt&&(d.excludeModelPrompt=!0),!0===c.excludeStartNodePrompt&&(d.excludeStartNodePrompt=!0),!0===c.excludeSystemPrompt&&(d.excludeSystemPrompt=!0),Array.isArray(c.allowedTools)&&c.allowedTools.length>0&&(d.allowedTools=c.allowedTools.filter(a=>"string"==typeof a&&!!a)),"string"==typeof c.captureVariable&&c.captureVariable&&(d.captureVariable=c.captureVariable),"string"==typeof c.captureResource&&c.captureResource&&(d.captureResource=c.captureResource),"string"==typeof c.captureKv&&c.captureKv&&(d.captureKv=c.captureKv);let b=e.get(a.id);b&&b.length>0&&(d.servers=b)}else"subflow"===b?(Array.isArray(c.parallelSubflowIds)&&c.parallelSubflowIds.length>0?(d.parallelFlows=c.parallelSubflowIds.filter(a=>"string"==typeof a&&!!a),"number"==typeof c.concurrencyLimit&&c.concurrencyLimit>0&&(d.concurrencyLimit=c.concurrencyLimit),"string"==typeof c.joinSeparator&&(d.joinSeparator=c.joinSeparator),("fail-fast"===c.errorStrategy||"collect-all"===c.errorStrategy)&&(d.errorStrategy=c.errorStrategy)):"string"==typeof c.subflowId&&c.subflowId&&(d.flow=c.subflowId,!0===c.mapOverList&&(d.mapOverList=!0,("json-array"===c.itemSplit||"lines"===c.itemSplit)&&(d.itemSplit=c.itemSplit),!0===c.sequential&&(d.sequential=!0),"number"==typeof c.concurrencyLimit&&c.concurrencyLimit>0&&(d.concurrencyLimit=c.concurrencyLimit),"string"==typeof c.joinSeparator&&(d.joinSeparator=c.joinSeparator),("fail-fast"===c.errorStrategy||"collect-all"===c.errorStrategy)&&(d.errorStrategy=c.errorStrategy))),"string"==typeof c.parallelSubflowIdsVar&&c.parallelSubflowIdsVar&&(d.parallelFlowsVariable=c.parallelSubflowIdsVar,d.parallelFlows||d.flow||("number"==typeof c.concurrencyLimit&&c.concurrencyLimit>0&&(d.concurrencyLimit=c.concurrencyLimit),"string"==typeof c.joinSeparator&&(d.joinSeparator=c.joinSeparator),("fail-fast"===c.errorStrategy||"collect-all"===c.errorStrategy)&&(d.errorStrategy=c.errorStrategy))),"string"==typeof c.inputMode&&(d.inputMode=c.inputMode),"string"==typeof c.outputMode&&(d.outputMode=c.outputMode),"string"==typeof c.promptTemplate&&c.promptTemplate&&(d.prompt=c.promptTemplate),!0===c.allowCallerPrompt&&(d.allowCallerPrompt=!0),"string"==typeof c.captureVariable&&c.captureVariable&&(d.captureVariable=c.captureVariable),"string"==typeof c.captureResource&&c.captureResource&&(d.captureResource=c.captureResource),"string"==typeof c.captureKv&&c.captureKv&&(d.captureKv=c.captureKv)):"resource"===b?"run"===c.scope&&"string"==typeof c.runName&&c.runName?d.runName=c.runName:("string"==typeof c.boundServer&&c.boundServer&&(d.server=c.boundServer),"string"==typeof c.uri&&c.uri&&(d.uri=c.uri)):"signal"===b&&("string"==typeof c.topic&&c.topic&&(d.topic=c.topic),"string"==typeof c.payloadTemplate&&c.payloadTemplate&&(d.payloadTemplate=c.payloadTemplate));f.push(d)}let g=[];for(let a of c){if(a.data?.edgeType==="mcp"||!a.source||!a.target||d.has(a.source)||d.has(a.target))continue;let b=a.data;g.push({from:a.source,to:a.target,...b?.bidirectional?{bidirectional:!0}:{},...b?.condition?{condition:b.condition}:{}})}return{...a?.name?{name:a.name}:{},...a?.description?{description:a.description}:{},nodes:f,edges:g}}function v(a){for(let b of a.nodes){if("process"!==b.type)continue;let a=b.data.properties??{};void 0===a.inputMode&&(a.inputMode="latest-message"),void 0===a.outputMode&&(a.outputMode="latest-message"),b.data.properties=a}}}};
|
|
1
|
+
"use strict";exports.id=1226,exports.ids=[1226],exports.modules={81226:(a,b,c)=>{c.d(b,{A_:()=>g,FH:()=>u,Zn:()=>v,dM:()=>t,lk:()=>h,pX:()=>s});var d=c(32524),e=c(49181),f=c(67512);let g=3,h=8;function i(a,b,c,d){return"number"!=typeof a||Number.isNaN(a)?d:Math.max(b,Math.min(c,Math.floor(a)))}let j={type:"arrowclosed",width:20,height:20,color:"#1976d2"},k={stroke:"#1976d2",strokeWidth:2},l={type:"arrowclosed",width:20,height:20,color:"#009688"},m={stroke:"#009688",strokeWidth:2},n=new Set(["full-history","latest-message","isolated"]),o=new Set(["steps","final-only"]),p=new Set(["full-conversation","latest-message"]);function q(a){let b=(0,e.A$)(a);if(0===b.length)return{text:a,stripped:!1};let c="",d=0;for(let e of b)c+=a.slice(d,e.index)+e.name,d=e.index+e.fullMatch.length;return{text:c+=a.slice(d),stripped:!0}}function r(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}function s(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}}function t(a,b={},c={}){let e=[],u=(a,b,c)=>e.push({severity:"error",code:a,message:b,nodeKey:c}),v=(a,b,c)=>e.push({severity:"warning",code:a,message:b,nodeKey:c}),w=b.models??[],x=new Set((b.servers??[]).map(a=>a.name)),y=b.serverTools??{},z=i(c.maxDepth,0,g,g),A=i(c.maxFlows,1,h,h),B=[],C=[...(b.flows??[]).map(a=>a.name)],D=[],E=0;var F=function a(e,g,h){let t=Array.isArray(e?.nodes)?e.nodes:[],F=Array.isArray(e?.edges)?e.edges:[],G=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}}(e?.name,C);C.push(G),E++;let H=(0,d.A)(),I=[...h,G],K=new Map,L=[],M=[];for(let c of t){let e=c?.key;if(!e||"string"!=typeof e){u("node-missing-key",'A node is missing its "key" — every node needs a unique key.');continue}if(K.has(e)){u("node-duplicate-key",`Duplicate node key "${e}" — keys must be unique; the later node was dropped.`,e);continue}let f=c.type;if("mcp"===f){u("mcp-node-not-allowed",`Node "${e}": do not emit "mcp" nodes — attach servers to a process node via its "servers" list instead.`,e);continue}if("start"!==f&&"process"!==f&&"finish"!==f&&"subflow"!==f&&"resource"!==f&&"signal"!==f){u("unknown-node-type",`Node "${e}" has unknown type "${String(f)}".`,e);continue}let h={},j="string"==typeof c.prompt?c.prompt:void 0;if("start"===f){let{text:a,stripped:b}=q(j??"");b&&v("pill-stripped",`Node "${e}": binding pills are not supported in generated prompts and were replaced with plain names.`,e),h.promptTemplate=a}else if("process"===f){let{text:a,stripped:b}=q(j??"");if(b&&v("pill-stripped",`Node "${e}": binding pills are not supported in generated prompts and were replaced with plain names.`,e),h.promptTemplate=a,c.model){let a=function(a,b){if(b.some(b=>b.id===a))return a;let c=a.toLowerCase(),d=b.find(a=>a.displayName?.toLowerCase()===c);if(d)return d.id;let e=b.find(a=>a.name?.toLowerCase()===c);return e?e.id:null}(c.model,w);a?h.boundModel=a:(h.boundModel=c.model,v("model-unresolved",`Node "${e}": model "${c.model}" does not match any configured model (by id, display name, or name).`,e))}void 0!==c.inputMode&&(n.has(c.inputMode)?(h.inputMode=c.inputMode,"isolated"===c.inputMode&&"string"==typeof c.isolatedPrompt&&(h.isolatedPrompt=c.isolatedPrompt)):v("invalid-input-mode",`Node "${e}": inputMode "${String(c.inputMode)}" is not valid (full-history | latest-message | isolated); omitted.`,e)),void 0!==c.outputMode&&(p.has(c.outputMode)?h.outputMode=c.outputMode:v("invalid-output-mode",`Node "${e}": outputMode "${String(c.outputMode)}" is not valid on a process node (full-conversation | latest-message); omitted.`,e)),void 0!==c.maxTurns&&("number"!=typeof c.maxTurns||Number.isNaN(c.maxTurns)?v("invalid-max-turns",`Node "${e}": maxTurns "${String(c.maxTurns)}" is not a number; omitted.`,e):h.maxTurns=i(c.maxTurns,1,1e3,1)),"boolean"==typeof c.excludeModelPrompt&&(h.excludeModelPrompt=c.excludeModelPrompt),"boolean"==typeof c.excludeStartNodePrompt&&(h.excludeStartNodePrompt=c.excludeStartNodePrompt),"boolean"==typeof c.excludeSystemPrompt&&(h.excludeSystemPrompt=c.excludeSystemPrompt),Array.isArray(c.allowedTools)&&(h.allowedTools=c.allowedTools.filter(a=>"string"==typeof a&&a)),"string"==typeof c.captureVariable&&c.captureVariable.trim()&&(h.captureVariable=c.captureVariable.trim()),"string"==typeof c.captureResource&&c.captureResource.trim()&&(h.captureResource=c.captureResource.trim()),"string"==typeof c.captureKv&&c.captureKv.trim()&&(h.captureKv=c.captureKv.trim())}else if("subflow"===f){if(function(c,d,e,f,g){let h=Array.isArray(c.parallelFlows)&&c.parallelFlows.length>0,i=Array.isArray(c.parallelSubflowSpecs)&&c.parallelSubflowSpecs.length>0,j="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,h?"parallelFlows":null,i?"parallelSubflowSpecs":null,void 0!==c.generateSubflow&&null!==c.generateSubflow?"generateSubflow":null].filter(Boolean).length>1&&v("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;(h||i)&&u("subflow-map-and-parallel",`Node "${d}": "mapOverList" runs a SINGLE child once per item and cannot be combined with "parallelFlows"/"parallelSubflowSpecs".`,d),a?(g.mapOverList=!0,void 0!==c.itemSplit&&("json-array"===c.itemSplit||"lines"===c.itemSplit?g.itemSplit=c.itemSplit:v("invalid-item-split",`Node "${d}": itemSplit "${String(c.itemSplit)}" is not valid (json-array | lines); using json-array.`,d)),!0===c.sequential&&(g.sequential=!0),J(c,g)):u("subflow-map-no-child",`Node "${d}": "mapOverList" needs a single child ("flow" or "subflowSpec") to run once per item.`,d)}if(j&&(!0===c.mapOverList?u("subflow-map-and-parallel-var",`Node "${d}": "parallelFlowsVariable" (dynamic fan-out) cannot be combined with "mapOverList".`,d):g.parallelSubflowIdsVar=j),c.flow){if(f.some(a=>a.toLowerCase()===c.flow.toLowerCase()))return u("subflow-cycle",`Node "${d}": flow "${c.flow}" refers to an ancestor flow, which would create a cycle.`,d);let a=r(c.flow,[...b.flows??[],...D]);return a?g.subflowId=a:u("subflow-unresolved",`Node "${d}": flow "${c.flow}" does not match any existing flow (by id or name).`,d)}if(c.subflowSpec){if(e+1>z)return u("subflow-too-deep",`Node "${d}": nested subflows may not go deeper than ${z} level(s); this inline subflow was not compiled.`,d);if(E>=A)return u("subflow-too-many",`Node "${d}": compiling this inline subflow would exceed the maximum of ${A} flows in one bundle; it was not compiled.`,d);let b=a(c.subflowSpec,e+1,f);return b?g.subflowId=b.id:u("subflow-child-empty",`Node "${d}": the inline "subflowSpec" produced no usable flow.`,d)}if(h){let a=[];for(let e of c.parallelFlows){if("string"!=typeof e||!e){u("parallel-flow-invalid",`Node "${d}": a "parallelFlows" entry is missing or not a string.`,d);continue}if(f.some(a=>a.toLowerCase()===e.toLowerCase())){u("subflow-cycle",`Node "${d}": parallel flow "${e}" refers to an ancestor flow, which would create a cycle.`,d);continue}let c=r(e,[...b.flows??[],...D]);c?a.includes(c)||a.push(c):u("parallel-flow-unresolved",`Node "${d}": parallel flow "${e}" does not match any existing flow (by id or name).`,d)}a.length>0?(g.parallelSubflowIds=a,J(c,g)):u("parallel-empty",`Node "${d}": "parallelFlows" resolved to no runnable lanes.`,d);return}if(i){let b=[];for(let g of c.parallelSubflowSpecs){if(!g||"object"!=typeof g){u("parallel-spec-invalid",`Node "${d}": a "parallelSubflowSpecs" entry is not a FlowSpec object.`,d);continue}if(e+1>z){u("subflow-too-deep",`Node "${d}": nested subflows may not go deeper than ${z} level(s); a parallel inline subflow was not compiled.`,d);continue}if(E>=A){u("subflow-too-many",`Node "${d}": compiling a parallel inline subflow would exceed the maximum of ${A} flows in one bundle; it was not compiled.`,d);continue}let c=a(g,e+1,f);c?b.push(c.id):u("subflow-child-empty",`Node "${d}": a "parallelSubflowSpecs" entry produced no usable flow.`,d)}b.length>0?(g.parallelSubflowIds=b,J(c,g)):u("parallel-empty",`Node "${d}": "parallelSubflowSpecs" produced no runnable lanes.`,d);return}j&&g.parallelSubflowIdsVar?J(c,g):void 0!==c.generateSubflow&&null!==c.generateSubflow?u("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):u("subflow-missing-flow",`Node "${d}": subflow nodes need a "flow" (existing flow), a "subflowSpec" (inline child), "parallelFlows"/"parallelSubflowSpecs" (concurrent children), or "generateSubflow".`,d)}(c,e,g,I,h),void 0!==c.inputMode&&(n.has(c.inputMode)?h.inputMode=c.inputMode:v("invalid-input-mode",`Node "${e}": inputMode "${String(c.inputMode)}" is not valid (full-history | latest-message | isolated); omitted.`,e)),void 0!==c.outputMode&&(o.has(c.outputMode)?h.outputMode=c.outputMode:v("invalid-output-mode",`Node "${e}": outputMode "${String(c.outputMode)}" is not valid (steps | final-only); omitted.`,e)),void 0!==j){let{text:a,stripped:b}=q(j);b&&v("pill-stripped",`Node "${e}": binding pills are not supported in generated prompts and were replaced with plain names.`,e),h.promptTemplate=a}"boolean"==typeof c.allowCallerPrompt&&(h.allowCallerPrompt=c.allowCallerPrompt),"boolean"==typeof c.allowCallerFanout&&(h.allowCallerFanout=c.allowCallerFanout),"string"==typeof c.captureVariable&&c.captureVariable.trim()&&(h.captureVariable=c.captureVariable.trim()),"string"==typeof c.captureResource&&c.captureResource.trim()&&(h.captureResource=c.captureResource.trim()),"string"==typeof c.captureKv&&c.captureKv.trim()&&(h.captureKv=c.captureKv.trim())}else if("resource"===f){let a="string"==typeof c.runName?c.runName.trim():"",b="string"==typeof c.server?c.server.trim():"",d="string"==typeof c.uri?c.uri.trim():"";a?(h.scope="run",h.runName=a,(b||d)&&v("resource-both-bindings",`Node "${e}": a resource node is EITHER a run artifact ("runName") or a static MCP resource ("server"+"uri"); kept the run artifact.`,e)):(h.scope="mcp",b&&(h.boundServer=b),d&&(h.uri=d),b&&d?x.has(b)||v("server-unknown",`Node "${e}": MCP server "${b}" is not configured in FLUJO.`,e):v("resource-missing-binding",`Node "${e}": a static resource node needs both "server" and "uri" (or a "runName" for a run artifact).`,e))}else if("signal"===f){let a="string"==typeof c.topic?c.topic.trim():"";a?h.topic=a:v("signal-missing-topic",`Node "${e}": a signal node needs a "topic" to emit.`,e),"string"==typeof c.payloadTemplate&&c.payloadTemplate?h.payloadTemplate=c.payloadTemplate:void 0!==j&&(h.payloadTemplate=j)}let k={id:(0,d.A)(),type:f,position:{x:0,y:0},data:{label:c.label||`${f.charAt(0).toUpperCase()}${f.slice(1)} Node`,type:f,...c.description?{description:c.description}:{},properties:h}};if(K.set(e,k),L.push(k),"process"===f&&Array.isArray(c.servers)){let a=new Set;for(let b of c.servers){let c,f=b?.name;if(!f||"string"!=typeof f){v("server-missing-name",`Node "${e}": a server reference is missing its "name"; skipped.`,e);continue}if(a.has(f))continue;a.add(f),x.has(f)||v("server-unknown",`Node "${e}": MCP server "${f}" is not configured in FLUJO.`,e);let g=y[f];if(Array.isArray(b.tools)){if(c=b.tools.filter(a=>"string"==typeof a&&a),g){let a=c.filter(a=>!g.includes(a));a.length>0&&v("tool-unknown",`Node "${e}": server "${f}" does not report tool(s): ${a.join(", ")}.`,e)}}else c=g?[...g]:[];let h={id:(0,d.A)(),type:"mcp",position:{x:0,y:0},data:{label:f,type:"mcp",properties:{boundServer:f,enabledTools:c}}};L.push(h),M.push({processKey:e,mcpNode:h})}}else"process"!==f&&Array.isArray(c.servers)&&c.servers.length>0&&v("servers-on-non-process",`Node "${e}": only process nodes can have "servers"; ignored.`,e)}if(0===K.size)return u("no-usable-nodes","No usable nodes — the spec must contain at least a start node and one step."),null;let N=[],O=new Set;for(let a of F){let b,c=a?.from,d=a?.to,e=c?K.get(c):void 0,g=d?K.get(d):void 0;if(!e||!g){u("edge-unknown-node",`Edge "${String(c)}" -> "${String(d)}" references a node key that does not exist (or was dropped).`);continue}if(e===g){u("edge-self-loop",`Edge "${c}" -> "${d}": a node cannot connect to itself.`);continue}if("resource"===e.type||"resource"===g.type){if(("resource"!==e.type||"process"!==g.type)&&("process"!==e.type||"resource"!==g.type)){u("resource-edge-invalid",`Edge "${c}" -> "${d}": resource nodes connect only to process nodes.`);continue}a.condition&&v("resource-edge-condition",`Edge "${c}" -> "${d}": conditions do not apply to resource wiring; dropped.`),!0===a.bidirectional&&v("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(O.has(b)){v("edge-duplicate",`Edge "${c}" -> "${d}" appears more than once; kept the first.`);continue}O.add(b),N.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:{...l},style:{...m}}}(e,g));continue}if("start"===g.type){u("edge-into-start",`Edge "${c}" -> "${d}": nothing may connect INTO a start node.`);continue}if("finish"===e.type){u("edge-out-of-finish",`Edge "${c}" -> "${d}": nothing may connect OUT OF a finish node.`);continue}let h=`${c}->${d}`;if(O.has(h)){v("edge-duplicate",`Edge "${c}" -> "${d}" appears more than once; kept the first.`);continue}O.add(h);let i=!0===a.bidirectional;i&&("start"===e.type||"finish"===g.type)&&(v("bidirectional-illegal",`Edge "${c}" -> "${d}" cannot be bidirectional; downgraded to one-way.`),i=!1);let j=a.condition;j&&"object"==typeof j&&("process"!==e.type?v("edge-condition-non-process",`Edge "${c}" -> "${d}" has a condition but leaves a ${e.type} node; conditions only route from process nodes and were dropped.`):(0,f.C)(j.kind)?"always"===j.kind?b={kind:"always",..."last-message"===j.target?{target:"last-message"}:{},...!0===j.negate?{negate:!0}:{}}:"string"!=typeof j.value||0===j.value.length?v("edge-condition-value",`Edge "${c}" -> "${d}" has a condition with no "value"; the condition was dropped.`):("regex"!==j.kind||(0,f.wM)(j.value)||v("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:j.kind,value:j.value,..."last-message"===j.target?{target:"last-message"}:{},...!0===j.ignoreCase?{ignoreCase:!0}:{},...!0===j.negate?{negate:!0}:{}}):v("edge-condition-kind",`Edge "${c}" -> "${d}" has an unknown condition kind "${String(j.kind)}"; the condition was dropped.`)),N.push(s(e,g,i,b))}for(let{processKey:a,mcpNode:b}of M){let c=K.get(a);N.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:{...j},markerStart:{...j},style:{...k}}}(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,N,M,0===g?c.positions:void 0);let P={id:H,name:G,...e?.description?{description:e.description}:{},nodes:L,edges:N};return B.push(P),D.push({id:P.id,name:P.name}),P}(a,0,[]),G=B,H=e;let I=H.filter(a=>"error"===a.severity).length;return{flow:F,flows:G,issues:H,errorCount:I,warningCount:H.length-I};function J(a,b){void 0!==a.concurrencyLimit&&("number"!=typeof a.concurrencyLimit||Number.isNaN(a.concurrencyLimit)?v("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:v("invalid-error-strategy",`Node "${a.key}": errorStrategy "${String(a.errorStrategy)}" is not valid (fail-fast | collect-all); using collect-all.`,a.key))}}function u(a){let b=Array.isArray(a?.nodes)?a.nodes:[],c=Array.isArray(a?.edges)?a.edges:[],d=new Map;for(let a of b)"mcp"===a.type&&d.set(a.id,a);let e=new Map;for(let a of c){if(a.data?.edgeType!=="mcp")continue;let b=d.get(a.target);if(!b)continue;let c=b.data?.properties??{},f="string"==typeof c.boundServer&&c.boundServer?c.boundServer:b.data?.label;if(!f||"string"!=typeof f)continue;let g=Array.isArray(c.enabledTools)?c.enabledTools.filter(a=>"string"==typeof a&&!!a):void 0,h=e.get(a.source)??[];h.push({name:f,...g?{tools:g}:{}}),e.set(a.source,h)}let f=[];for(let a of b){if("mcp"===a.type)continue;let b=a.type;if("start"!==b&&"process"!==b&&"finish"!==b&&"subflow"!==b&&"resource"!==b&&"signal"!==b)continue;let c=a.data?.properties??{},d={key:a.id,type:b,...a.data?.label?{label:a.data.label}:{},...a.data?.description?{description:a.data.description}:{}};if("start"===b)"string"==typeof c.promptTemplate&&c.promptTemplate&&(d.prompt=c.promptTemplate);else if("process"===b){"string"==typeof c.promptTemplate&&c.promptTemplate&&(d.prompt=c.promptTemplate),"string"==typeof c.boundModel&&c.boundModel&&(d.model=c.boundModel),"string"==typeof c.inputMode&&(d.inputMode=c.inputMode),"string"==typeof c.isolatedPrompt&&c.isolatedPrompt&&(d.isolatedPrompt=c.isolatedPrompt),"string"==typeof c.outputMode&&(d.outputMode=c.outputMode),"number"==typeof c.maxTurns&&c.maxTurns>0&&(d.maxTurns=c.maxTurns),!0===c.excludeModelPrompt&&(d.excludeModelPrompt=!0),!0===c.excludeStartNodePrompt&&(d.excludeStartNodePrompt=!0),!0===c.excludeSystemPrompt&&(d.excludeSystemPrompt=!0),Array.isArray(c.allowedTools)&&c.allowedTools.length>0&&(d.allowedTools=c.allowedTools.filter(a=>"string"==typeof a&&!!a)),"string"==typeof c.captureVariable&&c.captureVariable&&(d.captureVariable=c.captureVariable),"string"==typeof c.captureResource&&c.captureResource&&(d.captureResource=c.captureResource),"string"==typeof c.captureKv&&c.captureKv&&(d.captureKv=c.captureKv);let b=e.get(a.id);b&&b.length>0&&(d.servers=b)}else"subflow"===b?(Array.isArray(c.parallelSubflowIds)&&c.parallelSubflowIds.length>0?(d.parallelFlows=c.parallelSubflowIds.filter(a=>"string"==typeof a&&!!a),"number"==typeof c.concurrencyLimit&&c.concurrencyLimit>0&&(d.concurrencyLimit=c.concurrencyLimit),"string"==typeof c.joinSeparator&&(d.joinSeparator=c.joinSeparator),("fail-fast"===c.errorStrategy||"collect-all"===c.errorStrategy)&&(d.errorStrategy=c.errorStrategy)):"string"==typeof c.subflowId&&c.subflowId&&(d.flow=c.subflowId,!0===c.mapOverList&&(d.mapOverList=!0,("json-array"===c.itemSplit||"lines"===c.itemSplit)&&(d.itemSplit=c.itemSplit),!0===c.sequential&&(d.sequential=!0),"number"==typeof c.concurrencyLimit&&c.concurrencyLimit>0&&(d.concurrencyLimit=c.concurrencyLimit),"string"==typeof c.joinSeparator&&(d.joinSeparator=c.joinSeparator),("fail-fast"===c.errorStrategy||"collect-all"===c.errorStrategy)&&(d.errorStrategy=c.errorStrategy))),"string"==typeof c.parallelSubflowIdsVar&&c.parallelSubflowIdsVar&&(d.parallelFlowsVariable=c.parallelSubflowIdsVar,d.parallelFlows||d.flow||("number"==typeof c.concurrencyLimit&&c.concurrencyLimit>0&&(d.concurrencyLimit=c.concurrencyLimit),"string"==typeof c.joinSeparator&&(d.joinSeparator=c.joinSeparator),("fail-fast"===c.errorStrategy||"collect-all"===c.errorStrategy)&&(d.errorStrategy=c.errorStrategy))),"string"==typeof c.inputMode&&(d.inputMode=c.inputMode),"string"==typeof c.outputMode&&(d.outputMode=c.outputMode),"string"==typeof c.promptTemplate&&c.promptTemplate&&(d.prompt=c.promptTemplate),!0===c.allowCallerPrompt&&(d.allowCallerPrompt=!0),!0===c.allowCallerFanout&&(d.allowCallerFanout=!0),"string"==typeof c.captureVariable&&c.captureVariable&&(d.captureVariable=c.captureVariable),"string"==typeof c.captureResource&&c.captureResource&&(d.captureResource=c.captureResource),"string"==typeof c.captureKv&&c.captureKv&&(d.captureKv=c.captureKv)):"resource"===b?"run"===c.scope&&"string"==typeof c.runName&&c.runName?d.runName=c.runName:("string"==typeof c.boundServer&&c.boundServer&&(d.server=c.boundServer),"string"==typeof c.uri&&c.uri&&(d.uri=c.uri)):"signal"===b&&("string"==typeof c.topic&&c.topic&&(d.topic=c.topic),"string"==typeof c.payloadTemplate&&c.payloadTemplate&&(d.payloadTemplate=c.payloadTemplate));f.push(d)}let g=[];for(let a of c){if(a.data?.edgeType==="mcp"||!a.source||!a.target||d.has(a.source)||d.has(a.target))continue;let b=a.data;g.push({from:a.source,to:a.target,...b?.bidirectional?{bidirectional:!0}:{},...b?.condition?{condition:b.condition}:{}})}return{...a?.name?{name:a.name}:{},...a?.description?{description:a.description}:{},nodes:f,edges:g}}function v(a){for(let b of a.nodes){if("process"!==b.type)continue;let a=b.data.properties??{};void 0===a.inputMode&&(a.inputMode="latest-message"),void 0===a.outputMode&&(a.outputMode="latest-message"),b.data.properties=a}}}};
|