flujo-ai 3.12.0 → 3.16.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 +140 -105
- package/.next/app-path-routes-manifest.json +19 -14
- package/.next/build-manifest.json +2 -2
- package/.next/prerender-manifest.json +15 -15
- package/.next/routes-manifest.json +20 -1
- package/.next/server/app/_not-found/page.js +2 -2
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +1 -1
- package/.next/server/app/api/backup/route.js +1 -1
- package/.next/server/app/api/backup/route.js.nft.json +1 -1
- package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/browse/route.js +1 -1
- package/.next/server/app/api/browse/route.js.nft.json +1 -1
- package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cwd/route.js +1 -1
- package/.next/server/app/api/cwd/route.js.nft.json +1 -1
- package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/encryption/secure/route.js +1 -1
- package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
- package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/env/route.js +1 -1
- package/.next/server/app/api/env/route.js.nft.json +1 -1
- package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/[id]/route.js +1 -1
- package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/compile/route.js +1 -0
- package/.next/server/app/api/flow/compile/route.js.nft.json +1 -0
- package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/flow/generate/route.js +17 -0
- package/.next/server/app/api/flow/generate/route.js.nft.json +1 -0
- package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -0
- 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/route.js +1 -1
- package/.next/server/app/api/flow/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/git/route.js +2 -2
- package/.next/server/app/api/git/route.js.nft.json +1 -1
- package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/init/route.js +1 -1
- package/.next/server/app/api/init/route.js.nft.json +1 -1
- package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/local-models/capability/route.js +1 -0
- package/.next/server/app/api/local-models/capability/route.js.nft.json +1 -0
- package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/local-models/pull/route.js +1 -0
- package/.next/server/app/api/local-models/pull/route.js.nft.json +1 -0
- package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/local-models/suggest/route.js +2 -0
- package/.next/server/app/api/local-models/suggest/route.js.nft.json +1 -0
- package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -0
- 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.js +1 -1
- package/.next/server/app/api/mcp-registry/spotlight/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/[id]/route.js +1 -1
- package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/provider/route.js +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.js +1 -1
- package/.next/server/app/api/oauth/callback/route.js.nft.json +1 -1
- package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/initiate/route.js +1 -1
- package/.next/server/app/api/oauth/initiate/route.js.nft.json +1 -1
- package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/reset/route.js +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 +2 -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 +2 -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 +2 -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.js +1 -1
- package/.next/server/app/api/planned-executions/preview-schedule/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/route.js +1 -1
- package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/restore/route.js +1 -1
- package/.next/server/app/api/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/storage/route.js +1 -1
- package/.next/server/app/api/storage/route.js.nft.json +1 -1
- package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/update/route.js +1 -1
- package/.next/server/app/api/update/route.js.nft.json +1 -1
- package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/webhooks/[id]/route.js +1 -1
- package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/chat/page.js +1 -1
- 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 +32 -2
- package/.next/server/app/docs/page.js.nft.json +1 -1
- package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/docs.html +1 -1
- package/.next/server/app/docs.rsc +2 -2
- package/.next/server/app/executions/page.js +3 -3
- package/.next/server/app/executions/page.js.nft.json +1 -1
- package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/executions.html +1 -1
- package/.next/server/app/executions.rsc +2 -2
- package/.next/server/app/flows/page.js +10 -10
- 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 +1 -1
- package/.next/server/app/mcp/page.js +6 -6
- package/.next/server/app/mcp/page.js.nft.json +1 -1
- package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp-flows/route.js +5 -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 +2 -2
- package/.next/server/app/models/page.js.nft.json +1 -1
- package/.next/server/app/models/page_client-reference-manifest.js +1 -1
- package/.next/server/app/page.js +2 -2
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page.js +1 -1
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +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 +1 -1
- 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 +1 -1
- 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 +1 -1
- 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 +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +1 -1
- 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 +1 -1
- 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-paths-manifest.json +19 -14
- package/.next/server/chunks/1403.js +1 -1
- package/.next/server/chunks/1690.js +1 -0
- package/.next/server/chunks/1877.js +31 -0
- package/.next/server/chunks/2776.js +1 -1
- package/.next/server/chunks/2859.js +7 -0
- package/.next/server/chunks/3243.js +1 -0
- package/.next/server/chunks/3304.js +1 -0
- package/.next/server/chunks/3984.js +4 -4
- package/.next/server/chunks/4681.js +1 -0
- package/.next/server/chunks/5504.js +1 -1
- package/.next/server/chunks/{1331.js → 5873.js} +3 -3
- package/.next/server/chunks/5935.js +2 -0
- package/.next/server/chunks/6195.js +37 -0
- package/.next/server/chunks/6523.js +1 -0
- package/.next/server/chunks/6936.js +6 -6
- package/.next/server/chunks/701.js +1 -1
- package/.next/server/chunks/7214.js +2 -2
- package/.next/server/chunks/{5389.js → 7362.js} +13 -13
- package/.next/server/chunks/7635.js +6 -0
- package/.next/server/chunks/{2287.js → 8367.js} +2 -2
- package/.next/server/chunks/{2253.js → 8572.js} +1 -1
- package/.next/server/chunks/8739.js +1 -1
- package/.next/server/chunks/8994.js +2 -0
- package/.next/server/chunks/9188.js +1 -1
- package/.next/server/chunks/9509.js +2 -2
- package/.next/server/chunks/9794.js +1 -0
- package/.next/server/chunks/9957.js +1 -0
- package/.next/server/functions-config-manifest.json +3 -0
- package/.next/server/instrumentation.js +1 -1
- package/.next/server/instrumentation.js.nft.json +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/pages-manifest.json +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/chunks/2403-5c26e0abd76095b1.js +1 -0
- package/.next/static/chunks/510-e39ad4e1fae6dd1f.js +1 -0
- package/.next/static/chunks/8862-1170dad1d6f3cd39.js +1 -0
- package/.next/static/chunks/9554-cb5bd72cb40e8dbe.js +1 -0
- package/.next/static/chunks/app/api/backup/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/browse/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/cwd/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/encryption/secure/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/env/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/flow/compile/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/flow/generate/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/flow/prompt-renderer/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/flow/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/git/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/init/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/local-models/capability/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/local-models/pull/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/local-models/suggest/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/mcp/cancel/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/mcp/test-connection/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/mcp/test-connection/stream/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/spotlight/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/model/[id]/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/model/provider/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/model/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/model/test/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/oauth/callback/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/oauth/initiate/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/oauth/reset/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/run/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/restore/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/storage/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/update/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/api/webhooks/[id]/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/chat/{page-5c838e3ce9d7a27d.js → page-c759cf382bcabd77.js} +1 -1
- package/.next/static/chunks/app/docs/page-1d349e2d82f7b104.js +1 -0
- package/.next/static/chunks/app/executions/page-4155f9f682ee6f84.js +1 -0
- package/.next/static/chunks/app/flows/page-375150edff9134a3.js +1 -0
- package/.next/static/chunks/app/mcp/page-5234695929980171.js +1 -0
- package/.next/static/chunks/app/mcp-flows/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/mcp-proxy/[server]/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/settings/{page-199cff457723ee57.js → page-9a2bfb8d5bdba29e.js} +1 -1
- package/.next/static/chunks/app/v1/chat/completions/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/route-7248529e02c31012.js +1 -0
- package/.next/static/chunks/app/v1/models/route-7248529e02c31012.js +1 -0
- package/.next/static/z7fsG7kblb_yxkUhOxn-G/_buildManifest.js +1 -0
- package/.next/trace +7 -7
- package/.next/types/app/api/flow/compile/route.ts +347 -0
- package/.next/types/app/api/flow/generate/route.ts +347 -0
- package/.next/types/app/api/local-models/capability/route.ts +347 -0
- package/.next/types/app/api/local-models/pull/route.ts +347 -0
- package/.next/types/app/api/local-models/suggest/route.ts +347 -0
- package/.next/types/routes.d.ts +6 -1
- package/.next/types/validator.ts +45 -0
- package/README.md +1 -1
- package/next.config.mjs +119 -105
- package/package.json +90 -90
- package/.next/server/chunks/4239.js +0 -1
- package/.next/server/chunks/4706.js +0 -1
- package/.next/server/chunks/4729.js +0 -6
- package/.next/server/chunks/5443.js +0 -1
- package/.next/server/chunks/7485.js +0 -1
- package/.next/server/chunks/812.js +0 -2
- package/.next/static/07vmuF5x2Bs8Xj1OeV0QV/_buildManifest.js +0 -1
- package/.next/static/chunks/256-7f4847b6726c866c.js +0 -1
- package/.next/static/chunks/7329-78f54f68ea2d37e2.js +0 -1
- package/.next/static/chunks/8862-8f17ef601bb1fbd0.js +0 -1
- package/.next/static/chunks/8890-a7a8c6f1dc3cd343.js +0 -1
- package/.next/static/chunks/app/api/backup/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/browse/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/cwd/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/encryption/secure/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/env/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/flow/[id]/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/flow/prompt-renderer/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/flow/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/git/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/init/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/mcp/cancel/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/mcp/test-connection/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/mcp/test-connection/stream/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/mcp-registry/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/mcp-registry/spotlight/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/model/[id]/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/model/provider/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/model/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/model/test/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/oauth/callback/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/oauth/initiate/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/oauth/reset/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/run/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/restore/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/storage/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/update/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/api/webhooks/[id]/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/docs/page-d4005b311ead55f2.js +0 -1
- package/.next/static/chunks/app/executions/page-870931839b84c8d5.js +0 -1
- package/.next/static/chunks/app/flows/page-303dc4d2542567a6.js +0 -1
- package/.next/static/chunks/app/mcp/page-5012a7e5b6366207.js +0 -1
- package/.next/static/chunks/app/mcp-flows/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/mcp-proxy/[server]/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/v1/chat/completions/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/route-3291f6991ce3f52c.js +0 -1
- package/.next/static/chunks/app/v1/models/route-3291f6991ce3f52c.js +0 -1
- /package/.next/static/{07vmuF5x2Bs8Xj1OeV0QV → z7fsG7kblb_yxkUhOxn-G}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";exports.id=7635,exports.ids=[7635],exports.modules={27635:(a,b,c)=>{c.d(b,{z:()=>C});var d=c(32524),e=c(92372),f=c(46480),g=c(50846),h=c(58739),i=c(52189),j=c(33873),k=c.n(j),l=c(29021),m=c(9794);let n=(0,g.h)("backend/services/scheduler/triggers/fileWatch");var o=c(73736);function p(a){let b=Math.max(5,Math.round((a??6e4)/1e3));if(b<60)return`*/${b} * * * * *`;let c=Math.max(1,Math.round(b/60));if(c<60)return`*/${c} * * * *`;let d=Math.max(1,Math.min(23,Math.round(c/60)));return`0 */${d} * * *`}var q=c(51875);let r=(0,g.h)("backend/services/scheduler/triggers/mcpPoll"),s=(0,g.h)("backend/services/scheduler/triggers/urlWatch");var t=c(59911);let u=(0,g.h)("backend/services/scheduler/state"),v=a=>`planned-execution-state/${a}`;async function w(a){try{return await (0,e.YM)(v(a),{})}catch(b){return u.error(`Failed to load trigger state for ${a}:`,b),{}}}async function x(a,b){await (0,e.VH)(v(a),b)}async function y(a){await (0,e.N2)(v(a))}let z=(0,g.h)("backend/services/scheduler/index"),A={version:1,paused:!1,executions:[]};class B{async start(){this.started||(this.started=!0,z.info("Starting scheduler"),await this.reconcile())}reconcile(){let a=this.reconcileChain.catch(()=>{}).then(()=>this.doReconcile());return this.reconcileChain=a,a}async doReconcile(){for(let[a,b]of this.armed)try{b.dispose()}catch(b){z.warn(`Failed to dispose trigger for ${a}:`,b)}this.armed.clear();let a=await this.loadFile();if(this.pausedCache=a.paused,a.paused)return void z.info("Scheduler is paused — nothing armed");for(let b of a.executions)if(b.enabled)try{await this.armExecution(b)}catch(c){let a=c instanceof Error?c.message:String(c);this.lastTriggerErrors.set(b.id,a),z.error(`Failed to arm "${b.name}" (${b.id}):`,c)}z.info(`Scheduler armed ${this.armed.size} execution(s)`)}async armExecution(a){let b=a.trigger;switch(b.type){case"schedule":{let c=await w(a.id);c.lastScheduledFireAt?b.catchUp&&(0,i.hk)(b,c.lastScheduledFireAt)&&(await x(a.id,{...c,lastScheduledFireAt:new Date().toISOString()}),z.info(`Catch-up run for "${a.name}" (missed while closed)`),this.fire(a,{kind:"schedule-catchup",summary:"Schedule (missed while FLUJO was closed — ran once at startup)"})):await x(a.id,{...c,lastScheduledFireAt:new Date().toISOString()}),this.armed.set(a.id,(0,i.wv)(b,()=>{(async()=>{let b=await w(a.id);await x(a.id,{...b,lastScheduledFireAt:new Date().toISOString()}),await this.fire(a,{kind:"schedule",summary:"Schedule"})})().catch(b=>z.error(`Scheduled fire failed for ${a.id}:`,b))}));break}case"webhook":break;case"file-watch":this.armed.set(a.id,function(a,b,c){let d,e=a.debounceMs??2e3,f=new Set(a.events),g=a.glob?.trim()?function(a){let b=a.replace(/\\/g,"/"),c="";for(let a=0;a<b.length;a++){let d=b[a];"*"===d?"*"===b[a+1]?"/"===b[++a+1]?(a++,c+="(?:.*/)?"):c+=".*":c+="[^/]*":"?"===d?c+="[^/]":c+=d.replace(/[.+^${}()|[\]\\]/g,"\\$&")}return RegExp(`^${c}$`)}(a.glob.trim()):null;try{d=l.realpathSync.native(a.path)}catch(d){let b=d instanceof Error?d.message:String(d);return n.warn(`Cannot watch "${a.path}": ${b}`),c(`Cannot watch "${a.path}": ${b}`),{dispose:()=>void 0}}let h=[],i=!1,j=null,o=!1,p=()=>{if(j=null,o||0===h.length)return;let a=h;i&&n.info("File-watch batch overflowed; reporting first 50 events"),h=[],i=!1,b({events:a})},q=(0,m.wB)(d,{ignoreInitial:!0,awaitWriteFinish:{stabilityThreshold:500,pollInterval:100}});return q.on("all",(a,b)=>{if(!o&&("add"===a||"change"===a||"unlink"===a)&&f.has(a)){if(g){let a=k().relative(d,b).replace(/\\/g,"/")||k().basename(b);if(!g.test(a))return}h.length>=50?i=!0:h.push({event:a,path:b}),j&&clearTimeout(j),j=setTimeout(p,e),j.unref?.()}}),q.on("error",a=>{let b=a instanceof Error?a.message:String(a);n.warn(`Watcher error for ${d}: ${b}`),c(b)}),{dispose:()=>{o=!0,j&&(clearTimeout(j),j=null),h=[],q.close().catch(a=>n.warn(`Failed to close watcher for ${d}:`,a))}}}(b,({events:c})=>{this.lastTriggerErrors.delete(a.id),this.fire(a,{kind:"file",summary:1===c.length?`File ${"unlink"===c[0].event?"deleted":"add"===c[0].event?"added":"changed"}`:`${c.length} file changes`,context:{watchedPath:b.path,events:c}})},b=>this.lastTriggerErrors.set(a.id,b)));break;case"mcp-poll":Promise.all([c.e(6996),c.e(1223),c.e(5734),c.e(5504)]).then(c.bind(c,23514)).then(async({mcpService:c})=>{await c.isServerDisabled(b.serverName)&&this.lastTriggerErrors.set(a.id,`MCP server '${b.serverName}' is disabled — enable it on the MCP page or change the trigger`)}).catch(b=>z.warn(`Arm-time disabled-server check failed for ${a.id}:`,b)),this.armed.set(a.id,function(a,b){let c=a.cron||p(a.intervalMs),d=!1,e=!1,f=0,g=0,h=async()=>{if(!e&&!d){if(g>0)return void g--;d=!0;try{let c,d=await b.callTool(a.serverName,a.toolName,a.args);if(!d.success)throw Error(d.error||"Tool call failed");f=0;let g=await b.loadState(),h=a.evaluate;if(c="on-change"===h.mode?(0,q.Jl)(d.data,g):"new-items"===h.mode?(0,q.A1)(d.data,h.itemsPath,h.idField,g):b.evaluateAiGate?await b.evaluateAiGate(d.data,h,g):{fire:!1,newState:{},error:'The "AI decides" condition is not available yet'},e)return;if(Object.keys(c.newState).length>0&&await b.saveState(c.newState),c.error)b.onError(c.error);else if(c.fire){let{status:d}=await b.onFire({summary:`Watched tool: ${c.summary??"condition met"}`,context:{server:a.serverName,tool:a.toolName,..."object"==typeof c.context&&null!==c.context?c.context:{result:c.context}}});if(e)return;if(c.pendingState){let{giveUpError:a}=await (0,q.vV)({status:d,pendingState:c.pendingState,priorFailures:g.pendingFailures??0,saveState:b.saveState});a&&b.onError(a)}}else b.onSuccess?.()}catch(d){f++,g=Math.min(2**(f-1),8);let c=d instanceof Error?d.message:String(d);r.warn(`Poll failed for ${a.serverName}/${a.toolName} (backing off ${g} check(s)): ${c}`),b.onError(c)}finally{d=!1}}},i=new o.l4(c,{timezone:a.timezone,unref:!0},()=>void h());return h(),{dispose:()=>{e=!0,i.stop()},nextRun:()=>i.nextRun()?.toISOString()??null}}(b,{callTool:async(a,b,d)=>{let{mcpService:e}=await Promise.all([c.e(6996),c.e(1223),c.e(5734),c.e(5504)]).then(c.bind(c,23514)),f=await e.callTool(a,b,d);return{success:!0===f.success,data:f.data,error:"string"==typeof f.error?f.error:void 0}},loadState:()=>w(a.id),saveState:async b=>{let c=await w(a.id);await x(a.id,{...c,...b})},onFire:async({summary:b,context:c})=>(this.lastTriggerErrors.delete(a.id),{status:(await this.fire(a,{kind:"mcp-poll",summary:b,context:c})).status}),onError:b=>this.lastTriggerErrors.set(a.id,b),onSuccess:()=>this.lastTriggerErrors.delete(a.id),evaluateAiGate:async(a,b,d)=>{let{evaluateAiGate:e}=await c.e(7506).then(c.bind(c,47506));return e(a,b,d)}}));break;case"url-watch":this.armed.set(a.id,function(a,b){let c=b.fetchImpl??fetch,d=!1,e=!1,f=async()=>{if(!e&&!d){d=!0;try{let d=await c(a.url,{redirect:"follow",headers:{"User-Agent":"FLUJO-url-watch"},signal:AbortSignal.timeout(3e4)});if(!d.ok)return void b.onError(`The URL answered with HTTP ${d.status}`);let f=await d.text(),g=(0,q.qq)(f),h=await b.loadState();if(e)return;if(!h.lastHash){await b.saveState({lastHash:g}),b.onSuccess?.();return}if(h.lastHash===g)return void b.onSuccess?.();let{status:i}=await b.onFire({summary:"Online content changed",context:{url:a.url,status:d.status,contentType:d.headers.get("content-type")??void 0,content:f.length>8192?`${f.slice(0,8192)}… (truncated, ${f.length} chars total)`:f}});if(e)return;let{giveUpError:j}=await (0,q.vV)({status:i,pendingState:{lastHash:g},priorFailures:h.pendingFailures??0,saveState:b.saveState});j&&b.onError(j)}catch(d){let c=d instanceof Error&&"TimeoutError"===d.name?"The URL did not answer within 30s":d instanceof Error?d.message:String(d);s.warn(`URL check failed for ${a.url}: ${c}`),b.onError(c)}finally{d=!1}}},g=new o.l4(a.cron,{timezone:a.timezone,unref:!0},()=>void f());return f(),{dispose:()=>{e=!0,g.stop()},nextRun:()=>g.nextRun()?.toISOString()??null}}(b,{loadState:()=>w(a.id),saveState:async b=>{let c=await w(a.id);await x(a.id,{...c,...b})},onFire:async({summary:b,context:c})=>(this.lastTriggerErrors.delete(a.id),{status:(await this.fire(a,{kind:"url-watch",summary:b,context:c})).status}),onError:b=>this.lastTriggerErrors.set(a.id,b),onSuccess:()=>this.lastTriggerErrors.delete(a.id)}));break;default:z.warn(`Trigger type "${b.type}" is not implemented — "${a.name}" not armed`)}}async loadFile(){let a=await (0,e.YM)(f.Z.PLANNED_EXECUTIONS,A);return{version:1,paused:!0===a.paused,executions:Array.isArray(a.executions)?a.executions:[]}}async saveFile(a){await (0,e.VH)(f.Z.PLANNED_EXECUTIONS,a)}async isPaused(){return(await this.loadFile()).paused}async setPaused(a){let b=await this.loadFile();await this.saveFile({...b,paused:a}),await this.reconcile()}async list(){return Promise.all((await this.loadFile()).executions.map(async a=>({execution:a,status:this.getStatus(a),lastRun:await (0,t.tl)(a.id)})))}async get(a){return(await this.loadFile()).executions.find(b=>b.id===a)??null}async create(a){let b=this.validateInput(a);if(b)return{error:b};if(void 0!==a.id&&!/^[0-9a-f]{8}-[0-9a-f-]{27}$/i.test(a.id))return{error:"The id must be a UUID"};let c=new Date().toISOString(),e={...a,trigger:this.normalizeTrigger(a.trigger),id:a.id??(0,d.A)(),createdAt:c,updatedAt:c},f=await this.loadFile();return f.executions.some(a=>a.id===e.id)?{error:`A planned execution with id "${e.id}" already exists`}:(await this.saveFile({...f,executions:[...f.executions,e]}),await this.reconcile(),{execution:e})}async update(a,b){let c=await this.loadFile(),d=c.executions.findIndex(b=>b.id===a);if(d<0)return{error:`No planned execution with id "${a}"`};let e={...c.executions[d],...b,...b.trigger?{trigger:this.normalizeTrigger(b.trigger)}:{},id:a,createdAt:c.executions[d].createdAt,updatedAt:new Date().toISOString()},f=this.validateInput(e);if(f)return{error:f};let g=[...c.executions];return g[d]=e,await this.saveFile({...c,executions:g}),await this.reconcile(),{execution:e}}async delete(a){let b=await this.loadFile();return b.executions.some(b=>b.id===a)?(await this.saveFile({...b,executions:b.executions.filter(b=>b.id!==a)}),await this.reconcile(),this.lastTriggerErrors.delete(a),await (0,t.xC)(a),await y(a),{success:!0}):{success:!1,error:`No planned execution with id "${a}"`}}normalizeTrigger(a){return a?.type!=="webhook"||a.token?a?.type!=="mcp-poll"||a.cron?a:{...a,cron:p(a.intervalMs)}:{...a,token:(0,d.A)()}}validateInput(a){if(!a.name?.trim())return"A name is required";if(!a.flowId)return"A flow is required";if("string"!=typeof a.prompt)return"A prompt is required (may be empty)";let b=a.trigger;if(!b||"object"!=typeof b)return"A trigger is required";switch(b.type){case"schedule":{let a=(0,i.O9)(b.cron,b.timezone);return a.valid?null:`Invalid schedule: ${a.error}`}case"webhook":return null;case"file-watch":if(!b.path?.trim())return"A folder or file path to watch is required";if(!Array.isArray(b.events)||0===b.events.length)return"At least one file event is required";return null;case"mcp-poll":if(!b.serverName||!b.toolName)return"A server and tool are required";if(b.cron){let a=(0,i.O9)(b.cron,b.timezone);if(!a.valid)return`Invalid schedule: ${a.error}`}if(b.evaluate?.mode==="new-items"&&!b.evaluate.idField?.trim())return"An id field is required to detect new items";if((b.evaluate?.mode==="llm-gate"||b.evaluate?.mode==="flow-gate")&&!b.evaluate.condition?.trim())return"A condition is required for the AI to check";if(b.evaluate?.mode==="llm-gate"&&!b.evaluate.modelId)return"A model is required to check the condition";if(b.evaluate?.mode==="flow-gate"&&!b.evaluate.flowId)return"A flow is required to check the condition";return null;case"url-watch":{try{let a=new URL(b.url??"");if("http:"!==a.protocol&&"https:"!==a.protocol)return"The URL must start with http:// or https://"}catch{return"A valid URL is required"}let a=(0,i.O9)(b.cron,b.timezone);return a.valid?null:`Invalid schedule: ${a.error}`}default:return"Unknown trigger type"}}getStatus(a){let b=this.armed.get(a.id),c=void 0!==b||a.enabled&&"webhook"===a.trigger.type&&this.started&&!this.pausedCache,d=this.running.get(a.id);return{armed:c,nextRun:b?.nextRun?b.nextRun():void 0,lastTriggerError:this.lastTriggerErrors.get(a.id),running:void 0!==d,runningSince:d}}async runNow(a){let b=await this.get(a);return b?{record:await this.fire(b,{kind:"manual",summary:"Manual run"})}:{error:`No planned execution with id "${a}"`}}async fire(a,b,e=(0,d.A)()){let f,g=new Date().toISOString();if(await (0,h.isEncryptionLocked)()){let c={runId:e,conversationId:"",firedAt:g,finishedAt:g,status:"skipped",triggerSummary:b.summary,error:"encryption locked"};return await (0,t.Hy)(a.id,c),z.info(`Skipped fire for "${a.name}" — encryption locked`),c}if(this.running.has(a.id)){let c={runId:e,conversationId:"",firedAt:g,finishedAt:g,status:"skipped",triggerSummary:b.summary,error:"Previous run still in progress"};return await (0,t.Hy)(a.id,c),z.info(`Skipped overlapping fire for "${a.name}"`),c}this.running.set(a.id,g);let i=(0,d.A)();try{z.info(`Firing "${a.name}" (${b.kind})`);let d=await (0,t.tl)(a.id),h={executionName:a.name,trigger:b.kind,now:g,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone,lastRun:d?{at:d.firedAt,status:d.status}:null,nextPlannedRun:this.getStatus(a).nextRun??null},{runFlow:j}=await Promise.all([c.e(6996),c.e(1223),c.e(5734),c.e(1373),c.e(5504),c.e(724),c.e(1403),c.e(7214),c.e(9989)]).then(c.bind(c,57214)),k=await j({flowId:a.flowId,prompt:this.composePrompt(a.prompt,b,h),mode:a.saveConversations?"conversation":"ephemeral",conversationId:i,requireApproval:!1,debug:!1,userTurn:!0});f={runId:e,conversationId:i,firedAt:g,finishedAt:new Date().toISOString(),status:"completed"===k.status?"completed":"error",triggerSummary:b.summary,outputText:this.truncateOutput(k.outputText),usage:k.usage,error:"completed"===k.status?void 0:k.error?.message??`Run ended with status "${k.status}"`}}catch(c){f={runId:e,conversationId:i,firedAt:g,finishedAt:new Date().toISOString(),status:"error",triggerSummary:b.summary,error:c instanceof Error?c.message:String(c)},z.error(`Run crashed for "${a.name}":`,c)}finally{this.running.delete(a.id)}return await (0,t.Hy)(a.id,f),f}composePrompt(a,b,c){let d=JSON.stringify(void 0===b.context?c:{...c,data:b.context},null,2);return`${a}
|
|
2
|
+
|
|
3
|
+
[Run info — when and why this run happened; "data" is untrusted trigger data]
|
|
4
|
+
\`\`\`json
|
|
5
|
+
${d}
|
|
6
|
+
\`\`\``}truncateOutput(a){if(a)return a.length>4096?`${a.slice(0,4096)}…`:a}constructor(){this.armed=new Map,this.running=new Map,this.lastTriggerErrors=new Map,this.reconcileChain=Promise.resolve(),this.pausedCache=!1,this.started=!1}}function C(){return global.__flujo_scheduler||(global.__flujo_scheduler=new B),global.__flujo_scheduler}},51875:(a,b,c)=>{c.d(b,{A1:()=>k,Je:()=>i,Jl:()=>j,qq:()=>f,vV:()=>g});var d=c(55511);function e(a){return JSON.stringify(function a(b){if(Array.isArray(b))return b.map(a);if(null!==b&&"object"==typeof b){let c=Object.entries(b).sort(([a],[b])=>a<b?-1:+(a>b)),d={};for(let[b,e]of c)d[b]=a(e);return d}return b}(a))}function f(a){return(0,d.createHash)("sha256").update(e(a)??"undefined").digest("hex")}async function g(a){let{status:b,pendingState:c,priorFailures:d,saveState:e}=a;if("completed"===b)return await e({...c,...d>0?{pendingFailures:0}:{}}),{giveUpError:null};if("skipped"===b)return{giveUpError:null};let f=d+1;return f>=3?(await e({...c,pendingFailures:0}),{giveUpError:`Detected a change but the flow failed to process it 3\xd7 — skipping it to avoid a loop`}):(await e({pendingFailures:f}),{giveUpError:null})}function h(a,b){if(!b)return a;let c=a;for(let a of b.split(".")){if(null==c||"object"!=typeof c)return;c=c[a]}return c}function i(a){let b=e(a)??"";return b.length<=8192?a:{truncated:!0,note:`Result too large to include fully (${b.length} chars); this is a preview.`,preview:b.slice(0,8192)}}function j(a,b){let c=f(a);return b.lastHash?b.lastHash===c?{fire:!1,newState:{}}:{fire:!0,summary:"Tool result changed",context:{result:i(a)},newState:{},pendingState:{lastHash:c}}:{fire:!1,newState:{lastHash:c}}}function k(a,b,c,d){let e=h(a,b);if(!Array.isArray(e))return{fire:!1,newState:{},error:`"${b||"(root)"}" did not resolve to a list in the tool result`};let g=e.map(a=>{let b=h(a,c);return{id:null==b||"object"==typeof b?`hash:${f(a)}`:String(b),item:a}}),j=d.seenIds,k=a=>{let b=[...a??[]],c=new Set(b);for(let{id:a}of g)c.has(a)||(c.add(a),b.push(a));return b.slice(-1e3)};if(!j)return{fire:!1,newState:{seenIds:k(void 0)}};let l=new Set(j),m=g.filter(({id:a})=>!l.has(a));return 0===m.length?{fire:!1,newState:{}}:{fire:!0,summary:1===m.length?"1 new item":`${m.length} new items`,context:{newItems:i(m.slice(0,50).map(({item:a})=>a)),...m.length>50?{omitted:m.length-50}:{}},newState:{},pendingState:{seenIds:k(j)}}}},52189:(a,b,c)=>{c.d(b,{O9:()=>e,Z9:()=>f,hk:()=>g,wv:()=>h});var d=c(73736);function e(a,b){try{let c=new d.l4(a,{timezone:b,paused:!0});return c.nextRun(),c.stop(),{valid:!0}}catch(a){return{valid:!1,error:a instanceof Error?a.message:"Invalid cron pattern"}}}function f(a,b,c){let e=new d.l4(a,{timezone:b,paused:!0});try{return e.nextRuns(c).map(a=>a.toISOString())}finally{e.stop()}}function g(a,b){let c=new d.l4(a.cron,{timezone:a.timezone,paused:!0});try{let a=c.nextRun(new Date(b));return null!==a&&a.getTime()<=Date.now()}finally{c.stop()}}function h(a,b){let c=new d.l4(a.cron,{timezone:a.timezone,unref:!0},b);return{dispose:()=>c.stop(),nextRun:()=>c.nextRun()?.toISOString()??null}}},59911:(a,b,c)=>{c.d(b,{Hy:()=>i,Sw:()=>h,tl:()=>j,xC:()=>k});var d=c(92372);let e=(0,c(50846).h)("backend/services/scheduler/runHistory"),f=a=>`planned-execution-runs/${a}`,g=new Map;async function h(a){try{return await (0,d.YM)(f(a),[])}catch(b){return e.error(`Failed to load run history for ${a}:`,b),[]}}async function i(a,b){let c=(g.get(a)??Promise.resolve()).catch(()=>{}).then(async()=>{let c=await h(a);c.push(b);let e=c.slice(-100);await (0,d.VH)(f(a),e)});g.set(a,c);try{await c}finally{g.get(a)===c&&g.delete(a)}}async function j(a){let b=await h(a);return b.length>0?b[b.length-1]:null}async function k(a){await (0,d.N2)(f(a))}}};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
exports.id=
|
|
2
|
-
Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(b,"D",{enumerable:!0,get:function(){return c}})},68633:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{decryptActionBoundArgs:function(){return s},encryptActionBoundArgs:function(){return r}}),c(77925);let d=c(97954),e=c(27825),f=c(47686),g=c(77533),h=c(63033),i=c(26906),j=function(a){return a&&a.__esModule?a:{default:a}}(c(74515)),k=new TextEncoder,l=new TextDecoder,m=void 0,n=void 0;async function o(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=atob(b),e=d.slice(0,16),f=d.slice(16),h=l.decode(await (0,g.decrypt)(c,(0,g.stringToUint8Array)(e),(0,g.stringToUint8Array)(f)));if(!h.startsWith(a))throw Object.defineProperty(Error("Invalid Server Action payload: failed to decrypt."),"__NEXT_ERROR_CODE",{value:"E191",enumerable:!1,configurable:!0});return h.slice(a.length)}async function p(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=new Uint8Array(16);h.workUnitAsyncStorage.exit(()=>crypto.getRandomValues(d));let e=(0,g.arrayBufferToString)(d.buffer),f=await (0,g.encrypt)(c,d,k.encode(a+b));return btoa(e+(0,g.arrayBufferToString)(f))}var q=function(a){return a[a.Ready=0]="Ready",a[a.Pending=1]="Pending",a[a.Complete=2]="Complete",a}(q||{});let r=j.default.cache(async function a(b,...c){let e=h.workUnitAsyncStorage.getStore(),j=e?(0,h.getCacheSignal)(e):void 0,{clientModules:k}=(0,g.getClientReferenceManifestForRsc)(),l=Error();Error.captureStackTrace(l,a);let n=!1,o=e?(0,i.createHangingInputAbortSignal)(e):void 0,q=0;function r(){0===q&&(q=1,null==j||j.beginRead())}function s(){1===q&&(null==j||j.endRead()),q=2}o&&j&&o.addEventListener("abort",r,{once:!0});let t=await (0,f.streamToString)((0,d.renderToReadableStream)(c,k,{filterStackFrame:m,signal:o,onError(a){(null==o||!o.aborted)&&(n||(n=!0,l.message=a instanceof Error?a.message:String(a)))}}),o);if(n)throw s(),l;if(!e)return p(b,t);r();let u=(0,h.getPrerenderResumeDataCache)(e),v=(0,h.getRenderResumeDataCache)(e),w=b+t,x=(null==u?void 0:u.encryptedBoundArgs.get(w))??(null==v?void 0:v.encryptedBoundArgs.get(w));if(x)return x;let y=await p(b,t);return s(),null==u||u.encryptedBoundArgs.set(w,y),y});async function s(a,b){let c,d=await b,f=h.workUnitAsyncStorage.getStore();if(f){let b=(0,h.getCacheSignal)(f),e=(0,h.getPrerenderResumeDataCache)(f),g=(0,h.getRenderResumeDataCache)(f);(c=(null==e?void 0:e.decryptedBoundArgs.get(d))??(null==g?void 0:g.decryptedBoundArgs.get(d)))||(null==b||b.beginRead(),c=await o(a,d),null==b||b.endRead(),null==e||e.decryptedBoundArgs.set(d,c))}else c=await o(a,d);let{edgeRscModuleMapping:i,rscModuleMapping:j}=(0,g.getClientReferenceManifestForRsc)();return await (0,e.createFromReadableStream)(new ReadableStream({start(a){switch(a.enqueue(k.encode(c)),null==f?void 0:f.type){case"prerender":case"prerender-runtime":f.renderSignal.aborted?a.close():f.renderSignal.addEventListener("abort",()=>a.close(),{once:!0});break;case"prerender-client":case"prerender-ppr":case"prerender-legacy":case"request":case"cache":case"private-cache":case"unstable-cache":case void 0:return a.close()}}}),{findSourceMapURL:n,serverConsumerManifest:{moduleLoading:null,moduleMap:j,serverModuleMap:(0,g.getServerModuleMap)()}})}},73456:(a,b,c)=>{"use strict";c.d(b,{G:()=>l,c:()=>k});var d=c(75879);c(68633);var e=c(50846),f=c(92372),g=c(46480),h=c(58739),i=c(51669);let j=(0,e.h)("backend/utils/resolveGlobalVars");async function k(a){j.debug("Entering resolveGlobalVars method");let b=await (0,f.YM)(g.Z.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);j.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:")){j.debug(`Decrypting encrypted global variable: ${b}`);try{let a=e.substring(10),c=await (0,h.decryptWithPassword)(a);if(c)e=c,j.debug(`Successfully decrypted global variable: ${b}`);else{j.warn(`Failed to decrypt global variable: ${b}`);continue}}catch(a){j.error(`Error decrypting global variable: ${b}`,a);continue}}else if(e.startsWith("encrypted_failed:")){j.warn(`Skipping failed encrypted global variable: ${b}`);continue}j.debug(`Resolved global variable: ${b}`),c=c.replace(a,e)}else j.warn(`Global variable not found: ${b}`)}return c},i=async a=>{if("string"==typeof a)return await e(a);if(Array.isArray(a))return await Promise.all(a.map(a=>i(a)));if(null!==a&&"object"==typeof a){let b={};for(let[c,d]of Object.entries(a))b[c]=await i(d);return b}return a},k=await i(a);return"object"==typeof a&&null!==a&&j.debug("Resolved global variables result:",JSON.stringify(k,null,2)),j.debug("Completed global variable resolution"),k}async function l(a,b=0){if(j.debug(`Entering resolveAndDecryptApiKey method (depth: ${b})`),!a)return j.warn("Empty value provided"),null;if(b>=10)return j.warn(`Maximum resolution depth reached (10) for value: ${a}`),a;let c=a;if(c.startsWith("encrypted:")){j.debug(`Decrypting encrypted value at depth ${b}`);try{let a=c.substring(10),d=await (0,h.decryptWithPassword)(a);if(!d)return j.warn(`Failed to decrypt value at depth ${b}`),null;j.debug(`Successfully decrypted value at depth ${b}`),j.verbose(d),c=d}catch(a){return j.error(`Error decrypting value at depth ${b}:`,a),null}}else c.startsWith("encrypted_failed:")&&(j.warn(`Skipping failed encrypted value at depth ${b}`),c=c.substring(17));if(c.includes("${global:")){j.debug(`Resolving global variables at depth ${b}`);try{let a=await k(c);if(j.verbose(a),a!==c)return j.debug(`Value changed after resolving globals at depth ${b}, processing recursively`),l(a,b+1);c=a}catch(a){return j.error(`Error resolving global variables at depth ${b}:`,a),null}}return j.debug(`Completed resolveAndDecryptApiKey at depth ${b}`),c}(0,i.D)([k,l]),(0,d.A)(k,"40520b537d1d43f510acbccd60e3e7d42ce215c157",null),(0,d.A)(l,"60de87c4c5950c080550cb766970e88ae9c9a0ca25",null)},75879:(a,b,c)=>{"use strict";Object.defineProperty(b,"A",{enumerable:!0,get:function(){return d.registerServerReference}});let d=c(97954)},78335:()=>{},79989:(a,b,c)=>{"use strict";c.d(b,{flowService:()=>k});var d=c(32524),e=c(92372),f=c(46480);let g=(0,c(50846).h)("backend/services/flow/index"),h=f.Z.FLOWS;async function i(){return global.__flujo_flowsMigration||(global.__flujo_flowsMigration=(async()=>{try{await (0,e.w5)(f.Z.FLOWS,h,a=>a.id)}catch(a){g.error("Flow storage migration failed",a),global.__flujo_flowsMigration=void 0}})()),global.__flujo_flowsMigration}class j{get flowsCache(){return global.__flujo_flowsCache??null}set flowsCache(a){global.__flujo_flowsCache=a}async loadFlows(){try{if(this.flowsCache)return g.debug("Using cached flows"),this.flowsCache;g.debug("Loading flows from storage"),await i();let a=await (0,e.pL)(h);return this.flowsCache=a,g.info("Loaded flows from storage",{count:a.length}),a}catch(a){return g.error("Failed to load flows",a),[]}}async getFlow(a){try{g.debug(`Getting flow by ID: ${a}`);let b=this.flowsCache?.find(b=>b.id===a)||null;if(b)return g.debug(`Flow ${a} found in cache`),b;await i();let c=null;try{c=await (0,e.EI)(h,a,null)}catch(b){g.debug(`getFlow: could not load flow ${a}`,b),c=null}if(c&&this.flowsCache){let a=this.flowsCache,b=a.findIndex(a=>a.id===c.id);b>=0?a[b]=c:a.push(c),this.flowsCache=a}return g.debug(`Flow ${a} ${c?"found":"not found"}`),c}catch(b){return g.error(`Failed to get flow ${a}`,b),null}}async invalidateExecutionCache(a){try{let{FlowExecutor:b}=await Promise.all([c.e(6996),c.e(1223),c.e(5734),c.e(1373),c.e(5504),c.e(724),c.e(1403)]).then(c.bind(c,91403));b.clearFlowCache(a),g.debug("Invalidated execution flow cache",{flowId:a??"all"})}catch(a){g.warn("Failed to invalidate execution flow cache",a)}}async saveFlow(a){try{g.debug(`Saving flow: ${a.id}`,{name:a.name}),(0,e.ln)(a.id),await i(),await (0,e.Vt)(h,a.id,a);let b=this.flowsCache;if(b){let c=b.findIndex(b=>b.id===a.id);c>=0?b[c]=a:b.push(a),this.flowsCache=b}return await this.invalidateExecutionCache(a.id),g.info(`Flow ${a.id} saved successfully`),{success:!0}}catch(a){return g.error("Failed to save flow",a),{success:!1,error:a instanceof Error?a.message:"Failed to save flow"}}}async deleteFlow(a){try{g.debug(`Deleting flow: ${a}`),await i(),await (0,e.bB)(h,a);let b=this.flowsCache;return b&&(this.flowsCache=b.filter(b=>b.id!==a)),await this.invalidateExecutionCache(a),g.info(`Flow ${a} deleted successfully`),{success:!0}}catch(b){return g.error(`Failed to delete flow: ${a}`,b),{success:!1,error:b instanceof Error?b.message:"Failed to delete flow"}}}createNode(a,b){g.debug(`Creating new node of type: ${a}`,{position:b});let c={id:(0,d.A)(),type:a,position:b,data:{label:`${"mcp"===a?"MCP":a.charAt(0).toUpperCase()+a.slice(1)} Node`,type:a,properties:{}}};return g.debug(`Node created with ID: ${c.id}`),c}createNewFlow(a="NewFlow"){g.debug(`Creating new flow: ${a}`);let b={id:(0,d.A)(),type:"start",position:{x:250,y:150},data:{label:"Start Node",type:"start",properties:{promptTemplate:""}}},c={id:(0,d.A)(),name:a,nodes:[b],edges:[]};return g.info(`New flow created with ID: ${c.id}`,{name:a}),c}createHistoryEntry(a,b){return g.debug("Creating history entry",{nodeCount:a.length,edgeCount:b.length}),{nodes:[...a],edges:[...b]}}generateSampleFlow(a="Sample Flow"){g.debug(`Generating sample flow: ${a}`);let b={id:(0,d.A)(),name:a,nodes:[{id:"1",type:"start",position:{x:250,y:50},data:{label:"Start Node",type:"start",properties:{prompt:"Enter your query here",systemMessage:"You are a helpful assistant",temperature:0}}},{id:"2",type:"process",position:{x:250,y:200},data:{label:"Process Node",type:"process",properties:{operation:"transform",enabled:!0}}},{id:"3",type:"finish",position:{x:250,y:350},data:{label:"Finish Node",type:"finish",properties:{format:"json",template:'{ "result": {{data}} }'}}},{id:"4",type:"mcp",position:{x:450,y:200},data:{label:"MCP Node",type:"mcp",properties:{channels:2,mode:"parallel"}}}],edges:[{id:"e1-2",source:"1",target:"2",type:"custom"},{id:"e2-3",source:"2",target:"3",type:"custom"}]};return g.info(`Sample flow generated with ID: ${b.id}`,{name:a}),b}async listFlows(){g.debug("listFlows: Entering method");try{let a=await this.loadFlows();return{success:!0,flows:a}}catch(a){return g.warn("listFlows: Failed to list flows:",a),{success:!1,error:a instanceof Error?a.message:"Failed to list flows"}}}}let k=new j},83868:(a,b,c)=>{"use strict";function d(a,b=200){return new Response(JSON.stringify(a),{status:b,headers:{"Content-Type":"application/json"}})}c.d(b,{P:()=>d})},96487:()=>{}};
|
|
1
|
+
exports.id=8367,exports.ids=[8367],exports.modules={947:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"40520b537d1d43f510acbccd60e3e7d42ce215c157":()=>d.c,"60de87c4c5950c080550cb766970e88ae9c9a0ca25":()=>d.G});var d=c(73456)},3676:(a,b,c)=>{"use strict";c.d(b,{Wj:()=>h,ln:()=>g});var d=c(10641),e=c(58739);let f="encryption_locked";async function g(){return(0,e.isEncryptionLocked)()}async function h(a){return await g()?a?.openai?d.NextResponse.json({error:{message:"Encryption is locked. Unlock FLUJO to continue.",type:f,code:f,param:null}},{status:423}):d.NextResponse.json({error:f},{status:423}):null}},51669:(a,b)=>{"use strict";function c(a){for(let b=0;b<a.length;b++){let c=a[b];if("function"!=typeof c)throw Object.defineProperty(Error(`A "use server" file can only export async functions, found ${typeof c}.
|
|
2
|
+
Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(b,"D",{enumerable:!0,get:function(){return c}})},68633:(a,b,c)=>{"use strict";Object.defineProperty(b,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(b,{decryptActionBoundArgs:function(){return s},encryptActionBoundArgs:function(){return r}}),c(77925);let d=c(97954),e=c(27825),f=c(47686),g=c(77533),h=c(63033),i=c(26906),j=function(a){return a&&a.__esModule?a:{default:a}}(c(74515)),k=new TextEncoder,l=new TextDecoder,m=void 0,n=void 0;async function o(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=atob(b),e=d.slice(0,16),f=d.slice(16),h=l.decode(await (0,g.decrypt)(c,(0,g.stringToUint8Array)(e),(0,g.stringToUint8Array)(f)));if(!h.startsWith(a))throw Object.defineProperty(Error("Invalid Server Action payload: failed to decrypt."),"__NEXT_ERROR_CODE",{value:"E191",enumerable:!1,configurable:!0});return h.slice(a.length)}async function p(a,b){let c=await (0,g.getActionEncryptionKey)();if(void 0===c)throw Object.defineProperty(Error("Missing encryption key for Server Action. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E65",enumerable:!1,configurable:!0});let d=new Uint8Array(16);h.workUnitAsyncStorage.exit(()=>crypto.getRandomValues(d));let e=(0,g.arrayBufferToString)(d.buffer),f=await (0,g.encrypt)(c,d,k.encode(a+b));return btoa(e+(0,g.arrayBufferToString)(f))}var q=function(a){return a[a.Ready=0]="Ready",a[a.Pending=1]="Pending",a[a.Complete=2]="Complete",a}(q||{});let r=j.default.cache(async function a(b,...c){let e=h.workUnitAsyncStorage.getStore(),j=e?(0,h.getCacheSignal)(e):void 0,{clientModules:k}=(0,g.getClientReferenceManifestForRsc)(),l=Error();Error.captureStackTrace(l,a);let n=!1,o=e?(0,i.createHangingInputAbortSignal)(e):void 0,q=0;function r(){0===q&&(q=1,null==j||j.beginRead())}function s(){1===q&&(null==j||j.endRead()),q=2}o&&j&&o.addEventListener("abort",r,{once:!0});let t=await (0,f.streamToString)((0,d.renderToReadableStream)(c,k,{filterStackFrame:m,signal:o,onError(a){(null==o||!o.aborted)&&(n||(n=!0,l.message=a instanceof Error?a.message:String(a)))}}),o);if(n)throw s(),l;if(!e)return p(b,t);r();let u=(0,h.getPrerenderResumeDataCache)(e),v=(0,h.getRenderResumeDataCache)(e),w=b+t,x=(null==u?void 0:u.encryptedBoundArgs.get(w))??(null==v?void 0:v.encryptedBoundArgs.get(w));if(x)return x;let y=await p(b,t);return s(),null==u||u.encryptedBoundArgs.set(w,y),y});async function s(a,b){let c,d=await b,f=h.workUnitAsyncStorage.getStore();if(f){let b=(0,h.getCacheSignal)(f),e=(0,h.getPrerenderResumeDataCache)(f),g=(0,h.getRenderResumeDataCache)(f);(c=(null==e?void 0:e.decryptedBoundArgs.get(d))??(null==g?void 0:g.decryptedBoundArgs.get(d)))||(null==b||b.beginRead(),c=await o(a,d),null==b||b.endRead(),null==e||e.decryptedBoundArgs.set(d,c))}else c=await o(a,d);let{edgeRscModuleMapping:i,rscModuleMapping:j}=(0,g.getClientReferenceManifestForRsc)();return await (0,e.createFromReadableStream)(new ReadableStream({start(a){switch(a.enqueue(k.encode(c)),null==f?void 0:f.type){case"prerender":case"prerender-runtime":f.renderSignal.aborted?a.close():f.renderSignal.addEventListener("abort",()=>a.close(),{once:!0});break;case"prerender-client":case"prerender-ppr":case"prerender-legacy":case"request":case"cache":case"private-cache":case"unstable-cache":case void 0:return a.close()}}}),{findSourceMapURL:n,serverConsumerManifest:{moduleLoading:null,moduleMap:j,serverModuleMap:(0,g.getServerModuleMap)()}})}},73456:(a,b,c)=>{"use strict";c.d(b,{G:()=>l,c:()=>k});var d=c(75879);c(68633);var e=c(50846),f=c(92372),g=c(46480),h=c(58739),i=c(51669);let j=(0,e.h)("backend/utils/resolveGlobalVars");async function k(a){j.debug("Entering resolveGlobalVars method");let b=await (0,f.YM)(g.Z.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);j.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:")){j.debug(`Decrypting encrypted global variable: ${b}`);try{let a=e.substring(10),c=await (0,h.decryptWithPassword)(a);if(c)e=c,j.debug(`Successfully decrypted global variable: ${b}`);else{j.warn(`Failed to decrypt global variable: ${b}`);continue}}catch(a){j.error(`Error decrypting global variable: ${b}`,a);continue}}else if(e.startsWith("encrypted_failed:")){j.warn(`Skipping failed encrypted global variable: ${b}`);continue}j.debug(`Resolved global variable: ${b}`),c=c.replace(a,e)}else j.warn(`Global variable not found: ${b}`)}return c},i=async a=>{if("string"==typeof a)return await e(a);if(Array.isArray(a))return await Promise.all(a.map(a=>i(a)));if(null!==a&&"object"==typeof a){let b={};for(let[c,d]of Object.entries(a))b[c]=await i(d);return b}return a},k=await i(a);return"object"==typeof a&&null!==a&&j.debug("Resolved global variables result:",JSON.stringify(k,null,2)),j.debug("Completed global variable resolution"),k}async function l(a,b=0){if(j.debug(`Entering resolveAndDecryptApiKey method (depth: ${b})`),!a)return j.warn("Empty value provided"),null;if(b>=10)return j.warn(`Maximum resolution depth reached (10) for value: ${a}`),a;let c=a;if(c.startsWith("encrypted:")){j.debug(`Decrypting encrypted value at depth ${b}`);try{let a=c.substring(10),d=await (0,h.decryptWithPassword)(a);if(!d)return j.warn(`Failed to decrypt value at depth ${b}`),null;j.debug(`Successfully decrypted value at depth ${b}`),j.verbose(d),c=d}catch(a){return j.error(`Error decrypting value at depth ${b}:`,a),null}}else c.startsWith("encrypted_failed:")&&(j.warn(`Skipping failed encrypted value at depth ${b}`),c=c.substring(17));if(c.includes("${global:")){j.debug(`Resolving global variables at depth ${b}`);try{let a=await k(c);if(j.verbose(a),a!==c)return j.debug(`Value changed after resolving globals at depth ${b}, processing recursively`),l(a,b+1);c=a}catch(a){return j.error(`Error resolving global variables at depth ${b}:`,a),null}}return j.debug(`Completed resolveAndDecryptApiKey at depth ${b}`),c}(0,i.D)([k,l]),(0,d.A)(k,"40520b537d1d43f510acbccd60e3e7d42ce215c157",null),(0,d.A)(l,"60de87c4c5950c080550cb766970e88ae9c9a0ca25",null)},75879:(a,b,c)=>{"use strict";Object.defineProperty(b,"A",{enumerable:!0,get:function(){return d.registerServerReference}});let d=c(97954)},78335:()=>{},83868:(a,b,c)=>{"use strict";function d(a,b=200){return new Response(JSON.stringify(a),{status:b,headers:{"Content-Type":"application/json"}})}c.d(b,{P:()=>d})},96487:()=>{}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=2253,exports.ids=[2253],exports.modules={19787:(a,b,c)=>{c.d(b,{A:()=>u});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(68333),i=c(6636),j=c(14328),k=c(66512),l=c(29565),m=c(33105);function n(a){return(0,m.Ay)("MuiAccordionSummary",a)}let o=(0,l.A)("MuiAccordionSummary",["root","expanded","focusVisible","disabled","gutters","contentGutters","content","expandIconWrapper"]);var p=c(20385),q=c(21124);let r=(0,g.Ay)(j.A,{name:"MuiAccordionSummary",slot:"Root",overridesResolver:(a,b)=>b.root})((0,h.A)(({theme:a})=>{let b={duration:a.transitions.duration.shortest};return{display:"flex",width:"100%",minHeight:48,padding:a.spacing(0,2),transition:a.transitions.create(["min-height","background-color"],b),[`&.${o.focusVisible}`]:{backgroundColor:(a.vars||a).palette.action.focus},[`&.${o.disabled}`]:{opacity:(a.vars||a).palette.action.disabledOpacity},[`&:hover:not(.${o.disabled})`]:{cursor:"pointer"},variants:[{props:a=>!a.disableGutters,style:{[`&.${o.expanded}`]:{minHeight:64}}}]}})),s=(0,g.Ay)("span",{name:"MuiAccordionSummary",slot:"Content",overridesResolver:(a,b)=>b.content})((0,h.A)(({theme:a})=>({display:"flex",textAlign:"start",flexGrow:1,margin:"12px 0",variants:[{props:a=>!a.disableGutters,style:{transition:a.transitions.create(["margin"],{duration:a.transitions.duration.shortest}),[`&.${o.expanded}`]:{margin:"20px 0"}}}]}))),t=(0,g.Ay)("span",{name:"MuiAccordionSummary",slot:"ExpandIconWrapper",overridesResolver:(a,b)=>b.expandIconWrapper})((0,h.A)(({theme:a})=>({display:"flex",color:(a.vars||a).palette.action.active,transform:"rotate(0deg)",transition:a.transitions.create("transform",{duration:a.transitions.duration.shortest}),[`&.${o.expanded}`]:{transform:"rotate(180deg)"}}))),u=d.forwardRef(function(a,b){let c=(0,i.b)({props:a,name:"MuiAccordionSummary"}),{children:g,className:h,expandIcon:j,focusVisibleClassName:l,onClick:m,slots:o,slotProps:u,...v}=c,{disabled:w=!1,disableGutters:x,expanded:y,toggle:z}=d.useContext(k.A),A={...c,expanded:y,disabled:w,disableGutters:x},B=(a=>{let{classes:b,expanded:c,disabled:d,disableGutters:e}=a;return(0,f.A)({root:["root",c&&"expanded",d&&"disabled",!e&&"gutters"],focusVisible:["focusVisible"],content:["content",c&&"expanded",!e&&"contentGutters"],expandIconWrapper:["expandIconWrapper",c&&"expanded"]},n,b)})(A),C={slots:o,slotProps:u},[D,E]=(0,p.A)("root",{ref:b,shouldForwardComponentProp:!0,className:(0,e.A)(B.root,h),elementType:r,externalForwardedProps:{...C,...v},ownerState:A,additionalProps:{focusRipple:!1,disableRipple:!0,disabled:w,"aria-expanded":y,focusVisibleClassName:(0,e.A)(B.focusVisible,l)},getSlotProps:a=>({...a,onClick:b=>{a.onClick?.(b),z&&z(b),m&&m(b)}})}),[F,G]=(0,p.A)("content",{className:B.content,elementType:s,externalForwardedProps:C,ownerState:A}),[H,I]=(0,p.A)("expandIconWrapper",{className:B.expandIconWrapper,elementType:t,externalForwardedProps:C,ownerState:A});return(0,q.jsxs)(D,{...E,children:[(0,q.jsx)(F,{...G,children:g}),j&&(0,q.jsx)(H,{...I,children:j})]})})},61628:(a,b,c)=>{c.d(b,{A:()=>v});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(68333),i=c(6636),j=c(99561),k=c(54573),l=c(66512),m=c(65603),n=c(20385),o=c(29565),p=c(33105);function q(a){return(0,p.Ay)("MuiAccordion",a)}let r=(0,o.A)("MuiAccordion",["root","heading","rounded","expanded","disabled","gutters","region"]);var s=c(21124);let t=(0,g.Ay)(k.A,{name:"MuiAccordion",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[{[`& .${r.region}`]:b.region},b.root,!c.square&&b.rounded,!c.disableGutters&&b.gutters]}})((0,h.A)(({theme:a})=>{let b={duration:a.transitions.duration.shortest};return{position:"relative",transition:a.transitions.create(["margin"],b),overflowAnchor:"none","&::before":{position:"absolute",left:0,top:-1,right:0,height:1,content:'""',opacity:1,backgroundColor:(a.vars||a).palette.divider,transition:a.transitions.create(["opacity","background-color"],b)},"&:first-of-type":{"&::before":{display:"none"}},[`&.${r.expanded}`]:{"&::before":{opacity:0},"&:first-of-type":{marginTop:0},"&:last-of-type":{marginBottom:0},"& + &":{"&::before":{display:"none"}}},[`&.${r.disabled}`]:{backgroundColor:(a.vars||a).palette.action.disabledBackground}}}),(0,h.A)(({theme:a})=>({variants:[{props:a=>!a.square,style:{borderRadius:0,"&:first-of-type":{borderTopLeftRadius:(a.vars||a).shape.borderRadius,borderTopRightRadius:(a.vars||a).shape.borderRadius},"&:last-of-type":{borderBottomLeftRadius:(a.vars||a).shape.borderRadius,borderBottomRightRadius:(a.vars||a).shape.borderRadius,"@supports (-ms-ime-align: auto)":{borderBottomLeftRadius:0,borderBottomRightRadius:0}}}},{props:a=>!a.disableGutters,style:{[`&.${r.expanded}`]:{margin:"16px 0"}}}]}))),u=(0,g.Ay)("h3",{name:"MuiAccordion",slot:"Heading",overridesResolver:(a,b)=>b.heading})({all:"unset"}),v=d.forwardRef(function(a,b){let c=(0,i.b)({props:a,name:"MuiAccordion"}),{children:g,className:h,defaultExpanded:k=!1,disabled:o=!1,disableGutters:p=!1,expanded:r,onChange:v,square:w=!1,slots:x={},slotProps:y={},TransitionComponent:z,TransitionProps:A,...B}=c,[C,D]=(0,m.A)({controlled:r,default:k,name:"Accordion",state:"expanded"}),E=d.useCallback(a=>{D(!C),v&&v(a,!C)},[C,v,D]),[F,...G]=d.Children.toArray(g),H=d.useMemo(()=>({expanded:C,disabled:o,disableGutters:p,toggle:E}),[C,o,p,E]),I={...c,square:w,disabled:o,disableGutters:p,expanded:C},J=(a=>{let{classes:b,square:c,expanded:d,disabled:e,disableGutters:g}=a;return(0,f.A)({root:["root",!c&&"rounded",d&&"expanded",e&&"disabled",!g&&"gutters"],heading:["heading"],region:["region"]},q,b)})(I),K={slots:{transition:z,...x},slotProps:{transition:A,...y}},[L,M]=(0,n.A)("root",{elementType:t,externalForwardedProps:{...K,...B},className:(0,e.A)(J.root,h),shouldForwardComponentProp:!0,ownerState:I,ref:b,additionalProps:{square:w}}),[N,O]=(0,n.A)("heading",{elementType:u,externalForwardedProps:K,className:J.heading,ownerState:I}),[P,Q]=(0,n.A)("transition",{elementType:j.A,externalForwardedProps:K,ownerState:I});return(0,s.jsxs)(L,{...M,children:[(0,s.jsx)(N,{...O,children:(0,s.jsx)(l.A.Provider,{value:H,children:F})}),(0,s.jsx)(P,{in:C,timeout:"auto",...Q,children:(0,s.jsx)("div",{"aria-labelledby":F.props.id,id:F.props["aria-controls"],role:"region",className:J.region,children:G})})]})})},66512:(a,b,c)=>{c.d(b,{A:()=>d});let d=c(38301).createContext({})},77028:(a,b,c)=>{c.d(b,{A:()=>D});var d=c(38301),e=c(43249),f=c(2783),g=c(37489),h=c(99515),i=c(27080),j=c(21124);let k=(0,i.A)((0,j.jsx)("path",{d:"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"}),"CheckBoxOutlineBlank"),l=(0,i.A)((0,j.jsx)("path",{d:"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"}),"CheckBox"),m=(0,i.A)((0,j.jsx)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"}),"IndeterminateCheckBox");var n=c(6638),o=c(41126),p=c(29565),q=c(33105);function r(a){return(0,q.Ay)("MuiCheckbox",a)}let s=(0,p.A)("MuiCheckbox",["root","checked","disabled","indeterminate","colorPrimary","colorSecondary","sizeSmall","sizeMedium"]);var t=c(18168),u=c(68333),v=c(54716),w=c(6636),x=c(19902),y=c(20385);let z=(0,t.Ay)(h.A,{shouldForwardProp:a=>(0,o.A)(a)||"classes"===a,name:"MuiCheckbox",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,c.indeterminate&&b.indeterminate,b[`size${(0,n.A)(c.size)}`],"default"!==c.color&&b[`color${(0,n.A)(c.color)}`]]}})((0,u.A)(({theme:a})=>({color:(a.vars||a).palette.text.secondary,variants:[{props:{color:"default",disableRipple:!1},style:{"&:hover":{backgroundColor:a.vars?`rgba(${a.vars.palette.action.activeChannel} / ${a.vars.palette.action.hoverOpacity})`:(0,g.X4)(a.palette.action.active,a.palette.action.hoverOpacity)}}},...Object.entries(a.palette).filter((0,v.A)()).map(([b])=>({props:{color:b,disableRipple:!1},style:{"&:hover":{backgroundColor:a.vars?`rgba(${a.vars.palette[b].mainChannel} / ${a.vars.palette.action.hoverOpacity})`:(0,g.X4)(a.palette[b].main,a.palette.action.hoverOpacity)}}})),...Object.entries(a.palette).filter((0,v.A)()).map(([b])=>({props:{color:b},style:{[`&.${s.checked}, &.${s.indeterminate}`]:{color:(a.vars||a).palette[b].main},[`&.${s.disabled}`]:{color:(a.vars||a).palette.action.disabled}}})),{props:{disableRipple:!1},style:{"&:hover":{"@media (hover: none)":{backgroundColor:"transparent"}}}}]}))),A=(0,j.jsx)(l,{}),B=(0,j.jsx)(k,{}),C=(0,j.jsx)(m,{}),D=d.forwardRef(function(a,b){let c=(0,w.b)({props:a,name:"MuiCheckbox"}),{checkedIcon:g=A,color:h="primary",icon:i=B,indeterminate:k=!1,indeterminateIcon:l=C,inputProps:m,size:o="medium",disableRipple:p=!1,className:q,slots:s={},slotProps:t={},...u}=c,v=k?l:i,D=k?l:g,E={...c,disableRipple:p,color:h,indeterminate:k,size:o},F=(a=>{let{classes:b,indeterminate:c,color:d,size:e}=a,g={root:["root",c&&"indeterminate",`color${(0,n.A)(d)}`,`size${(0,n.A)(e)}`]},h=(0,f.A)(g,r,b);return{...b,...h}})(E),G=t.input??m,[H,I]=(0,y.A)("root",{ref:b,elementType:z,className:(0,e.A)(F.root,q),shouldForwardComponentProp:!0,externalForwardedProps:{slots:s,slotProps:t,...u},ownerState:E,additionalProps:{type:"checkbox",icon:d.cloneElement(v,{fontSize:v.props.fontSize??o}),checkedIcon:d.cloneElement(D,{fontSize:D.props.fontSize??o}),disableRipple:p,slots:s,slotProps:{input:(0,x.A)("function"==typeof G?G(E):G,{"data-indeterminate":k})}}});return(0,j.jsx)(H,{...I,classes:F})})},95803:(a,b,c)=>{c.d(b,{A:()=>o});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(68333),i=c(6636),j=c(29565),k=c(33105);function l(a){return(0,k.Ay)("MuiAccordionDetails",a)}(0,j.A)("MuiAccordionDetails",["root"]);var m=c(21124);let n=(0,g.Ay)("div",{name:"MuiAccordionDetails",slot:"Root",overridesResolver:(a,b)=>b.root})((0,h.A)(({theme:a})=>({padding:a.spacing(1,2,2)}))),o=d.forwardRef(function(a,b){let c=(0,i.b)({props:a,name:"MuiAccordionDetails"}),{className:d,...g}=c,h=(a=>{let{classes:b}=a;return(0,f.A)({root:["root"]},l,b)})(c);return(0,m.jsx)(n,{className:(0,e.A)(h.root,d),ref:b,ownerState:c,...g})})}};
|
|
1
|
+
"use strict";exports.id=8572,exports.ids=[8572],exports.modules={19787:(a,b,c)=>{c.d(b,{A:()=>u});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(68333),i=c(6636),j=c(14328),k=c(66512),l=c(29565),m=c(33105);function n(a){return(0,m.Ay)("MuiAccordionSummary",a)}let o=(0,l.A)("MuiAccordionSummary",["root","expanded","focusVisible","disabled","gutters","contentGutters","content","expandIconWrapper"]);var p=c(20385),q=c(21124);let r=(0,g.Ay)(j.A,{name:"MuiAccordionSummary",slot:"Root",overridesResolver:(a,b)=>b.root})((0,h.A)(({theme:a})=>{let b={duration:a.transitions.duration.shortest};return{display:"flex",width:"100%",minHeight:48,padding:a.spacing(0,2),transition:a.transitions.create(["min-height","background-color"],b),[`&.${o.focusVisible}`]:{backgroundColor:(a.vars||a).palette.action.focus},[`&.${o.disabled}`]:{opacity:(a.vars||a).palette.action.disabledOpacity},[`&:hover:not(.${o.disabled})`]:{cursor:"pointer"},variants:[{props:a=>!a.disableGutters,style:{[`&.${o.expanded}`]:{minHeight:64}}}]}})),s=(0,g.Ay)("span",{name:"MuiAccordionSummary",slot:"Content",overridesResolver:(a,b)=>b.content})((0,h.A)(({theme:a})=>({display:"flex",textAlign:"start",flexGrow:1,margin:"12px 0",variants:[{props:a=>!a.disableGutters,style:{transition:a.transitions.create(["margin"],{duration:a.transitions.duration.shortest}),[`&.${o.expanded}`]:{margin:"20px 0"}}}]}))),t=(0,g.Ay)("span",{name:"MuiAccordionSummary",slot:"ExpandIconWrapper",overridesResolver:(a,b)=>b.expandIconWrapper})((0,h.A)(({theme:a})=>({display:"flex",color:(a.vars||a).palette.action.active,transform:"rotate(0deg)",transition:a.transitions.create("transform",{duration:a.transitions.duration.shortest}),[`&.${o.expanded}`]:{transform:"rotate(180deg)"}}))),u=d.forwardRef(function(a,b){let c=(0,i.b)({props:a,name:"MuiAccordionSummary"}),{children:g,className:h,expandIcon:j,focusVisibleClassName:l,onClick:m,slots:o,slotProps:u,...v}=c,{disabled:w=!1,disableGutters:x,expanded:y,toggle:z}=d.useContext(k.A),A={...c,expanded:y,disabled:w,disableGutters:x},B=(a=>{let{classes:b,expanded:c,disabled:d,disableGutters:e}=a;return(0,f.A)({root:["root",c&&"expanded",d&&"disabled",!e&&"gutters"],focusVisible:["focusVisible"],content:["content",c&&"expanded",!e&&"contentGutters"],expandIconWrapper:["expandIconWrapper",c&&"expanded"]},n,b)})(A),C={slots:o,slotProps:u},[D,E]=(0,p.A)("root",{ref:b,shouldForwardComponentProp:!0,className:(0,e.A)(B.root,h),elementType:r,externalForwardedProps:{...C,...v},ownerState:A,additionalProps:{focusRipple:!1,disableRipple:!0,disabled:w,"aria-expanded":y,focusVisibleClassName:(0,e.A)(B.focusVisible,l)},getSlotProps:a=>({...a,onClick:b=>{a.onClick?.(b),z&&z(b),m&&m(b)}})}),[F,G]=(0,p.A)("content",{className:B.content,elementType:s,externalForwardedProps:C,ownerState:A}),[H,I]=(0,p.A)("expandIconWrapper",{className:B.expandIconWrapper,elementType:t,externalForwardedProps:C,ownerState:A});return(0,q.jsxs)(D,{...E,children:[(0,q.jsx)(F,{...G,children:g}),j&&(0,q.jsx)(H,{...I,children:j})]})})},61628:(a,b,c)=>{c.d(b,{A:()=>v});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(68333),i=c(6636),j=c(99561),k=c(54573),l=c(66512),m=c(65603),n=c(20385),o=c(29565),p=c(33105);function q(a){return(0,p.Ay)("MuiAccordion",a)}let r=(0,o.A)("MuiAccordion",["root","heading","rounded","expanded","disabled","gutters","region"]);var s=c(21124);let t=(0,g.Ay)(k.A,{name:"MuiAccordion",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[{[`& .${r.region}`]:b.region},b.root,!c.square&&b.rounded,!c.disableGutters&&b.gutters]}})((0,h.A)(({theme:a})=>{let b={duration:a.transitions.duration.shortest};return{position:"relative",transition:a.transitions.create(["margin"],b),overflowAnchor:"none","&::before":{position:"absolute",left:0,top:-1,right:0,height:1,content:'""',opacity:1,backgroundColor:(a.vars||a).palette.divider,transition:a.transitions.create(["opacity","background-color"],b)},"&:first-of-type":{"&::before":{display:"none"}},[`&.${r.expanded}`]:{"&::before":{opacity:0},"&:first-of-type":{marginTop:0},"&:last-of-type":{marginBottom:0},"& + &":{"&::before":{display:"none"}}},[`&.${r.disabled}`]:{backgroundColor:(a.vars||a).palette.action.disabledBackground}}}),(0,h.A)(({theme:a})=>({variants:[{props:a=>!a.square,style:{borderRadius:0,"&:first-of-type":{borderTopLeftRadius:(a.vars||a).shape.borderRadius,borderTopRightRadius:(a.vars||a).shape.borderRadius},"&:last-of-type":{borderBottomLeftRadius:(a.vars||a).shape.borderRadius,borderBottomRightRadius:(a.vars||a).shape.borderRadius,"@supports (-ms-ime-align: auto)":{borderBottomLeftRadius:0,borderBottomRightRadius:0}}}},{props:a=>!a.disableGutters,style:{[`&.${r.expanded}`]:{margin:"16px 0"}}}]}))),u=(0,g.Ay)("h3",{name:"MuiAccordion",slot:"Heading",overridesResolver:(a,b)=>b.heading})({all:"unset"}),v=d.forwardRef(function(a,b){let c=(0,i.b)({props:a,name:"MuiAccordion"}),{children:g,className:h,defaultExpanded:k=!1,disabled:o=!1,disableGutters:p=!1,expanded:r,onChange:v,square:w=!1,slots:x={},slotProps:y={},TransitionComponent:z,TransitionProps:A,...B}=c,[C,D]=(0,m.A)({controlled:r,default:k,name:"Accordion",state:"expanded"}),E=d.useCallback(a=>{D(!C),v&&v(a,!C)},[C,v,D]),[F,...G]=d.Children.toArray(g),H=d.useMemo(()=>({expanded:C,disabled:o,disableGutters:p,toggle:E}),[C,o,p,E]),I={...c,square:w,disabled:o,disableGutters:p,expanded:C},J=(a=>{let{classes:b,square:c,expanded:d,disabled:e,disableGutters:g}=a;return(0,f.A)({root:["root",!c&&"rounded",d&&"expanded",e&&"disabled",!g&&"gutters"],heading:["heading"],region:["region"]},q,b)})(I),K={slots:{transition:z,...x},slotProps:{transition:A,...y}},[L,M]=(0,n.A)("root",{elementType:t,externalForwardedProps:{...K,...B},className:(0,e.A)(J.root,h),shouldForwardComponentProp:!0,ownerState:I,ref:b,additionalProps:{square:w}}),[N,O]=(0,n.A)("heading",{elementType:u,externalForwardedProps:K,className:J.heading,ownerState:I}),[P,Q]=(0,n.A)("transition",{elementType:j.A,externalForwardedProps:K,ownerState:I});return(0,s.jsxs)(L,{...M,children:[(0,s.jsx)(N,{...O,children:(0,s.jsx)(l.A.Provider,{value:H,children:F})}),(0,s.jsx)(P,{in:C,timeout:"auto",...Q,children:(0,s.jsx)("div",{"aria-labelledby":F.props.id,id:F.props["aria-controls"],role:"region",className:J.region,children:G})})]})})},66512:(a,b,c)=>{c.d(b,{A:()=>d});let d=c(38301).createContext({})},95803:(a,b,c)=>{c.d(b,{A:()=>o});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(68333),i=c(6636),j=c(29565),k=c(33105);function l(a){return(0,k.Ay)("MuiAccordionDetails",a)}(0,j.A)("MuiAccordionDetails",["root"]);var m=c(21124);let n=(0,g.Ay)("div",{name:"MuiAccordionDetails",slot:"Root",overridesResolver:(a,b)=>b.root})((0,h.A)(({theme:a})=>({padding:a.spacing(1,2,2)}))),o=d.forwardRef(function(a,b){let c=(0,i.b)({props:a,name:"MuiAccordionDetails"}),{className:d,...g}=c,h=(a=>{let{classes:b}=a;return(0,f.A)({root:["root"]},l,b)})(c);return(0,m.jsx)(n,{className:(0,e.A)(h.root,d),ref:b,ownerState:c,...g})})}};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";exports.id=8739,exports.ids=[8739],exports.modules={13516:(a,b,c)=>{c.d(b,{G:()=>d});let d={LOG_LEVEL:3,INCLUDE_TOOL_CALLS_IN_RESPONSE:!0,ENABLE_EXECUTION_TRACKER:!1}},43326:(a,b,c)=>{c.d(b,{JC:()=>f,Ne:()=>h,ok:()=>g});var d=c(33873),e=c.n(d);function f(){return process.cwd()}function g(){let a=process.env.FLUJO_DATA_DIR;return a&&a.trim().length>0?e().resolve(a):f()}function h(){return process.env.FLUJO_CONTAINER?"container":process.env.FLUJO_NPM?"npm":"git"}},46480:(a,b,c)=>{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.SPEECH_SETTINGS="speech_settings",a.SPOTLIGHT_SERVERS="spotlight_servers",a.PLANNED_EXECUTIONS="planned_executions",a}({})},50846:(a,b,c)=>{c.d(b,{h:()=>i});var d=c(13516);let e={VERBOSE:-1,DEBUG:0,INFO:1,WARN:2,ERROR:3},f="number"==typeof d.G.LOG_LEVEL?d.G.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+=`:
|
|
1
|
+
"use strict";exports.id=8739,exports.ids=[8739],exports.modules={13516:(a,b,c)=>{c.d(b,{G:()=>d});let d={LOG_LEVEL:3,INCLUDE_TOOL_CALLS_IN_RESPONSE:!0,ENABLE_EXECUTION_TRACKER:!1}},43326:(a,b,c)=>{c.d(b,{JC:()=>f,Ne:()=>j,Sx:()=>h,ok:()=>g,v0:()=>i});var d=c(33873),e=c.n(d);function f(){return process.cwd()}function g(){let a=process.env.FLUJO_DATA_DIR;return a&&a.trim().length>0?e().resolve(a):f()}function h(){let a=process.env.FLUJO_OLLAMA_URL;return(a&&a.trim().length>0?a.trim():"http://localhost:11434").replace(/\/+$/,"")}function i(){let a=process.env.FLUJO_OLLAMA;return"1"===a||"true"===a||"yes"===a}function j(){return process.env.FLUJO_CONTAINER?"container":process.env.FLUJO_NPM?"npm":"git"}},46480:(a,b,c)=>{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.SPEECH_SETTINGS="speech_settings",a.SPOTLIGHT_SERVERS="spotlight_servers",a.PLANNED_EXECUTIONS="planned_executions",a}({})},50846:(a,b,c)=>{c.d(b,{h:()=>i});var d=c(13516);let e={VERBOSE:-1,DEBUG:0,INFO:1,WARN:2,ERROR:3},f="number"==typeof d.G.LOG_LEVEL?d.G.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
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)}}}},58739:(a,b,c)=>{c.r(b),c.d(b,{EncryptionLockedError:()=>o,authenticate:()=>G,changeEncryptionPassword:()=>B,decryptWithPassword:()=>E,encryptWithPassword:()=>D,getEncryptionType:()=>L,initializeDefaultEncryption:()=>w,initializeEncryption:()=>x,isEncryptionInitialized:()=>I,isEncryptionLocked:()=>K,isUserEncryptionEnabled:()=>J,logout:()=>H,migrateToUserEncryption:()=>A,verifyPassword:()=>F});var d=c(58862),e=c.n(d),f=c(92372),g=c(46480),h=c(50846),i=c(32524);let j=(0,h.h)("utils/encryption/session"),k=global.__flujo_encryption_sessions??(global.__flujo_encryption_sessions=new Map);function l(){let a=Date.now(),b=0;for(let[c,d]of k.entries())a-d.createdAt>72e5&&(k.delete(c),b++);b>0&&j.info(`Cleaned up ${b} expired encryption sessions`)}let m=null,n=(0,h.h)("utils/encryption/secure");class o extends Error{constructor(a="Encryption is locked: user password required to access secrets"){super(a),this.name="EncryptionLockedError",Object.setPrototypeOf(this,o.prototype)}}let p="data_encryption_key",q="data_encryption_iv",r="data_encryption_salt",s="encryption_version",t="encryption_type";var u=function(a){return a.DEFAULT="default",a.USER="user",a}(u||{});function v(){let a=e().enc.Utf8.parse("flujo_fixed_salt_v1");return e().PBKDF2("FLUJO~",a,{keySize:8,iterations:1e5})}async function w(){n.debug("initializeDefaultEncryption: Entering method");try{if(await I())return!0;let a=v(),b=e().lib.WordArray.random(8),c=e().lib.WordArray.random(16),d=e().AES.encrypt(b.toString(),a,{iv:c,mode:e().mode.CBC,padding:e().pad.Pkcs7}),h=e().enc.Utf8.parse("flujo_fixed_salt_v1"),i={[p]:d.toString(),[q]:c.toString(),[r]:h.toString(),[s]:1,[t]:"default"};return await (0,f.VH)(g.Z.ENCRYPTION_KEY,i),!0}catch(a){return n.error("initializeDefaultEncryption: Failed to initialize default encryption:",a),!1}}async function x(a){n.debug("initializeEncryption: Entering method");try{let b=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(b&&"default"===b[t])return await A(a);let c=e().lib.WordArray.random(16),d=e().PBKDF2(a,c,{keySize:8,iterations:1e5}),h=e().lib.WordArray.random(8),i=e().lib.WordArray.random(16),j=e().AES.encrypt(h.toString(),d,{iv:i,mode:e().mode.CBC,padding:e().pad.Pkcs7}),k={[p]:j.toString(),[q]:i.toString(),[r]:c.toString(),[s]:1,[t]:"user"};return await (0,f.VH)(g.Z.ENCRYPTION_KEY,k),!0}catch(a){return n.error("initializeEncryption: Failed to initialize encryption:",a),!1}}async function y(){n.debug("getDefaultDEK: Entering method");try{let a=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!a){if(!await w())return n.error("getDefaultDEK: Failed to initialize default encryption"),null;return await y()}if("default"!==a[t])return n.error("getDefaultDEK: Not using default encryption"),null;let b=a[p],c=e().enc.Hex.parse(a[q]),d=v(),h=e().AES.decrypt(b,d,{iv:c,mode:e().mode.CBC,padding:e().pad.Pkcs7});if(!h.toString())return n.error("getDefaultDEK: Failed to decrypt DEK with default key"),null;return e().enc.Hex.parse(h.toString())}catch(a){return n.error("getDefaultDEK: Failed to get default DEK:",a),null}}async function z(a){n.debug("getUserDEK: Entering method");try{let b=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!b)return n.error("getUserDEK: No encryption metadata found"),null;if("user"!==b[t])return n.error("getUserDEK: Not using user encryption"),null;let c=b[p],d=e().enc.Hex.parse(b[q]),h=e().enc.Hex.parse(b[r]),i=e().PBKDF2(a,h,{keySize:8,iterations:1e5}),j=e().AES.decrypt(c,i,{iv:d,mode:e().mode.CBC,padding:e().pad.Pkcs7});if(!j.toString())return n.error("getUserDEK: Failed to decrypt DEK with provided password"),null;return e().enc.Hex.parse(j.toString())}catch(a){return n.error("getUserDEK: Failed to get user DEK:",a),null}}async function A(a){n.debug("migrateToUserEncryption: Entering method");try{let b=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(b&&"user"===b[t])return!0;let c=await y();if(!c)return n.error("migrateToUserEncryption: Failed to get default DEK for migration"),!1;let d=e().lib.WordArray.random(16),h=e().PBKDF2(a,d,{keySize:8,iterations:1e5}),i=e().lib.WordArray.random(16),j=e().AES.encrypt(c.toString(e().enc.Utf8),h,{iv:i,mode:e().mode.CBC,padding:e().pad.Pkcs7}),k={[p]:j.toString(),[q]:i.toString(),[r]:d.toString(),[s]:b?b[s]:1,[t]:"user"};return await (0,f.VH)(g.Z.ENCRYPTION_KEY,k),!0}catch(a){return n.error("migrateToUserEncryption: Failed to migrate to user encryption:",a),!1}}async function B(a,b){n.debug("changeEncryptionPassword: Entering method");try{let c=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!c)return n.error("changeEncryptionPassword: No encryption metadata found"),!1;if("default"===c[t])return await A(b);let d=c[p],h=e().enc.Hex.parse(c[q]),i=e().enc.Hex.parse(c[r]),j=e().PBKDF2(a,i,{keySize:8,iterations:1e5}),k=e().AES.decrypt(d,j,{iv:h,mode:e().mode.CBC,padding:e().pad.Pkcs7});if(!k.toString())return n.error("changeEncryptionPassword: Failed to decrypt DEK with old password"),!1;let l=e().lib.WordArray.random(16),m=e().PBKDF2(b,l,{keySize:8,iterations:1e5}),o=e().lib.WordArray.random(16),u=e().AES.encrypt(k.toString(e().enc.Utf8),m,{iv:o,mode:e().mode.CBC,padding:e().pad.Pkcs7}),v={[p]:u.toString(),[q]:o.toString(),[r]:l.toString(),[s]:c[s],[t]:"user"};return await (0,f.VH)(g.Z.ENCRYPTION_KEY,v),!0}catch(a){return n.error("changeEncryptionPassword: Failed to change encryption password:",a),!1}}async function C(a,b=!1){n.debug("getDEK: Entering method");try{if(b&&a){n.debug("getDEK: Using session token");let b=function(a){let b=k.get(a);if(!b)return j.warn(`Session not found: ${a}`),null;let c=Date.now();return c-b.createdAt>72e5?(j.warn(`Session expired: ${a}`),k.delete(a),null):(b.lastUsed=c,b.dek)}(a);if(b)return e().enc.Hex.parse(b);n.warn("getDEK: Invalid or expired session token, falling back to default encryption")}let c=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!c){if(n.info("getDEK: No encryption metadata found, initializing default encryption"),!await w())return n.error("getDEK: Failed to initialize default encryption"),null;return await C(a,b)}if("user"!==c[t])return await y();{let c=global.__flujo_server_dek??null;if(c)return n.debug("getDEK: Using server unlock state for user encryption"),e().enc.Hex.parse(c);if(a&&!b){let b=await z(a);if(b)return b;n.warn("getDEK: Provided password did not yield a valid user DEK")}throw n.warn("getDEK: User encryption is locked (no unlock state or valid credential)"),new o}}catch(a){if(a instanceof o)throw a;n.error("getDEK: Failed to get DEK:",a);try{if(n.warn("getDEK: Attempting to initialize default encryption as error recovery"),await w())return await y()}catch(a){n.error("getDEK: Failed to initialize default encryption as error recovery:",a)}return null}}async function D(a,b,c=!1){n.debug("encryptWithPassword: Entering method");try{let d=await C(b,c);if(!d)return null;let f=e().lib.WordArray.random(16),g=e().AES.encrypt(a,d,{iv:f,mode:e().mode.CBC,padding:e().pad.Pkcs7});return f.toString()+":"+g.toString()}catch(a){if(a instanceof o)throw a;return n.error("encryptWithPassword: Failed to encrypt data:",a),null}}async function E(a,b,c=!1){n.debug("decryptWithPassword: Entering method");try{let d=await C(b,c);if(!d)return null;let f=a.split(":");if(2!==f.length)return n.error("decryptWithPassword: Invalid ciphertext format"),null;let g=e().enc.Hex.parse(f[0]),h=f[1];return e().AES.decrypt(h,d,{iv:g,mode:e().mode.CBC,padding:e().pad.Pkcs7}).toString(e().enc.Utf8)}catch(a){if(a instanceof o)throw a;return n.error("decryptWithPassword: Failed to decrypt data:",a),null}}async function F(a){n.debug("verifyPassword: Entering method");let b=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!b||"user"!==b[t])return{valid:!1};{let b=await z(a);if(null!==b){var c;return c=b.toString(),global.__flujo_server_dek=c,j.info("Server encryption unlocked"),{valid:!0,token:function(a){let b=(0,i.A)(),c=Date.now();return k.set(b,{token:b,dek:a,createdAt:c,lastUsed:c}),j.info(`Created encryption session: ${b}`),!m&&(m=setInterval(l,36e5)).unref&&m.unref(),b}(b.toString())}}return{valid:!1}}}async function G(a){n.debug("authenticate: Entering method");let b=await F(a);return b.valid&&b.token||null}async function H(a){n.debug("logout: Entering method");try{return k.has(a)&&(k.delete(a),j.info(`Invalidated encryption session: ${a}`)),!0}catch(a){return n.error("logout: Failed to invalidate session:",a),!1}}async function I(){return n.debug("isEncryptionInitialized: Entering method"),null!==await (0,f.YM)(g.Z.ENCRYPTION_KEY,null)}async function J(){n.debug("isUserEncryptionEnabled: Entering method");let a=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);return null!=a&&"user"===a[t]}async function K(){return await J()&&!global.__flujo_server_dek}async function L(){n.debug("getEncryptionType: Entering method");let a=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);return a?a[t]||"default":null}},92372:(a,b,c)=>{c.d(b,{EI:()=>B,N2:()=>u,Pv:()=>o,VH:()=>s,Vt:()=>A,YM:()=>t,bB:()=>C,ln:()=>w,pL:()=>D,w5:()=>E});var d=c(29021),e=c(33873),f=c.n(e),g=c(46480),h=c(50846),i=c(43326);let j=(0,h.h)("utils/storage/backend"),k=f().join((0,i.ok)(),"db"),l=f().join((0,i.ok)(),".next","storage"),m=a=>f().join(k,`${a}.json`);async function n(){try{await d.promises.access(k),j.verbose(`Storage directory exists: ${k}`)}catch{j.debug(`Creating storage directory: ${k}`),await d.promises.mkdir(k,{recursive:!0})}try{await d.promises.access(l),j.warn(`Old storage directory found: ${l}. This may cause data inconsistency issues.`)}catch{}}async function o(){for(let a of(j.debug("Verifying storage system initialization"),await n(),Object.values(g.Z)))try{let b=m(a),c=!1;try{await d.promises.access(b),c=!0}catch{}j.debug(`Storage check: ${a} - ${c?"File exists":"File does not exist yet"}`);let e=f().join(l,`${a}.json`);try{await d.promises.access(e),c?j.warn(`Found ${a} in both old and new storage locations. This may cause data inconsistency.`):j.warn(`Found ${a} in old storage location but not in new location. This may cause data loss.`)}catch{}}catch(b){j.error(`Storage verification failed for ${a}:`,b)}j.debug("Storage verification completed")}let p=new Map,q=0;async function r(a,b){let c=f().dirname(a);await d.promises.mkdir(c,{recursive:!0});let e=`${a}.tmp.${process.pid}.${++q}`;try{await d.promises.writeFile(e,b),await d.promises.rename(e,a)}catch(a){try{await d.promises.unlink(e)}catch{}throw a}}async function s(a,b){let c=m(a),d=(p.get(a)??Promise.resolve()).catch(()=>{}).then(()=>r(c,JSON.stringify(b,null,2)));p.set(a,d);try{await d,j.verbose(`Successfully saved item to: ${c}`)}catch(b){throw j.error(`Error saving item with key "${a}" to ${c}:`,b),b}finally{p.get(a)===d&&p.delete(a)}}async function t(a,b){try{await n();let c=m(a),e=await d.promises.readFile(c,"utf-8");if(0===e.trim().length)return j.warn(`Item with key "${a}" at ${c} is empty; treating as missing and returning default.`),b;try{let a=JSON.parse(e);return j.verbose(`Successfully loaded item from: ${c}`),a}catch(b){j.error(`CRITICAL: Failed to parse JSON from ${c}:`,b);let a=`${c}.corrupted.${Date.now()}.bak`;try{await d.promises.writeFile(a,e),j.info(`Created backup of corrupted file at: ${a}`)}catch(a){j.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 j.verbose(`Item with key "${a}" not found at ${m(a)}, returning default.`),b;throw j.error(`CRITICAL: Error loading item with key "${a}" from ${m(a)}:`,c),c}}async function u(a){let b=m(a);try{await d.promises.unlink(b),j.verbose(`Successfully cleared item: ${b}`)}catch(c){"ENOENT"!==c.code?j.warn(`Error clearing item with key "${a}" at ${b}:`,c):j.verbose(`Item with key "${a}" not found at ${b}, nothing to clear.`)}}let v=/^[A-Za-z0-9_-]{1,64}$/;function w(a){if("string"!=typeof a||!v.test(a))throw Error(`Unsafe collection item id: ${JSON.stringify(a)}`)}let x=a=>f().join(k,a),y=(a,b)=>f().join(x(a),`${b}.json`);function z(a,b){let c=(p.get(a)??Promise.resolve()).catch(()=>{}).then(b);return p.set(a,c),c.catch(()=>{}).finally(()=>{p.get(a)===c&&p.delete(a)}),c}async function A(a,b,c){w(b);let d=y(a,b);try{await z(`${a}/${b}`,()=>r(d,JSON.stringify(c,null,2))),j.verbose(`Successfully saved collection item: ${d}`)}catch(c){throw j.error(`Error saving collection item "${a}/${b}" to ${d}:`,c),c}}async function B(a,b,c){w(b);let e=y(a,b);try{let f=await d.promises.readFile(e,"utf-8");if(0===f.trim().length)return j.warn(`Collection item "${a}/${b}" at ${e} is empty; treating as missing.`),c;try{return JSON.parse(f)}catch(b){j.error(`CRITICAL: Failed to parse JSON from ${e}:`,b);let a=`${e}.corrupted.${Date.now()}.bak`;try{await d.promises.writeFile(a,f),j.info(`Created backup of corrupted file at: ${a}`)}catch(a){j.error("Failed to create backup of corrupted file:",a)}throw Error(`Failed to parse JSON from ${e}. A backup has been created at ${a}. Original error: ${b.message}`)}}catch(d){if("ENOENT"===d.code)return j.verbose(`Collection item "${a}/${b}" not found at ${e}, returning default.`),c;throw j.error(`CRITICAL: Error loading collection item "${a}/${b}" from ${e}:`,d),d}}async function C(a,b){w(b);let c=y(a,b);await z(`${a}/${b}`,async()=>{try{await d.promises.unlink(c),j.verbose(`Successfully deleted collection item: ${c}`)}catch(d){if("ENOENT"!==d.code)throw d;j.verbose(`Collection item "${a}/${b}" not found at ${c}, nothing to delete.`)}})}async function D(a){let b,c=x(a);try{b=await d.promises.readdir(c)}catch(a){if("ENOENT"===a.code)return[];throw a}let e=[];for(let a of b){if(!a.endsWith(".json")||a.includes(".tmp.")||a.includes(".corrupted.")||a.endsWith(".bak"))continue;let b=f().join(c,a);try{let a=await d.promises.readFile(b,"utf-8");if(0===a.trim().length){j.warn(`Collection item file ${b} is empty; skipping.`);continue}e.push(JSON.parse(a))}catch(a){j.error(`Failed to read collection item ${b}; skipping.`,a)}}return e}async function E(a,b,c){let e,f,g=m(a);try{e=await d.promises.readFile(g,"utf-8")}catch(a){if("ENOENT"===a.code)return 0;throw a}if(0===e.trim().length)return await d.promises.rename(g,`${g}.migrated-${Date.now()}.bak`),0;try{f=JSON.parse(e)}catch(b){return j.error(`Migration: legacy ${a}.json is not valid JSON; leaving it in place.`,b),0}if(!Array.isArray(f))return j.error(`Migration: legacy ${a}.json is not an array; leaving it in place.`),0;for(let a of(await d.promises.mkdir(x(b),{recursive:!0}),f)){let e;try{e=c(a),w(e)}catch(a){j.error(`Migration: skipping ${b} item with invalid/unsafe id`,a);continue}let f=y(b,e);try{await d.promises.access(f),j.debug(`Migration: ${b}/${e} already exists; keeping the existing file.`);continue}catch{}await r(f,JSON.stringify(a,null,2))}return await d.promises.rename(g,`${g}.migrated-${Date.now()}.bak`),j.info(`Migration: moved ${f.length} ${b} item(s) from ${a}.json to per-item storage.`),f.length}}};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
exports.id=8994,exports.ids=[8994],exports.modules={3421:(a,b,c)=>{"use strict";Object.defineProperty(b,"I",{enumerable:!0,get:function(){return g}});let d=c(71237),e=c(55088),f=c(17679);async function g(a,b,c,g){if((0,d.isNodeNextResponse)(b)){var h;b.statusCode=c.status,b.statusMessage=c.statusText;let d=["set-cookie","www-authenticate","proxy-authenticate","vary"];null==(h=c.headers)||h.forEach((a,c)=>{if("x-middleware-set-cookie"!==c.toLowerCase())if("set-cookie"===c.toLowerCase())for(let d of(0,f.splitCookiesString)(a))b.appendHeader(c,d);else{let e=void 0!==b.getHeader(c);(d.includes(c.toLowerCase())||!e)&&b.appendHeader(c,a)}});let{originalResponse:i}=b;c.body&&"HEAD"!==a.method?await (0,e.pipeToNodeResponse)(c.body,i,g):i.end()}}},13516:(a,b,c)=>{"use strict";c.d(b,{G:()=>d});let d={LOG_LEVEL:3,INCLUDE_TOOL_CALLS_IN_RESPONSE:!0,ENABLE_EXECUTION_TRACKER:!1}},29580:(a,b,c)=>{"use strict";function d(a){return JSON.stringify(a)+"\n"}function e(){let a="",b=(a,b)=>{let c=a.trim();if(c)try{b.push(JSON.parse(c))}catch{}};return{push(c){let d;a+=c;let e=[];for(;(d=a.indexOf("\n"))>=0;)b(a.slice(0,d),e),a=a.slice(d+1);return e},flush(){let c=[];return b(a,c),a="",c}}}c.d(b,{H:()=>d,c:()=>e})},43326:(a,b,c)=>{"use strict";c.d(b,{JC:()=>f,Ne:()=>j,Sx:()=>h,ok:()=>g,v0:()=>i});var d=c(33873),e=c.n(d);function f(){return process.cwd()}function g(){let a=process.env.FLUJO_DATA_DIR;return a&&a.trim().length>0?e().resolve(a):f()}function h(){let a=process.env.FLUJO_OLLAMA_URL;return(a&&a.trim().length>0?a.trim():"http://localhost:11434").replace(/\/+$/,"")}function i(){let a=process.env.FLUJO_OLLAMA;return"1"===a||"true"===a||"yes"===a}function j(){return process.env.FLUJO_CONTAINER?"container":process.env.FLUJO_NPM?"npm":"git"}},50846:(a,b,c)=>{"use strict";c.d(b,{h:()=>i});var d=c(13516);let e={VERBOSE:-1,DEBUG:0,INFO:1,WARN:2,ERROR:3},f="number"==typeof d.G.LOG_LEVEL?d.G.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)}}}},78335:()=>{},82487:(a,b,c)=>{"use strict";c.d(b,{a$:()=>j,cB:()=>i,iv:()=>k,kj:()=>h});var d=c(43326),e=c(50846),f=c(29580);let g=(0,e.h)("backend/services/ollama");async function h(a){try{return(await fetch(`${(0,d.Sx)()}/api/tags`,{signal:a})).ok}catch(a){return g.debug(`Ollama not reachable: ${a instanceof Error?a.message:String(a)}`),!1}}async function i(a){try{let b=await fetch(`${(0,d.Sx)()}/api/tags`,{signal:a});if(!b.ok)return[];let c=await b.json();return Array.isArray(c.models)?c.models:[]}catch(a){return g.debug(`listTags failed: ${a instanceof Error?a.message:String(a)}`),[]}}async function j(a,b,c){let e=await fetch(`${(0,d.Sx)()}/api/pull`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({model:a,stream:!0}),signal:c});if(!e.ok){let a=await e.text().catch(()=>"");throw Error(`Ollama pull failed (HTTP ${e.status})${a?`: ${a}`:""}`)}if(!e.body)throw Error("Ollama pull returned no response body");let g=e.body.getReader(),h=new TextDecoder,i=(0,f.c)();try{for(;;){let{value:a,done:c}=await g.read();if(c)break;for(let c of i.push(h.decode(a,{stream:!0})))b(c)}let a=h.decode();if(a)for(let c of i.push(a))b(c);for(let a of i.flush())b(a)}finally{try{g.releaseLock()}catch{}}}function k(a){let b=a.status||"pulling";if("number"==typeof a.total&&a.total>0&&"number"==typeof a.completed){let c=Math.min(100,Math.round(a.completed/a.total*100)),d=(a.completed/1048576).toFixed(0),e=(a.total/1048576).toFixed(0);return`${b} — ${c}% (${d}/${e} MB)`}return b}},95736:(a,b,c)=>{"use strict";a.exports=c(44870)},96487:()=>{}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=9188,exports.ids=[9188],exports.modules={8070:(a,b,c)=>{c.d(b,{IK:()=>G,M6:()=>z,Uw:()=>F,lA:()=>I,v2:()=>H,vm:()=>E});var d=c(21124),e=c(38301),f=c(95791),g=c(46973),h=c(18168),i=c(60839),j=c(54573),k=c(81637),l=c(79515),m=c(44079),n=c(99561),o=c(48823),p=c(98540),q=c(83144),r=c(88970),s=c(17332),t=c(63908);let u=(0,h.Ay)(j.A,{shouldForwardProp:a=>!["nodeType","selected"].includes(a)})(({theme:a,nodeType:b,selected:c})=>({padding:a.spacing(1.5),width:"200px",borderRadius:"8px",backgroundColor:a.palette.background.paper,border:`2px solid ${"start"===b?"#795548":"process"===b?a.palette.secondary.main:"finish"===b?a.palette.success.main:"mcp"===b?a.palette.info.main:a.palette.warning.main}`,boxShadow:c?`0 0 0 2px ${a.palette.primary.main}, 0 3px 10px rgba(0,0,0,0.2)`:a.shadows[2],transition:"all 0.2s ease","&:hover":{boxShadow:`0 0 0 1px ${"start"===b?"#795548":"process"===b?a.palette.secondary.main:"finish"===b?a.palette.success.main:"mcp"===b?a.palette.info.main:a.palette.warning.main}, 0 3px 10px rgba(0,0,0,0.1)`}})),v=(0,h.Ay)(k.default,{shouldForwardProp:a=>"nodeType"!==a})(({theme:a,nodeType:b})=>({display:"flex",alignItems:"center",justifyContent:"space-between",borderBottom:`1px solid ${"start"===b?"#A1887F":"process"===b?a.palette.secondary.light:"finish"===b?a.palette.success.light:"mcp"===b?a.palette.info.light:a.palette.warning.light}`,marginBottom:a.spacing(1),paddingBottom:a.spacing(.5)})),w=(0,h.Ay)(k.default)({display:"flex",alignItems:"center",gap:"8px"}),x=(0,h.Ay)(k.default)(({theme:a})=>({marginTop:a.spacing(1),fontSize:"0.8rem"})),y=(0,h.Ay)(k.default)(({theme:a})=>({display:"flex",justifyContent:"space-between",padding:a.spacing(.5,0),borderBottom:`1px dashed ${"dark"===a.palette.mode?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.1)"}`})),z=(a,b)=>{switch(a){case"start":default:return"#795548";case"process":return b.palette.secondary.main;case"finish":return b.palette.success.main;case"mcp":return b.palette.info.main;case"subflow":return b.palette.warning.main}},A=a=>({backgroundColor:a.palette.info.main,borderColor:"dark"===a.palette.mode?a.palette.background.paper:"white",width:16,height:16,borderRadius:8,borderWidth:2}),B=a=>({backgroundColor:a.palette.secondary.main,borderColor:"dark"===a.palette.mode?a.palette.background.paper:"white",width:16,height:16,borderRadius:8,borderWidth:2}),C=a=>({backgroundColor:a.palette.primary.main,borderColor:"dark"===a.palette.mode?a.palette.background.paper:"white",width:16,height:16,borderRadius:8,borderWidth:2}),D=({data:a,nodeType:b,selected:c})=>{let h=(0,i.A)(),[j,k]=(0,e.useState)(!1),z=a||{label:"No Label",properties:{}},D="string"==typeof z.label?z.label:"No Label",E=z.properties||{},F=Object.keys(E).length;return(0,d.jsx)(d.Fragment,{children:(0,d.jsxs)(u,{elevation:2,nodeType:b,selected:c,children:[(()=>{if("mcp"===b)return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(f.h7,{id:"mcp-top",type:"target",position:g.yX.Top,style:A(h)}),(0,d.jsx)(f.h7,{id:"mcp-right",type:"target",position:g.yX.Right,style:A(h)}),(0,d.jsx)(f.h7,{id:"mcp-bottom",type:"source",position:g.yX.Bottom,style:A(h)}),(0,d.jsx)(f.h7,{id:"mcp-left",type:"target",position:g.yX.Left,style:A(h)})]});if("process"===b)return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(f.h7,{id:"process-top",type:"target",position:g.yX.Top,style:B(h)}),(0,d.jsx)(f.h7,{id:"process-bottom",type:"source",position:g.yX.Bottom,style:B(h)}),(0,d.jsx)(f.h7,{id:"process-left-mcp",type:"source",position:g.yX.Left,style:C(h)}),(0,d.jsx)(f.h7,{id:"process-right-mcp",type:"source",position:g.yX.Right,style:C(h)})]});if("start"===b)return(0,d.jsx)(f.h7,{id:"start-bottom",type:"source",position:g.yX.Bottom,style:B(h)});if("finish"===b)return(0,d.jsx)(f.h7,{id:"finish-top",type:"target",position:g.yX.Top,style:B(h)});if("subflow"===b)return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(f.h7,{id:"subflow-top",type:"target",position:g.yX.Top,style:B(h)}),(0,d.jsx)(f.h7,{id:"subflow-bottom",type:"source",position:g.yX.Bottom,style:B(h)})]});return null})(),(0,d.jsxs)(v,{nodeType:b,children:[(0,d.jsxs)(w,{children:[(a=>{switch(a){case"start":default:return(0,d.jsx)(o.A,{sx:{color:"#795548"}});case"process":return(0,d.jsx)(p.A,{color:"secondary"});case"finish":return(0,d.jsx)(q.A,{color:"success"});case"mcp":return(0,d.jsx)(p.A,{color:"info"});case"subflow":return(0,d.jsx)(r.A,{sx:{color:"warning.main"}})}})(b),(0,d.jsx)(l.default,{variant:"subtitle2",fontWeight:"bold",children:D})]}),F>0&&(0,d.jsx)(m.A,{size:"small",onClick:a=>{a.stopPropagation(),k(!j)},sx:{padding:.5},children:j?(0,d.jsx)(t.A,{fontSize:"small"}):(0,d.jsx)(s.A,{fontSize:"small"})})]}),(0,d.jsx)(n.A,{in:j,children:(0,d.jsx)(x,{children:Object.entries(E).map(([a,b])=>(0,d.jsxs)(y,{children:[(0,d.jsxs)(l.default,{variant:"caption",sx:{fontWeight:"bold"},children:[a,":"]}),(0,d.jsxs)(l.default,{variant:"caption",children:[String(b).substring(0,30),String(b).length>30?"...":""]})]},a))})}),F>0&&!j&&(0,d.jsx)(l.default,{variant:"caption",color:"text.secondary",children:`${F} properties configured`})]})})},E=(0,e.memo)(function(a){return(0,d.jsx)(D,{...a,nodeType:"start",selected:a.selected})}),F=(0,e.memo)(function(a){return(0,d.jsx)(D,{...a,nodeType:"process",selected:a.selected})}),G=(0,e.memo)(function(a){return(0,d.jsx)(D,{...a,nodeType:"finish",selected:a.selected})}),H=(0,e.memo)(function(a){return(0,d.jsx)(D,{...a,nodeType:"mcp",selected:a.selected})}),I=(0,e.memo)(function(a){return(0,d.jsx)(D,{...a,nodeType:"subflow",selected:a.selected})})},63281:(a,b,c)=>{c.d(b,{g:()=>g});var d=c(2117);let e=(0,c(19815).h)("frontend/services/flow/index");class f{async loadFlows(){e.debug("loadFlows: Entering method");try{if(this.flowsCache)return e.debug("loadFlows: Using cached flows",{count:this.flowsCache.length}),this.flowsCache;let a=await fetch("/api/flow");if(!a.ok){let b=await a.json();throw Error(b.error||"Failed to load flows")}let b=await a.json();return e.debug("loadFlows: Loaded flows from API",{count:b.length}),this.flowsCache=b,b}catch(a){return e.warn("loadFlows: Failed to load flows:",a),[]}}async getFlow(a){e.debug("getFlow: Entering method",{flowId:a});try{if(this.flowsCache){let b=this.flowsCache.find(b=>b.id===a);if(b)return e.debug("getFlow: Using cached flow",{flowId:a}),b}let b=await fetch(`/api/flow/${encodeURIComponent(a)}`);if(!b.ok){if(404===b.status)return e.debug(`getFlow: Flow ${a} not found`),null;let c=await b.json();throw Error(c.error||`Failed to get flow: ${a}`)}let c=await b.json();return e.debug("getFlow: Retrieved flow from API",{flowId:a}),c}catch(b){return e.warn(`getFlow: Failed to get flow ${a}:`,b),null}}async addFlow(a){e.debug("addFlow: Entering method",{flowId:a.id,flowName:a.name,nodeCount:a.nodes.length,edgeCount:a.edges.length});try{let b=await fetch("/api/flow",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok){let a=await b.json();return{success:!1,error:a.error||"Failed to add flow"}}let c=await b.json();return this.flowsCache&&this.flowsCache.push(c),e.debug("addFlow: Flow added successfully",{flowId:a.id}),{success:!0}}catch(a){return e.warn("addFlow: Failed to add flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to add flow"}}}async updateFlow(a){e.debug("updateFlow: Entering method",{flowId:a.id,flowName:a.name,nodeCount:a.nodes.length,edgeCount:a.edges.length});try{let b=await fetch(`/api/flow/${encodeURIComponent(a.id)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok){let a=await b.json();return{success:!1,error:a.error||"Failed to update flow"}}let c=await b.json();if(this.flowsCache){let b=this.flowsCache.findIndex(b=>b.id===a.id);b>=0?this.flowsCache[b]=c:this.flowsCache.push(c)}return e.debug("updateFlow: Flow updated successfully",{flowId:a.id}),{success:!0}}catch(a){return e.warn("updateFlow: Failed to update flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to update flow"}}}async deleteFlow(a){e.debug("deleteFlow: Entering method",{flowId:a});try{let b=await fetch(`/api/flow/${encodeURIComponent(a)}`,{method:"DELETE"});if(!b.ok){let a=await b.json();return{success:!1,error:a.error||"Failed to delete flow"}}return this.flowsCache&&(this.flowsCache=this.flowsCache.filter(b=>b.id!==a)),e.debug("deleteFlow: Flow deleted successfully",{flowId:a}),{success:!0}}catch(a){return e.warn("deleteFlow: Failed to delete flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to delete flow"}}}createNode(a,b){return e.debug("createNode: Entering method",{type:a,position:b}),{id:(0,d.A)(),type:a,position:b,data:{label:`${"mcp"===a?"MCP":a.charAt(0).toUpperCase()+a.slice(1)} Node`,type:a,properties:{}}}}createStartNode(){return{id:(0,d.A)(),type:"start",position:{x:250,y:150},data:{label:"Start Node",type:"start",properties:{promptTemplate:""}}}}createNewFlow(a="NewFlow"){return e.debug("createNewFlow: Entering method",{name:a}),{id:(0,d.A)(),name:a,nodes:[this.createStartNode()],edges:[]}}createHistoryEntry(a,b){return e.debug("createHistoryEntry: Entering method"),{nodes:[...a],edges:[...b]}}generateSampleFlow(a="Sample Flow"){return e.debug("generateSampleFlow: Entering method",{name:a}),{id:(0,d.A)(),name:a,nodes:[{id:"1",type:"start",position:{x:250,y:50},data:{label:"Start Node",type:"start",properties:{prompt:"Enter your query here",systemMessage:"You are a helpful assistant",temperature:0}}},{id:"2",type:"process",position:{x:250,y:200},data:{label:"Process Node",type:"process",properties:{operation:"transform",enabled:!0}}},{id:"3",type:"finish",position:{x:250,y:350},data:{label:"Finish Node",type:"finish",properties:{format:"json",template:'{ "result": {{data}} }'}}},{id:"4",type:"mcp",position:{x:450,y:200},data:{label:"MCP Node",type:"mcp",properties:{channels:2,mode:"parallel"}}}],edges:[{id:"e1-2",source:"1",target:"2",type:"custom"},{id:"e2-3",source:"2",target:"3",type:"custom"}]}}constructor(){this.flowsCache=null}}let g=new f},90837:(a,b,c)=>{c.d(b,{jY:()=>f,oY:()=>g});var d=c(21124);c(38301);var e=c(97004);let f=a=>(0,d.jsx)(e.A,{...a,variant:"standard"}),g=a=>(0,d.jsx)(e.A,{...a,variant:"mcp"})},97004:(a,b,c)=>{c.d(b,{R:()=>k,A:()=>o});var d=c(21124),e=c(38301),f=c(95791),g=c(46973),h=c(18168),i=c(60839);function j(a){return a===g.yX.Left||a===g.yX.Right?"h":"v"}let k="flowEdgeWaypoint",l={x:16,y:-16},m=(0,h.Ay)("button")(({theme:a})=>({background:a.palette.background.paper,border:`1px solid ${a.palette.divider}`,cursor:"pointer",borderRadius:"50%",fontSize:"10px",width:"20px",height:"20px",display:"flex",justifyContent:"center",alignItems:"center",color:a.palette.text.secondary,boxShadow:"dark"===a.palette.mode?"0 2px 4px rgba(0,0,0,0.3)":"0 2px 4px rgba(0,0,0,0.1)","&:hover":{background:a.palette.error.main,borderColor:a.palette.error.main,color:a.palette.error.contrastText}})),n=(0,h.Ay)(f.tE)({"&&.animated":{strokeDasharray:5,animation:"flowPathAnimation 500ms infinite linear"},"&&.animated-both":{strokeDasharray:5,animation:"flowPathAnimation 750ms infinite linear alternate"},"@keyframes flowPathAnimation":{"0%":{strokeDashoffset:10},"100%":{strokeDashoffset:0}}}),o=({variant:a,id:b,sourceX:c,sourceY:h,targetX:o,targetY:p,sourcePosition:q,targetPosition:r,style:s={},markerEnd:t,markerStart:u,data:v,selected:w})=>{let x,y,z=(0,i.A)(),{deleteElements:A,screenToFlowPosition:B}=(0,f.VH)(),[C,D]=(0,e.useState)(!1),[E,F]=(0,e.useState)(null),G=(0,e.useRef)(null),H=(0,e.useRef)(!1),I=v?.waypoints??(v?.waypoint?[v.waypoint]:[]),J=E??I,K="standard"===a&&!!v?.bidirectional,L=q||("mcp"===a?g.yX.Left:g.yX.Bottom),M=r||("mcp"===a?g.yX.Right:g.yX.Top),N=null;if(J.length>0)x=(N=function(a,b,c,d,e,f=8){let g=[a,...e,c],h=[a],i=[],j=b,k=(a,b)=>{let c;c=h[h.length-1],.01>Math.abs(c.x-a.x)&&.01>Math.abs(c.y-a.y)||(h.push(a),i.push(b))};for(let a=1;a<g.length;a++){let b=h[h.length-1],c=g[a],e=a-1;if(a===g.length-1){if("v"===d)if("h"===j)k({x:c.x,y:b.y},e);else{let a=(b.y+c.y)/2;k({x:b.x,y:a},e),k({x:c.x,y:a},e)}else if("v"===j)k({x:b.x,y:c.y},e);else{let a=(b.x+c.x)/2;k({x:a,y:b.y},e),k({x:a,y:c.y},e)}k(c,e)}else k("v"===j?{x:b.x,y:c.y}:{x:c.x,y:b.y},e),k(c,e),j="v"===j?"h":"v"}!function(a,b){for(let c=1;c<a.length-1;c++){let d=a[c-1],e=a[c],f=a[c+1],g=.01>Math.abs(d.x-e.x)&&.01>Math.abs(f.x-e.x)&&(e.y-d.y)*(f.y-e.y)<0,h=.01>Math.abs(d.y-e.y)&&.01>Math.abs(f.y-e.y)&&(e.x-d.x)*(f.x-e.x)<0;if(g||h){if(g){let g=(a[c-2]?.x??e.x-1)<=e.x,h=g?e.x-12:e.x+12,i=g?e.x+12:e.x-12,j=b[c-1];a.splice(c-1,3,{x:h,y:d.y},{x:h,y:e.y},{x:i,y:e.y},{x:i,y:f.y}),b.splice(c-1,2,j,j,j)}else{let g=(a[c-2]?.y??e.y-1)<=e.y,h=g?e.y-12:e.y+12,i=g?e.y+12:e.y-12,j=b[c-1];a.splice(c-1,3,{x:d.x,y:h},{x:e.x,y:h},{x:e.x,y:i},{x:f.x,y:i}),b.splice(c-1,2,j,j,j)}c++}}}(h,i);let l=[];for(let a=0;a<h.length-1;a++)l.push({a:h[a],b:h[a+1],gap:i[a]});return{d:function(a,b){if(0===a.length)return"";let c=`M ${a[0].x},${a[0].y}`;for(let d=1;d<a.length-1;d++){let e=a[d-1],f=a[d],g=a[d+1],h=Math.hypot(f.x-e.x,f.y-e.y),i=Math.hypot(g.x-f.x,g.y-f.y),j=Math.min(b,h/2,i/2);if(j<.5){c+=` L ${f.x},${f.y}`;continue}let k={x:f.x-(f.x-e.x)/h*j,y:f.y-(f.y-e.y)/h*j},l={x:f.x+(g.x-f.x)/i*j,y:f.y+(g.y-f.y)/i*j};c+=` L ${k.x},${k.y} Q ${f.x},${f.y} ${l.x},${l.y}`}let d=a[a.length-1];return c+` L ${d.x},${d.y}`}(h,f),points:h,segments:l,midpoint:function(a,b){let c=0;for(let b=0;b<a.length-1;b++)c+=Math.hypot(a[b+1].x-a[b].x,a[b+1].y-a[b].y);if(0===c)return a[0];let d=.5*c;for(let b=0;b<a.length-1;b++){let c=Math.hypot(a[b+1].x-a[b].x,a[b+1].y-a[b].y);if(d<=c){let e=0===c?0:d/c;return{x:a[b].x+(a[b+1].x-a[b].x)*e,y:a[b].y+(a[b+1].y-a[b].y)*e}}d-=c}return a[a.length-1]}(h,.5)}}({x:c,y:h},j(L),{x:o,y:p},j(M),J,16)).d,y=N.midpoint;else{let[a,b,d]=(0,g.oN)({sourceX:c,sourceY:h,sourcePosition:L,targetX:o,targetY:p,targetPosition:M,borderRadius:16});x=a,y={x:b,y:d}}let O="mcp"===a?"":K?"animated-both":v?.animated!==!1?"animated":"",P={...s,strokeWidth:w?3:2,stroke:"mcp"===a?w?z.palette.info.light:z.palette.info.main:w?z.palette.primary.main:z.palette.text.secondary,...O?{animationDuration:`${Math.round((K?750:500)*(a=>{let b=0;for(let c=0;c<a.length;c++)b=31*b+a.charCodeAt(c)|0;return .9+Math.abs(b)%1e3/1e3*.2})(b))}ms`}:{}},Q=a=>{document.dispatchEvent(new CustomEvent(k,{detail:{edgeId:b,waypoints:a&&a.length>0?a:null}}))},R=a=>{if(0!==a.button)return;let b=B({x:a.clientX,y:a.clientY}),c=N?function(a,b){let c=0,d=1/0;for(let e of b){let b=function(a,b,c){let d=c.x-b.x,e=c.y-b.y,f=d*d+e*e,g=0===f?0:Math.max(0,Math.min(1,((a.x-b.x)*d+(a.y-b.y)*e)/f));return Math.hypot(a.x-(b.x+d*g),a.y-(b.y+e*g))}(a,e.a,e.b);b<d&&(d=b,c=e.gap)}return c}(b,N.segments):0,d=[...J];d.splice(c,0,b),G.current={index:c,pointerId:a.pointerId,startClient:{x:a.clientX,y:a.clientY},base:d,active:!1,fromPath:!0},a.target.setPointerCapture(a.pointerId)},S=a=>{let b=G.current;if(!b||a.pointerId!==b.pointerId)return;if(!b.active){if(4>Math.hypot(a.clientX-b.startClient.x,a.clientY-b.startClient.y))return;b.active=!0}let c=[...b.base];c[b.index]=B({x:a.clientX,y:a.clientY}),F(c)},T=a=>{let b=G.current;if(!b||a.pointerId!==b.pointerId||(G.current=null,a.target.releasePointerCapture(a.pointerId),H.current=b.active,!b.active))return;let c=[...b.base];c[b.index]=B({x:a.clientX,y:a.clientY}),Q(c),F(null)},U=null!==E,V=w||C||U;return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n,{path:x,markerEnd:t,markerStart:u,style:P,id:b,className:O}),(0,d.jsx)("path",{d:x,fill:"none",stroke:"transparent",strokeWidth:20,style:{cursor:U?"grabbing":"grab"},onMouseEnter:()=>D(!0),onMouseLeave:()=>D(!1),onPointerDown:R,onPointerMove:S,onPointerUp:T}),(0,d.jsxs)(f.rV,{children:[V&&J.map((a,b)=>(0,d.jsx)("div",{style:{position:"absolute",transform:`translate(-50%, -50%) translate(${a.x}px,${a.y}px)`,width:12,height:12,borderRadius:"50%",background:z.palette.primary.main,border:`2px solid ${z.palette.background.paper}`,boxShadow:z.shadows[1],cursor:"move",pointerEvents:"all",touchAction:"none",zIndex:1001},className:"nodrag nopan",title:"Drag to move; double-click to remove this bend",onMouseEnter:()=>D(!0),onMouseLeave:()=>D(!1),onPointerDown:a=>{0===a.button&&(a.stopPropagation(),G.current={index:b,pointerId:a.pointerId,startClient:{x:a.clientX,y:a.clientY},base:[...J],active:!1,fromPath:!1},a.target.setPointerCapture(a.pointerId))},onPointerMove:S,onPointerUp:T,onDoubleClick:a=>{a.stopPropagation(),(a=>{let b=J.filter((b,c)=>c!==a);F(null),Q(b)})(b)}},b)),(0,d.jsx)("div",{style:{position:"absolute",transform:`translate(-50%, -50%) translate(${y.x+l.x}px,${y.y+l.y}px)`,pointerEvents:V&&!U?"all":"none",opacity:V&&!U?1:0,transition:"opacity 120ms ease",zIndex:1e3},className:"nodrag nopan",onMouseEnter:()=>D(!0),onMouseLeave:()=>D(!1),children:(0,d.jsx)(m,{title:"Delete connection (drag to re-route)",style:{touchAction:"none"},onPointerDown:R,onPointerMove:S,onPointerUp:T,onClick:a=>{if(a.stopPropagation(),H.current){H.current=!1;return}A({edges:[{id:b}]})},children:"\xd7"})})]})]})}}};
|
|
1
|
+
"use strict";exports.id=9188,exports.ids=[9188],exports.modules={8070:(a,b,c)=>{c.d(b,{IK:()=>G,M6:()=>z,Uw:()=>F,lA:()=>I,v2:()=>H,vm:()=>E});var d=c(21124),e=c(38301),f=c(95791),g=c(46973),h=c(18168),i=c(60839),j=c(54573),k=c(81637),l=c(79515),m=c(44079),n=c(99561),o=c(48823),p=c(98540),q=c(83144),r=c(88970),s=c(17332),t=c(63908);let u=(0,h.Ay)(j.A,{shouldForwardProp:a=>!["nodeType","selected"].includes(a)})(({theme:a,nodeType:b,selected:c})=>({padding:a.spacing(1.5),width:"200px",borderRadius:"8px",backgroundColor:a.palette.background.paper,border:`2px solid ${"start"===b?"#795548":"process"===b?a.palette.secondary.main:"finish"===b?a.palette.success.main:"mcp"===b?a.palette.info.main:a.palette.warning.main}`,boxShadow:c?`0 0 0 2px ${a.palette.primary.main}, 0 3px 10px rgba(0,0,0,0.2)`:a.shadows[2],transition:"all 0.2s ease","&:hover":{boxShadow:`0 0 0 1px ${"start"===b?"#795548":"process"===b?a.palette.secondary.main:"finish"===b?a.palette.success.main:"mcp"===b?a.palette.info.main:a.palette.warning.main}, 0 3px 10px rgba(0,0,0,0.1)`}})),v=(0,h.Ay)(k.default,{shouldForwardProp:a=>"nodeType"!==a})(({theme:a,nodeType:b})=>({display:"flex",alignItems:"center",justifyContent:"space-between",borderBottom:`1px solid ${"start"===b?"#A1887F":"process"===b?a.palette.secondary.light:"finish"===b?a.palette.success.light:"mcp"===b?a.palette.info.light:a.palette.warning.light}`,marginBottom:a.spacing(1),paddingBottom:a.spacing(.5)})),w=(0,h.Ay)(k.default)({display:"flex",alignItems:"center",gap:"8px"}),x=(0,h.Ay)(k.default)(({theme:a})=>({marginTop:a.spacing(1),fontSize:"0.8rem"})),y=(0,h.Ay)(k.default)(({theme:a})=>({display:"flex",justifyContent:"space-between",padding:a.spacing(.5,0),borderBottom:`1px dashed ${"dark"===a.palette.mode?"rgba(255,255,255,0.1)":"rgba(0,0,0,0.1)"}`})),z=(a,b)=>{switch(a){case"start":default:return"#795548";case"process":return b.palette.secondary.main;case"finish":return b.palette.success.main;case"mcp":return b.palette.info.main;case"subflow":return b.palette.warning.main}},A=a=>({backgroundColor:a.palette.info.main,borderColor:"dark"===a.palette.mode?a.palette.background.paper:"white",width:16,height:16,borderRadius:8,borderWidth:2}),B=a=>({backgroundColor:a.palette.secondary.main,borderColor:"dark"===a.palette.mode?a.palette.background.paper:"white",width:16,height:16,borderRadius:8,borderWidth:2}),C=a=>({backgroundColor:a.palette.primary.main,borderColor:"dark"===a.palette.mode?a.palette.background.paper:"white",width:16,height:16,borderRadius:8,borderWidth:2}),D=({data:a,nodeType:b,selected:c})=>{let h=(0,i.A)(),[j,k]=(0,e.useState)(!1),z=a||{label:"No Label",properties:{}},D="string"==typeof z.label?z.label:"No Label",E=z.properties||{},F=Object.keys(E).length;return(0,d.jsx)(d.Fragment,{children:(0,d.jsxs)(u,{elevation:2,nodeType:b,selected:c,children:[(()=>{if("mcp"===b)return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(f.h7,{id:"mcp-top",type:"target",position:g.yX.Top,style:A(h)}),(0,d.jsx)(f.h7,{id:"mcp-right",type:"target",position:g.yX.Right,style:A(h)}),(0,d.jsx)(f.h7,{id:"mcp-bottom",type:"source",position:g.yX.Bottom,style:A(h)}),(0,d.jsx)(f.h7,{id:"mcp-left",type:"target",position:g.yX.Left,style:A(h)})]});if("process"===b)return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(f.h7,{id:"process-top",type:"target",position:g.yX.Top,style:B(h)}),(0,d.jsx)(f.h7,{id:"process-bottom",type:"source",position:g.yX.Bottom,style:B(h)}),(0,d.jsx)(f.h7,{id:"process-left-mcp",type:"source",position:g.yX.Left,style:C(h)}),(0,d.jsx)(f.h7,{id:"process-right-mcp",type:"source",position:g.yX.Right,style:C(h)})]});if("start"===b)return(0,d.jsx)(f.h7,{id:"start-bottom",type:"source",position:g.yX.Bottom,style:B(h)});if("finish"===b)return(0,d.jsx)(f.h7,{id:"finish-top",type:"target",position:g.yX.Top,style:B(h)});if("subflow"===b)return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(f.h7,{id:"subflow-top",type:"target",position:g.yX.Top,style:B(h)}),(0,d.jsx)(f.h7,{id:"subflow-bottom",type:"source",position:g.yX.Bottom,style:B(h)})]});return null})(),(0,d.jsxs)(v,{nodeType:b,children:[(0,d.jsxs)(w,{children:[(a=>{switch(a){case"start":default:return(0,d.jsx)(o.A,{sx:{color:"#795548"}});case"process":return(0,d.jsx)(p.A,{color:"secondary"});case"finish":return(0,d.jsx)(q.A,{color:"success"});case"mcp":return(0,d.jsx)(p.A,{color:"info"});case"subflow":return(0,d.jsx)(r.A,{sx:{color:"warning.main"}})}})(b),(0,d.jsx)(l.default,{variant:"subtitle2",fontWeight:"bold",children:D})]}),F>0&&(0,d.jsx)(m.A,{size:"small",onClick:a=>{a.stopPropagation(),k(!j)},sx:{padding:.5},children:j?(0,d.jsx)(t.A,{fontSize:"small"}):(0,d.jsx)(s.A,{fontSize:"small"})})]}),(0,d.jsx)(n.A,{in:j,children:(0,d.jsx)(x,{children:Object.entries(E).map(([a,b])=>(0,d.jsxs)(y,{children:[(0,d.jsxs)(l.default,{variant:"caption",sx:{fontWeight:"bold"},children:[a,":"]}),(0,d.jsxs)(l.default,{variant:"caption",children:[String(b).substring(0,30),String(b).length>30?"...":""]})]},a))})}),F>0&&!j&&(0,d.jsx)(l.default,{variant:"caption",color:"text.secondary",children:`${F} properties configured`})]})})},E=(0,e.memo)(function(a){return(0,d.jsx)(D,{...a,nodeType:"start",selected:a.selected})}),F=(0,e.memo)(function(a){return(0,d.jsx)(D,{...a,nodeType:"process",selected:a.selected})}),G=(0,e.memo)(function(a){return(0,d.jsx)(D,{...a,nodeType:"finish",selected:a.selected})}),H=(0,e.memo)(function(a){return(0,d.jsx)(D,{...a,nodeType:"mcp",selected:a.selected})}),I=(0,e.memo)(function(a){return(0,d.jsx)(D,{...a,nodeType:"subflow",selected:a.selected})})},63281:(a,b,c)=>{c.d(b,{g:()=>g});var d=c(2117);let e=(0,c(19815).h)("frontend/services/flow/index");class f{async loadFlows(){e.debug("loadFlows: Entering method");try{if(this.flowsCache)return e.debug("loadFlows: Using cached flows",{count:this.flowsCache.length}),this.flowsCache;let a=await fetch("/api/flow");if(!a.ok){let b=await a.json();throw Error(b.error||"Failed to load flows")}let b=await a.json();return e.debug("loadFlows: Loaded flows from API",{count:b.length}),this.flowsCache=b,b}catch(a){return e.warn("loadFlows: Failed to load flows:",a),[]}}async getFlow(a){e.debug("getFlow: Entering method",{flowId:a});try{if(this.flowsCache){let b=this.flowsCache.find(b=>b.id===a);if(b)return e.debug("getFlow: Using cached flow",{flowId:a}),b}let b=await fetch(`/api/flow/${encodeURIComponent(a)}`);if(!b.ok){if(404===b.status)return e.debug(`getFlow: Flow ${a} not found`),null;let c=await b.json();throw Error(c.error||`Failed to get flow: ${a}`)}let c=await b.json();return e.debug("getFlow: Retrieved flow from API",{flowId:a}),c}catch(b){return e.warn(`getFlow: Failed to get flow ${a}:`,b),null}}async addFlow(a){e.debug("addFlow: Entering method",{flowId:a.id,flowName:a.name,nodeCount:a.nodes.length,edgeCount:a.edges.length});try{let b=await fetch("/api/flow",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok){let a=await b.json();return{success:!1,error:a.error||"Failed to add flow"}}let c=await b.json();return this.flowsCache&&this.flowsCache.push(c),e.debug("addFlow: Flow added successfully",{flowId:a.id}),{success:!0}}catch(a){return e.warn("addFlow: Failed to add flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to add flow"}}}async generateFlow(a,b,c){e.debug("generateFlow: Entering method",{modelId:b,allowInstall:c?.allowInstall});try{let d=await fetch("/api/flow/generate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({description:a,modelId:b,allowInstall:c?.allowInstall===!0})}),f=await d.json().catch(()=>null);if(!d.ok)return{success:!1,error:f?.error||"Failed to generate flow"};return e.debug("generateFlow: Draft generated",{flowId:f.flow?.id,attempts:f.attempts,errorCount:f.validation?.errorCount,installedServers:f.installedServers?.length??0}),{success:!0,flow:f.flow,validation:f.validation,attempts:f.attempts,installedServers:f.installedServers??[]}}catch(a){return e.warn("generateFlow: Failed to generate flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to generate flow"}}}async updateFlow(a){e.debug("updateFlow: Entering method",{flowId:a.id,flowName:a.name,nodeCount:a.nodes.length,edgeCount:a.edges.length});try{let b=await fetch(`/api/flow/${encodeURIComponent(a.id)}`,{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)});if(!b.ok){let a=await b.json();return{success:!1,error:a.error||"Failed to update flow"}}let c=await b.json();if(this.flowsCache){let b=this.flowsCache.findIndex(b=>b.id===a.id);b>=0?this.flowsCache[b]=c:this.flowsCache.push(c)}return e.debug("updateFlow: Flow updated successfully",{flowId:a.id}),{success:!0}}catch(a){return e.warn("updateFlow: Failed to update flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to update flow"}}}async deleteFlow(a){e.debug("deleteFlow: Entering method",{flowId:a});try{let b=await fetch(`/api/flow/${encodeURIComponent(a)}`,{method:"DELETE"});if(!b.ok){let a=await b.json();return{success:!1,error:a.error||"Failed to delete flow"}}return this.flowsCache&&(this.flowsCache=this.flowsCache.filter(b=>b.id!==a)),e.debug("deleteFlow: Flow deleted successfully",{flowId:a}),{success:!0}}catch(a){return e.warn("deleteFlow: Failed to delete flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to delete flow"}}}createNode(a,b){return e.debug("createNode: Entering method",{type:a,position:b}),{id:(0,d.A)(),type:a,position:b,data:{label:`${"mcp"===a?"MCP":a.charAt(0).toUpperCase()+a.slice(1)} Node`,type:a,properties:{}}}}createStartNode(){return{id:(0,d.A)(),type:"start",position:{x:250,y:150},data:{label:"Start Node",type:"start",properties:{promptTemplate:""}}}}createNewFlow(a="NewFlow"){return e.debug("createNewFlow: Entering method",{name:a}),{id:(0,d.A)(),name:a,nodes:[this.createStartNode()],edges:[]}}createHistoryEntry(a,b){return e.debug("createHistoryEntry: Entering method"),{nodes:[...a],edges:[...b]}}generateSampleFlow(a="Sample Flow"){return e.debug("generateSampleFlow: Entering method",{name:a}),{id:(0,d.A)(),name:a,nodes:[{id:"1",type:"start",position:{x:250,y:50},data:{label:"Start Node",type:"start",properties:{prompt:"Enter your query here",systemMessage:"You are a helpful assistant",temperature:0}}},{id:"2",type:"process",position:{x:250,y:200},data:{label:"Process Node",type:"process",properties:{operation:"transform",enabled:!0}}},{id:"3",type:"finish",position:{x:250,y:350},data:{label:"Finish Node",type:"finish",properties:{format:"json",template:'{ "result": {{data}} }'}}},{id:"4",type:"mcp",position:{x:450,y:200},data:{label:"MCP Node",type:"mcp",properties:{channels:2,mode:"parallel"}}}],edges:[{id:"e1-2",source:"1",target:"2",type:"custom"},{id:"e2-3",source:"2",target:"3",type:"custom"}]}}constructor(){this.flowsCache=null}}let g=new f},90837:(a,b,c)=>{c.d(b,{jY:()=>f,oY:()=>g});var d=c(21124);c(38301);var e=c(97004);let f=a=>(0,d.jsx)(e.A,{...a,variant:"standard"}),g=a=>(0,d.jsx)(e.A,{...a,variant:"mcp"})},97004:(a,b,c)=>{c.d(b,{R:()=>k,A:()=>o});var d=c(21124),e=c(38301),f=c(95791),g=c(46973),h=c(18168),i=c(60839);function j(a){return a===g.yX.Left||a===g.yX.Right?"h":"v"}let k="flowEdgeWaypoint",l={x:16,y:-16},m=(0,h.Ay)("button")(({theme:a})=>({background:a.palette.background.paper,border:`1px solid ${a.palette.divider}`,cursor:"pointer",borderRadius:"50%",fontSize:"10px",width:"20px",height:"20px",display:"flex",justifyContent:"center",alignItems:"center",color:a.palette.text.secondary,boxShadow:"dark"===a.palette.mode?"0 2px 4px rgba(0,0,0,0.3)":"0 2px 4px rgba(0,0,0,0.1)","&:hover":{background:a.palette.error.main,borderColor:a.palette.error.main,color:a.palette.error.contrastText}})),n=(0,h.Ay)(f.tE)({"&&.animated":{strokeDasharray:5,animation:"flowPathAnimation 500ms infinite linear"},"&&.animated-both":{strokeDasharray:5,animation:"flowPathAnimation 750ms infinite linear alternate"},"@keyframes flowPathAnimation":{"0%":{strokeDashoffset:10},"100%":{strokeDashoffset:0}}}),o=({variant:a,id:b,sourceX:c,sourceY:h,targetX:o,targetY:p,sourcePosition:q,targetPosition:r,style:s={},markerEnd:t,markerStart:u,data:v,selected:w})=>{let x,y,z=(0,i.A)(),{deleteElements:A,screenToFlowPosition:B}=(0,f.VH)(),[C,D]=(0,e.useState)(!1),[E,F]=(0,e.useState)(null),G=(0,e.useRef)(null),H=(0,e.useRef)(!1),I=v?.waypoints??(v?.waypoint?[v.waypoint]:[]),J=E??I,K="standard"===a&&!!v?.bidirectional,L=q||("mcp"===a?g.yX.Left:g.yX.Bottom),M=r||("mcp"===a?g.yX.Right:g.yX.Top),N=null;if(J.length>0)x=(N=function(a,b,c,d,e,f=8){let g=[a,...e,c],h=[a],i=[],j=b,k=(a,b)=>{let c;c=h[h.length-1],.01>Math.abs(c.x-a.x)&&.01>Math.abs(c.y-a.y)||(h.push(a),i.push(b))};for(let a=1;a<g.length;a++){let b=h[h.length-1],c=g[a],e=a-1;if(a===g.length-1){if("v"===d)if("h"===j)k({x:c.x,y:b.y},e);else{let a=(b.y+c.y)/2;k({x:b.x,y:a},e),k({x:c.x,y:a},e)}else if("v"===j)k({x:b.x,y:c.y},e);else{let a=(b.x+c.x)/2;k({x:a,y:b.y},e),k({x:a,y:c.y},e)}k(c,e)}else k("v"===j?{x:b.x,y:c.y}:{x:c.x,y:b.y},e),k(c,e),j="v"===j?"h":"v"}!function(a,b){for(let c=1;c<a.length-1;c++){let d=a[c-1],e=a[c],f=a[c+1],g=.01>Math.abs(d.x-e.x)&&.01>Math.abs(f.x-e.x)&&(e.y-d.y)*(f.y-e.y)<0,h=.01>Math.abs(d.y-e.y)&&.01>Math.abs(f.y-e.y)&&(e.x-d.x)*(f.x-e.x)<0;if(g||h){if(g){let g=(a[c-2]?.x??e.x-1)<=e.x,h=g?e.x-12:e.x+12,i=g?e.x+12:e.x-12,j=b[c-1];a.splice(c-1,3,{x:h,y:d.y},{x:h,y:e.y},{x:i,y:e.y},{x:i,y:f.y}),b.splice(c-1,2,j,j,j)}else{let g=(a[c-2]?.y??e.y-1)<=e.y,h=g?e.y-12:e.y+12,i=g?e.y+12:e.y-12,j=b[c-1];a.splice(c-1,3,{x:d.x,y:h},{x:e.x,y:h},{x:e.x,y:i},{x:f.x,y:i}),b.splice(c-1,2,j,j,j)}c++}}}(h,i);let l=[];for(let a=0;a<h.length-1;a++)l.push({a:h[a],b:h[a+1],gap:i[a]});return{d:function(a,b){if(0===a.length)return"";let c=`M ${a[0].x},${a[0].y}`;for(let d=1;d<a.length-1;d++){let e=a[d-1],f=a[d],g=a[d+1],h=Math.hypot(f.x-e.x,f.y-e.y),i=Math.hypot(g.x-f.x,g.y-f.y),j=Math.min(b,h/2,i/2);if(j<.5){c+=` L ${f.x},${f.y}`;continue}let k={x:f.x-(f.x-e.x)/h*j,y:f.y-(f.y-e.y)/h*j},l={x:f.x+(g.x-f.x)/i*j,y:f.y+(g.y-f.y)/i*j};c+=` L ${k.x},${k.y} Q ${f.x},${f.y} ${l.x},${l.y}`}let d=a[a.length-1];return c+` L ${d.x},${d.y}`}(h,f),points:h,segments:l,midpoint:function(a,b){let c=0;for(let b=0;b<a.length-1;b++)c+=Math.hypot(a[b+1].x-a[b].x,a[b+1].y-a[b].y);if(0===c)return a[0];let d=.5*c;for(let b=0;b<a.length-1;b++){let c=Math.hypot(a[b+1].x-a[b].x,a[b+1].y-a[b].y);if(d<=c){let e=0===c?0:d/c;return{x:a[b].x+(a[b+1].x-a[b].x)*e,y:a[b].y+(a[b+1].y-a[b].y)*e}}d-=c}return a[a.length-1]}(h,.5)}}({x:c,y:h},j(L),{x:o,y:p},j(M),J,16)).d,y=N.midpoint;else{let[a,b,d]=(0,g.oN)({sourceX:c,sourceY:h,sourcePosition:L,targetX:o,targetY:p,targetPosition:M,borderRadius:16});x=a,y={x:b,y:d}}let O="mcp"===a?"":K?"animated-both":v?.animated!==!1?"animated":"",P={...s,strokeWidth:w?3:2,stroke:"mcp"===a?w?z.palette.info.light:z.palette.info.main:w?z.palette.primary.main:z.palette.text.secondary,...O?{animationDuration:`${Math.round((K?750:500)*(a=>{let b=0;for(let c=0;c<a.length;c++)b=31*b+a.charCodeAt(c)|0;return .9+Math.abs(b)%1e3/1e3*.2})(b))}ms`}:{}},Q=a=>{document.dispatchEvent(new CustomEvent(k,{detail:{edgeId:b,waypoints:a&&a.length>0?a:null}}))},R=a=>{if(0!==a.button)return;let b=B({x:a.clientX,y:a.clientY}),c=N?function(a,b){let c=0,d=1/0;for(let e of b){let b=function(a,b,c){let d=c.x-b.x,e=c.y-b.y,f=d*d+e*e,g=0===f?0:Math.max(0,Math.min(1,((a.x-b.x)*d+(a.y-b.y)*e)/f));return Math.hypot(a.x-(b.x+d*g),a.y-(b.y+e*g))}(a,e.a,e.b);b<d&&(d=b,c=e.gap)}return c}(b,N.segments):0,d=[...J];d.splice(c,0,b),G.current={index:c,pointerId:a.pointerId,startClient:{x:a.clientX,y:a.clientY},base:d,active:!1,fromPath:!0},a.target.setPointerCapture(a.pointerId)},S=a=>{let b=G.current;if(!b||a.pointerId!==b.pointerId)return;if(!b.active){if(4>Math.hypot(a.clientX-b.startClient.x,a.clientY-b.startClient.y))return;b.active=!0}let c=[...b.base];c[b.index]=B({x:a.clientX,y:a.clientY}),F(c)},T=a=>{let b=G.current;if(!b||a.pointerId!==b.pointerId||(G.current=null,a.target.releasePointerCapture(a.pointerId),H.current=b.active,!b.active))return;let c=[...b.base];c[b.index]=B({x:a.clientX,y:a.clientY}),Q(c),F(null)},U=null!==E,V=w||C||U;return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(n,{path:x,markerEnd:t,markerStart:u,style:P,id:b,className:O}),(0,d.jsx)("path",{d:x,fill:"none",stroke:"transparent",strokeWidth:20,style:{cursor:U?"grabbing":"grab"},onMouseEnter:()=>D(!0),onMouseLeave:()=>D(!1),onPointerDown:R,onPointerMove:S,onPointerUp:T}),(0,d.jsxs)(f.rV,{children:[V&&J.map((a,b)=>(0,d.jsx)("div",{style:{position:"absolute",transform:`translate(-50%, -50%) translate(${a.x}px,${a.y}px)`,width:12,height:12,borderRadius:"50%",background:z.palette.primary.main,border:`2px solid ${z.palette.background.paper}`,boxShadow:z.shadows[1],cursor:"move",pointerEvents:"all",touchAction:"none",zIndex:1001},className:"nodrag nopan",title:"Drag to move; double-click to remove this bend",onMouseEnter:()=>D(!0),onMouseLeave:()=>D(!1),onPointerDown:a=>{0===a.button&&(a.stopPropagation(),G.current={index:b,pointerId:a.pointerId,startClient:{x:a.clientX,y:a.clientY},base:[...J],active:!1,fromPath:!1},a.target.setPointerCapture(a.pointerId))},onPointerMove:S,onPointerUp:T,onDoubleClick:a=>{a.stopPropagation(),(a=>{let b=J.filter((b,c)=>c!==a);F(null),Q(b)})(b)}},b)),(0,d.jsx)("div",{style:{position:"absolute",transform:`translate(-50%, -50%) translate(${y.x+l.x}px,${y.y+l.y}px)`,pointerEvents:V&&!U?"all":"none",opacity:V&&!U?1:0,transition:"opacity 120ms ease",zIndex:1e3},className:"nodrag nopan",onMouseEnter:()=>D(!0),onMouseLeave:()=>D(!1),children:(0,d.jsx)(m,{title:"Delete connection (drag to re-route)",style:{touchAction:"none"},onPointerDown:R,onPointerMove:S,onPointerUp:T,onClick:a=>{if(a.stopPropagation(),H.current){H.current=!1;return}A({edges:[{id:b}]})},children:"\xd7"})})]})]})}}};
|