flujo-ai 3.27.0 → 3.28.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 +367 -296
- package/.next/app-path-routes-manifest.json +20 -10
- package/.next/build-manifest.json +5 -5
- package/.next/react-loadable-manifest.json +12 -0
- package/.next/routes-manifest.json +23 -0
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +1 -1
- package/.next/server/app/api/approvals/[id]/route.js +1 -1
- package/.next/server/app/api/approvals/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/approvals/route.js +2 -2
- package/.next/server/app/api/approvals/route.js.nft.json +1 -1
- package/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/backup/route.js +1 -1
- package/.next/server/app/api/backup/route.js.nft.json +1 -1
- package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/bugs/enhance/route.js +2 -2
- package/.next/server/app/api/bugs/enhance/route.js.nft.json +1 -1
- package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cwd/route.js +1 -1
- package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/encryption/secure/route.js +1 -1
- package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
- package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/env/route.js +2 -2
- package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js +1 -0
- package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js.nft.json +1 -0
- package/.next/server/app/api/flow/[id]/versions/[versionId]/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/flow/[id]/versions/route.js +1 -0
- package/.next/server/app/api/flow/[id]/versions/route.js.nft.json +1 -0
- package/.next/server/app/api/flow/[id]/versions/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/flow/compile/route.js +1 -1
- package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/generate/route.js +1 -1
- package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/improve/route.js +1 -1
- package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/prompt-renderer/route.js +2 -2
- package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/quick-chat/route.js +1 -1
- package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/repair/route.js +1 -1
- package/.next/server/app/api/flow/repair/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/route.js.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 +1 -1
- package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/init/route.js +1 -1
- package/.next/server/app/api/init/route.js.nft.json +1 -1
- package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/app-sandbox/route.js +1 -0
- package/.next/server/app/api/mcp/app-sandbox/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/app-sandbox/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/cancel/route.js +2 -2
- package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/oauth-capability/route.js +1 -0
- package/.next/server/app/api/mcp/oauth-capability/route.js.nft.json +1 -0
- package/.next/server/app/api/mcp/oauth-capability/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/route.js +1 -1
- package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/test-connection/route.js +1 -1
- package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp-registry/route.js +2 -2
- package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp-registry/spotlight/route.js +1 -1
- package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/[id]/route.js +1 -1
- package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/provider/route.js +2 -2
- package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
- package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/route.js +1 -1
- package/.next/server/app/api/model/route.js.nft.json +1 -1
- package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/test/route.js +2 -2
- package/.next/server/app/api/model/test/route.js.nft.json +1 -1
- package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/callback/route.js +2 -2
- package/.next/server/app/api/oauth/callback/route.js.nft.json +1 -1
- package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/initiate/route.js +2 -2
- package/.next/server/app/api/oauth/initiate/route.js.nft.json +1 -1
- package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/reset/route.js +2 -2
- package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
- package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/build/route.js +1 -1
- package/.next/server/app/api/packages/build/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/build/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/derive-secrets/route.js +1 -1
- package/.next/server/app/api/packages/derive-secrets/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/derive-secrets/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/install/route.js +1 -1
- package/.next/server/app/api/packages/install/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/install/status/route.js +1 -1
- package/.next/server/app/api/packages/install/status/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/install/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/installed/route.js +1 -0
- package/.next/server/app/api/packages/installed/route.js.nft.json +1 -0
- package/.next/server/app/api/packages/installed/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/packages/resolve/route.js +1 -1
- package/.next/server/app/api/packages/resolve/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/resolve/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/uninstall/route.js +1 -0
- package/.next/server/app/api/packages/uninstall/route.js.nft.json +1 -0
- package/.next/server/app/api/packages/uninstall/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/planned-executions/[id]/route.js +2 -2
- package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/run/route.js +2 -2
- package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/runs/route.js +2 -2
- package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/reconcile/route.js +1 -1
- package/.next/server/app/api/planned-executions/reconcile/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/route.js +1 -1
- package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/auth/resend/route.js +1 -1
- package/.next/server/app/api/registry/auth/resend/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/auth/resend/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/auth/reset/route.js +1 -0
- package/.next/server/app/api/registry/auth/reset/route.js.nft.json +1 -0
- package/.next/server/app/api/registry/auth/reset/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/registry/auth/route.js +1 -1
- package/.next/server/app/api/registry/auth/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/auth/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/oauth/callback/route.js +1 -0
- package/.next/server/app/api/registry/oauth/callback/route.js.nft.json +1 -0
- package/.next/server/app/api/registry/oauth/callback/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/registry/oauth/initiate/route.js +1 -0
- package/.next/server/app/api/registry/oauth/initiate/route.js.nft.json +1 -0
- package/.next/server/app/api/registry/oauth/initiate/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/registry/publish/route.js +1 -1
- package/.next/server/app/api/registry/publish/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/publish/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/settings/route.js +1 -1
- package/.next/server/app/api/registry/settings/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/settings/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/restore/route.js +1 -1
- package/.next/server/app/api/restore/route.js.nft.json +1 -1
- package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/runs/active/route.js +2 -2
- package/.next/server/app/api/runs/active/route.js.nft.json +1 -1
- package/.next/server/app/api/runs/active/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/storage/route.js +1 -1
- package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/waves/route.js +1 -1
- package/.next/server/app/api/waves/route.js.nft.json +1 -1
- package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/webhooks/[id]/route.js +1 -1
- package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/chat/page.js +8 -8
- package/.next/server/app/chat/page.js.nft.json +1 -1
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/chat.html +1 -1
- package/.next/server/app/chat.rsc +2 -2
- package/.next/server/app/docs/page.js +4 -3
- 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 +38 -2
- package/.next/server/app/executions/page.js.nft.json +1 -1
- package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/executions.html +1 -1
- package/.next/server/app/executions.rsc +2 -2
- package/.next/server/app/flows/page.js +3 -3
- package/.next/server/app/flows/page.js.nft.json +1 -1
- package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
- package/.next/server/app/flows.html +1 -1
- package/.next/server/app/flows.rsc +2 -2
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +1 -1
- package/.next/server/app/mcp/page.js +13 -13
- package/.next/server/app/mcp/page.js.nft.json +1 -1
- package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp-flows/route.js +1 -1
- package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
- package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
- package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
- package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp.html +1 -1
- package/.next/server/app/mcp.rsc +2 -2
- package/.next/server/app/models/page.js +2 -2
- package/.next/server/app/models/page.js.nft.json +1 -1
- package/.next/server/app/models/page_client-reference-manifest.js +1 -1
- package/.next/server/app/packages/page.js +2 -3
- package/.next/server/app/packages/page.js.nft.json +1 -1
- package/.next/server/app/packages/page_client-reference-manifest.js +1 -1
- package/.next/server/app/packages.html +1 -1
- package/.next/server/app/packages.rsc +2 -2
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page.js +2 -3
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +2 -2
- package/.next/server/app/v1/chat/completions/route.js +1 -1
- package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/events/route.js +11 -0
- package/.next/server/app/v1/chat/events/route.js.nft.json +1 -0
- package/.next/server/app/v1/chat/events/route_client-reference-manifest.js +1 -0
- package/.next/server/app/v1/models/route.js +2 -2
- package/.next/server/app/v1/models/route.js.nft.json +1 -1
- package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/waves/page.js +2 -2
- package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
- package/.next/server/app/waves.html +1 -1
- package/.next/server/app/waves.rsc +2 -2
- package/.next/server/app-paths-manifest.json +20 -10
- package/.next/server/chunks/1226.js +1 -1
- package/.next/server/chunks/1314.js +1 -1
- package/.next/server/chunks/1604.js +14 -9
- package/.next/server/chunks/1615.js +1 -0
- package/.next/server/chunks/1659.js +1 -1
- package/.next/server/chunks/166.js +5 -5
- package/.next/server/chunks/1805.js +1 -1
- package/.next/server/chunks/1819.js +1 -1
- package/.next/server/chunks/2434.js +2 -2
- package/.next/server/chunks/2859.js +1 -1
- package/.next/server/chunks/2940.js +13 -8
- package/.next/server/chunks/3128.js +62 -0
- package/.next/server/chunks/3273.js +1 -0
- package/.next/server/chunks/3570.js +249 -0
- package/.next/server/chunks/38.js +2 -2
- package/.next/server/chunks/3951.js +151 -0
- package/.next/server/chunks/4265.js +1 -1
- package/.next/server/chunks/4426.js +2 -2
- package/.next/server/chunks/4671.js +1 -1
- package/.next/server/chunks/4681.js +1 -1
- package/.next/server/chunks/4771.js +2 -2
- package/.next/server/chunks/5067.js +1 -0
- package/.next/server/chunks/5096.js +1 -1
- package/.next/server/chunks/5148.js +1 -0
- package/.next/server/chunks/5200.js +1 -0
- package/.next/server/chunks/5463.js +1 -1
- package/.next/server/chunks/{1089.js → 5471.js} +1 -1
- package/.next/server/chunks/5544.js +5 -5
- package/.next/server/chunks/5708.js +5 -4
- package/.next/server/chunks/5958.js +2 -0
- package/.next/server/chunks/6005.js +1 -1
- package/.next/server/chunks/{7498.js → 6126.js} +24 -13
- package/.next/server/chunks/6849.js +66 -0
- package/.next/server/chunks/688.js +3 -0
- package/.next/server/chunks/701.js +1 -1
- package/.next/server/chunks/7032.js +1 -1
- package/.next/server/chunks/7214.js +4 -4
- package/.next/server/chunks/724.js +1 -1
- package/.next/server/chunks/7463.js +4 -4
- package/.next/server/chunks/7506.js +1 -1
- package/.next/server/chunks/7538.js +21 -0
- package/.next/server/chunks/7579.js +7 -6
- package/.next/server/chunks/7821.js +1 -1
- package/.next/server/chunks/793.js +393 -0
- package/.next/server/chunks/8037.js +1 -0
- package/.next/server/chunks/8165.js +3 -0
- package/.next/server/chunks/8339.js +1 -0
- package/.next/server/chunks/8387.js +1 -1
- package/.next/server/chunks/8522.js +2 -2
- package/.next/server/chunks/{8192.js → 8568.js} +1 -1
- package/.next/server/chunks/8667.js +1 -1
- package/.next/server/chunks/8739.js +2 -2
- package/.next/server/chunks/8979.js +37 -0
- package/.next/server/chunks/8994.js +1 -1
- package/.next/server/chunks/9165.js +1 -0
- package/.next/server/chunks/9285.js +1 -1
- package/.next/server/chunks/94.js +1 -1
- package/.next/server/chunks/9400.js +2 -2
- package/.next/server/chunks/9472.js +2 -2
- package/.next/server/chunks/9671.js +1 -0
- package/.next/server/chunks/9724.js +393 -0
- package/.next/server/chunks/991.js +2 -0
- package/.next/server/functions-config-manifest.json +1 -0
- package/.next/server/instrumentation.js +1 -1
- package/.next/server/instrumentation.js.nft.json +1 -1
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/middleware-manifest.json +1 -1
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/server/src/middleware.js +1 -1
- package/.next/server/src/middleware.js.map +1 -1
- package/.next/static/Q6ITx_bZyoEOnKdZu_C7j/_buildManifest.js +1 -0
- package/.next/static/chunks/1594-309fa6363f215d76.js +1 -0
- package/.next/static/chunks/{9720-5ecb48f1a28808fe.js → 1809-e56cf3c476261e34.js} +1 -1
- package/.next/static/chunks/1937-6bbdcdc660db562c.js +1 -0
- package/.next/static/chunks/1988-1b651d581fc44a36.js +1 -0
- package/.next/static/chunks/2164-7d6451e88a447de7.js +1 -0
- package/.next/static/chunks/{4483-463f8bfc6f3dd5fa.js → 218-6cbe09820faa3272.js} +1 -1
- package/.next/static/chunks/2800-4fa29a3eeb693593.js +1 -0
- package/.next/static/chunks/3418-a2f5d0c4f29ee2fb.js +1 -0
- package/.next/static/chunks/{8041-05830e887c133085.js → 3827-9e9a6e11ef808d90.js} +1 -1
- package/.next/static/chunks/3910.5c6885d7a5bd753e.js +1 -0
- package/.next/static/chunks/{3028-fc1f04241ed578ff.js → 3948-1cb8fc7a64805254.js} +1 -1
- package/.next/static/chunks/3958-5641a828b320f2fe.js +100 -0
- package/.next/static/chunks/{3574-94e9f20550550a58.js → 5328-4e556503b70e72b4.js} +1 -1
- package/.next/static/chunks/{2981-10313d395eb99645.js → 6195-8c4c57628e9013d5.js} +1 -1
- package/.next/static/chunks/{6669-012c73587a6628fc.js → 6669-a949326b30ea1d39.js} +1 -1
- package/.next/static/chunks/6777-4b0d05731a089de4.js +1 -0
- package/.next/static/chunks/6947-0ff3545efb53e959.js +1 -0
- package/.next/static/chunks/7304-e7cd725083617b81.js +8 -0
- package/.next/static/chunks/812-3ceea0da38ad2891.js +1 -0
- package/.next/static/chunks/{5578-49bc150686c13b6f.js → 8551-a28272acfda62ac9.js} +1 -1
- package/.next/static/chunks/8855-02889c9ab4bf0bcf.js +1 -0
- package/.next/static/chunks/app/api/approvals/[id]/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/approvals/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/backup/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/browse/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/bugs/enhance/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/cwd/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/encryption/secure/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/env/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/versions/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/flow/compile/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/flow/generate/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/flow/improve/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/flow/prompt-renderer/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/flow/quick-chat/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/flow/repair/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/flow/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/git/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/init/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/local-models/capability/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/local-models/pull/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/local-models/suggest/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/app-sandbox/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/cancel/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/oauth-capability/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/test-connection/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp/test-connection/stream/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/spotlight/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/model/[id]/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/model/provider/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/model/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/model/test/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/oauth/callback/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/oauth/initiate/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/oauth/reset/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/packages/build/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/packages/derive-secrets/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/packages/install/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/packages/install/status/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/packages/installed/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/packages/resolve/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/packages/uninstall/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/run/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/reconcile/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/registry/auth/resend/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/registry/auth/reset/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/registry/auth/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/registry/oauth/callback/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/registry/oauth/initiate/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/registry/publish/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/registry/settings/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/restore/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/runs/active/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/storage/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/update/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/waves/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/api/webhooks/[id]/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/chat/page-c39160ddf90bbae9.js +1 -0
- package/.next/static/chunks/app/docs/page-250523af44e96120.js +1 -0
- package/.next/static/chunks/app/executions/{page-bb2fef60b2240f69.js → page-10d09f36de30939f.js} +1 -1
- package/.next/static/chunks/app/flows/page-0d8fb471adfc2981.js +1 -0
- package/.next/static/chunks/app/mcp/page-8ad71bf5801bfe5f.js +1 -0
- package/.next/static/chunks/app/mcp-flows/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/mcp-proxy/[server]/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/models/{page-d71e5606a8e29479.js → page-17e8e6668f92f58d.js} +1 -1
- package/.next/static/chunks/app/packages/page-9f61751e98134f3d.js +1 -0
- package/.next/static/chunks/app/settings/page-afbf8790e99fecaf.js +1 -0
- package/.next/static/chunks/app/v1/chat/completions/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/v1/chat/events/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/v1/models/route-c745e5b53b81491a.js +1 -0
- package/.next/static/chunks/app/waves/page-97ad6b51c9cae4b3.js +1 -0
- package/.next/static/chunks/webpack-0d4a4e773990ac44.js +1 -0
- package/.next/trace +10 -9
- package/.next/types/app/api/flow/[id]/versions/[versionId]/route.ts +347 -0
- package/.next/types/app/api/flow/[id]/versions/route.ts +347 -0
- package/.next/types/app/api/mcp/app-sandbox/route.ts +347 -0
- package/.next/types/app/api/mcp/oauth-capability/route.ts +347 -0
- package/.next/types/app/api/packages/installed/route.ts +347 -0
- package/.next/types/app/api/packages/uninstall/route.ts +347 -0
- package/.next/types/app/api/registry/auth/reset/route.ts +347 -0
- package/.next/types/app/api/registry/oauth/callback/route.ts +347 -0
- package/.next/types/app/api/registry/oauth/initiate/route.ts +347 -0
- package/.next/types/app/v1/chat/events/route.ts +347 -0
- package/.next/types/routes.d.ts +11 -1
- package/.next/types/validator.ts +90 -0
- package/README.md +1 -1
- package/package.json +97 -95
- package/.next/server/chunks/237.js +0 -1
- package/.next/server/chunks/2373.js +0 -1
- package/.next/server/chunks/3569.js +0 -1
- package/.next/server/chunks/4545.js +0 -21
- package/.next/server/chunks/5094.js +0 -2
- package/.next/server/chunks/5734.js +0 -60
- package/.next/server/chunks/6996.js +0 -1
- package/.next/server/chunks/7028.js +0 -1
- package/.next/server/chunks/7362.js +0 -158
- package/.next/server/chunks/7485.js +0 -1
- package/.next/server/chunks/7764.js +0 -37
- package/.next/server/chunks/826.js +0 -52
- package/.next/server/chunks/8732.js +0 -62
- package/.next/server/chunks/8851.js +0 -1
- package/.next/static/O-elWbT5rs6ci1CrCqez1/_buildManifest.js +0 -1
- package/.next/static/chunks/2019-f22580cb726c5dca.js +0 -1
- package/.next/static/chunks/256-a13a59247ac6cc68.js +0 -1
- package/.next/static/chunks/2822-8168e3bb8443a1ec.js +0 -1
- package/.next/static/chunks/3560-5bdceef09b50e1c3.js +0 -1
- package/.next/static/chunks/5766-dbd21cb8435605aa.js +0 -1
- package/.next/static/chunks/5866-6834cbc4ab02d86f.js +0 -1
- package/.next/static/chunks/6691-117567b2b40cd9f4.js +0 -1
- package/.next/static/chunks/6961-a40e97c06e616300.js +0 -1
- package/.next/static/chunks/7554-db290baed5782cab.js +0 -8
- package/.next/static/chunks/812-8b3d4e0f6546d6f9.js +0 -1
- package/.next/static/chunks/app/api/approvals/[id]/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/approvals/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/backup/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/browse/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/bugs/enhance/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/cwd/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/encryption/secure/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/env/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/flow/[id]/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/flow/compile/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/flow/generate/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/flow/improve/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/flow/prompt-renderer/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/flow/quick-chat/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/flow/repair/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/flow/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/git/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/init/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/local-models/capability/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/local-models/pull/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/local-models/suggest/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/mcp/cancel/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/mcp/test-connection/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/mcp/test-connection/stream/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/mcp-registry/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/mcp-registry/spotlight/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/model/[id]/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/model/provider/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/model/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/model/test/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/oauth/callback/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/oauth/initiate/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/oauth/reset/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/packages/build/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/packages/derive-secrets/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/packages/install/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/packages/install/status/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/packages/resolve/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/run/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/reconcile/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/registry/auth/resend/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/registry/auth/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/registry/publish/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/registry/settings/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/restore/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/runs/active/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/storage/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/update/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/waves/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/api/webhooks/[id]/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/chat/page-93403b0e520ba8d3.js +0 -1
- package/.next/static/chunks/app/docs/page-2c972a639cd9a41c.js +0 -1
- package/.next/static/chunks/app/flows/page-d60c5b47c923564a.js +0 -1
- package/.next/static/chunks/app/mcp/page-92c03186d566a4f5.js +0 -1
- package/.next/static/chunks/app/mcp-flows/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/mcp-proxy/[server]/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/packages/page-e64480d78312edd0.js +0 -1
- package/.next/static/chunks/app/settings/page-d067a3a624ec2fa0.js +0 -1
- package/.next/static/chunks/app/v1/chat/completions/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/v1/models/route-3e3cc52436d34625.js +0 -1
- package/.next/static/chunks/app/waves/page-ff15db2f75fb5d62.js +0 -1
- package/.next/static/chunks/webpack-2b2d7505a2ac6538.js +0 -1
- /package/.next/static/{O-elWbT5rs6ci1CrCqez1 → Q6ITx_bZyoEOnKdZu_C7j}/_ssgManifest.js +0 -0
|
@@ -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:()=>j,Sx:()=>h,
|
|
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:()=>H,changeEncryptionPassword:()=>C,decryptWithPassword:()=>F,encryptWithPassword:()=>E,getEncryptionType:()=>M,initializeDefaultEncryption:()=>x,initializeEncryption:()=>y,isEncryptionInitialized:()=>J,isEncryptionLocked:()=>L,isUserEncryptionEnabled:()=>K,logout:()=>I,migrateToUserEncryption:()=>B,verifyPassword:()=>G});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})}function w(a){let b;try{b=a.toString(e().enc.Utf8)}catch{return null}return RegExp("^[0-9a-f]{16}$").test(b)?b:null}async function x(){n.debug("initializeDefaultEncryption: Entering method");try{if(await J())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 y(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 B(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 z(){n.debug("getDefaultDEK: Entering method");try{let a=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!a){if(!await x())return n.error("getDefaultDEK: Failed to initialize default encryption"),null;return await z()}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(!w(h))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 A(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(!w(j))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 B(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 z();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 C(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 B(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(!w(k))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 D(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 x())return n.error("getDEK: Failed to initialize default encryption"),null;return await D(a,b)}if("user"!==c[t])return await z();{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 A(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 x())return await z()}catch(a){n.error("getDEK: Failed to initialize default encryption as error recovery:",a)}return null}}async function E(a,b,c=!1){n.debug("encryptWithPassword: Entering method");try{let d=await D(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 F(a,b,c=!1){n.debug("decryptWithPassword: Entering method");try{let d=await D(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 G(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 A(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 H(a){n.debug("authenticate: Entering method");let b=await G(a);return b.valid&&b.token||null}async function I(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 J(){return n.debug("isEncryptionInitialized: Entering method"),null!==await (0,f.YM)(g.Z.ENCRYPTION_KEY,null)}async function K(){n.debug("isUserEncryptionEnabled: Entering method");let a=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);return null!=a&&"user"===a[t]}async function L(){return await K()&&!global.__flujo_server_dek}async function M(){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,Zf:()=>r,av:()=>E,bB:()=>C,l_:()=>z,ln:()=>w,pL:()=>D,w5:()=>F});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){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,c]=await Promise.all([d.promises.readFile(b,"utf-8"),d.promises.stat(b)]);if(0===a.trim().length){j.warn(`Collection item file ${b} is empty; skipping.`);continue}e.push({item:JSON.parse(a),mtimeMs:c.mtimeMs})}catch(a){j.error(`Failed to read collection item ${b}; skipping.`,a)}}return e}async function F(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}}};
|
|
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}},38844:(a,b,c)=>{c.d(b,{Z:()=>d.Z});var d=c(84653)},43326:(a,b,c)=>{c.d(b,{JC:()=>f,Ne:()=>j,Sx:()=>h,getDataDir:()=>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)=>{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)}}}},58739:(a,b,c)=>{c.r(b),c.d(b,{EncryptionLockedError:()=>o,authenticate:()=>H,changeEncryptionPassword:()=>C,decryptWithPassword:()=>F,encryptWithPassword:()=>E,getEncryptionType:()=>M,initializeDefaultEncryption:()=>x,initializeEncryption:()=>y,isEncryptionInitialized:()=>J,isEncryptionLocked:()=>L,isUserEncryptionEnabled:()=>K,logout:()=>I,migrateToUserEncryption:()=>B,verifyPassword:()=>G});var d=c(58862),e=c.n(d),f=c(92372),g=c(38844),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})}function w(a){let b;try{b=a.toString(e().enc.Utf8)}catch{return null}return RegExp("^[0-9a-f]{16}$").test(b)?b:null}async function x(){n.debug("initializeDefaultEncryption: Entering method");try{if(await J())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 y(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 B(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 z(){n.debug("getDefaultDEK: Entering method");try{let a=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);if(!a){if(!await x())return n.error("getDefaultDEK: Failed to initialize default encryption"),null;return await z()}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(!w(h))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 A(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(!w(j))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 B(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 z();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 C(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 B(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(!w(k))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 D(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 x())return n.error("getDEK: Failed to initialize default encryption"),null;return await D(a,b)}if("user"!==c[t])return await z();{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 A(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 x())return await z()}catch(a){n.error("getDEK: Failed to initialize default encryption as error recovery:",a)}return null}}async function E(a,b,c=!1){n.debug("encryptWithPassword: Entering method");try{let d=await D(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 F(a,b,c=!1){n.debug("decryptWithPassword: Entering method");try{let d=await D(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 G(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 A(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 H(a){n.debug("authenticate: Entering method");let b=await G(a);return b.valid&&b.token||null}async function I(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 J(){return n.debug("isEncryptionInitialized: Entering method"),null!==await (0,f.YM)(g.Z.ENCRYPTION_KEY,null)}async function K(){n.debug("isUserEncryptionEnabled: Entering method");let a=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);return null!=a&&"user"===a[t]}async function L(){return await K()&&!global.__flujo_server_dek}async function M(){n.debug("getEncryptionType: Entering method");let a=await (0,f.YM)(g.Z.ENCRYPTION_KEY,null);return a?a[t]||"default":null}},84653:(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.LAST_PICKED_FLOW_ID="last_picked_flow_id",a.SPEECH_SETTINGS="speech_settings",a.SPOTLIGHT_SERVERS="spotlight_servers",a.PLANNED_EXECUTIONS="planned_executions",a.MCP_AUTO_INSTALL_SETTINGS="mcp_auto_install_settings",a.MCP_QUALITY_SETTINGS="mcp_quality_settings",a.RUN_RESOURCE_SETTINGS="run_resource_settings",a.KV_STORE_SETTINGS="kv_store_settings",a.PENDING_APPROVALS="pending_approvals",a.MCP_INTERNAL_OVERRIDES="mcp_internal_overrides",a.PACKAGE_INSTALLS="package_installs",a.EXPERIMENTAL_SETTINGS="experimental_settings",a.REGISTRY_ACCOUNT="registry_account",a.REGISTRY_SETTINGS="registry_settings",a}({})},92372:(a,b,c)=>{c.d(b,{EI:()=>B,N2:()=>u,Pv:()=>o,VH:()=>s,Vt:()=>A,YM:()=>t,Zf:()=>r,av:()=>E,bB:()=>C,l_:()=>z,ln:()=>w,pL:()=>D,w5:()=>F});var d=c(29021),e=c(33873),f=c.n(e),g=c(38844),h=c(50846),i=c(43326);let j=(0,h.h)("utils/storage/backend"),k=f().join((0,i.getDataDir)(),"db"),l=f().join((0,i.getDataDir)(),".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){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,c]=await Promise.all([d.promises.readFile(b,"utf-8"),d.promises.stat(b)]);if(0===a.trim().length){j.warn(`Collection item file ${b} is empty; skipping.`);continue}e.push({item:JSON.parse(a),mtimeMs:c.mtimeMs})}catch(a){j.error(`Failed to read collection item ${b}; skipping.`,a)}}return e}async function F(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,37 @@
|
|
|
1
|
+
"use strict";exports.id=8979,exports.ids=[8979],exports.modules={1010:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M6.99 11 3 15l3.99 4v-3H14v-2H6.99zM21 9l-3.99-4v3H10v2h7.01v3z"}),"SwapHoriz")},1618:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M17 4h3c1.1 0 2 .9 2 2v2h-2V6h-3zM4 8V6h3V4H4c-1.1 0-2 .9-2 2v2zm16 8v2h-3v2h3c1.1 0 2-.9 2-2v-2zM7 18H4v-2H2v2c0 1.1.9 2 2 2h3zM18 8H6v8h12z"}),"FitScreen")},22797:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2M12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8"}),"ErrorOutline")},34229:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)([(0,e.jsx)("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14"},"0"),(0,e.jsx)("path",{d:"M12 10h-2v2H9v-2H7V9h2V7h1v2h2z"},"1")],"ZoomIn")},40216:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M22 11V3h-7v3H9V3H2v8h7V8h2v10h4v3h7v-8h-7v3h-2V8h2v3zM7 9H4V5h3zm10 6h3v4h-3zm0-10h3v4h-3z"}),"AccountTreeOutlined")},48440:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14M7 9h5v1H7z"}),"ZoomOut")},48823:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M20 2H4c-1.1 0-1.99.9-1.99 2L2 22l4-4h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2M6 9h12v2H6zm8 5H6v-2h8zm4-6H6V6h12z"}),"Chat")},53830:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M15 4v7H5.17L4 12.17V4zm1-2H3c-.55 0-1 .45-1 1v14l4-4h10c.55 0 1-.45 1-1V3c0-.55-.45-1-1-1m5 4h-2v9H6v2c0 .55.45 1 1 1h11l4 4V7c0-.55-.45-1-1-1"}),"ForumOutlined")},56154:(a,b,c)=>{c.d(b,{A:()=>w});var d=c(38301),e=c(43249),f=c(66335),g=c(2783);let h=function(a){let{badgeContent:b,invisible:c=!1,max:d=99,showZero:e=!1}=a,g=(0,f.A)({badgeContent:b,max:d}),h=c;!1!==c||0!==b||e||(h=!0);let{badgeContent:i,max:j=d}=h?g:a,k=i&&Number(i)>j?`${j}+`:i;return{badgeContent:i,invisible:h,max:j,displayValue:k}};var i=c(18168),j=c(68333),k=c(54716),l=c(6636),m=c(6638),n=c(29565),o=c(33105);function p(a){return(0,o.Ay)("MuiBadge",a)}let q=(0,n.A)("MuiBadge",["root","badge","dot","standard","anchorOriginTopRight","anchorOriginBottomRight","anchorOriginTopLeft","anchorOriginBottomLeft","invisible","colorError","colorInfo","colorPrimary","colorSecondary","colorSuccess","colorWarning","overlapRectangular","overlapCircular","anchorOriginTopLeftCircular","anchorOriginTopLeftRectangular","anchorOriginTopRightCircular","anchorOriginTopRightRectangular","anchorOriginBottomLeftCircular","anchorOriginBottomLeftRectangular","anchorOriginBottomRightCircular","anchorOriginBottomRightRectangular"]);var r=c(20385),s=c(21124);let t=(0,i.Ay)("span",{name:"MuiBadge",slot:"Root",overridesResolver:(a,b)=>b.root})({position:"relative",display:"inline-flex",verticalAlign:"middle",flexShrink:0}),u=(0,i.Ay)("span",{name:"MuiBadge",slot:"Badge",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.badge,b[c.variant],b[`anchorOrigin${(0,m.A)(c.anchorOrigin.vertical)}${(0,m.A)(c.anchorOrigin.horizontal)}${(0,m.A)(c.overlap)}`],"default"!==c.color&&b[`color${(0,m.A)(c.color)}`],c.invisible&&b.invisible]}})((0,j.A)(({theme:a})=>({display:"flex",flexDirection:"row",flexWrap:"wrap",justifyContent:"center",alignContent:"center",alignItems:"center",position:"absolute",boxSizing:"border-box",fontFamily:a.typography.fontFamily,fontWeight:a.typography.fontWeightMedium,fontSize:a.typography.pxToRem(12),minWidth:20,lineHeight:1,padding:"0 6px",height:20,borderRadius:10,zIndex:1,transition:a.transitions.create("transform",{easing:a.transitions.easing.easeInOut,duration:a.transitions.duration.enteringScreen}),variants:[...Object.entries(a.palette).filter((0,k.A)(["contrastText"])).map(([b])=>({props:{color:b},style:{backgroundColor:(a.vars||a).palette[b].main,color:(a.vars||a).palette[b].contrastText}})),{props:{variant:"dot"},style:{borderRadius:4,height:8,minWidth:8,padding:0}},{props:({ownerState:a})=>"top"===a.anchorOrigin.vertical&&"right"===a.anchorOrigin.horizontal&&"rectangular"===a.overlap,style:{top:0,right:0,transform:"scale(1) translate(50%, -50%)",transformOrigin:"100% 0%",[`&.${q.invisible}`]:{transform:"scale(0) translate(50%, -50%)"}}},{props:({ownerState:a})=>"bottom"===a.anchorOrigin.vertical&&"right"===a.anchorOrigin.horizontal&&"rectangular"===a.overlap,style:{bottom:0,right:0,transform:"scale(1) translate(50%, 50%)",transformOrigin:"100% 100%",[`&.${q.invisible}`]:{transform:"scale(0) translate(50%, 50%)"}}},{props:({ownerState:a})=>"top"===a.anchorOrigin.vertical&&"left"===a.anchorOrigin.horizontal&&"rectangular"===a.overlap,style:{top:0,left:0,transform:"scale(1) translate(-50%, -50%)",transformOrigin:"0% 0%",[`&.${q.invisible}`]:{transform:"scale(0) translate(-50%, -50%)"}}},{props:({ownerState:a})=>"bottom"===a.anchorOrigin.vertical&&"left"===a.anchorOrigin.horizontal&&"rectangular"===a.overlap,style:{bottom:0,left:0,transform:"scale(1) translate(-50%, 50%)",transformOrigin:"0% 100%",[`&.${q.invisible}`]:{transform:"scale(0) translate(-50%, 50%)"}}},{props:({ownerState:a})=>"top"===a.anchorOrigin.vertical&&"right"===a.anchorOrigin.horizontal&&"circular"===a.overlap,style:{top:"14%",right:"14%",transform:"scale(1) translate(50%, -50%)",transformOrigin:"100% 0%",[`&.${q.invisible}`]:{transform:"scale(0) translate(50%, -50%)"}}},{props:({ownerState:a})=>"bottom"===a.anchorOrigin.vertical&&"right"===a.anchorOrigin.horizontal&&"circular"===a.overlap,style:{bottom:"14%",right:"14%",transform:"scale(1) translate(50%, 50%)",transformOrigin:"100% 100%",[`&.${q.invisible}`]:{transform:"scale(0) translate(50%, 50%)"}}},{props:({ownerState:a})=>"top"===a.anchorOrigin.vertical&&"left"===a.anchorOrigin.horizontal&&"circular"===a.overlap,style:{top:"14%",left:"14%",transform:"scale(1) translate(-50%, -50%)",transformOrigin:"0% 0%",[`&.${q.invisible}`]:{transform:"scale(0) translate(-50%, -50%)"}}},{props:({ownerState:a})=>"bottom"===a.anchorOrigin.vertical&&"left"===a.anchorOrigin.horizontal&&"circular"===a.overlap,style:{bottom:"14%",left:"14%",transform:"scale(1) translate(-50%, 50%)",transformOrigin:"0% 100%",[`&.${q.invisible}`]:{transform:"scale(0) translate(-50%, 50%)"}}},{props:{invisible:!0},style:{transition:a.transitions.create("transform",{easing:a.transitions.easing.easeInOut,duration:a.transitions.duration.leavingScreen})}}]})));function v(a){return{vertical:a?.vertical??"top",horizontal:a?.horizontal??"right"}}let w=d.forwardRef(function(a,b){let c=(0,l.b)({props:a,name:"MuiBadge"}),{anchorOrigin:d,className:i,classes:j,component:k,components:n={},componentsProps:o={},children:q,overlap:w="rectangular",color:x="default",invisible:y=!1,max:z=99,badgeContent:A,slots:B,slotProps:C,showZero:D=!1,variant:E="standard",...F}=c,{badgeContent:G,invisible:H,max:I,displayValue:J}=h({max:z,invisible:y,badgeContent:A,showZero:D}),K=(0,f.A)({anchorOrigin:v(d),color:x,overlap:w,variant:E,badgeContent:A}),L=H||null==G&&"dot"!==E,{color:M=x,overlap:N=w,anchorOrigin:O,variant:P=E}=L?K:c,Q=v(O),R="dot"!==P?J:void 0,S={...c,badgeContent:G,invisible:L,max:I,displayValue:R,showZero:D,anchorOrigin:Q,color:M,overlap:N,variant:P},T=(a=>{let{color:b,anchorOrigin:c,invisible:d,overlap:e,variant:f,classes:h={}}=a,i={root:["root"],badge:["badge",f,d&&"invisible",`anchorOrigin${(0,m.A)(c.vertical)}${(0,m.A)(c.horizontal)}`,`anchorOrigin${(0,m.A)(c.vertical)}${(0,m.A)(c.horizontal)}${(0,m.A)(e)}`,`overlap${(0,m.A)(e)}`,"default"!==b&&`color${(0,m.A)(b)}`]};return(0,g.A)(i,p,h)})(S),U={slots:{root:B?.root??n.Root,badge:B?.badge??n.Badge},slotProps:{root:C?.root??o.root,badge:C?.badge??o.badge}},[V,W]=(0,r.A)("root",{elementType:t,externalForwardedProps:{...U,...F},ownerState:S,className:(0,e.A)(T.root,i),ref:b,additionalProps:{as:k}}),[X,Y]=(0,r.A)("badge",{elementType:u,externalForwardedProps:U,ownerState:S,className:T.badge});return(0,s.jsxs)(V,{...W,children:[q,(0,s.jsx)(X,{...Y,children:R})]})})},72197:(a,b,c)=>{c.d(b,{A:()=>u});var d=c(38301),e=c(43249),f=c(2783),g=c(37489),h=c(78871),i=c(18168),j=c(68333),k=c(6636),l=c(29565),m=c(33105);function n(a){return(0,m.Ay)("MuiSkeleton",a)}(0,l.A)("MuiSkeleton",["root","text","rectangular","rounded","circular","pulse","wave","withChildren","fitContent","heightAuto"]);var o=c(21124);let p=(0,h.i7)`
|
|
2
|
+
0% {
|
|
3
|
+
opacity: 1;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
50% {
|
|
7
|
+
opacity: 0.4;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
100% {
|
|
11
|
+
opacity: 1;
|
|
12
|
+
}
|
|
13
|
+
`,q=(0,h.i7)`
|
|
14
|
+
0% {
|
|
15
|
+
transform: translateX(-100%);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
50% {
|
|
19
|
+
/* +0.5s of delay between each loop */
|
|
20
|
+
transform: translateX(100%);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
100% {
|
|
24
|
+
transform: translateX(100%);
|
|
25
|
+
}
|
|
26
|
+
`,r="string"!=typeof p?(0,h.AH)`
|
|
27
|
+
animation: ${p} 2s ease-in-out 0.5s infinite;
|
|
28
|
+
`:null,s="string"!=typeof q?(0,h.AH)`
|
|
29
|
+
&::after {
|
|
30
|
+
animation: ${q} 2s linear 0.5s infinite;
|
|
31
|
+
}
|
|
32
|
+
`:null,t=(0,i.Ay)("span",{name:"MuiSkeleton",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,b[c.variant],!1!==c.animation&&b[c.animation],c.hasChildren&&b.withChildren,c.hasChildren&&!c.width&&b.fitContent,c.hasChildren&&!c.height&&b.heightAuto]}})((0,j.A)(({theme:a})=>{let b=String(a.shape.borderRadius).match(/[\d.\-+]*\s*(.*)/)[1]||"px",c=parseFloat(a.shape.borderRadius);return{display:"block",backgroundColor:a.vars?a.vars.palette.Skeleton.bg:(0,g.X4)(a.palette.text.primary,"light"===a.palette.mode?.11:.13),height:"1.2em",variants:[{props:{variant:"text"},style:{marginTop:0,marginBottom:0,height:"auto",transformOrigin:"0 55%",transform:"scale(1, 0.60)",borderRadius:`${c}${b}/${Math.round(c/.6*10)/10}${b}`,"&:empty:before":{content:'"\\00a0"'}}},{props:{variant:"circular"},style:{borderRadius:"50%"}},{props:{variant:"rounded"},style:{borderRadius:(a.vars||a).shape.borderRadius}},{props:({ownerState:a})=>a.hasChildren,style:{"& > *":{visibility:"hidden"}}},{props:({ownerState:a})=>a.hasChildren&&!a.width,style:{maxWidth:"fit-content"}},{props:({ownerState:a})=>a.hasChildren&&!a.height,style:{height:"auto"}},{props:{animation:"pulse"},style:r||{animation:`${p} 2s ease-in-out 0.5s infinite`}},{props:{animation:"wave"},style:{position:"relative",overflow:"hidden",WebkitMaskImage:"-webkit-radial-gradient(white, black)","&::after":{background:`linear-gradient(
|
|
33
|
+
90deg,
|
|
34
|
+
transparent,
|
|
35
|
+
${(a.vars||a).palette.action.hover},
|
|
36
|
+
transparent
|
|
37
|
+
)`,content:'""',position:"absolute",transform:"translateX(-100%)",bottom:0,left:0,right:0,top:0}}},{props:{animation:"wave"},style:s||{"&::after":{animation:`${q} 2s linear 0.5s infinite`}}}]}})),u=d.forwardRef(function(a,b){let c=(0,k.b)({props:a,name:"MuiSkeleton"}),{animation:d="pulse",className:g,component:h="span",height:i,style:j,variant:l="text",width:m,...p}=c,q={...c,animation:d,component:h,variant:l,hasChildren:!!p.children},r=(a=>{let{classes:b,variant:c,animation:d,hasChildren:e,width:g,height:h}=a;return(0,f.A)({root:["root",c,d,e&&"withChildren",e&&!g&&"fitContent",e&&!h&&"heightAuto"]},n,b)})(q);return(0,o.jsx)(t,{as:h,ref:b,className:(0,e.A)(r.root,g),ownerState:q,...p,style:{width:m,height:i,...j}})})},76159:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6"}),"Settings")},83144:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)([(0,e.jsx)("path",{d:"m17 17 5-5-5-5-1.41 1.41L18.17 11H9v2h9.17l-2.58 2.59z"},"0"),(0,e.jsx)("path",{d:"M19 19H5V5h14v2h2V5c0-1.1-.89-2-2-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.11 0 2-.9 2-2v-2h-2z"},"1")],"Output")},87351:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zm2 16H8v-2h8zm0-4H8v-2h8zm-3-5V3.5L18.5 9z"}),"Description")},93995:(a,b,c)=>{c.d(b,{A:()=>f});var d=c(11801),e=c(21124);let f=(0,d.A)((0,e.jsx)("path",{d:"M7.58 4.08 6.15 2.65C3.75 4.48 2.17 7.3 2.03 10.5h2c.15-2.65 1.51-4.97 3.55-6.42m12.39 6.42h2c-.15-3.2-1.73-6.02-4.12-7.85l-1.42 1.43c2.02 1.45 3.39 3.77 3.54 6.42M18 11c0-3.07-1.64-5.64-4.5-6.32V4c0-.83-.67-1.5-1.5-1.5s-1.5.67-1.5 1.5v.68C7.63 5.36 6 7.92 6 11v5l-2 2v1h16v-1l-2-2zm-6 11c.14 0 .27-.01.4-.04.65-.14 1.18-.58 1.44-1.18q.15-.36.15-.78h-4c.01 1.1.9 2 2.01 2"}),"NotificationsActive")}};
|
|
@@ -1,2 +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,
|
|
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,getDataDir:()=>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
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:()=>{}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=9165,exports.ids=[9165],exports.modules={8070:(a,b,c)=>{c.d(b,{IK:()=>N,M6:()=>F,Uw:()=>M,lA:()=>P,nH:()=>w,v2:()=>O,vm:()=>L,vp:()=>x,z3:()=>R,z9:()=>Q});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(76159),q=c(83144),r=c(88970),s=c(87351),t=c(93995),u=c(17332),v=c(63908);let w="#009688",x="#7E57C2",y={start:{main:()=>"#795548",light:()=>"#A1887F"},process:{main:a=>a.palette.secondary.main,light:a=>a.palette.secondary.light},finish:{main:a=>a.palette.success.main,light:a=>a.palette.success.light},mcp:{main:a=>a.palette.info.main,light:a=>a.palette.info.light},subflow:{main:a=>a.palette.warning.main,light:a=>a.palette.warning.light},resource:{main:()=>w,light:()=>"#4DB6AC"},signal:{main:()=>x,light:()=>"#B39DDB"}},z=(a,b)=>(y[a]??y.start).main(b),A=(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 ${z(b,a)}`,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 ${z(b,a)}, 0 3px 10px rgba(0,0,0,0.1)`}})),B=(0,h.Ay)(k.default,{shouldForwardProp:a=>"nodeType"!==a})(({theme:a,nodeType:b})=>({display:"flex",alignItems:"center",justifyContent:"space-between",borderBottom:`1px solid ${(y[b]??y.start).light(a)}`,marginBottom:a.spacing(1),paddingBottom:a.spacing(.5)})),C=(0,h.Ay)(k.default)({display:"flex",alignItems:"center",gap:"8px"}),D=(0,h.Ay)(k.default)(({theme:a})=>({marginTop:a.spacing(1),fontSize:"0.8rem"})),E=(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)"}`})),F=(a,b)=>z(a,b),G=a=>({backgroundColor:a.palette.info.main,borderColor:"dark"===a.palette.mode?a.palette.background.paper:"white",width:16,height:16,borderRadius:8,borderWidth:2}),H=a=>({backgroundColor:a.palette.secondary.main,borderColor:"dark"===a.palette.mode?a.palette.background.paper:"white",width:16,height:16,borderRadius:8,borderWidth:2}),I=a=>({backgroundColor:a.palette.primary.main,borderColor:"dark"===a.palette.mode?a.palette.background.paper:"white",width:16,height:16,borderRadius:8,borderWidth:2}),J=a=>({backgroundColor:w,borderColor:"dark"===a.palette.mode?a.palette.background.paper:"white",width:16,height:16,borderRadius:8,borderWidth:2}),K=({data:a,nodeType:b,selected:c})=>{let h=(0,i.A)(),[j,k]=(0,e.useState)(!1),y=a||{label:"No Label",properties:{}},z=y.properties||{},F="signal"===b?"string"==typeof z.topic&&z.topic.trim()?z.topic.trim():"string"==typeof y.label&&y.label?y.label:"Signal":"string"==typeof y.label?y.label:"No Label",K="signal"===b?Object.fromEntries(Object.entries(z).filter(([a])=>"topic"!==a)):z,L=Object.keys(K).length;return(0,d.jsx)(d.Fragment,{children:(0,d.jsxs)(A,{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:G(h)}),(0,d.jsx)(f.h7,{id:"mcp-right",type:"target",position:g.yX.Right,style:G(h)}),(0,d.jsx)(f.h7,{id:"mcp-bottom",type:"source",position:g.yX.Bottom,style:G(h)}),(0,d.jsx)(f.h7,{id:"mcp-left",type:"target",position:g.yX.Left,style:G(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:H(h)}),(0,d.jsx)(f.h7,{id:"process-bottom",type:"source",position:g.yX.Bottom,style:H(h)}),(0,d.jsx)(f.h7,{id:"process-left-mcp",type:"source",position:g.yX.Left,style:{...I(h),top:"30%"}}),(0,d.jsx)(f.h7,{id:"process-right-mcp",type:"source",position:g.yX.Right,style:{...I(h),top:"30%"}}),(0,d.jsx)(f.h7,{id:"process-left-resource",type:"source",position:g.yX.Left,style:{...J(h),top:"70%"}}),(0,d.jsx)(f.h7,{id:"process-right-resource",type:"source",position:g.yX.Right,style:{...J(h),top:"70%"}})]});if("resource"===b)return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(f.h7,{id:"resource-in",type:"target",position:g.yX.Left,style:J(h)}),(0,d.jsx)(f.h7,{id:"resource-out",type:"source",position:g.yX.Right,style:J(h)})]});if("start"===b)return(0,d.jsx)(f.h7,{id:"start-bottom",type:"source",position:g.yX.Bottom,style:H(h)});if("finish"===b)return(0,d.jsx)(f.h7,{id:"finish-top",type:"target",position:g.yX.Top,style:H(h)});else 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:H(h)}),(0,d.jsx)(f.h7,{id:"subflow-bottom",type:"source",position:g.yX.Bottom,style:H(h)})]});else if("signal"===b)return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(f.h7,{id:"signal-top",type:"target",position:g.yX.Top,style:H(h)}),(0,d.jsx)(f.h7,{id:"signal-bottom",type:"source",position:g.yX.Bottom,style:H(h)})]});return null})(),(0,d.jsxs)(B,{nodeType:b,children:[(0,d.jsxs)(C,{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"}});case"resource":return(0,d.jsx)(s.A,{sx:{color:w}});case"signal":return(0,d.jsx)(t.A,{sx:{color:x}})}})(b),(0,d.jsx)(l.default,{variant:"subtitle2",fontWeight:"bold",children:F})]}),L>0&&(0,d.jsx)(m.A,{size:"small",onClick:a=>{a.stopPropagation(),k(!j)},sx:{padding:.5},children:j?(0,d.jsx)(v.A,{fontSize:"small"}):(0,d.jsx)(u.A,{fontSize:"small"})})]}),(0,d.jsx)(n.A,{in:j,children:(0,d.jsx)(D,{children:Object.entries(K).map(([a,b])=>(0,d.jsxs)(E,{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))})}),L>0&&!j&&(0,d.jsx)(l.default,{variant:"caption",color:"text.secondary",children:`${L} properties configured`})]})})},L=(0,e.memo)(function(a){return(0,d.jsx)(K,{...a,nodeType:"start",selected:a.selected})}),M=(0,e.memo)(function(a){return(0,d.jsx)(K,{...a,nodeType:"process",selected:a.selected})}),N=(0,e.memo)(function(a){return(0,d.jsx)(K,{...a,nodeType:"finish",selected:a.selected})}),O=(0,e.memo)(function(a){return(0,d.jsx)(K,{...a,nodeType:"mcp",selected:a.selected})}),P=(0,e.memo)(function(a){return(0,d.jsx)(K,{...a,nodeType:"subflow",selected:a.selected})}),Q=(0,e.memo)(function(a){return(0,d.jsx)(K,{...a,nodeType:"resource",selected:a.selected})}),R=(0,e.memo)(function(a){return(0,d.jsx)(K,{...a,nodeType:"signal",selected:a.selected})})},21570:(a,b,c)=>{c.d(b,{A:()=>p});var d=c(21124);c(38301);var e=c(40512),f=c(83899),g=c(81637),h=c(79515),i=c(44079),j=c(91059),k=c(52327),l=c(19925),m=c(68730),n=c(30137),o=c(24330);let p=({open:a,onClose:b,title:c,description:p,maxWidth:q="md",...r})=>(0,d.jsxs)(e.A,{open:a,onClose:b,maxWidth:q,fullWidth:!0,children:[(0,d.jsx)(f.A,{component:"div",children:(0,d.jsxs)(g.default,{display:"flex",alignItems:"center",justifyContent:"space-between",children:[(0,d.jsx)(h.default,{variant:"h6",children:c}),(0,d.jsx)(i.A,{edge:"end",color:"inherit",onClick:b,"aria-label":"close",children:(0,d.jsx)(n.A,{})})]})}),(0,d.jsx)(j.A,{}),(0,d.jsxs)(k.A,{sx:{p:3},children:[p&&(0,d.jsx)(h.default,{variant:"body2",color:"text.secondary",sx:{mb:2},children:p}),(0,d.jsx)(o.A,{...r})]}),(0,d.jsx)(l.A,{children:(0,d.jsx)(m.A,{onClick:b,children:"Cancel"})})]})},24330:(a,b,c)=>{c.d(b,{A:()=>o});var d=c(21124),e=c(38301),f=c(82666),g=c(81637),h=c(37674),i=c(67101),j=c(8521),k=c(79515),l=c(40973),m=c(59737);let n={xs:12,sm:6,md:4},o=({isLoading:a=!1,error:b=null,emptyMessage:c="Nothing to choose from.",loadingMessage:o="Loading…",skeleton:p,skeletonCount:q=4,columns:r=n,items:s,searchable:t=!1,searchPlaceholder:u="Search…",searchTerm:v,onSearchChange:w,groups:x,collapsedKeys:y,onToggleGroup:z})=>{let A={...n,...r},[B,C]=(0,e.useState)(""),D=void 0!==v,E=D?v:B,[F,G]=(0,e.useState)(new Set),H=y??F,I=a=>(0,d.jsx)(f.Ay,{container:!0,spacing:2,alignItems:"stretch",children:a.map(a=>(0,d.jsx)(f.Ay,{item:!0,xs:A.xs,sm:A.sm,md:A.md,lg:A.lg,sx:{display:"flex"},children:(0,d.jsx)(g.default,{sx:{width:"100%"},children:a.content})},a.key))}),J=t?(0,d.jsx)(h.A,{placeholder:u,variant:"outlined",size:"small",fullWidth:!0,value:E,onChange:a=>(a=>{w?.(a),D||C(a)})(a.target.value),sx:{mb:2},InputProps:{startAdornment:(0,d.jsx)(i.A,{position:"start",children:(0,d.jsx)(l.A,{fontSize:"small"})})}}):null,K=a=>(0,d.jsxs)(g.default,{children:[J,a]});if(a)return K(p?(0,d.jsx)(f.Ay,{container:!0,spacing:2,children:Array.from({length:q}).map((a,b)=>(0,d.jsx)(f.Ay,{item:!0,xs:A.xs,sm:A.sm,md:A.md,lg:A.lg,children:p},`skeleton-${b}`))}):(0,d.jsxs)(g.default,{sx:{display:"flex",alignItems:"center",gap:1,py:2},children:[(0,d.jsx)(j.default,{size:20}),(0,d.jsx)(k.default,{variant:"body2",color:"text.secondary",children:o})]}));if(b)return K((0,d.jsx)(k.default,{color:"error",variant:"body2",sx:{py:2},children:b}));let L=D?"":E.trim().toLowerCase(),M=a=>!L||(a.searchText??"").toLowerCase().includes(L),N=(0,d.jsx)(k.default,{variant:"body2",color:"text.secondary",sx:{py:2},children:c});if(x){let a=x.map(a=>({...a,items:a.items.filter(M)})).filter(a=>a.items.length>0);return K(0===a.length?N:(0,d.jsx)(d.Fragment,{children:a.map(a=>(0,d.jsx)(m.A,{label:a.label,count:a.items.length,expanded:!H.has(a.key),onToggle:()=>(a=>{if(z)return void z(a);G(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})})(a.key),children:I(a.items)},a.key))}))}let O=(s??[]).filter(M);return K(0===O.length?N:I(O))}},32640:(a,b,c)=>{c.d(b,{CR:()=>j,Lg:()=>g,eZ:()=>i,fC:()=>f});var d=c(76133),e=c(7329);let f={"name-asc":"Name (A-Z)","name-desc":"Name (Z-A)",provider:"Provider","context-desc":"Context (largest)","context-asc":"Context (smallest)"},g=a=>a.displayName||a.name||"",h=a=>(0,d.T_)(a.provider,a.adapter).label;function i(a,b){switch(b){case"provider":{let b=h(a);return{key:`provider:${b}`,label:b}}case"context-asc":case"context-desc":var c;return"number"!=typeof(c=a.contextWindow)||Number.isNaN(c)?{key:"ctx:unknown",label:"Unknown context"}:c<=8e3?{key:"ctx:<=8k",label:"≤ 8K tokens"}:c<=32e3?{key:"ctx:8k-32k",label:"8K–32K tokens"}:c<=128e3?{key:"ctx:32k-128k",label:"32K–128K tokens"}:c<=1e6?{key:"ctx:128k-1m",label:"128K–1M tokens"}:{key:"ctx:>1m",label:"> 1M tokens"};default:return(0,e.po)(g(a))}}function j(a,b){let c=(a,c)=>{switch(b){case"name-asc":return g(a).localeCompare(g(c));case"name-desc":return g(c).localeCompare(g(a));case"provider":return h(a).localeCompare(h(c))||g(a).localeCompare(g(c));case"context-desc":case"context-asc":{let d="number"!=typeof a.contextWindow||Number.isNaN(a.contextWindow)?void 0:a.contextWindow,e="number"!=typeof c.contextWindow||Number.isNaN(c.contextWindow)?void 0:c.contextWindow;if(void 0===d&&void 0===e)return g(a).localeCompare(g(c));if(void 0===d)return 1;if(void 0===e)return -1;let f="context-desc"===b?e-d:d-e;return 0!==f?f:g(a).localeCompare(g(c))}default:return 0}};return[...a].sort((a,b)=>{let d=Number(!!b.favorite)-Number(!!a.favorite);return 0!==d?d:c(a,b)})}},39438:(a,b,c)=>{c.d(b,{A:()=>H,o:()=>G});var d=c(21124),e=c(38301),f=c(18168),g=c(30818),h=c(81637),i=c(37489),j=c(60839),k=c(79515),l=c(43312),m=c(44079),n=c(423),o=c(27114),p=c(41893),q=c(98463),r=c(72197),s=c(91034),t=c(38941),u=c(12033),v=c(1312),w=c(5501),x=c(99587),y=c(48823),z=c(22797),A=c(21358),B=c(8070),C=c(78352);let D=(0,c(19815).h)("components/Flow/FlowDashboard/FlowCard"),E=(0,f.Ay)(g.A,{shouldForwardProp:a=>"selected"!==a})(({theme:a,selected:b})=>({display:"flex",flexDirection:"column",height:"100%",transition:"all 0.3s cubic-bezier(0.4, 0, 0.2, 1)",position:"relative",border:b?`2px solid ${a.palette.primary.main}`:"none",boxShadow:b?a.shadows[4]:a.shadows[1],"&:hover":{boxShadow:a.shadows[6],transform:"translateY(-4px)"},"&::before":b?{content:'""',position:"absolute",top:0,left:0,width:"100%",height:"4px",backgroundColor:a.palette.primary.main}:{}})),F=(0,f.Ay)(h.default)(({theme:a})=>({height:"140px",backgroundColor:(0,i.X4)(a.palette.background.default,.7),borderRadius:a.shape.borderRadius,display:"flex",alignItems:"center",justifyContent:"center",margin:a.spacing(1),overflow:"hidden",position:"relative"})),G=()=>(0,d.jsxs)(g.A,{sx:{height:"100%",display:"flex",flexDirection:"column"},children:[(0,d.jsx)(h.default,{sx:{p:1},children:(0,d.jsx)(r.A,{variant:"rectangular",height:140})}),(0,d.jsxs)(o.A,{sx:{flexGrow:1},children:[(0,d.jsx)(r.A,{variant:"text",width:"80%",height:30}),(0,d.jsxs)(h.default,{sx:{display:"flex",gap:1,mt:1},children:[(0,d.jsx)(r.A,{variant:"rectangular",width:60,height:20}),(0,d.jsx)(r.A,{variant:"rectangular",width:90,height:20})]})]}),(0,d.jsxs)(q.A,{sx:{justifyContent:"flex-end",p:1},children:[(0,d.jsx)(r.A,{variant:"circular",width:28,height:28}),(0,d.jsx)(r.A,{variant:"circular",width:28,height:28}),(0,d.jsx)(r.A,{variant:"circular",width:28,height:28})]})]}),H=({flow:a,selected:b,onSelect:c,onDelete:f,onCopy:g,onEdit:r,onOpenInChat:G,onSetFolder:H,onToggleFavorite:I,folders:J=[],validation:K,pickerMode:L=!1})=>{D.debug("Rendering FlowCard",{flowId:a.id,flowName:a.name});let M=(0,j.A)(),[N,O]=(0,e.useState)(null),P=K?.errorCount??0,Q=K?.warningCount??0,R=P>0?"error":Q>0?"warning":null,S=K?(0,d.jsxs)(h.default,{children:[(0,d.jsx)(k.default,{variant:"caption",sx:{fontWeight:600,display:"block",mb:.5},children:P>0?`${P} problem${1===P?"":"s"} — won't run`:`${Q} warning${1===Q?"":"s"}`}),K.issues.slice(0,5).map((a,b)=>(0,d.jsxs)(k.default,{variant:"caption",sx:{display:"block"},children:["• ",a.message]},b)),K.issues.length>5&&(0,d.jsxs)(k.default,{variant:"caption",sx:{display:"block",fontStyle:"italic"},children:["…and ",K.issues.length-5," more"]})]}):null;return(0,d.jsxs)(E,{selected:b,children:[I&&(0,d.jsx)(l.A,{title:a.favorite?"Remove from favorites":"Add to favorites",arrow:!0,placement:"top",children:(0,d.jsx)(m.A,{size:"small",onClick:b=>{b.stopPropagation(),I&&I(a.id)},sx:{position:"absolute",top:4,left:4,zIndex:2,color:a.favorite?M.palette.warning.main:M.palette.text.secondary,backgroundColor:(0,i.X4)(M.palette.background.paper,.6),"&:hover":{backgroundColor:(0,i.X4)(M.palette.background.paper,.9)}},children:a.favorite?(0,d.jsx)(w.A,{fontSize:"small"}):(0,d.jsx)(x.A,{fontSize:"small"})})}),R&&(0,d.jsx)(l.A,{title:S,arrow:!0,placement:"top",children:(0,d.jsxs)(h.default,{sx:{position:"absolute",top:8,right:8,zIndex:2,display:"flex",alignItems:"center",gap:.5,px:.75,py:.25,borderRadius:1,color:"#fff",backgroundColor:"error"===R?M.palette.error.main:M.palette.warning.main,boxShadow:M.shadows[2],pointerEvents:"auto"},children:["error"===R?(0,d.jsx)(z.A,{sx:{fontSize:16}}):(0,d.jsx)(A.A,{sx:{fontSize:16}}),(0,d.jsx)(k.default,{variant:"caption",sx:{fontWeight:700,lineHeight:1},children:"error"===R?P:Q})]})}),(0,d.jsxs)(n.A,{onClick:()=>c(a.id),sx:{display:"flex",flexDirection:"column",alignItems:"stretch",height:"100%",position:"relative"},children:[(0,d.jsx)(F,{children:(()=>{if(0===a.nodes.length)return(0,d.jsx)(h.default,{sx:{width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center"},children:(0,d.jsx)(k.default,{color:"textSecondary",align:"center",children:"Empty Flow"})});let b=a.nodes.map(a=>a.position?.x??0),c=a.nodes.map(a=>a.position?.y??0),e=Math.min(...b),f=Math.min(...c),g=Math.max(...b)+180,i=Math.max(...c)+70,j=`${e-40} ${f-40} ${g-e+80} ${i-f+80}`,l=a=>({cx:(a.position?.x??0)+90,cy:(a.position?.y??0)+35});return(0,d.jsx)(h.default,{sx:{width:"100%",height:"100%",p:1},children:(0,d.jsxs)("svg",{width:"100%",height:"100%",viewBox:j,preserveAspectRatio:"xMidYMid meet",style:{display:"block"},children:[a.edges.map((b,c)=>{let e=a.nodes.find(a=>a.id===b.source),f=a.nodes.find(a=>a.id===b.target);if(!e||!f)return null;let g=l(e),h=l(f);return(0,d.jsx)("line",{x1:g.cx,y1:g.cy,x2:h.cx,y2:h.cy,stroke:M.palette.text.secondary,strokeWidth:2,opacity:.5,vectorEffect:"non-scaling-stroke"},b.id||c)}),a.nodes.map(a=>{let b=a.position?.x??0,c=a.position?.y??0,e=a.data?.type??"process",f=(0,B.M6)(e,M);return(0,d.jsxs)("g",{children:[(0,d.jsx)("rect",{x:b,y:c,width:180,height:70,rx:12,fill:f,opacity:.85,stroke:M.palette.background.paper,strokeWidth:2,vectorEffect:"non-scaling-stroke"}),(0,d.jsx)("text",{x:b+90,y:c+35,textAnchor:"middle",dominantBaseline:"central",fill:"#fff",fontSize:35,fontWeight:"bold",children:e.substring(0,1).toUpperCase()})]},a.id)})]})})})()}),(0,d.jsxs)(o.A,{sx:{flexGrow:1,pb:0},children:[(0,d.jsx)(k.default,{variant:"h6",component:"div",noWrap:!0,children:a.name}),a.description&&(0,d.jsx)(l.A,{title:a.description,placement:"bottom-start",children:(0,d.jsx)(k.default,{variant:"body2",color:"text.secondary",sx:{mt:.5,display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden"},children:a.description})}),(0,d.jsxs)(h.default,{sx:{display:"flex",gap:.5,mt:1,flexWrap:"wrap"},children:[(0,d.jsx)(p.A,{size:"small",label:`${a.nodes.length} nodes`,color:"primary",variant:"outlined",sx:{fontSize:"0.7rem",height:20}}),(0,d.jsx)(p.A,{size:"small",label:`${a.edges.length} connections`,color:"secondary",variant:"outlined",sx:{fontSize:"0.7rem",height:20}})]})]})]}),!L&&(0,d.jsxs)(q.A,{sx:{justifyContent:"flex-end",p:1,opacity:.7,"&:hover":{opacity:1}},children:[G&&(0,d.jsx)(l.A,{title:"Start a conversation with this flow",children:(0,d.jsx)(m.A,{size:"small",onClick:b=>{b.stopPropagation(),G&&G(a.id)},color:"primary",children:(0,d.jsx)(y.A,{fontSize:"small"})})}),r&&(0,d.jsx)(l.A,{title:"Edit flow metadata",children:(0,d.jsx)(m.A,{size:"small",onClick:b=>{b.stopPropagation(),r&&r(a.id)},children:(0,d.jsx)(u.A,{fontSize:"small"})})}),g&&(0,d.jsx)(l.A,{title:"Copy flow",children:(0,d.jsx)(m.A,{size:"small",onClick:b=>{b.stopPropagation(),g&&g(a.id)},children:(0,d.jsx)(t.A,{fontSize:"small"})})}),H&&(0,d.jsx)(l.A,{title:a.folder?`Folder: ${a.folder}`:"Move to folder",children:(0,d.jsx)(m.A,{size:"small",onClick:a=>{a.stopPropagation(),O(a.currentTarget)},color:a.folder?"primary":"default",children:(0,d.jsx)(v.A,{fontSize:"small"})})}),f&&(0,d.jsx)(l.A,{title:"Delete flow",children:(0,d.jsx)(m.A,{size:"small",onClick:b=>{b.stopPropagation(),f&&f(a.id)},color:"error",children:(0,d.jsx)(s.A,{fontSize:"small"})})})]}),!L&&H&&(0,d.jsx)(C.A,{anchorEl:N,open:!!N,currentFolder:a.folder,folders:J,onClose:()=>O(null),onAssign:b=>H(a.id,b)})]})}},45231:(a,b,c)=>{c.d(b,{E:()=>k});var d=c(38301),e=c(2560),f=c(7329),g=c(32640),h=c(61160),i=c(66675);let j={models:{defaultSort:"name-asc",sort:(a,b)=>(0,g.CR)(a,b),deriveSortGroup:(a,b)=>(0,g.eZ)(a,b),getFolder:a=>a.folder,getSearchText:a=>`${(0,g.Lg)(a)} ${a.name??""}`},mcp:{defaultSort:"name-asc",sort:(a,b)=>(0,h.oO)(a,b),deriveSortGroup:(a,b)=>(0,h.mO)(a,b),getFolder:a=>a.folder,getSearchText:a=>`${a.name??""} ${a.rootPath??a.path??""}`},flows:{defaultSort:"name-asc",sort:(a,b)=>(0,i.NP)(a,b),deriveSortGroup:(a,b)=>(0,i.ts)(a,b),getFolder:a=>a.folder,getSearchText:a=>a.name??""}};function k(a,b){let c=j[a],[g,h]=(0,d.useState)(""),[i]=(0,e.Xk)(`flujo-ui:${a}:sort`,c.defaultSort),[k]=(0,e.Xk)(`flujo-ui:${a}:group`,"none"),[l,m]=(0,e.Xk)(`flujo-ui:${a}:collapsed`,[]),n=(0,d.useMemo)(()=>new Set(l),[l]),o=(0,d.useMemo)(()=>{let a=g.trim().toLowerCase(),d=a?b.filter(b=>c.getSearchText(b).toLowerCase().includes(a)):b;return c.sort([...d],i)},[b,g,i,c]),p=(0,d.useMemo)(()=>"folder"===k?(0,f.Je)(o,a=>c.getFolder(a)):"sort"===k?(0,f.Az)(o,a=>c.deriveSortGroup(a,i)):null,[k,o,i,c]);return{searchTerm:g,setSearchTerm:h,sortOption:i,groupMode:k,items:o,groups:p,collapsedKeys:n,toggleGroup:(0,d.useCallback)(a=>{m(b=>b.includes(a)?b.filter(b=>b!==a):[...b,a])},[m])}}},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,allowSubflows:c?.allowSubflows,maxDepth:c?.maxDepth});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,allowSubflows:c?.allowSubflows===!0,..."number"==typeof c?.maxDepth?{maxDepth:c.maxDepth}:{}})}),f=await d.json().catch(()=>null);if(!d.ok)return{success:!1,error:f?.error||"Failed to generate flow"};let g=Array.isArray(f.flows)&&f.flows.length>0?f.flows:[{flow:f.flow,validation:f.validation}];return e.debug("generateFlow: Draft generated",{flowId:f.flow?.id,flowCount:g.length,attempts:f.attempts,errorCount:f.validation?.errorCount,installedServers:f.installedServers?.length??0}),{success:!0,flow:f.flow,validation:f.validation,flows:g,rootFlowId:f.rootFlowId??f.flow?.id,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 improveFlow(a,b,c,d){e.debug("improveFlow: Entering method",{flowId:a?.id,modelId:c,allowInstall:d?.allowInstall});try{let f=await fetch("/api/flow/improve",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({flow:a,description:b,modelId:c,allowInstall:d?.allowInstall===!0})}),g=await f.json().catch(()=>null);if(!f.ok)return{success:!1,error:g?.error||"Failed to improve flow"};return e.debug("improveFlow: Draft revised",{flowId:g.flow?.id,attempts:g.attempts,errorCount:g.validation?.errorCount,installedServers:g.installedServers?.length??0}),{success:!0,flow:g.flow,validation:g.validation,attempts:g.attempts,installedServers:g.installedServers??[]}}catch(a){return e.warn("improveFlow: Failed to improve flow:",a),{success:!1,error:a instanceof Error?a.message:"Failed to improve 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"}}}async listFlowVersions(a){e.debug("listFlowVersions: Entering method",{flowId:a});try{let b=await fetch(`/api/flow/${encodeURIComponent(a)}/versions`);if(!b.ok){let a=await b.json().catch(()=>null);throw Error(a?.error||"Failed to list flow versions")}let c=await b.json();return Array.isArray(c.versions)?c.versions:[]}catch(b){return e.warn(`listFlowVersions: Failed for flow ${a}:`,b),[]}}async getFlowVersion(a,b){e.debug("getFlowVersion: Entering method",{flowId:a,versionId:b});try{let c=await fetch(`/api/flow/${encodeURIComponent(a)}/versions/${encodeURIComponent(b)}`);if(!c.ok){if(404===c.status)return null;let a=await c.json().catch(()=>null);throw Error(a?.error||"Failed to get flow version")}return await c.json()}catch(c){return e.warn(`getFlowVersion: Failed for ${a}/${b}:`,c),null}}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"){e.debug("createNewFlow: Entering method",{name:a});let b=Date.now();return{id:(0,d.A)(),name:a,createdAt:b,updatedAt:b,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},66675:(a,b,c)=>{c.d(b,{K:()=>f,NP:()=>i,ts:()=>g});var d=c(7329);function e(a){return a.updatedAt??a.createdAt??0}function f(a,b=Date.now()){if(!a)return{key:"recency:unknown",label:"No date"};let c=b-a;return c<864e5?{key:"recency:today",label:"Today"}:c<6048e5?{key:"recency:week",label:"This week"}:c<2592e6?{key:"recency:month",label:"This month"}:{key:"recency:older",label:"Older"}}function g(a,b){switch(b){case"name-asc":case"name-desc":return(0,d.po)(a.name);case"most-nodes":case"least-nodes":var c;return 0===(c=a.nodes.length)?{key:"nodes:0",label:"0 nodes"}:c<=2?{key:"nodes:1-2",label:"1–2 nodes"}:c<=5?{key:"nodes:3-5",label:"3–5 nodes"}:c<=10?{key:"nodes:6-10",label:"6–10 nodes"}:{key:"nodes:11+",label:"11+ nodes"};case"newest":case"oldest":return f(e(a));default:return{key:"all",label:"All flows"}}}function h(a,b){return a.name.localeCompare(b.name)||a.id.localeCompare(b.id)}function i(a,b){let c=(a,c)=>{switch(b){case"name-asc":return a.name.localeCompare(c.name);case"name-desc":return c.name.localeCompare(a.name);case"most-nodes":return c.nodes.length-a.nodes.length;case"least-nodes":return a.nodes.length-c.nodes.length;case"newest":{let b=e(c)-e(a);return 0!==b?b:h(a,c)}case"oldest":{let b=e(a)-e(c);return 0!==b?b:h(a,c)}default:return 0}};return[...a].sort((a,b)=>{let d=Number(!!b.favorite)-Number(!!a.favorite);return 0!==d?d:c(a,b)})}},76133:(a,b,c)=>{c.d(b,{T_:()=>e,xx:()=>d});let d=[{id:"openai",label:"OpenAI",provider:"openai",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.openai.com/v1",showBaseUrl:!0},{id:"openrouter",label:"OpenRouter",provider:"openrouter",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://openrouter.ai/api/v1",showBaseUrl:!0},{id:"requesty",label:"Requesty",provider:"requesty",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://router.requesty.ai/v1",showBaseUrl:!0},{id:"xai",label:"X.ai",provider:"xai",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.x.ai/v1",showBaseUrl:!0},{id:"ollama",label:"Ollama",provider:"ollama",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"http://localhost:11434/v1",showBaseUrl:!0},{id:"litellm",label:"LiteLLM",provider:"litellm",adapter:"openai",sdkLabel:"OpenAI SDK (via LiteLLM Proxy)",baseUrl:"http://localhost:4000/v1",showBaseUrl:!0},{id:"gemini-openai",label:"Gemini (OpenAI Format)",provider:"gemini",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://generativelanguage.googleapis.com/v1beta/openai/",showBaseUrl:!0},{id:"gemini-native",label:"Gemini (Native)",provider:"gemini",adapter:"gemini",sdkLabel:"GenAI SDK",baseUrl:"",showBaseUrl:!1,defaultModels:["gemini-2.5-pro","gemini-2.5-flash","gemini-2.5-flash-lite","gemini-2.0-flash"]},{id:"anthropic-openai",label:"Anthropic (OpenAI Format)",provider:"anthropic",adapter:"openai",sdkLabel:"OpenAI SDK",baseUrl:"https://api.anthropic.com/v1/",showBaseUrl:!0},{id:"anthropic-native",label:"Anthropic (Native)",provider:"anthropic",adapter:"anthropic",sdkLabel:"Anthropic SDK",baseUrl:"",showBaseUrl:!1,defaultModels:["claude-opus-4-8","claude-sonnet-4-6","claude-haiku-4-5-20251001","claude-fable-5"]},{id:"claude-subscription",label:"Claude Subscription",provider:"claude-subscription",adapter:"claude-cli",sdkLabel:"Claude CLI",baseUrl:"",showBaseUrl:!1,defaultModels:["opus","sonnet","haiku","fable"]}];function e(a,b){let c=a||"openai",e=b||"openai";return d.find(a=>a.provider===c&&a.adapter===e)||d.find(a=>a.provider===c)||d[0]}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=9285,exports.ids=[9285],exports.modules={39285:(a,b,c)=>{c.d(b,{S6:()=>j,TG:()=>m,nN:()=>k,putPendingApproval:()=>l});var d=c(92372),e=c(
|
|
1
|
+
"use strict";exports.id=9285,exports.ids=[9285],exports.modules={39285:(a,b,c)=>{c.d(b,{S6:()=>j,TG:()=>m,nN:()=>k,putPendingApproval:()=>l});var d=c(92372),e=c(38844);let f=(0,c(50846).h)("backend/services/scheduler/pendingApprovals"),g=e.Z.PENDING_APPROVALS,h=Promise.resolve();async function i(){try{let a=await (0,d.YM)(g,{});return a&&"object"==typeof a?a:{}}catch(a){return f.error("Failed to load pending approvals:",a),{}}}async function j(){return Object.values(await i()).sort((a,b)=>a.createdAt.localeCompare(b.createdAt))}async function k(a){return(await i())[a]??null}async function l(a){let b=h.catch(()=>{}).then(async()=>{let b=await i();b[a.approvalId]=a,await (0,d.VH)(g,b)});h=b,await b}async function m(a){let b=h.catch(()=>{}).then(async()=>{let b=await i();a in b&&(delete b[a],await (0,d.VH)(g,b))});h=b,await b}}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";exports.id=94,exports.ids=[94],exports.modules={48092:(a,b,c)=>{c.d(b,{FK:()=>i,FN:()=>j});var d=c(33873),e=c.n(d),f=c(18230),g=c(94749);let h=(0,f.h)("backend/services/mcp/internal/confinement");function i(a,b){let c=e().relative(a,b);return""===c||!c.startsWith("..")&&!e().isAbsolute(c)}async function j(a,b){let c=function(a){for(let b of Array.isArray(a)?a:[a]){let a=process.env[b];if(!a||!a.trim())continue;let c=a.split(e().delimiter).map(a=>a.trim()).filter(Boolean).map(a=>e().resolve(a));if(c.length)return c}return null}(b),d=[];try{d=(await (0,g.AC)(a)).map(a=>e().resolve(a))}catch(a){h.warn("loadEffectiveRoots: could not read persisted roots",a)}if(!c)return d.length?d:null;let f=d.filter(a=>c.some(b=>i(b,a)));return f.length?f:c}},50094:(a,b,c)=>{c.d(b,{filesystemCallTool:()=>C,filesystemToolDefinitions:()=>o});var d=c(33873),e=c.n(d),f=c(29021),g=c(18230),h=c(63129),i=c(94749),j=c(48092);let k=(0,g.h)("backend/services/mcp/internal/filesystemTools");function l(a){return{content:[{type:"text",text:JSON.stringify(a,null,2)}],structuredContent:a}}function m(a){return{content:[{type:"text",text:JSON.stringify({error:a},null,2)}],isError:!0}}function n(a,b){let c="string"==typeof a?a.trim():"";if(!c)throw Error('Provide "path".');let d=(0,h.ok)(),f=e().isAbsolute(c)?e().resolve(c):e().resolve(d,c);if(b&&!b.some(a=>(0,j.FK)(a,f)))throw Error(`Path "${f}" is outside the configured filesystem roots.`);return f}function o(){let a={type:"string",description:"File or directory path. Relative paths resolve against the FLUJO data directory; absolute paths are used as-is."};return[{name:"read_file",description:'Read a text file and return its content. Optionally read only a line range with "from"/"to" (1-based, inclusive). Returns { path, from, to, totalLines, content, truncated }.',inputSchema:{type:"object",properties:{path:a,from:{type:"number",description:"Optional 1-based first line to return (inclusive)."},to:{type:"number",description:"Optional 1-based last line to return (inclusive)."}},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},from:{type:"number"},to:{type:"number"},totalLines:{type:"number"},truncated:{type:"boolean"},content:{type:"string"}},required:["path","from","to","totalLines","truncated","content"]}},{name:"write_file",description:'Create or write a text file (parent directories are created). "mode": "overwrite" (default) replaces the whole file, or a line range when "startLine"/"endLine" (1-based inclusive) are given; "append" adds content at the end; "insert" inserts content before "startLine". Returns { path, bytesWritten, mode, ... }.',inputSchema:{type:"object",properties:{path:a,content:{type:"string",description:"The content to write/insert/append."},mode:{type:"string",enum:["overwrite","append","insert"],description:'Write mode (default "overwrite").'},startLine:{type:"number",description:'For "insert": line to insert before. For "overwrite": first line of the range to replace (1-based).'},endLine:{type:"number",description:'For "overwrite": last line (inclusive, 1-based) of the range to replace.'}},required:["path","content"]},outputSchema:{type:"object",properties:{path:{type:"string"},bytesWritten:{type:"number"},mode:{type:"string"},startLine:{type:"number"},endLine:{type:"number"},linesReplaced:{type:"number"},linesInserted:{type:"number"}},required:["path","bytesWritten","mode"]}},{name:"edit_file",description:'Edit a text file two ways (mutually exclusive): (1) "edits": [{ oldText, newText, startLine?, endLine? }] literal find/replace — each replaces the first (unambiguous) occurrence, optionally scoped to a line range; or (2) "diff": a unified diff string (standard "@@ -a,b +c,d @@" hunks) applied atomically. Fails with no partial write on any mismatch. Returns { path, editsApplied|applied, diff:{added,removed} }.',inputSchema:{type:"object",properties:{path:a,edits:{type:"array",description:"List of literal { oldText, newText } edits applied in order (optionally scoped with startLine/endLine).",items:{type:"object",properties:{oldText:{type:"string",description:"Exact text to find."},newText:{type:"string",description:"Replacement text."},startLine:{type:"number",description:"Optional 1-based first line to scope this edit to."},endLine:{type:"number",description:"Optional 1-based last line (inclusive) to scope this edit to."}},required:["oldText","newText"]}},diff:{type:"string",description:'A unified diff to apply atomically. Mutually exclusive with "edits".'},startLine:{type:"number",description:"Optional default 1-based first line to scope all literal edits to."},endLine:{type:"number",description:"Optional default 1-based last line (inclusive) to scope all literal edits to."}},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},mode:{type:"string"},editsApplied:{type:"number"},applied:{type:"boolean"},diff:{type:"object",properties:{added:{type:"number"},removed:{type:"number"}},required:["added","removed"]}},required:["path","diff"]}},{name:"list_dir",description:'List the entries of a directory. Returns { path, entries: [{ name, type, size }] } where type is "file" | "directory" | "other".',inputSchema:{type:"object",properties:{path:a},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},entries:{type:"array",items:{type:"object",properties:{name:{type:"string"},type:{type:"string"},size:{type:"number"}},required:["name","type","size"]}}},required:["path","entries"]}},{name:"dir_tree",description:"Return a recursive, depth-limited directory tree as nested JSON. Returns { path, depth, tree }.",inputSchema:{type:"object",properties:{path:a,depth:{type:"number",description:"Maximum recursion depth (default 3, max 10)."}},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},depth:{type:"number"},truncated:{type:"boolean"},tree:{type:"array"}},required:["path","depth","tree"]}},{name:"search",description:'Search a directory tree. Match file/dir NAMES against "namePattern" (substring, case-insensitive) and/or file CONTENT against "content" (substring). Returns { matches: [{ path, line?, text? }], truncated }.',inputSchema:{type:"object",properties:{path:a,namePattern:{type:"string",description:"Optional case-insensitive substring to match against entry names."},content:{type:"string",description:"Optional case-insensitive substring to match inside text files."}},required:["path"]},outputSchema:{type:"object",properties:{matches:{type:"array",items:{type:"object",properties:{path:{type:"string"},line:{type:"number"},text:{type:"string"}},required:["path"]}},truncated:{type:"boolean"}},required:["matches","truncated"]}},{name:"get_file_info",description:"Stat a path. Returns { path, type, size, isFile, isDirectory, createdAt, modifiedAt }.",inputSchema:{type:"object",properties:{path:a},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},type:{type:"string"},size:{type:"number"},isFile:{type:"boolean"},isDirectory:{type:"boolean"},createdAt:{type:"string"},modifiedAt:{type:"string"}},required:["path","type","size","isFile","isDirectory","createdAt","modifiedAt"]}},{name:"create_directory",description:"Create a directory (recursively). Succeeds if it already exists. Returns { path, created }.",inputSchema:{type:"object",properties:{path:a},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},created:{type:"boolean"}},required:["path","created"]}},{name:"move",description:'Move or rename a file/directory from "source" to "destination". Returns { source, destination }.',inputSchema:{type:"object",properties:{source:{type:"string",description:"Existing path to move."},destination:{type:"string",description:"Target path."}},required:["source","destination"]},outputSchema:{type:"object",properties:{source:{type:"string"},destination:{type:"string"}},required:["source","destination"]}},{name:"delete",description:'Delete a file or directory. Pass "recursive": true to remove a non-empty directory. Returns { path, deleted }.',inputSchema:{type:"object",properties:{path:a,recursive:{type:"boolean",description:"Remove directories and their contents recursively."}},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},deleted:{type:"boolean"}},required:["path","deleted"]}}]}function p(a){return a.replace(/\r\n?/g,"\n").split("\n")}function q(a){return a.includes("\r\n")?"\r\n":"\n"}async function r(a,b){let c=n(a.path,b),d=await f.promises.readFile(c,"utf8"),e=p(d),g=e.length,h="number"==typeof a.from||"number"==typeof a.to,i="number"==typeof a.from?Math.max(1,Math.floor(a.from)):1,j="number"==typeof a.to?Math.floor(a.to):g;j<i&&([i,j]=[j,i]),j=Math.min(j,g);let k=h?e.slice(i-1,j).join("\n"):d,m=!1;return k.length>2e5&&(k=k.slice(0,2e5)+"\n…[truncated]",m=!0),l({path:c,from:h?i:1,to:h?j:g,totalLines:g,truncated:m,content:k})}async function s(a,b){let c=n(a.path,b),d="string"==typeof a.content?a.content:"",g="append"===a.mode||"insert"===a.mode?a.mode:"overwrite",h="number"==typeof a.startLine||"number"==typeof a.endLine;if(await f.promises.mkdir(e().dirname(c),{recursive:!0}),"overwrite"===g&&!h)return await f.promises.writeFile(c,d,"utf8"),l({path:c,bytesWritten:Buffer.byteLength(d,"utf8"),mode:"overwrite"});let i="";try{i=await f.promises.readFile(c,"utf8")}catch{i=""}if("append"===g){let a=!i.length||i.endsWith("\n")||i.endsWith("\r\n")?"":q(i),b=i+a+d;return await f.promises.writeFile(c,b,"utf8"),l({path:c,bytesWritten:Buffer.byteLength(b,"utf8"),mode:"append"})}let j=q(i),k=i.length?i.split(/\r?\n/):[],m=d.split(/\r?\n/),o=k.length;if("insert"===g){let b="number"==typeof a.startLine?Math.max(1,Math.floor(a.startLine)):o+1,d=Math.min(b-1,o);k.splice(d,0,...m);let e=k.join(j);return await f.promises.writeFile(c,e,"utf8"),l({path:c,bytesWritten:Buffer.byteLength(e,"utf8"),mode:"insert",startLine:b,linesInserted:m.length})}let p="number"==typeof a.startLine?Math.max(1,Math.floor(a.startLine)):1,r="number"==typeof a.endLine?Math.floor(a.endLine):p;r<p&&([p,r]=[r,p]);let s=Math.max(0,(r=Math.min(r,o))-p+1);k.splice(p-1,s,...m);let t=k.join(j);return await f.promises.writeFile(c,t,"utf8"),l({path:c,bytesWritten:Buffer.byteLength(t,"utf8"),mode:"overwrite",startLine:p,endLine:r,linesReplaced:s})}async function t(a,b){let c=n(a.path,b),d="string"==typeof a.diff&&a.diff.trim().length>0,e=Array.isArray(a.edits)&&a.edits.length>0;if(d&&e)return m('Provide either "diff" or "edits", not both.');let g=await f.promises.readFile(c,"utf8");if(d){let b;try{b=function(a,b){let c=a.split("\n"),d=b.split(/\r?\n/),e=/^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/,f=[],g=0,h=0,i=0,j=!1,k=0;for(;k<d.length;){let a=d[k];if(void 0===a)break;if(a.startsWith("--- ")||a.startsWith("+++ ")){k++;continue}let b=e.exec(a);if(!b){k++;continue}j=!0;let l=Math.max(0,parseInt(b[1],10)-1);if(l<g)throw Error("overlapping or out-of-order hunks");for(;g<l&&g<c.length;)f.push(c[g]),g++;for(k++;k<d.length&&!e.test(d[k])&&!d[k].startsWith("--- ");){let a=d[k],b=a.length?a[0]:" ",e=a.length?a.slice(1):"";if(" "===b){let a=c[g];if(a!==e)throw Error(`context mismatch at line ${g+1}: expected ${JSON.stringify(a)}, diff has ${JSON.stringify(e)}`);f.push(c[g]),g++}else if("-"===b){let a=c[g];if(a!==e)throw Error(`removed-line mismatch at line ${g+1}: expected ${JSON.stringify(a)}, diff has ${JSON.stringify(e)}`);g++,i++}else if("+"===b)f.push(e),h++;else if("\\"===b);else throw Error(`unexpected diff line: ${JSON.stringify(a)}`);k++}}if(!j)throw Error("no unified-diff hunks (@@ ... @@) found");for(;g<c.length;)f.push(c[g]),g++;return{result:f.join("\n"),added:h,removed:i}}(g,a.diff)}catch(a){return m(`Diff apply failed: ${a instanceof Error?a.message:String(a)}. No changes written.`)}return await f.promises.writeFile(c,b.result,"utf8"),l({path:c,applied:!0,mode:"diff",diff:{added:b.added,removed:b.removed}})}let h=Array.isArray(a.edits)?a.edits:[];if(0===h.length)return m('Provide a non-empty "edits" array of { oldText, newText } or a "diff" string.');let i="number"==typeof a.startLine?a.startLine:void 0,j="number"==typeof a.endLine?a.endLine:void 0,k=q(g),o=g.replace(/\r\n?/g,"\n"),r=0;for(let a of h){let b="string"==typeof a.oldText?a.oldText.replace(/\r\n?/g,"\n"):"",d="string"==typeof a.newText?a.newText.replace(/\r\n?/g,"\n"):"";if(!b)return m(`Edit #${r+1} has an empty "oldText".`);let e="number"==typeof a.startLine?a.startLine:i,f="number"==typeof a.endLine?a.endLine:j,g=void 0!==e||void 0!==f,{lo:h,hi:k}=function(a,b,c){if(void 0===b&&void 0===c)return{lo:0,hi:a.length};let d=a.split("\n"),e=Math.max(1,Math.floor(b??1)),f=Math.min(d.length,Math.floor(c??d.length)),g=0;for(let a=0;a<e-1&&a<d.length;a++)g+=d[a].length+1;let h=g;for(let a=e-1;a<f&&a<d.length;a++)h+=d[a].length+ +(a<d.length-1);return{lo:g,hi:Math.max(g,h)}}(o,e,f),l=o.indexOf(b,h);if(-1===l||l>=k||l+b.length>k)return m(`Edit #${r+1}: "oldText" not found${g?" in the specified line range":""} in ${c}. No changes written.`);let n=o.indexOf(b,l+1);if(-1!==n&&n<k&&n+b.length<=k)return m(`Edit #${r+1}: "oldText" is ambiguous (appears more than once${g?" in the specified line range":""}). No changes written.`);o=o.slice(0,l)+d+o.slice(l+b.length),r+=1}let s=function(a,b){let c=p(a),d=p(b),e=new Map;for(let a of d)e.set(a,(e.get(a)??0)+1);let f=new Map;for(let a of c)f.set(a,(f.get(a)??0)+1);let g=0;for(let[a,b]of f)g+=Math.max(0,b-(e.get(a)??0));let h=0;for(let[a,b]of e)h+=Math.max(0,b-(f.get(a)??0));return{added:h,removed:g}}(g,o),t="\r\n"===k?o.replace(/\n/g,"\r\n"):o;return await f.promises.writeFile(c,t,"utf8"),l({path:c,mode:"edits",editsApplied:r,diff:s})}async function u(a){try{let b=await f.promises.lstat(a);if(b.isFile())return"file";if(b.isDirectory())return"directory";return"other"}catch{return"other"}}async function v(a,b){let c=n(a.path,b),d=await f.promises.readdir(c),g=await Promise.all(d.map(async a=>{let b=e().join(c,a),d=await u(b),g=0;try{g=(await f.promises.stat(b)).size}catch{}return{name:a,type:d,size:g}}));return g.sort((a,b)=>a.type===b.type?a.name.localeCompare(b.name):"directory"===a.type?-1:1),l({path:c,entries:g})}async function w(a,b){let c=n(a.path,b),d=Math.min("number"==typeof a.depth?Math.max(1,Math.floor(a.depth)):3,10),g=0,h=!1;async function i(a,b){let c;if(b>d||h)return[];try{c=await f.promises.readdir(a)}catch{return[]}c.sort((a,b)=>a.localeCompare(b));let j=[];for(let f of c){if(++g>5e3){h=!0;break}let c=e().join(a,f),k=await u(c),l={name:f,type:k};"directory"===k&&b<d&&(l.children=await i(c,b+1)),j.push(l)}return j}let j=await i(c,1);return l({path:c,depth:d,truncated:h,tree:j})}async function x(a,b){let c=n(a.path,b),d="string"==typeof a.namePattern?a.namePattern.toLowerCase():"",g="string"==typeof a.content?a.content.toLowerCase():"";if(!d&&!g)return m('Provide "namePattern" and/or "content" to search for.');let h=[],i=!1;async function j(a){let b;if(!i){try{b=await f.promises.readdir(a)}catch{return}for(let c of b){if(i)return;let b=e().join(a,c),k=await u(b);if(d&&c.toLowerCase().includes(d)&&(h.push({path:b}),h.length>=1e3)){i=!0;return}if("directory"===k)await j(b);else if("file"===k&&g){let a="";try{a=await f.promises.readFile(b,"utf8")}catch{continue}let c=a.split("\n");for(let a=0;a<c.length;a++)if(c[a].toLowerCase().includes(g)&&(h.push({path:b,line:a+1,text:c[a].slice(0,400)}),h.length>=1e3)){i=!0;return}}}}}return await j(c),l({matches:h,truncated:i})}async function y(a,b){let c=n(a.path,b),d=await f.promises.stat(c);return l({path:c,type:d.isFile()?"file":d.isDirectory()?"directory":"other",size:d.size,isFile:d.isFile(),isDirectory:d.isDirectory(),createdAt:d.birthtime.toISOString(),modifiedAt:d.mtime.toISOString()})}async function z(a,b){let c=n(a.path,b);return await f.promises.mkdir(c,{recursive:!0}),l({path:c,created:!0})}async function A(a,b){let c=n(a.source,b),d=n(a.destination,b);return await f.promises.mkdir(e().dirname(d),{recursive:!0}),await f.promises.rename(c,d),l({source:c,destination:d})}async function B(a,b){let c=n(a.path,b),d=!0===a.recursive;return await f.promises.rm(c,{recursive:d,force:!1}),l({path:c,deleted:!0})}async function C(a,b){try{let c=await (0,j.FN)(i.K3,"FLUJO_FS_ROOTS");switch(a){case"read_file":return await r(b,c);case"write_file":return await s(b,c);case"edit_file":return await t(b,c);case"list_dir":return await v(b,c);case"dir_tree":return await w(b,c);case"search":return await x(b,c);case"get_file_info":return await y(b,c);case"create_directory":return await z(b,c);case"move":return await A(b,c);case"delete":return await B(b,c);default:return m(`Unknown tool on the built-in filesystem server: ${a}`)}}catch(b){return k.warn("filesystemCallTool failed",{toolName:a,err:b}),function(a,b=!1){return{content:[{type:"text",text:a}],...b?{isError:!0}:{}}}(`Tool failed: ${b instanceof Error?b.message:String(b)}`,!0)}}}};
|
|
1
|
+
"use strict";exports.id=94,exports.ids=[94],exports.modules={48092:(a,b,c)=>{c.d(b,{FK:()=>j,FN:()=>l});var d=c(33873),e=c.n(d),f=c(79551),g=c(18230),h=c(94749);let i=(0,g.h)("backend/services/mcp/internal/confinement");function j(a,b){let c=e().relative(a,b);return""===c||!c.startsWith("..")&&!e().isAbsolute(c)}async function k(a,b){let{resolveGlobalVars:d}=await Promise.resolve().then(c.bind(c,87507)),g=(await d(a)).trim();if(!g)return null;if(g.startsWith("file://"))try{return e().resolve((0,f.fileURLToPath)(g))}catch(a){return i.warn(`resolveRootToPath: could not parse file URI "${g}"`,a),null}return e().isAbsolute(g)?e().resolve(g):e().resolve(b,g)}async function l(a,b){let{getDataDir:d}=await Promise.resolve().then(c.bind(c,63129)),f=d(),g=function(a){for(let b of Array.isArray(a)?a:[a]){let a=process.env[b];if(!a||!a.trim())continue;let c=a.split(e().delimiter).map(a=>a.trim()).filter(Boolean).map(a=>e().resolve(a));if(c.length)return c}return null}(b),l=[];try{for(let b of(await (0,h.AC)(a)))l.push(e().isAbsolute(b)?e().resolve(b):e().resolve(f,b))}catch(a){i.warn("loadEffectiveRoots: could not read persisted roots",a)}try{let{getNodeRoots:b}=await Promise.resolve().then(c.bind(c,28181));for(let c of b(a)){let a=await k(c,f);a&&l.push(a)}}catch(a){i.warn("loadEffectiveRoots: could not read node roots",a)}let m=Array.from(new Set(l));if(!g)return m;let n=m.filter(a=>g.some(b=>j(b,a)));return n.length?n:g}},50094:(a,b,c)=>{c.d(b,{filesystemCallTool:()=>D,filesystemToolDefinitions:()=>p});var d=c(33873),e=c.n(d),f=c(29021),g=c(18230),h=c(63129),i=c(94749),j=c(48092);let k=(0,g.h)("backend/services/mcp/internal/filesystemTools");function l(a){return{content:[{type:"text",text:JSON.stringify(a,null,2)}],structuredContent:a}}function m(a,b=!1){return{content:[{type:"text",text:a}],...b?{isError:!0}:{}}}function n(a){return{content:[{type:"text",text:JSON.stringify({error:a},null,2)}],isError:!0}}function o(a,b){let c="string"==typeof a?a.trim():"";if(!c)throw Error('Provide "path".');let d=(0,h.getDataDir)(),f=e().isAbsolute(c)?e().resolve(c):e().resolve(d,c);if(0===b.length||!b.some(a=>(0,j.FK)(a,f)))throw Error(`Path "${f}" is outside the configured filesystem roots.`);return f}function p(){let a={type:"string",description:"File or directory path. Relative paths resolve against the FLUJO data directory; absolute paths are used as-is."};return[{name:"read_file",description:'Read a text file and return its content. Optionally read only a line range with "from"/"to" (1-based, inclusive). Returns { path, from, to, totalLines, content, truncated }.',inputSchema:{type:"object",properties:{path:a,from:{type:"number",description:"Optional 1-based first line to return (inclusive)."},to:{type:"number",description:"Optional 1-based last line to return (inclusive)."}},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},from:{type:"number"},to:{type:"number"},totalLines:{type:"number"},truncated:{type:"boolean"},content:{type:"string"}},required:["path","from","to","totalLines","truncated","content"]}},{name:"write_file",description:'Create or write a text file (parent directories are created). "mode": "overwrite" (default) replaces the whole file, or a line range when "startLine"/"endLine" (1-based inclusive) are given; "append" adds content at the end; "insert" inserts content before "startLine". Returns { path, bytesWritten, mode, ... }.',_meta:{ui:{resourceUri:"ui://devcanvas/diff"}},inputSchema:{type:"object",properties:{path:a,content:{type:"string",description:"The content to write/insert/append."},mode:{type:"string",enum:["overwrite","append","insert"],description:'Write mode (default "overwrite").'},startLine:{type:"number",description:'For "insert": line to insert before. For "overwrite": first line of the range to replace (1-based).'},endLine:{type:"number",description:'For "overwrite": last line (inclusive, 1-based) of the range to replace.'}},required:["path","content"]},outputSchema:{type:"object",properties:{path:{type:"string"},bytesWritten:{type:"number"},mode:{type:"string"},startLine:{type:"number"},endLine:{type:"number"},linesReplaced:{type:"number"},linesInserted:{type:"number"}},required:["path","bytesWritten","mode"]}},{name:"edit_file",description:'Edit a text file two ways (mutually exclusive): (1) "edits": [{ oldText, newText, startLine?, endLine? }] literal find/replace — each replaces the unique occurrence of oldText. startLine/endLine are an optional disambiguation HINT (if exactly one match starts in that range it wins); a wrong/missing range still works as long as oldText is unique in the file. Include enough surrounding context to make oldText unique. Or (2) "diff": a unified diff string ("@@ -a,b +c,d @@" hunks) applied atomically — hunks are relocated to where their context actually matches, so slightly-off @@ line numbers still apply, and CRLF files are handled. Fails with no partial write only when text is missing/ambiguous or a hunk context is not found. Returns { path, editsApplied|applied, diff:{added,removed} }.',_meta:{ui:{resourceUri:"ui://devcanvas/diff"}},inputSchema:{type:"object",properties:{path:a,edits:{type:"array",description:"List of literal { oldText, newText } edits applied in order (optionally scoped with startLine/endLine).",items:{type:"object",properties:{oldText:{type:"string",description:"Exact text to find."},newText:{type:"string",description:"Replacement text."},startLine:{type:"number",description:"Optional 1-based first line to scope this edit to."},endLine:{type:"number",description:"Optional 1-based last line (inclusive) to scope this edit to."}},required:["oldText","newText"]}},diff:{type:"string",description:'A unified diff to apply atomically. Mutually exclusive with "edits".'},startLine:{type:"number",description:"Optional default 1-based first line to scope all literal edits to."},endLine:{type:"number",description:"Optional default 1-based last line (inclusive) to scope all literal edits to."}},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},mode:{type:"string"},editsApplied:{type:"number"},applied:{type:"boolean"},diff:{type:"object",properties:{added:{type:"number"},removed:{type:"number"}},required:["added","removed"]}},required:["path","diff"]}},{name:"list_dir",description:'List the entries of a directory. Returns { path, entries: [{ name, type, size }] } where type is "file" | "directory" | "other".',inputSchema:{type:"object",properties:{path:a},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},entries:{type:"array",items:{type:"object",properties:{name:{type:"string"},type:{type:"string"},size:{type:"number"}},required:["name","type","size"]}}},required:["path","entries"]}},{name:"file_browser_ui",description:'Open an interactive file browser in the chat so the USER can pick a file. This returns IMMEDIATELY without a selection — the browser is shown to the user and the file they choose arrives afterwards as a follow-up user message (e.g. "Selected file: <path>"). After calling this tool you MUST stop and wait for that message; do not guess a path or continue until the user has selected.',_meta:{ui:{resourceUri:"ui://filesystem/browser"}},inputSchema:{type:"object",properties:{path:{...a,description:"Optional starting directory for the browser (defaults to the FLUJO data directory)."}},required:[]}},{name:"dir_tree",description:"Return a recursive, depth-limited directory tree as nested JSON. Returns { path, depth, tree }.",inputSchema:{type:"object",properties:{path:a,depth:{type:"number",description:"Maximum recursion depth (default 3, max 10)."}},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},depth:{type:"number"},truncated:{type:"boolean"},tree:{type:"array"}},required:["path","depth","tree"]}},{name:"search",description:'Search a directory tree. Match file/dir NAMES against "namePattern" (substring, case-insensitive) and/or file CONTENT against "content" (substring). Returns { matches: [{ path, line?, text? }], truncated }.',inputSchema:{type:"object",properties:{path:a,namePattern:{type:"string",description:"Optional case-insensitive substring to match against entry names."},content:{type:"string",description:"Optional case-insensitive substring to match inside text files."}},required:["path"]},outputSchema:{type:"object",properties:{matches:{type:"array",items:{type:"object",properties:{path:{type:"string"},line:{type:"number"},text:{type:"string"}},required:["path"]}},truncated:{type:"boolean"}},required:["matches","truncated"]}},{name:"get_file_info",description:"Stat a path. Returns { path, type, size, isFile, isDirectory, createdAt, modifiedAt }.",inputSchema:{type:"object",properties:{path:a},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},type:{type:"string"},size:{type:"number"},isFile:{type:"boolean"},isDirectory:{type:"boolean"},createdAt:{type:"string"},modifiedAt:{type:"string"}},required:["path","type","size","isFile","isDirectory","createdAt","modifiedAt"]}},{name:"create_directory",description:"Create a directory (recursively). Succeeds if it already exists. Returns { path, created }.",inputSchema:{type:"object",properties:{path:a},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},created:{type:"boolean"}},required:["path","created"]}},{name:"move",description:'Move or rename a file/directory from "source" to "destination". Returns { source, destination }.',inputSchema:{type:"object",properties:{source:{type:"string",description:"Existing path to move."},destination:{type:"string",description:"Target path."}},required:["source","destination"]},outputSchema:{type:"object",properties:{source:{type:"string"},destination:{type:"string"}},required:["source","destination"]}},{name:"delete",description:'Delete a file or directory. Pass "recursive": true to remove a non-empty directory. Returns { path, deleted }.',inputSchema:{type:"object",properties:{path:a,recursive:{type:"boolean",description:"Remove directories and their contents recursively."}},required:["path"]},outputSchema:{type:"object",properties:{path:{type:"string"},deleted:{type:"boolean"}},required:["path","deleted"]}}]}function q(a){return a.replace(/\r\n?/g,"\n").split("\n")}function r(a){return a.includes("\r\n")?"\r\n":"\n"}async function s(a,b){let c=o(a.path,b),d=await f.promises.readFile(c,"utf8"),e=q(d),g=e.length,h="number"==typeof a.from||"number"==typeof a.to,i="number"==typeof a.from?Math.max(1,Math.floor(a.from)):1,j="number"==typeof a.to?Math.floor(a.to):g;j<i&&([i,j]=[j,i]),j=Math.min(j,g);let k=h?e.slice(i-1,j).join("\n"):d,m=!1;return k.length>2e5&&(k=k.slice(0,2e5)+"\n…[truncated]",m=!0),l({path:c,from:h?i:1,to:h?j:g,totalLines:g,truncated:m,content:k})}async function t(a,b){let c=o(a.path,b),d="string"==typeof a.content?a.content:"",g="append"===a.mode||"insert"===a.mode?a.mode:"overwrite",h="number"==typeof a.startLine||"number"==typeof a.endLine;if(await f.promises.mkdir(e().dirname(c),{recursive:!0}),"overwrite"===g&&!h)return await f.promises.writeFile(c,d,"utf8"),l({path:c,bytesWritten:Buffer.byteLength(d,"utf8"),mode:"overwrite"});let i="";try{i=await f.promises.readFile(c,"utf8")}catch{i=""}if("append"===g){let a=!i.length||i.endsWith("\n")||i.endsWith("\r\n")?"":r(i),b=i+a+d;return await f.promises.writeFile(c,b,"utf8"),l({path:c,bytesWritten:Buffer.byteLength(b,"utf8"),mode:"append"})}let j=r(i),k=i.length?i.split(/\r?\n/):[],m=d.split(/\r?\n/),n=k.length;if("insert"===g){let b="number"==typeof a.startLine?Math.max(1,Math.floor(a.startLine)):n+1,d=Math.min(b-1,n);k.splice(d,0,...m);let e=k.join(j);return await f.promises.writeFile(c,e,"utf8"),l({path:c,bytesWritten:Buffer.byteLength(e,"utf8"),mode:"insert",startLine:b,linesInserted:m.length})}let p="number"==typeof a.startLine?Math.max(1,Math.floor(a.startLine)):1,q="number"==typeof a.endLine?Math.floor(a.endLine):p;q<p&&([p,q]=[q,p]);let s=Math.max(0,(q=Math.min(q,n))-p+1);k.splice(p-1,s,...m);let t=k.join(j);return await f.promises.writeFile(c,t,"utf8"),l({path:c,bytesWritten:Buffer.byteLength(t,"utf8"),mode:"overwrite",startLine:p,endLine:q,linesReplaced:s})}async function u(a,b){let c=o(a.path,b),d="string"==typeof a.diff&&a.diff.trim().length>0,e=Array.isArray(a.edits)&&a.edits.length>0;if(d&&e)return n('Provide either "diff" or "edits", not both.');let g=await f.promises.readFile(c,"utf8");if(d){let b,d=r(g),e=g.replace(/\r\n?/g,"\n");try{b=function(a,b){let c=a.split("\n"),d=b.split(/\r?\n/),e=/^@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/,f=[],g=null;for(let a=0;a<d.length;a++){let b=d[a];if(void 0===b)break;let c=e.exec(b);if(c){g={oldStart:parseInt(c[1],10),ops:[]},f.push(g);continue}if(b.startsWith("--- ")||b.startsWith("+++ ")){g=null;continue}if(!g)continue;let h=b.length?b[0]:" ",i=b.length?b.slice(1):"";if(" "===h||"-"===h||"+"===h)g.ops.push({tag:h,body:i});else if("\\"===h);else throw Error(`unexpected diff line: ${JSON.stringify(b)}`)}if(0===f.length)throw Error("no unified-diff hunks (@@ ... @@) found");let h=[],i=0,j=0,k=0;for(let a of f){let b=function(a,b,c,d){if(0===b.length)return Math.min(Math.max(c,d),a.length);let e=a.length-b.length,f=c=>{if(c<d||c>e)return!1;for(let d=0;d<b.length;d++)if(a[c+d]!==b[d])return!1;return!0},g=Math.max(d,c);if(f(g))return g;let h=Math.max(g-d,e-g);for(let a=1;a<=h;a++){if(f(g-a))return g-a;if(f(g+a))return g+a}throw Error(`could not locate hunk near line ${c+1}; its context/removed lines do not match the file. First expected line: ${JSON.stringify(b[0])}`)}(c,a.ops.filter(a=>" "===a.tag||"-"===a.tag).map(a=>a.body),Math.max(0,a.oldStart-1),i);if(b<i)throw Error("overlapping or out-of-order hunks");for(;i<b;)h.push(c[i]),i++;for(let b of a.ops)" "===b.tag?(h.push(c[i]),i++):"-"===b.tag?(i++,k++):(h.push(b.body),j++)}for(;i<c.length;)h.push(c[i]),i++;return{result:h.join("\n"),added:j,removed:k}}(e,a.diff)}catch(a){return n(`Diff apply failed: ${a instanceof Error?a.message:String(a)}. No changes written.`)}let h="\r\n"===d?b.result.replace(/\n/g,"\r\n"):b.result;return await f.promises.writeFile(c,h,"utf8"),l({path:c,applied:!0,mode:"diff",diff:{added:b.added,removed:b.removed}})}let h=Array.isArray(a.edits)?a.edits:[];if(0===h.length)return n('Provide a non-empty "edits" array of { oldText, newText } or a "diff" string.');let i="number"==typeof a.startLine?a.startLine:void 0,j="number"==typeof a.endLine?a.endLine:void 0,k=r(g),m=g.replace(/\r\n?/g,"\n"),p=0;for(let a of h){let b="string"==typeof a.oldText?a.oldText.replace(/\r\n?/g,"\n"):"",d="string"==typeof a.newText?a.newText.replace(/\r\n?/g,"\n"):"";if(!b)return n(`Edit #${p+1} has an empty "oldText".`);let e="number"==typeof a.startLine?a.startLine:i,f="number"==typeof a.endLine?a.endLine:j,g=void 0!==e||void 0!==f,h=[];for(let a=m.indexOf(b);-1!==a;a=m.indexOf(b,a+1))h.push(a);if(0===h.length)return n(`Edit #${p+1}: "oldText" not found in ${c}. No changes written.`);let k=-1;if(g){let{lo:a,hi:b}=function(a,b,c){if(void 0===b&&void 0===c)return{lo:0,hi:a.length};let d=a.split("\n"),e=Math.max(1,Math.floor(b??1)),f=Math.min(d.length,Math.floor(c??d.length)),g=0;for(let a=0;a<e-1&&a<d.length;a++)g+=d[a].length+1;let h=g;for(let a=e-1;a<f&&a<d.length;a++)h+=d[a].length+ +(a<d.length-1);return{lo:g,hi:Math.max(g,h)}}(m,e,f),c=h.filter(c=>c>=a&&c<b);1===c.length&&(k=c[0])}if(-1===k)if(1!==h.length)return n(`Edit #${p+1}: "oldText" is ambiguous (appears ${h.length} times); add more surrounding context or a tighter startLine/endLine so exactly one occurrence is in range. No changes written.`);else k=h[0];m=m.slice(0,k)+d+m.slice(k+b.length),p+=1}let s=function(a,b){let c=q(a),d=q(b),e=new Map;for(let a of d)e.set(a,(e.get(a)??0)+1);let f=new Map;for(let a of c)f.set(a,(f.get(a)??0)+1);let g=0;for(let[a,b]of f)g+=Math.max(0,b-(e.get(a)??0));let h=0;for(let[a,b]of e)h+=Math.max(0,b-(f.get(a)??0));return{added:h,removed:g}}(g,m),t="\r\n"===k?m.replace(/\n/g,"\r\n"):m;return await f.promises.writeFile(c,t,"utf8"),l({path:c,mode:"edits",editsApplied:p,diff:s})}async function v(a){try{let b=await f.promises.lstat(a);if(b.isFile())return"file";if(b.isDirectory())return"directory";return"other"}catch{return"other"}}async function w(a,b){let c=o(a.path,b),d=await f.promises.readdir(c),g=await Promise.all(d.map(async a=>{let b=e().join(c,a),d=await v(b),g=0;try{g=(await f.promises.stat(b)).size}catch{}return{name:a,type:d,size:g}}));return g.sort((a,b)=>a.type===b.type?a.name.localeCompare(b.name):"directory"===a.type?-1:1),l({path:c,entries:g})}async function x(a,b){let c=o(a.path,b),d=Math.min("number"==typeof a.depth?Math.max(1,Math.floor(a.depth)):3,10),g=0,h=!1;async function i(a,b){let c;if(b>d||h)return[];try{c=await f.promises.readdir(a)}catch{return[]}c.sort((a,b)=>a.localeCompare(b));let j=[];for(let f of c){if(++g>5e3){h=!0;break}let c=e().join(a,f),k=await v(c),l={name:f,type:k};"directory"===k&&b<d&&(l.children=await i(c,b+1)),j.push(l)}return j}let j=await i(c,1);return l({path:c,depth:d,truncated:h,tree:j})}async function y(a,b){let c=o(a.path,b),d="string"==typeof a.namePattern?a.namePattern.toLowerCase():"",g="string"==typeof a.content?a.content.toLowerCase():"";if(!d&&!g)return n('Provide "namePattern" and/or "content" to search for.');let h=[],i=!1;async function j(a){let b;if(!i){try{b=await f.promises.readdir(a)}catch{return}for(let c of b){if(i)return;let b=e().join(a,c),k=await v(b);if(d&&c.toLowerCase().includes(d)&&(h.push({path:b}),h.length>=1e3)){i=!0;return}if("directory"===k)await j(b);else if("file"===k&&g){let a="";try{a=await f.promises.readFile(b,"utf8")}catch{continue}let c=a.split("\n");for(let a=0;a<c.length;a++)if(c[a].toLowerCase().includes(g)&&(h.push({path:b,line:a+1,text:c[a].slice(0,400)}),h.length>=1e3)){i=!0;return}}}}}return await j(c),l({matches:h,truncated:i})}async function z(a,b){let c=o(a.path,b),d=await f.promises.stat(c);return l({path:c,type:d.isFile()?"file":d.isDirectory()?"directory":"other",size:d.size,isFile:d.isFile(),isDirectory:d.isDirectory(),createdAt:d.birthtime.toISOString(),modifiedAt:d.mtime.toISOString()})}async function A(a,b){let c=o(a.path,b);return await f.promises.mkdir(c,{recursive:!0}),l({path:c,created:!0})}async function B(a,b){let c=o(a.source,b),d=o(a.destination,b);return await f.promises.mkdir(e().dirname(d),{recursive:!0}),await f.promises.rename(c,d),l({source:c,destination:d})}async function C(a,b){let c=o(a.path,b),d=!0===a.recursive;return await f.promises.rm(c,{recursive:d,force:!1}),l({path:c,deleted:!0})}async function D(a,b){try{if("file_browser_ui"===a)return m("File browser shown to the user. Waiting for them to select a file — their choice will arrive as a follow-up message. Do not proceed until then.");let c=await (0,j.FN)(i.K3,"FLUJO_FS_ROOTS");switch(a){case"read_file":return await s(b,c);case"write_file":return await t(b,c);case"edit_file":return await u(b,c);case"list_dir":return await w(b,c);case"dir_tree":return await x(b,c);case"search":return await y(b,c);case"get_file_info":return await z(b,c);case"create_directory":return await A(b,c);case"move":return await B(b,c);case"delete":return await C(b,c);default:return n(`Unknown tool on the built-in filesystem server: ${a}`)}}catch(b){return k.warn("filesystemCallTool failed",{toolName:a,err:b}),m(`Tool failed: ${b instanceof Error?b.message:String(b)}`,!0)}}}};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
exports.id=9400,exports.ids=[1925,4306,9400],exports.modules={1925:(a,b,c)=>{"use strict";c.d(b,{Hm:()=>f,xc:()=>e});let d=["key","secret","token","password"],e=a=>d.some(b=>a.toLowerCase().includes(b)),f=a=>e(a)||"authorization"===a.trim().toLowerCase()},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}},37426:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"40ec842092ea232b6d4aa599a380d422184da5e1ca":()=>d.
|
|
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,
|
|
1
|
+
exports.id=9400,exports.ids=[1925,4306,9400],exports.modules={1925:(a,b,c)=>{"use strict";c.d(b,{Hm:()=>f,xc:()=>e});let d=["key","secret","token","password"],e=a=>d.some(b=>a.toLowerCase().includes(b)),f=a=>e(a)||"authorization"===a.trim().toLowerCase()},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}},37426:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"40ec842092ea232b6d4aa599a380d422184da5e1ca":()=>d.resolveGlobalVars,"602ea7ca289a8eaa1000fb321a71e292e6c766b6bb":()=>d.G});var d=c(73456)},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,resolveGlobalVars:()=>k});var d=c(75879);c(68633);var e=c(50846),f=c(92372),g=c(38844),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,"40ec842092ea232b6d4aa599a380d422184da5e1ca",null),(0,d.A)(l,"602ea7ca289a8eaa1000fb321a71e292e6c766b6bb",null)},75879:(a,b,c)=>{"use strict";Object.defineProperty(b,"A",{enumerable:!0,get:function(){return d.registerServerReference}});let d=c(97954)},78335:()=>{},96487:()=>{},97020:(a,b,c)=>{"use strict";c.d(b,{Af:()=>g,PK:()=>f,Pq:()=>e});var d=c(24463);function e(a,b=200){return new Response(JSON.stringify(a),{status:b,headers:{"Content-Type":"application/json"}})}function f(a){return"string"!=typeof a||0===a.length?"A non-empty server name is required":a.length>200?"Server name must be 200 characters or fewer":"."===a||".."===a?'Server name cannot be "." or ".."':/[/\\\x00-\x1f]/.test(a)?'Server name cannot contain "/", "\\", or control characters':null}async function g(a){let b=await d.mcpService.loadServerConfigs();return Array.isArray(b)?{config:b.find(b=>b.name===a)}:{error:b.error||"Failed to load server configs"}}}};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
exports.id=9472,exports.ids=[1925,4306,9472],exports.modules={1925:(a,b,c)=>{"use strict";c.d(b,{Hm:()=>f,xc:()=>e});let d=["key","secret","token","password"],e=a=>d.some(b=>a.toLowerCase().includes(b)),f=a=>e(a)||"authorization"===a.trim().toLowerCase()},37426:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"40ec842092ea232b6d4aa599a380d422184da5e1ca":()=>d.
|
|
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}})},53119:(a,b,c)=>{"use strict";c.d(b,{x:()=>k,m:()=>l});let d=["https://registry.modelcontextprotocol.io/?q=ai.keenable%2Fweb-search","https://registry.modelcontextprotocol.io/v0.1/servers/io.github.mario-andreschak%2Fmcp-abap-adt/versions",{url:"https://registry.modelcontextprotocol.io/v0.1/servers/io.github.microsoft%2Fplaywright-mcp/versions",env:{PLAYWRIGHT_MCP_BROWSER:"msedge"}}];function e(a){return"string"==typeof a?{url:a}:a}var f=c(
|
|
1
|
+
exports.id=9472,exports.ids=[1925,4306,9472],exports.modules={1925:(a,b,c)=>{"use strict";c.d(b,{Hm:()=>f,xc:()=>e});let d=["key","secret","token","password"],e=a=>d.some(b=>a.toLowerCase().includes(b)),f=a=>e(a)||"authorization"===a.trim().toLowerCase()},37426:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"40ec842092ea232b6d4aa599a380d422184da5e1ca":()=>d.resolveGlobalVars,"602ea7ca289a8eaa1000fb321a71e292e6c766b6bb":()=>d.G});var d=c(73456)},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}})},53119:(a,b,c)=>{"use strict";c.d(b,{x:()=>k,m:()=>l});let d=["https://registry.modelcontextprotocol.io/?q=ai.keenable%2Fweb-search","https://registry.modelcontextprotocol.io/v0.1/servers/io.github.mario-andreschak%2Fmcp-abap-adt/versions",{url:"https://registry.modelcontextprotocol.io/v0.1/servers/io.github.microsoft%2Fplaywright-mcp/versions",env:{PLAYWRIGHT_MCP_BROWSER:"msedge"}}];function e(a){return"string"==typeof a?{url:a}:a}var f=c(38844),g=c(92372),h=c(25250),i=c(8665);let j=(0,c(50846).h)("backend/services/spotlight");async function k(){return(0,g.YM)(f.Z.SPOTLIGHT_SERVERS,null)}function l(){return global.__flujo_spotlight_refresh||(global.__flujo_spotlight_refresh=m().finally(()=>{global.__flujo_spotlight_refresh=void 0})),global.__flujo_spotlight_refresh}async function m(){let a=d.map(e);j.info(`Refreshing spotlight servers (${a.length} entries)`);let b=[];for(let c of a){let{url:a,env:d}=c,e=(0,h.XQ)(a);if(!e){j.warn(`Unrecognized spotlight URL format: ${a}`),b.push({url:a,env:d,error:"Unrecognized spotlight URL format"});continue}try{let c=await (0,i.Ws)(new URL(i.jD+e),15e3),f=(0,h.zz)(c);f?b.push({url:a,env:d,result:f}):(j.warn(`Spotlight URL resolved to no server: ${a}`),b.push({url:a,env:d,error:"No matching server found in the registry"}))}catch(e){let c=e instanceof Error?e.message:"Unknown error";j.warn(`Failed to resolve spotlight URL ${a}: ${c}`),b.push({url:a,env:d,error:c})}await new Promise(a=>setTimeout(a,250))}let c={updatedAt:new Date().toISOString(),entries:b},l=await k();if(l){for(let a of c.entries)if(!a.result){let b=l.entries.find(b=>b.url===a.url&&b.result);b?.result&&(a.result=b.result)}}await (0,g.VH)(f.Z.SPOTLIGHT_SERVERS,c);let m=c.entries.filter(a=>a.result).length;return j.info(`Spotlight refresh complete: ${m}/${c.entries.length} entries resolved`),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)()}})}},72937:(a,b,c)=>{"use strict";c.d(b,{H:()=>j,t:()=>m});var d=c(92372),e=c(24463),f=c(53119),g=c(4771),h=c(58739);let i=(0,c(50846).h)("backend/init");function j(){return global.__flujo_init_promise||(global.__flujo_init_promise=k().catch(a=>{throw global.__flujo_init_promise=void 0,a})),global.__flujo_init_promise}async function k(){if(await (0,d.Pv)(),(0,f.m)().catch(a=>i.warn("Spotlight refresh failed at startup:",a)),await (0,h.isEncryptionLocked)())return void i.info("Encryption locked — deferring MCP/scheduler startup until unlock");await l()}function l(){return global.__flujo_secret_services_promise||(global.__flujo_secret_services_promise=(async()=>{i.info("Initializing MCP servers"),await e.mcpService.startEnabledServers().catch(a=>{i.error("Failed to start enabled servers:",a)}),await (0,g.getSchedulerService)().start().catch(a=>i.error("Failed to start scheduler:",a))})()),global.__flujo_secret_services_promise}async function m(){await (0,h.isUserEncryptionEnabled)()&&(i.info("Encryption unlocked — starting deferred MCP/scheduler startup"),await l())}},73456:(a,b,c)=>{"use strict";c.d(b,{G:()=>l,resolveGlobalVars:()=>k});var d=c(75879);c(68633);var e=c(50846),f=c(92372),g=c(38844),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,"40ec842092ea232b6d4aa599a380d422184da5e1ca",null),(0,d.A)(l,"602ea7ca289a8eaa1000fb321a71e292e6c766b6bb",null)},75879:(a,b,c)=>{"use strict";Object.defineProperty(b,"A",{enumerable:!0,get:function(){return d.registerServerReference}});let d=c(97954)},78335:()=>{},96487:()=>{}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=9671,exports.ids=[9671],exports.modules={24856:(a,b,c)=>{c.d(b,{pX:()=>d});function d(a,b,c,d){let e=`${a.type}-bottom`,f=`${b.type}-top`;return{id:`${a.id}:${e}->${b.id}:${f}`,source:a.id,sourceHandle:e,target:b.id,targetHandle:f,type:"custom",data:{edgeType:"standard",...c?{bidirectional:!0}:{},...d?{condition:d}:{}},animated:!0}}},29237:(a,b,c)=>{c.d(b,{C:()=>f,L2:()=>e,P2:()=>h,w4:()=>d,wM:()=>g});let d=["contains","regex","equals","always"],e=["last-assistant","last-message"];function f(a){return"string"==typeof a&&d.includes(a)}function g(a){try{return new RegExp(a),!0}catch{return!1}}function h(a){if(!a||!f(a.kind))return"";let b=a.negate?"!":"";if("always"===a.kind)return`${b}always`;let c=a.ignoreCase?" i":"",d="string"==typeof a.value?a.value:"",e=d.length>8?`${d.slice(0,8)}…`:d,g="regex"===a.kind?`/${e}/`:`"${e}"`;return`${b}${a.kind}:${g}${c}`}},31164:(a,b,c)=>{c.d(b,{jY:()=>f,oY:()=>g,sZ:()=>h});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"}),h=a=>(0,d.jsx)(e.A,{...a,variant:"resource"})},36627:(a,b,c)=>{function d(a){return!!a&&a.includes("mcp")}function e(a){return!!a&&a.includes("resource")}function f(a){let b=a?.data?.edgeType;return"mcp"===b||"resource"===b}function g(a,b,c,f){if("start"===c)return"Start nodes cannot have incoming connections";if("finish"===a)return"Finish nodes cannot have outgoing connections";if("mcp"===a||"mcp"===c||d(b)||d(f))return("mcp"!==a||"process"!==c)&&("process"!==a||"mcp"!==c)?"MCP connections must link an MCP node to a Process node via MCP handles":"process"!==a||d(b)?null:"Connect MCP nodes from the Process node's left/right MCP handles";if("resource"===a||"resource"===c||e(b)||e(f)){if(("resource"!==a||"process"!==c)&&("process"!==a||"resource"!==c))return"Resource connections must link a Resource node to a Process node via resource handles";if("process"===a&&!e(b))return"Connect Resource nodes from the Process node's left/right resource handles"}return null}function h(a,b){return"resource"===a?"resource-in":"process"===a&&e(b)?"process-left-resource":"process"===a&&d(b)?"process-left-mcp":`${a}-top`}function i(a,b){let c=["process","finish","mcp","subflow","resource","signal"];return a&&b?c.filter(c=>null===g(a,b,c,h(c,b))):c}c.d(b,{BY:()=>f,CW:()=>h,_w:()=>i,vC:()=>g,vM:()=>e,z5:()=>d})},57361:(a,b,c)=>{c.d(b,{Ay:()=>Y,nd:()=>U,c_:()=>T});var d=c(21124),e=c(38301),f=c(6537),g=c(81637),h=c(79515),i=c(95791),j=c(46973),k=c(60839),l=c(18168),m=c(2117),n=c(63281),o=c(8070),p=c(94367),q=c(50553),r=c(84233),s=c(91059),t=c(7118),u=c(91034),v=c(38941),w=c(95345),x=c(12033),y=c(1010);let z=({open:a,position:b,onClose:c,onDelete:e,onEditProperties:f,onToggleBidirectional:g,onCopy:h,onPaste:i,canPaste:j,canCopy:k,nodeId:l,selection:m,edgeId:n})=>{let o=()=>{f&&f(),c()},z=[];return l&&!m&&z.push((0,d.jsxs)(p.A,{onClick:o,children:[(0,d.jsx)(q.A,{children:(0,d.jsx)(x.A,{fontSize:"small"})}),(0,d.jsx)(r.A,{children:"Edit Properties"})]},"edit")),n&&!l&&!m&&(f&&z.push((0,d.jsxs)(p.A,{onClick:o,children:[(0,d.jsx)(q.A,{children:(0,d.jsx)(x.A,{fontSize:"small"})}),(0,d.jsx)(r.A,{children:"Edit Properties"})]},"edge-edit")),g&&z.push((0,d.jsxs)(p.A,{onClick:()=>{g&&g(),c()},children:[(0,d.jsx)(q.A,{children:(0,d.jsx)(y.A,{fontSize:"small"})}),(0,d.jsx)(r.A,{children:"Toggle Bidirectional"})]},"edge-bidirectional"))),h&&(l||m)&&z.push((0,d.jsxs)(p.A,{onClick:()=>{h&&h(),c()},disabled:!k,children:[(0,d.jsx)(q.A,{children:(0,d.jsx)(v.A,{fontSize:"small"})}),(0,d.jsx)(r.A,{children:"Copy"})]},"copy")),i&&z.push((0,d.jsxs)(p.A,{onClick:()=>{i&&i(),c()},disabled:!j,children:[(0,d.jsx)(q.A,{children:(0,d.jsx)(w.A,{fontSize:"small"})}),(0,d.jsx)(r.A,{children:"Paste"})]},"paste")),(l||n||m)&&z.push((0,d.jsx)(s.A,{},"delete-divider"),(0,d.jsxs)(p.A,{onClick:()=>{e(),c()},sx:{color:"error.main"},children:[(0,d.jsx)(q.A,{sx:{color:"error.main"},children:(0,d.jsx)(u.A,{fontSize:"small"})}),(0,d.jsx)(r.A,{children:"Delete"})]},"delete")),(0,d.jsx)(t.A,{open:a,onClose:c,anchorReference:"anchorPosition",anchorPosition:null!==b.y&&null!==b.x?{top:b.y,left:b.x}:void 0,children:z})};var A=c(31164),B=c(97004);function C(a,b){return b.find(b=>b.id===a)}var D=c(19815);let E=(0,D.h)("components/flow/FlowBuilder/Canvas/hooks/useCanvasEvents.ts");var F=c(90430),G=c(36627),H=c(68730),I=c(43312),J=c(34229),K=c(48440),L=c(1618);let M=(0,l.Ay)(H.A)(({theme:a})=>({minWidth:"36px",padding:"6px",margin:"0 4px",backgroundColor:"dark"===a.palette.mode?"rgba(255, 255, 255, 0.05)":"rgba(0, 0, 0, 0.02)","&:hover":{backgroundColor:"dark"===a.palette.mode?"rgba(255, 255, 255, 0.1)":"rgba(0, 0, 0, 0.05)"}})),N=()=>{let{zoomIn:a,zoomOut:b,fitView:c}=(0,i.VH)();return(0,d.jsx)(i.Zk,{position:"top-right",style:{margin:"10px"},children:(0,d.jsxs)("div",{style:{display:"flex",gap:"5px"},children:[(0,d.jsx)(I.A,{title:"Zoom In",children:(0,d.jsx)(M,{variant:"outlined",size:"small",onClick:()=>a(),children:(0,d.jsx)(J.A,{fontSize:"small"})})}),(0,d.jsx)(I.A,{title:"Zoom Out",children:(0,d.jsx)(M,{variant:"outlined",size:"small",onClick:()=>b(),children:(0,d.jsx)(K.A,{fontSize:"small"})})}),(0,d.jsx)(I.A,{title:"Fit View",children:(0,d.jsx)(M,{variant:"outlined",size:"small",onClick:()=>c(),children:(0,d.jsx)(L.A,{fontSize:"small"})})})]})})},O=({showMiniMap:a=!0,showControls:b=!0,showBackground:c=!0})=>{let e=(0,k.A)(),f="dark"===e.palette.mode;return(0,d.jsxs)(d.Fragment,{children:[c&&(0,d.jsx)(i.VS,{color:f?e.palette.text.disabled:e.palette.divider,gap:20,size:1}),b&&(0,d.jsx)(i.H2,{}),a&&(0,d.jsx)(i.of,{nodeColor:f?e.palette.primary.dark:e.palette.primary.light,maskColor:f?"rgba(0, 0, 0, 0.4)":"rgba(255, 255, 255, 0.6)"})]})},P=(0,D.h)("components/flow/FlowBuilder/Canvas/Canvas.tsx"),Q="flujo:flowClipboard",R=null;function S(a){R=a;try{localStorage.setItem(Q,JSON.stringify(a))}catch(a){P.warn("Could not persist flow clipboard to localStorage",a)}}let T={start:o.vm,process:o.Uw,finish:o.IK,mcp:o.v2,subflow:o.lA,resource:o.z9,signal:o.z3},U={custom:A.jY,mcpEdge:A.oY,resourceEdge:A.sZ},V=({open:a,position:b,onClose:c,onSelectNodeType:e,sourceNodeType:i,sourceHandleId:j})=>{let l=(0,k.A)(),m=(0,G._w)(i,j);P.debug(`NodeSelectionModal: Source node type: ${i}, Source handle ID: ${j}`),P.debug(`NodeSelectionModal: Valid node types: ${m.join(", ")}`);let n=[{type:"process",label:"Process Node",description:"Let a LLM do your work"},{type:"finish",label:"Finish Node",description:"End your flow here"},{type:"mcp",label:"MCP Node",description:"Add functionality"},{type:"subflow",label:"Subflow Node",description:"Run another flow"},{type:"resource",label:"Resource Node",description:"A data artifact steps read or write"},{type:"signal",label:"Signal Node",description:"Emit an event to trigger another flow"}].filter(a=>m.includes(a.type));return b?(0,d.jsx)(f.A,{open:a,onClose:c,"aria-labelledby":"node-selection-modal",children:(0,d.jsxs)(g.default,{sx:{position:"absolute",top:"50%",left:"50%",transform:"translate(-50%, -50%)",width:300,bgcolor:"background.paper",borderRadius:2,boxShadow:24,p:4},children:[(0,d.jsx)(h.default,{variant:"h6",component:"h2",gutterBottom:!0,children:"Select Node Type"}),(0,d.jsx)(g.default,{display:"flex",flexDirection:"column",gap:2,children:n.map(a=>(0,d.jsxs)(g.default,{sx:{padding:2,borderRadius:1,border:`2px solid ${"process"===a.type?l.palette.secondary.main:"finish"===a.type?l.palette.success.main:"subflow"===a.type?l.palette.warning.main:"resource"===a.type?o.nH:l.palette.info.main}`,cursor:"pointer","&:hover":{boxShadow:3}},onClick:()=>e(a.type,b),children:[(0,d.jsxs)(g.default,{display:"flex",alignItems:"center",gap:1,mb:1,children:[(a=>{switch(a){case"process":default:return(0,d.jsx)("div",{style:{width:24,height:24,backgroundColor:l.palette.secondary.main,borderRadius:"50%"}});case"finish":return(0,d.jsx)("div",{style:{width:24,height:24,backgroundColor:l.palette.success.main,borderRadius:"50%"}});case"mcp":return(0,d.jsx)("div",{style:{width:24,height:24,backgroundColor:l.palette.info.main,borderRadius:"50%"}});case"subflow":return(0,d.jsx)("div",{style:{width:24,height:24,backgroundColor:l.palette.warning.main,borderRadius:"50%"}});case"resource":return(0,d.jsx)("div",{style:{width:24,height:24,backgroundColor:o.nH,borderRadius:"50%"}});case"signal":return(0,d.jsx)("div",{style:{width:24,height:24,backgroundColor:o.vp,borderRadius:"50%"}})}})(a.type),(0,d.jsx)(h.default,{variant:"subtitle1",fontWeight:"bold",children:a.label})]}),(0,d.jsx)(h.default,{variant:"body2",color:"text.secondary",children:a.description})]},a.type))})]})}):null},W=(0,l.Ay)("div")(({theme:a})=>({width:"100%",height:"80vh",border:`1px solid ${a.palette.divider}`,borderRadius:"4px",background:a.palette.background.paper,position:"relative"})),X=(0,e.forwardRef)((a,b)=>{let c=(0,k.A)(),{nodes:f,edges:g,onNodesChange:h,onEdgesChange:l,onDrop:o,onDragOver:p,onInit:q,reactFlowWrapper:r,onEditNode:s,onEditEdge:t}=a,{contextMenu:u,selectedElements:v,closeContextMenu:w,handleDelete:x,onNodeContextMenu:y,onEdgeContextMenu:A,onPaneContextMenu:D,onSelectionContextMenu:H}=function(a){let{deleteElements:b}=(0,i.VH)(),[c,d]=(0,e.useState)({open:!1,position:{x:0,y:0}}),[f,g]=(0,e.useState)({nodes:[],edges:[]});(0,i.p4)({onChange:({nodes:a,edges:b})=>{let c=a.map(a=>a.id),d=b.map(a=>a.id);E.debug(`Selection changed: ${c.length} nodes, ${d.length} edges selected`),g({nodes:c,edges:d})}});let h=(0,e.useCallback)((a,b,c,e)=>{a.preventDefault(),b?E.debug(`Context menu opened for node: ${b}`):c?E.debug(`Context menu opened for edge: ${c}`):e?E.debug("Context menu opened for the current selection"):E.debug(`Context menu opened on canvas at (${a.clientX}, ${a.clientY})`),d({open:!0,position:{x:a.clientX,y:a.clientY},nodeId:b,edgeId:c,selection:e})},[]),j=(0,e.useCallback)(()=>{E.debug("Context menu closed"),d(a=>({...a,open:!1}))},[]),k=(0,e.useCallback)(()=>{if(c.selection)E.debug("handleDelete: Deleting the current selection"),b({nodes:f.nodes.map(a=>({id:a})),edges:f.edges.map(a=>({id:a}))});else if(c.nodeId){if(E.debug(`handleDelete: Attempting to delete node ${c.nodeId}`),!function(a,b){let c=C(a,b);return!!c&&"start"!==c.type}(c.nodeId,a)){E.warn(`Cannot delete Start node: ${c.nodeId}`),alert("Start nodes cannot be deleted");return}b({nodes:[{id:c.nodeId}]})}else c.edgeId&&(E.debug(`handleDelete: Deleting edge ${c.edgeId}`),b({edges:[{id:c.edgeId}]}))},[c,b,a,f]),l=(0,e.useCallback)((a,b)=>{h(a,b.id)},[h]),m=(0,e.useCallback)((a,b)=>{h(a,void 0,b.id)},[h]),n=(0,e.useCallback)(a=>{h(a)},[h]),o=(0,e.useCallback)(a=>{h(a,void 0,void 0,!0)},[h]);return{contextMenu:c,selectedElements:f,onContextMenu:h,closeContextMenu:j,handleDelete:k,onNodeContextMenu:l,onEdgeContextMenu:m,onPaneContextMenu:n,onSelectionContextMenu:o}}(f),{deleteElements:I}=(0,i.VH)(),J=(0,i.PI)(),K=(0,e.useRef)(null),[L,M]=(0,e.useState)(null),[X,Y]=(0,e.useState)({open:!1,position:null}),Z=(0,e.useCallback)(a=>[...f.filter(a=>a.selected).map(a=>({type:"select",id:a.id,selected:!1})),{type:"add",item:{...a,selected:!0}}],[f]);(0,e.useEffect)(()=>{if(!s)return;let a=a=>{if(a.detail&&a.detail.nodeId){let b=C(a.detail.nodeId,f);b&&s(b)}};return document.addEventListener("editNode",a),()=>{document.removeEventListener("editNode",a)}},[f,s]);let $=(0,e.useCallback)(a=>{if(!a.sourceHandle||!a.targetHandle)return void P.error("Invalid connection: Missing source or target handle",a);let b=J.getState().connection.fromHandle?.type==="target";if(!(0,F.JL)(a,f,g))return;let d=(0,F.wn)(a,f);if(d.data?.edgeType==="standard"){let d=a=>a.data?.edgeType!=="mcp",e=a=>!!a.data?.bidirectional,h=g.find(b=>d(b)&&b.source===a.source&&b.target===a.target),i=g.find(b=>d(b)&&b.source===a.target&&b.target===a.source),k=a=>{P.info(`Merging reverse connection into bidirectional edge ${a.id}`),l([{type:"replace",id:a.id,item:{...a,data:{...a.data,bidirectional:!0},markerStart:{type:j.TG.ArrowClosed,width:20,height:20,color:c.palette.text.secondary}}}])};if(b){let a=h??i;return a?void(!e(a)&&(0,F.y2)(a,f,g)&&k(a)):void P.info("Connection drawn from a top handle is only allowed to convert an existing edge to bidirectional")}if(h&&e(h))return;if(i){!e(i)&&(0,F.y2)(i,f,g)&&k(i);return}}l([...(0,F.Cm)(d,g).map(a=>({type:"remove",id:a})),{type:"add",item:d}])},[f,g,l,J,c.palette.text.secondary]),_=(0,e.useCallback)(a=>(0,F.p9)(a,f,g),[f,g]);(0,e.useEffect)(()=>{let a=a=>{let{edgeId:b,waypoints:c}=a.detail,d=g.find(a=>a.id===b);if(!d)return;let{waypoint:e,...f}=d.data??{};l([{type:"replace",id:b,item:{...d,data:{...f,waypoints:c??void 0}}}])};return document.addEventListener(B.R,a),()=>document.removeEventListener(B.R,a)},[g,l]);let aa=(0,e.useCallback)(async({nodes:a,edges:b})=>{let c=a.filter(a=>"start"!==a.type),d=new Set(c.map(a=>a.id)),e=new Set(a.map(a=>a.id)),f=b.filter(a=>!!(a.selected||d.has(a.source)||d.has(a.target))||!(e.has(a.source)||e.has(a.target)));return(0!==c.length||0!==f.length)&&{nodes:c,edges:f}},[]),ab=(0,e.useCallback)(a=>{M(a),q&&q(a)},[q]);(0,e.useEffect)(()=>{let a=a=>{if(!a.detail||!L)return;let{nodeType:b,position:c}=a.detail,d=n.g.createNode(b,c);h(Z(d)),s&&s(d)};return document.addEventListener("addNodeFromPalette",a),()=>{document.removeEventListener("addNodeFromPalette",a)}},[L,h,Z,s]);let ac=(0,e.useCallback)(()=>{if(u.nodeId&&s){let a=C(u.nodeId,f);a&&s(a)}else if(u.edgeId&&t){let a=g.find(a=>a.id===u.edgeId);a&&t(a)}},[u.nodeId,u.edgeId,f,g,s,t]),ad=(0,e.useCallback)(()=>{let a;if(!u.edgeId)return;let b=g.find(a=>a.id===u.edgeId);if(!b)return;if(b.data?.edgeType!=="standard")return void P.debug(`Toggle bidirectional ignored for non-standard edge ${b.id}`);let d=!!b.data?.bidirectional;if(!d&&!(0,F.y2)(b,f,g))return void P.info(`Edge ${b.id} cannot be made bidirectional (reverse direction is not a legal connection)`);let e={...b.data??{},bidirectional:!d};if(d){let{markerStart:c,...d}=b;a={...d,data:e}}else a={...b,data:e,markerStart:{type:j.TG.ArrowClosed,width:20,height:20,color:c.palette.text.secondary}};l([{type:"replace",id:b.id,item:a}])},[u.edgeId,g,f,l,c.palette.text.secondary]),ae=(0,e.useCallback)((a,b)=>{a.preventDefault(),s&&s(b)},[s]),af=(0,e.useCallback)((a,b)=>{let{fromNode:c,fromHandle:d,toHandle:e}=b;if(!c||!d?.id||!L)return void P.debug("onConnectEnd: No valid connection start data");P.debug(`onConnectEnd: Connection ended from node ${c.id}, handle ${d.id}`);let f="subflow"===c.type&&g.some(a=>{let b=a.data;return b?.edgeType!=="mcp"&&b?.edgeType!=="resource"&&(a.source===c.id||a.target===c.id&&!!b?.bidirectional)}),h=!!a.target?.closest?.(".react-flow__pane");if(!function(a){let{fromNodeType:b,fromHandleType:c,fromHandleId:d,landedOnHandle:e,droppedOnPane:f,subflowHasOutgoing:g}=a;return!e&&!!f&&!!d&&("target"!==c||!!(0,G.z5)(d))&&("subflow"!==b||"source"!==c||!g)}({fromNodeType:c.type,fromHandleType:d.type,fromHandleId:d.id,landedOnHandle:!!e,droppedOnPane:h,subflowHasOutgoing:f}))return;let i=a instanceof MouseEvent?a:a.changedTouches[0],j=L.screenToFlowPosition({x:i.clientX,y:i.clientY});P.debug(`onConnectEnd: Connection dropped on pane at position (${j.x}, ${j.y})`),Y({open:!0,position:j,sourceNodeId:c.id,sourceNodeType:c.type,sourceHandleId:d.id})},[L,g]),ag=(0,e.useCallback)((a,b)=>{P.debug(`handleNodeTypeSelection: Selected node type ${a} at position (${b.x}, ${b.y})`);let c=n.g.createNode(a,b);h(Z(c));let{sourceNodeId:d,sourceHandleId:e}=X,i=d?C(d,f):void 0;if(i&&e){let b=(0,G.CW)(a,e),d={source:i.id,sourceHandle:e,target:c.id,targetHandle:b};if(P.debug(`handleNodeTypeSelection: Creating connection from ${d.source} to ${d.target}`),(0,F.JL)(d,[...f,c],g)){let a=(0,F.wn)(d,[...f,c]);l([...(0,F.Cm)(a,g).map(a=>({type:"remove",id:a})),{type:"add",item:a}]),P.debug(`handleNodeTypeSelection: Edge created with id ${a.id}`)}}Y({open:!1,position:null}),s&&s(c)},[X,f,g,Z,h,l,s]),ah=(0,e.useCallback)(()=>{P.debug("handleCloseNodeSelectionModal: Closing node selection modal"),Y({open:!1,position:null})},[]),ai=(0,e.useCallback)(()=>{let a=new Set(v.nodes),b=f.filter(b=>a.has(b.id)&&"start"!==b.type);if(0===b.length)return!1;let c=new Set(b.map(a=>a.id)),d=g.filter(a=>c.has(a.source)&&c.has(a.target));return S({nodes:JSON.parse(JSON.stringify(b)),edges:JSON.parse(JSON.stringify(d))}),P.debug(`Copied ${b.length} node(s) and ${d.length} edge(s)`),!0},[v,f,g]),aj=(0,e.useCallback)(()=>{let a=R;if(!a)try{let b=localStorage.getItem(Q);b&&(a=JSON.parse(b))}catch(a){P.warn("Could not read flow clipboard from localStorage",a)}if(!a||!a.nodes||0===a.nodes.length)return void P.debug("Paste requested but clipboard is empty");let b=new Map;a.nodes.forEach(a=>b.set(a.id,(0,m.A)()));let c=a.nodes.map(a=>({...a,id:b.get(a.id),position:{x:(a.position?.x??0)+40,y:(a.position?.y??0)+40},selected:!0,data:{...a.data}})),d=(a.edges||[]).filter(a=>b.has(a.source)&&b.has(a.target)).map(a=>({...a,id:(0,m.A)(),source:b.get(a.source),target:b.get(a.target),selected:!1}));h([...f.filter(a=>a.selected).map(a=>({type:"select",id:a.id,selected:!1})),...c.map(a=>({type:"add",item:a}))]),d.length>0&&l(d.map(a=>({type:"add",item:a}))),P.info(`Pasted ${c.length} node(s) and ${d.length} edge(s)`)},[f,h,l]),ak=(0,e.useCallback)(a=>{let b=a.ctrlKey||a.metaKey,c=a.key.toLowerCase();if(b&&"c"===c){ai()&&a.preventDefault();return}if(b&&"x"===c){ai()&&(a.preventDefault(),I({nodes:v.nodes.map(a=>({id:a})),edges:v.edges.map(a=>({id:a}))}));return}if(b&&"v"===c){a.preventDefault(),aj();return}},[ai,aj,I,v]),al=(0,e.useCallback)(()=>{if(u.nodeId&&!v.nodes.includes(u.nodeId)){let a=f.find(a=>a.id===u.nodeId);a&&"start"!==a.type&&(S({nodes:JSON.parse(JSON.stringify([a])),edges:[]}),P.debug("Copied right-clicked node to clipboard"));return}ai()},[u.nodeId,v,f,ai]),am=(0,e.useMemo)(()=>{if(R)return!0;try{return!!localStorage.getItem(Q)}catch{return!1}},[u.open]),an=(0,e.useMemo)(()=>{if(u.selection){let a=new Set(v.nodes);return f.some(b=>a.has(b.id)&&"start"!==b.type)}if(u.nodeId){let a=f.find(a=>a.id===u.nodeId);return!!a&&"start"!==a.type}return!1},[u.selection,u.nodeId,v,f]);return(0,d.jsxs)(W,{ref:a=>{b&&("function"==typeof b?b(a):b.current=a),r&&(r.current=a),K.current=a},children:[(0,d.jsxs)(i.Gc,{nodes:f,edges:g,nodeTypes:T,edgeTypes:U,defaultEdgeOptions:(0,e.useMemo)(()=>({type:"custom",animated:!0,style:{stroke:c.palette.text.secondary,strokeWidth:2},markerEnd:{type:j.TG.ArrowClosed,width:20,height:20,color:c.palette.text.secondary}}),[c.palette.text.secondary]),connectionLineType:j.Do.SmoothStep,connectionMode:j.WZ.Loose,isValidConnection:_,onNodesChange:h,onEdgesChange:l,onConnect:$,onBeforeDelete:aa,deleteKeyCode:["Backspace","Delete"],onDrop:o,onDragOver:p,onInit:ab,onNodeContextMenu:y,onEdgeContextMenu:A,onPaneContextMenu:D,onSelectionContextMenu:H,onKeyDown:ak,onNodeDoubleClick:ae,onConnectEnd:af,tabIndex:0,fitView:!0,attributionPosition:"bottom-right",minZoom:.1,maxZoom:2,snapToGrid:!0,snapGrid:[15,15],connectOnClick:!1,children:[(0,d.jsx)(N,{}),(0,d.jsx)(O,{})]}),(0,d.jsx)(z,{open:u.open,position:u.position,onClose:w,onDelete:x,onEditProperties:ac,onToggleBidirectional:ad,onCopy:al,onPaste:aj,canPaste:am,canCopy:an,nodeId:u.nodeId,selection:u.selection,edgeId:u.edgeId}),(0,d.jsx)(V,{open:X.open,position:X.position,onClose:ah,onSelectNodeType:ag,sourceNodeType:X.sourceNodeType,sourceHandleId:X.sourceHandleId})]})});X.displayName="Canvas";let Y=X},74855:(a,b,c)=>{c.d(b,{MG:()=>e,Ud:()=>f});var d=c(46973);d.TG.ArrowClosed;let e={type:"resourceEdge",animated:!1,style:{stroke:"#009688",strokeWidth:2},markerEnd:{type:d.TG.ArrowClosed,width:20,height:20,color:"#009688"}},f={type:"mcpEdge",animated:!1,style:{stroke:"#1976d2",strokeWidth:2},markerEnd:{type:d.TG.ArrowClosed,width:20,height:20,color:"#1976d2"},markerStart:{type:d.TG.ArrowClosed,width:20,height:20,color:"#1976d2"}}},90430:(a,b,c)=>{c.d(b,{Cm:()=>l,JL:()=>i,p9:()=>h,wn:()=>j,y2:()=>k});var d=c(74855),e=c(36627);function f(a,b,c){return b.filter(b=>!(0,e.BY)(b)&&(b.source===a?b.target!==c:!!(b.target===a&&b.data?.bidirectional)&&b.source!==c))}function g(a,b,c=[]){if(!a.source||!a.target||!a.sourceHandle||!a.targetHandle)return"Missing source, target, or handles";let d=b.find(b=>b.id===a.source),h=b.find(b=>b.id===a.target);if(!d||!h)return"Source or target node not found";let i=(0,e.vC)(d.type,a.sourceHandle,h.type,a.targetHandle);return i||("subflow"===d.type&&f(d.id,c,a.target).length>0?"Subflow nodes can only have one outgoing connection":null)}function h(a,b,c=[]){return null===g(a,b,c)}function i(a,b,c=[]){let d=g(a,b,c);return!d||(console.error(`Invalid connection: ${d}`,a),!1)}function j(a,b,c){let f=b.find(b=>b.id===a.source),g=b.find(b=>b.id===a.target),h=a.sourceHandle,i=a.targetHandle,j=f?.type==="mcp"||g?.type==="mcp"||(0,e.z5)(h)||(0,e.z5)(i),k=!j&&(f?.type==="resource"||g?.type==="resource"||(0,e.vM)(h)||(0,e.vM)(i)),l=`${a.source}:${h}->${a.target}:${i}`;return j?{id:l,...a,type:"mcpEdge",data:{edgeType:"mcp"},animated:!1,markerEnd:d.Ud.markerEnd,markerStart:d.Ud.markerStart,style:d.Ud.style}:k?{id:l,...a,type:"resourceEdge",data:{edgeType:"resource"},animated:!1,markerEnd:d.MG.markerEnd,style:d.MG.style}:{id:l,...a,type:"custom",data:{edgeType:"standard",...c?{condition:c}:{}},animated:!0}}function k(a,b,c=[]){let d=b.find(b=>b.id===a.source),g=b.find(b=>b.id===a.target);return!!d&&!!g&&("subflow"!==g.type||!(f(g.id,c,a.source).length>0))&&null===(0,e.vC)(g.type,null,d.type,null)}function l(a,b){let c=a=>a.data?.edgeType,d=a=>"mcp"===c(a),e=a=>"resource"===c(a);return b.filter(b=>b.id===a.id||(d(a)?d(b)&&(b.source===a.source&&b.target===a.target||b.source===a.target&&b.target===a.source):e(a)?e(b)&&b.source===a.source&&b.target===a.target:!d(b)&&!e(b)&&b.source===a.source&&b.target===a.target)).map(a=>a.id)}},97004:(a,b,c)=>{c.d(b,{R:()=>l,A:()=>r});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"}var k=c(29237);let l="flowEdgeWaypoint",m={x:16,y:-16},n=(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}})),o=(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}}}),p="#009688",q="#4DB6AC",r=({variant:a,id:b,source:c,target:h,sourceHandleId:r,targetHandleId:s,sourceX:t,sourceY:u,targetX:v,targetY:w,sourcePosition:x,targetPosition:y,style:z={},markerEnd:A,markerStart:B,data:C,selected:D})=>{let E,F,G=(0,i.A)(),{deleteElements:H,screenToFlowPosition:I,getNode:J}=(0,f.VH)(),[K,L]=(0,e.useState)(!1),[M,N]=(0,e.useState)(null),O=(0,e.useRef)(null),P=(0,e.useRef)(!1),Q="standard"===a&&C?.condition?(0,k.P2)(C.condition):"",R=a=>!!a&&a.includes("process")&&a.includes("resource"),S="";if("resource"===a){let a=J(c)?.type,b=J(h)?.type;"resource"===a&&"process"===b?S="consume":"process"===a&&"resource"===b||R(r)?S="produce":R(s)&&(S="consume")}let T=C?.waypoints??(C?.waypoint?[C.waypoint]:[]),U=M??T,V="standard"===a&&!!C?.bidirectional,W="mcp"===a||"resource"===a,X=x||(W?g.yX.Left:g.yX.Bottom),Y=y||(W?g.yX.Right:g.yX.Top),Z=null;if(U.length>0)E=(Z=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:t,y:u},j(X),{x:v,y:w},j(Y),U,16)).d,F=Z.midpoint;else{let[a,b,c]=(0,g.oN)({sourceX:t,sourceY:u,sourcePosition:X,targetX:v,targetY:w,targetPosition:Y,borderRadius:16});E=a,F={x:b,y:c}}let $=W?"":V?"animated-both":C?.animated!==!1?"animated":"",_={...z,strokeWidth:D?3:2,stroke:"mcp"===a?D?G.palette.info.light:G.palette.info.main:"resource"===a?D?q:p:D?G.palette.primary.main:G.palette.text.secondary,..."resource"===a?{strokeDasharray:"6 4"}:{},...$?{animationDuration:`${Math.round((V?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`}:{}},aa=a=>{document.dispatchEvent(new CustomEvent(l,{detail:{edgeId:b,waypoints:a&&a.length>0?a:null}}))},ab=a=>{if(0!==a.button)return;let b=I({x:a.clientX,y:a.clientY}),c=Z?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,Z.segments):0,d=[...U];d.splice(c,0,b),O.current={index:c,pointerId:a.pointerId,startClient:{x:a.clientX,y:a.clientY},base:d,active:!1,fromPath:!0},a.target.setPointerCapture(a.pointerId)},ac=a=>{let b=O.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]=I({x:a.clientX,y:a.clientY}),N(c)},ad=a=>{let b=O.current;if(!b||a.pointerId!==b.pointerId||(O.current=null,a.target.releasePointerCapture(a.pointerId),P.current=b.active,!b.active))return;let c=[...b.base];c[b.index]=I({x:a.clientX,y:a.clientY}),aa(c),N(null)},ae=null!==M,af=D||K||ae;return(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(o,{path:E,markerEnd:A,markerStart:B,style:_,id:b,className:$}),(0,d.jsx)("path",{d:E,fill:"none",stroke:"transparent",strokeWidth:20,style:{cursor:ae?"grabbing":"grab"},onMouseEnter:()=>L(!0),onMouseLeave:()=>L(!1),onPointerDown:ab,onPointerMove:ac,onPointerUp:ad}),(0,d.jsxs)(f.rV,{children:[Q&&(0,d.jsx)("div",{style:{position:"absolute",transform:`translate(-50%, -50%) translate(${F.x}px,${F.y-18}px)`,pointerEvents:"none",background:G.palette.info.main,color:G.palette.info.contrastText,borderRadius:4,padding:"1px 6px",fontSize:10,fontWeight:600,whiteSpace:"nowrap",boxShadow:G.shadows[1],zIndex:1002},className:"nodrag nopan",title:`Routing condition: ${Q}`,children:Q}),S&&(0,d.jsx)("div",{style:{position:"absolute",transform:`translate(-50%, -50%) translate(${F.x}px,${F.y-18}px)`,pointerEvents:"none",background:D?q:p,color:"#ffffff",borderRadius:4,padding:"1px 6px",fontSize:10,fontWeight:600,whiteSpace:"nowrap",boxShadow:G.shadows[1],zIndex:1002},className:"nodrag nopan",title:"consume"===S?"This step consumes (reads) the resource":"This step produces (writes) the resource",children:S}),af&&U.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:G.palette.primary.main,border:`2px solid ${G.palette.background.paper}`,boxShadow:G.shadows[1],cursor:"move",pointerEvents:"all",touchAction:"none",zIndex:1001},className:"nodrag nopan",title:"Drag to move; double-click to remove this bend",onMouseEnter:()=>L(!0),onMouseLeave:()=>L(!1),onPointerDown:a=>{0===a.button&&(a.stopPropagation(),O.current={index:b,pointerId:a.pointerId,startClient:{x:a.clientX,y:a.clientY},base:[...U],active:!1,fromPath:!1},a.target.setPointerCapture(a.pointerId))},onPointerMove:ac,onPointerUp:ad,onDoubleClick:a=>{a.stopPropagation(),(a=>{let b=U.filter((b,c)=>c!==a);N(null),aa(b)})(b)}},b)),(0,d.jsx)("div",{style:{position:"absolute",transform:`translate(-50%, -50%) translate(${F.x+m.x}px,${F.y+m.y}px)`,pointerEvents:af&&!ae?"all":"none",opacity:af&&!ae?1:0,transition:"opacity 120ms ease",zIndex:1e3},className:"nodrag nopan",onMouseEnter:()=>L(!0),onMouseLeave:()=>L(!1),children:(0,d.jsx)(n,{title:"Delete connection (drag to re-route)",style:{touchAction:"none"},onPointerDown:ab,onPointerMove:ac,onPointerUp:ad,onClick:a=>{if(a.stopPropagation(),P.current){P.current=!1;return}H({edges:[{id:b}]})},children:"\xd7"})})]})]})}},98502:(a,b,c)=>{c.d(b,{E9:()=>f,RN:()=>e,n9:()=>d});let d="handoff_to_";function e(a,b){let c=(a&&a.trim()||b&&b.trim()||"node").toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/_+/g,"_").replace(/^_+|_+$/g,"");return c.length>48&&(c=c.slice(0,48).replace(/_+$/g,"")),c||(c=b&&b.trim().toLowerCase().replace(/[^a-z0-9]+/g,"_")||"node"),c||"node"}function f(a){let b=new Set,c=new Map;for(let f of a){if(c.has(f.id))continue;let a=e(f.label,f.type),g=`${d}${a}`;if(b.has(g)){let c=2;for(;b.has(`${d}${a}_${c}`);)c++;g=`${d}${a}_${c}`}b.add(g),c.set(f.id,g)}return c}}};
|