flujo-ai 3.31.0 → 3.34.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 +384 -342
- package/.next/app-path-routes-manifest.json +23 -19
- package/.next/build-manifest.json +5 -5
- package/.next/prerender-manifest.json +24 -24
- package/.next/react-loadable-manifest.json +29 -14
- package/.next/server/app/_not-found/page.js +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +1 -1
- package/.next/server/app/_not-found.rsc +2 -2
- package/.next/server/app/api/approvals/[id]/route.js +1 -1
- package/.next/server/app/api/approvals/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/approvals/route.js +2 -2
- package/.next/server/app/api/approvals/route.js.nft.json +1 -1
- package/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/backup/route.js +1 -1
- package/.next/server/app/api/backup/route.js.nft.json +1 -1
- package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/browse/route.js +1 -1
- package/.next/server/app/api/browse/route.js.nft.json +1 -1
- package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/bugs/enhance/route.js +3 -3
- package/.next/server/app/api/bugs/enhance/route.js.nft.json +1 -1
- package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/cwd/route.js +1 -1
- package/.next/server/app/api/cwd/route.js.nft.json +1 -1
- package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/encryption/secure/route.js +1 -1
- package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
- package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/env/route.js +2 -2
- package/.next/server/app/api/env/route.js.nft.json +1 -1
- package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/[id]/route.js +1 -1
- package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js +1 -1
- package/.next/server/app/api/flow/[id]/versions/[versionId]/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/[id]/versions/[versionId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/[id]/versions/route.js +1 -1
- package/.next/server/app/api/flow/[id]/versions/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/[id]/versions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/compile/route.js +1 -1
- package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/generate/route.js +1 -1
- package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/generator/route.js +28 -0
- package/.next/server/app/api/flow/generator/route.js.nft.json +1 -0
- package/.next/server/app/api/flow/generator/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/flow/improve/route.js +1 -1
- package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/prompt-renderer/route.js +2 -2
- package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/quick-chat/route.js +1 -1
- package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/repair/route.js +1 -1
- package/.next/server/app/api/flow/repair/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/flow/route.js +1 -1
- package/.next/server/app/api/flow/route.js.nft.json +1 -1
- package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/git/route.js +1 -1
- package/.next/server/app/api/git/route.js.nft.json +1 -1
- package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/init/route.js +1 -1
- package/.next/server/app/api/init/route.js.nft.json +1 -1
- package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/local-models/capability/route_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 -1
- package/.next/server/app/api/mcp/app-sandbox/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/app-sandbox/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/cancel/route.js +2 -2
- package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/oauth-capability/route.js +1 -1
- package/.next/server/app/api/mcp/oauth-capability/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/oauth-capability/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route.js +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/servers/route.js +1 -1
- package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/test-connection/route.js +1 -1
- package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp-registry/route.js +2 -2
- package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/mcp-registry/spotlight/route.js +1 -1
- package/.next/server/app/api/mcp-registry/spotlight/route.js.nft.json +1 -1
- package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/[id]/route.js +1 -1
- package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/provider/route.js +2 -2
- package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
- package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/route.js +1 -1
- package/.next/server/app/api/model/route.js.nft.json +1 -1
- package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/model/test/route.js +2 -2
- package/.next/server/app/api/model/test/route.js.nft.json +1 -1
- package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/callback/route.js +2 -2
- package/.next/server/app/api/oauth/callback/route.js.nft.json +1 -1
- package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/initiate/route.js +2 -2
- package/.next/server/app/api/oauth/initiate/route.js.nft.json +1 -1
- package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/oauth/reset/route.js +2 -2
- package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
- package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/build/route.js +1 -1
- package/.next/server/app/api/packages/build/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/build/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/derive-secrets/route.js +1 -1
- package/.next/server/app/api/packages/derive-secrets/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/derive-secrets/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/install/route.js +1 -1
- package/.next/server/app/api/packages/install/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/install/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/install/status/route.js +1 -1
- package/.next/server/app/api/packages/install/status/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/install/status/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/installed/route.js +1 -1
- package/.next/server/app/api/packages/installed/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/installed/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/resolve/route.js +1 -1
- package/.next/server/app/api/packages/resolve/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/resolve/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/scan-targets/route.js +1 -1
- package/.next/server/app/api/packages/scan-targets/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/scan-targets/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/search/route.js +1 -1
- package/.next/server/app/api/packages/search/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/search/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/packages/uninstall/route.js +1 -1
- package/.next/server/app/api/packages/uninstall/route.js.nft.json +1 -1
- package/.next/server/app/api/packages/uninstall/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/route.js +2 -2
- package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/run/route.js +2 -2
- package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/[id]/runs/route.js +2 -2
- package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/preview-schedule/route.js +1 -1
- package/.next/server/app/api/planned-executions/preview-schedule/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/reconcile/route.js +1 -1
- package/.next/server/app/api/planned-executions/reconcile/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/planned-executions/route.js +1 -1
- package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
- package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/auth/resend/route.js +1 -1
- package/.next/server/app/api/registry/auth/resend/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/auth/resend/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/auth/reset/route.js +1 -1
- package/.next/server/app/api/registry/auth/reset/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/auth/reset/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/auth/route.js +1 -1
- package/.next/server/app/api/registry/auth/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/auth/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/feedback/route.js +1 -0
- package/.next/server/app/api/registry/feedback/route.js.nft.json +1 -0
- package/.next/server/app/api/registry/feedback/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/registry/oauth/callback/route.js +1 -1
- package/.next/server/app/api/registry/oauth/callback/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/oauth/callback/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/oauth/initiate/route.js +1 -1
- package/.next/server/app/api/registry/oauth/initiate/route.js.nft.json +1 -1
- package/.next/server/app/api/registry/oauth/initiate/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/registry/packages/route.js +1 -0
- package/.next/server/app/api/registry/packages/route.js.nft.json +1 -0
- package/.next/server/app/api/registry/packages/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.js.nft.json +1 -1
- package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/telemetry/daily-active/route.js +1 -0
- package/.next/server/app/api/telemetry/daily-active/route.js.nft.json +1 -0
- package/.next/server/app/api/telemetry/daily-active/route_client-reference-manifest.js +1 -0
- package/.next/server/app/api/update/route.js +1 -1
- package/.next/server/app/api/update/route.js.nft.json +1 -1
- package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/waves/route.js +1 -1
- package/.next/server/app/api/waves/route.js.nft.json +1 -1
- package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
- package/.next/server/app/api/webhooks/[id]/route.js +1 -1
- package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
- package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/chat/page.js +58 -10
- package/.next/server/app/chat/page.js.nft.json +1 -1
- package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
- package/.next/server/app/chat.html +1 -1
- package/.next/server/app/chat.rsc +3 -3
- package/.next/server/app/docs/page.js +4 -5
- package/.next/server/app/docs/page.js.nft.json +1 -1
- package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/.next/server/app/docs.html +1 -1
- package/.next/server/app/docs.rsc +3 -3
- package/.next/server/app/executions/page.js +3 -2
- package/.next/server/app/executions/page.js.nft.json +1 -1
- package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
- package/.next/server/app/executions.html +1 -1
- package/.next/server/app/executions.rsc +3 -3
- package/.next/server/app/flows/page.js +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 +3 -3
- package/.next/server/app/index.html +1 -1
- package/.next/server/app/index.rsc +3 -3
- package/.next/server/app/mcp/page.js +56 -5
- package/.next/server/app/mcp/page.js.nft.json +1 -1
- package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp-flows/route.js +1 -1
- package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
- package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
- package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
- package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/mcp.html +1 -1
- package/.next/server/app/mcp.rsc +3 -3
- package/.next/server/app/models/page.js +2 -2
- package/.next/server/app/models/page.js.nft.json +1 -1
- package/.next/server/app/models/page_client-reference-manifest.js +1 -1
- package/.next/server/app/packages/page.js +2 -2
- package/.next/server/app/packages/page.js.nft.json +1 -1
- package/.next/server/app/packages/page_client-reference-manifest.js +1 -1
- package/.next/server/app/packages.html +1 -1
- package/.next/server/app/packages.rsc +3 -3
- package/.next/server/app/page.js +5 -3
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings/page.js +2 -2
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings.html +1 -1
- package/.next/server/app/settings.rsc +3 -3
- package/.next/server/app/v1/chat/completions/route.js +1 -1
- package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +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]/inject/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/inject/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/conversations/route.js +2 -2
- package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/chat/events/route.js +3 -3
- package/.next/server/app/v1/chat/events/route.js.nft.json +1 -1
- package/.next/server/app/v1/chat/events/route_client-reference-manifest.js +1 -1
- package/.next/server/app/v1/models/route.js +2 -2
- package/.next/server/app/v1/models/route.js.nft.json +1 -1
- package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
- package/.next/server/app/waves/page.js +3 -3
- package/.next/server/app/waves/page.js.nft.json +1 -1
- package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
- package/.next/server/app/waves.html +1 -1
- package/.next/server/app/waves.rsc +3 -3
- package/.next/server/app-paths-manifest.json +23 -19
- package/.next/server/chunks/1114.js +1 -1
- package/.next/server/chunks/1226.js +1 -1
- package/.next/server/chunks/1227.js +1 -0
- package/.next/server/chunks/1314.js +1 -1
- package/.next/server/chunks/1439.js +1 -0
- package/.next/server/chunks/1578.js +1 -1
- package/.next/server/chunks/1634.js +1 -1
- package/.next/server/chunks/166.js +5 -5
- package/.next/server/chunks/1664.js +2 -0
- package/.next/server/chunks/180.js +12 -0
- package/.next/server/chunks/227.js +1 -5
- package/.next/server/chunks/2273.js +2 -2
- package/.next/server/chunks/2372.js +2 -0
- package/.next/server/chunks/2859.js +1 -1
- package/.next/server/chunks/3128.js +4 -4
- package/.next/server/chunks/3653.js +2 -0
- package/.next/server/chunks/3717.js +1 -0
- package/.next/server/chunks/3855.js +1 -0
- package/.next/server/chunks/4013.js +1 -0
- package/.next/server/chunks/4308.js +4 -0
- package/.next/server/chunks/{4685.js → 4466.js} +1 -1
- package/.next/server/chunks/4551.js +1 -1
- package/.next/server/chunks/4663.js +1 -0
- package/.next/server/chunks/4771.js +1 -1
- package/.next/server/chunks/4822.js +1 -0
- package/.next/server/chunks/5067.js +1 -1
- package/.next/server/chunks/519.js +2 -0
- package/.next/server/chunks/5285.js +1 -0
- package/.next/server/chunks/5309.js +78 -0
- package/.next/server/chunks/544.js +28 -27
- package/.next/server/chunks/5463.js +1 -1
- package/.next/server/chunks/5544.js +5 -5
- package/.next/server/chunks/5703.js +2 -0
- package/.next/server/chunks/6034.js +1 -1
- package/.next/server/chunks/{5708.js → 6041.js} +3 -4
- package/.next/server/chunks/6226.js +1 -1
- package/.next/server/chunks/6747.js +435 -0
- package/.next/server/chunks/6967.js +82 -0
- package/.next/server/chunks/{5548.js → 7058.js} +2 -2
- package/.next/server/chunks/{4566.js → 7069.js} +3 -3
- package/.next/server/chunks/{2388.js → 7104.js} +1 -1
- package/.next/server/chunks/7519.js +1 -0
- package/.next/server/chunks/7628.js +1 -0
- package/.next/server/chunks/7630.js +11 -0
- package/.next/server/chunks/{3030.js → 7674.js} +1 -1
- package/.next/server/chunks/{2866.js → 7891.js} +2 -2
- package/.next/server/chunks/793.js +3 -3
- package/.next/server/chunks/7965.js +39 -0
- package/.next/server/chunks/{6404.js → 7993.js} +2 -2
- package/.next/server/chunks/8284.js +42 -0
- package/.next/server/chunks/8645.js +1 -1
- package/.next/server/chunks/87.js +1 -0
- package/.next/server/chunks/8739.js +1 -2
- package/.next/server/chunks/{3912.js → 9085.js} +2 -2
- package/.next/server/chunks/9235.js +29 -0
- package/.next/server/chunks/9724.js +3 -3
- package/.next/server/chunks/9983.js +1 -1
- package/.next/server/functions-config-manifest.json +1 -1
- 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 +5 -5
- package/.next/server/middleware-react-loadable-manifest.js +1 -1
- package/.next/server/pages/404.html +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.js +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/static/Zz_Vh59XdtLIPcf-PxCpo/_buildManifest.js +1 -0
- package/.next/static/chunks/1675-773454288de4309d.js +1 -0
- package/.next/static/chunks/2005.4eea65c00d9a29cd.js +1 -0
- package/.next/static/chunks/2318-13ef0d3048e97834.js +1 -0
- package/.next/static/chunks/3429-34fb1a84aed96703.js +1 -0
- package/.next/static/chunks/361.bb75b03b740930cd.js +1 -0
- package/.next/static/chunks/3772-20197853c04a6993.js +1 -0
- package/.next/static/chunks/422-61b173ba64cf0c94.js +1 -0
- package/.next/static/chunks/{3189-fa8ec6d719d5e72b.js → 4386-e9621d3c94969a68.js} +1 -1
- package/.next/static/chunks/4555-c9070f8c79bccfad.js +39 -0
- package/.next/static/chunks/4919-6c8a48e3cc642349.js +1 -0
- package/.next/static/chunks/4929-150b03595474c9d8.js +1 -0
- package/.next/static/chunks/5733-1419095a28c1ddc3.js +1 -0
- package/.next/static/chunks/639-90ed75d402dc872b.js +1 -0
- package/.next/static/chunks/{3452-a639f121f2953f50.js → 6428-951188daa6f74b86.js} +3 -3
- package/.next/static/chunks/6430-8c6dac4a758119f2.js +1 -0
- package/.next/static/chunks/6539-118a0084e0bfae34.js +1 -0
- package/.next/static/chunks/6733-c9029143901e62e9.js +1 -0
- package/.next/static/chunks/7264-91d1fa99abcd91ad.js +1 -0
- package/.next/static/chunks/7328-c8a51bb8c7470d77.js +1 -0
- package/.next/static/chunks/7391-5a0abd837ba241f5.js +1 -0
- package/.next/static/chunks/7561-2b366ddcbc3cc0ec.js +1 -0
- package/.next/static/chunks/8124-4a80e3201b8e51b0.js +1 -0
- package/.next/static/chunks/{2969.eb9ff8cd2a5034b0.js → 8345.bc5534ec13abc9ee.js} +1 -1
- package/.next/static/chunks/8404-5aa8ea49197b98b8.js +1 -0
- package/.next/static/chunks/{8405.73e8be2c8e5b55c5.js → 8405.a425f94b6b13d2be.js} +1 -1
- package/.next/static/chunks/8551-a28272acfda62ac9.js +1 -0
- package/.next/static/chunks/8650-5294c6ed1173b014.js +1 -0
- package/.next/static/chunks/{9164-840f056a0e11d979.js → 9164-de1d167d87614a6d.js} +1 -1
- package/.next/static/chunks/9203-786f457ecf60b49c.js +1 -0
- package/.next/static/chunks/9345-11d6e48d892b1862.js +8 -0
- package/.next/static/chunks/9562-f8371be653010627.js +1 -0
- package/.next/static/chunks/981-dd289e60d81da0d1.js +1 -0
- package/.next/static/chunks/9951-566fc6b05c12209e.js +1 -0
- package/.next/static/chunks/app/api/approvals/[id]/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/approvals/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/backup/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/browse/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/bugs/enhance/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/cwd/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/encryption/secure/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/env/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/flow/[id]/versions/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/flow/compile/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/flow/generate/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/flow/generator/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/flow/improve/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/flow/prompt-renderer/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/flow/quick-chat/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/flow/repair/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/flow/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/git/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/init/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/local-models/capability/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/local-models/pull/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/local-models/suggest/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/app-sandbox/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/cancel/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/oauth-capability/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/servers/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/test-connection/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp/test-connection/stream/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/mcp-registry/spotlight/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/model/[id]/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/model/provider/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/model/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/model/test/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/oauth/callback/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/oauth/initiate/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/oauth/reset/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/packages/build/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/packages/derive-secrets/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/packages/install/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/packages/install/status/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/packages/installed/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/packages/resolve/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/packages/scan-targets/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/packages/search/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/packages/uninstall/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/run/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/reconcile/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/planned-executions/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/registry/auth/resend/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/registry/auth/reset/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/registry/auth/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/registry/feedback/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/registry/oauth/callback/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/registry/oauth/initiate/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/registry/packages/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/registry/publish/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/registry/settings/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/restore/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/runs/active/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/storage/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/telemetry/daily-active/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/update/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/waves/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/api/webhooks/[id]/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/chat/page-bc7807593b8b7394.js +1 -0
- package/.next/static/chunks/app/docs/page-3b9ce48854b2147d.js +1 -0
- package/.next/static/chunks/app/executions/page-8296fd69c439ccee.js +1 -0
- package/.next/static/chunks/app/flows/page-87fb466e491fc068.js +1 -0
- package/.next/static/chunks/app/layout-abed1f211e03152f.js +1 -0
- package/.next/static/chunks/app/mcp/page-1648e6fde0c41461.js +1 -0
- package/.next/static/chunks/app/mcp-flows/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/mcp-proxy/[server]/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/models/page-a5e2437356b06db8.js +1 -0
- package/.next/static/chunks/app/packages/page-fba5696f33d9cdfb.js +1 -0
- package/.next/static/chunks/app/page-2f9da78a4891731a.js +1 -0
- package/.next/static/chunks/app/settings/page-2fc3a70bfd25c48b.js +1 -0
- package/.next/static/chunks/app/v1/chat/completions/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/inject/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/chat/conversations/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/chat/events/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/v1/models/route-9ea2990be4b67136.js +1 -0
- package/.next/static/chunks/app/waves/{page-3cf4b47b12662196.js → page-dc99a16141dd902b.js} +1 -1
- package/.next/static/chunks/webpack-d5d737ff6a86674f.js +1 -0
- package/.next/trace +10 -10
- package/.next/types/app/api/flow/generator/route.ts +347 -0
- package/.next/types/app/api/registry/feedback/route.ts +347 -0
- package/.next/types/app/api/registry/packages/route.ts +347 -0
- package/.next/types/app/api/telemetry/daily-active/route.ts +347 -0
- package/.next/types/routes.d.ts +5 -1
- package/.next/types/validator.ts +36 -0
- package/README.md +58 -18
- package/next.config.mjs +2 -2
- package/package.json +3 -2
- package/.next/server/chunks/2180.js +0 -1
- package/.next/server/chunks/237.js +0 -1
- package/.next/server/chunks/3392.js +0 -82
- package/.next/server/chunks/3570.js +0 -372
- package/.next/server/chunks/4366.js +0 -2
- package/.next/server/chunks/4961.js +0 -2
- package/.next/server/chunks/5040.js +0 -53
- package/.next/server/chunks/510.js +0 -1
- package/.next/server/chunks/5150.js +0 -1
- package/.next/server/chunks/5561.js +0 -1
- package/.next/server/chunks/5705.js +0 -1
- package/.next/server/chunks/5829.js +0 -1
- package/.next/server/chunks/694.js +0 -3
- package/.next/server/chunks/7579.js +0 -83
- package/.next/server/chunks/7724.js +0 -1
- package/.next/server/chunks/8034.js +0 -1
- package/.next/server/chunks/8037.js +0 -1
- package/.next/server/chunks/8192.js +0 -12
- package/.next/server/chunks/826.js +0 -2
- package/.next/server/chunks/8366.js +0 -90
- package/.next/server/chunks/848.js +0 -39
- package/.next/server/chunks/8615.js +0 -1
- package/.next/server/chunks/8851.js +0 -1
- package/.next/server/chunks/9313.js +0 -1
- package/.next/server/chunks/9537.js +0 -39
- package/.next/server/chunks/9576.js +0 -2
- package/.next/server/chunks/9632.js +0 -1
- package/.next/server/chunks/9671.js +0 -1
- package/.next/server/chunks/9857.js +0 -1
- package/.next/static/chunks/1496-d478bce7d7c85080.js +0 -1
- package/.next/static/chunks/1572-b663a83bba28a0a1.js +0 -8
- package/.next/static/chunks/1641-e5ff8f112da0a335.js +0 -1
- package/.next/static/chunks/1988-bd73f26184e930c1.js +0 -1
- package/.next/static/chunks/2266-d812473724cc6643.js +0 -1
- package/.next/static/chunks/3089.a0856f8093b90939.js +0 -1
- package/.next/static/chunks/3560-5bdceef09b50e1c3.js +0 -1
- package/.next/static/chunks/3672-cd86ace43288da79.js +0 -1
- package/.next/static/chunks/3711-0050bb4d345c2c9c.js +0 -1
- package/.next/static/chunks/4147-20897d83b3cd3978.js +0 -39
- package/.next/static/chunks/435-17c79f3b9f8dd38d.js +0 -1
- package/.next/static/chunks/469-1f043fe082d9f475.js +0 -1
- package/.next/static/chunks/4740-62814d07b2b7f760.js +0 -1
- package/.next/static/chunks/5441-cb0c31de8bce65c3.js +0 -1
- package/.next/static/chunks/7111-44538f8a64241b74.js +0 -1
- package/.next/static/chunks/8041-05830e887c133085.js +0 -1
- package/.next/static/chunks/812-dfe7ba07ddb7a565.js +0 -1
- package/.next/static/chunks/8401-0f39d91810180a88.js +0 -1
- package/.next/static/chunks/8404-14ef0345dc401ac5.js +0 -1
- package/.next/static/chunks/8678-c6c6be2672f337f6.js +0 -1
- package/.next/static/chunks/8834-faf121e257b517d5.js +0 -1
- package/.next/static/chunks/8855-f802599c4af81cca.js +0 -1
- package/.next/static/chunks/9562-5494feecd8c6f7a3.js +0 -1
- package/.next/static/chunks/app/api/approvals/[id]/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/approvals/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/backup/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/browse/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/bugs/enhance/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/cwd/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/encryption/secure/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/env/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/flow/[id]/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/flow/[id]/versions/[versionId]/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/flow/[id]/versions/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/flow/compile/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/flow/generate/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/flow/improve/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/flow/prompt-renderer/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/flow/quick-chat/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/flow/repair/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/flow/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/git/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/init/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/local-models/capability/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/local-models/pull/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/local-models/suggest/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/app-sandbox/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/cancel/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/oauth-capability/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/get/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/prompts/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/read/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/resources/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/status/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/[toolName]/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/[name]/tools/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/servers/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/test-connection/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp/test-connection/stream/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp-registry/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/mcp-registry/spotlight/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/model/[id]/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/model/provider/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/model/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/model/test/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/oauth/callback/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/oauth/initiate/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/oauth/reset/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/packages/build/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/packages/derive-secrets/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/packages/install/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/packages/install/status/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/packages/installed/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/packages/resolve/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/packages/scan-targets/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/packages/search/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/packages/uninstall/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/run/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/[id]/runs/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/preview-schedule/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/reconcile/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/planned-executions/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/registry/auth/resend/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/registry/auth/reset/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/registry/auth/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/registry/oauth/callback/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/registry/oauth/initiate/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/registry/publish/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/registry/settings/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/restore/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/runs/active/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/storage/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/update/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/waves/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/api/webhooks/[id]/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/chat/page-558edb21321a32d0.js +0 -1
- package/.next/static/chunks/app/docs/page-fc30f613607b8a26.js +0 -1
- package/.next/static/chunks/app/executions/page-e71689c7256af1e8.js +0 -1
- package/.next/static/chunks/app/flows/page-e90e8d7b4c1bd1c8.js +0 -1
- package/.next/static/chunks/app/layout-038b35b382eef11d.js +0 -1
- package/.next/static/chunks/app/mcp/page-6041156fc67ef361.js +0 -1
- package/.next/static/chunks/app/mcp-flows/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/mcp-proxy/[server]/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/models/page-d16f2721e7a93b43.js +0 -1
- package/.next/static/chunks/app/packages/page-c6b0e7aa95bc1064.js +0 -1
- package/.next/static/chunks/app/page-5c7fccd019942d46.js +0 -1
- package/.next/static/chunks/app/settings/page-e3d9ffd69d16873a.js +0 -1
- package/.next/static/chunks/app/v1/chat/completions/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/breakpoints/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/cancel/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/continue/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/debug/step/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/edit-state/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/events/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/inject/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/resources/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/respond/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/[conversationId]/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/chat/conversations/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/chat/events/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/app/v1/models/route-1a4c9e7a416ccbcf.js +0 -1
- package/.next/static/chunks/webpack-2d8e0c13c0b865fe.js +0 -1
- package/.next/static/eaxwKaaFHlA1_FLDIyFGi/_buildManifest.js +0 -1
- /package/.next/static/{eaxwKaaFHlA1_FLDIyFGi → Zz_Vh59XdtLIPcf-PxCpo}/_ssgManifest.js +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
exports.id=
|
|
2
|
-
Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(b,"D",{enumerable:!0,get:function(){return c}})},56793:(a,b,c)=>{"use strict";c.d(b,{eh:()=>g,ru:()=>e});let d=(0,c(50846).h)("backend/services/scheduler/flowRunEventBus");function e(a){return"signal"===a.kind}class f{publish(a){if(0===this.listeners.size)return;let b=e(a)?`signal topic=${a.topic} emitter=${a.emitterFlowId}`:`flow=${a.flowId} status=${a.status}`;for(let c of(d.debug(`Publishing flow event: ${b} firedBy=${a.firedBy} depth=${a.chainDepth} listeners=${this.listeners.size}`),[...this.listeners]))try{c(a)}catch(a){d.warn("A flow-run event listener threw:",a)}}subscribe(a){return this.listeners.add(a),()=>{this.listeners.delete(a)}}get listenerCount(){return this.listeners.size}constructor(){this.listeners=new Set}}function g(){return global.__flujo_flow_run_event_bus||(global.__flujo_flow_run_event_bus=new f),global.__flujo_flow_run_event_bus}},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:()=>m,V:()=>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,b={}){j.debug("Entering resolveGlobalVars method");let c=!1!==b.resolveSecrets,d=await (0,f.YM)(g.Z.GLOBAL_ENV_VARS,{}),e=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}(d);j.debug(`Loaded ${Object.keys(d).length} global environment variables (${e?"new":"old"} format)`);let i={},l=new Set;if(e)for(let[a,b]of Object.entries(d))i[a]=b.value,b.metadata.isSecret&&l.add(a);else i={...d};let m=async a=>{let b=a.match(/\$\{global:([^}]+)\}/g);if(!b)return a;let d=a;for(let a of b){let b=a.substring(9,a.length-1);if(void 0!==i[b]){let e=i[b];if(!c&&(l.has(b)||e.startsWith("encrypted:")||e.startsWith("encrypted_failed:"))){j.debug(`Keeping secret global variable unresolved: ${b}`);continue}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}`),d=d.replace(a,e)}else j.warn(`Global variable not found: ${b}`)}return d},n=async a=>{if("string"==typeof a)return await m(a);if(Array.isArray(a))return await Promise.all(a.map(a=>n(a)));if(null!==a&&"object"==typeof a){let b={};for(let[c,d]of Object.entries(a))b[c]=await n(d);return b}return a},o=await n(a);return"object"==typeof a&&null!==a&&j.debug("Resolved global variables result:",JSON.stringify(o,null,2)),j.debug("Completed global variable resolution"),o}async function l(a){return k(a,{resolveSecrets:!1})}async function m(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`),m(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,m]),(0,d.A)(k,"
|
|
1
|
+
exports.id=7993,exports.ids=[1925,3629,4306,6793,7993,9174],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}},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}})},56793:(a,b,c)=>{"use strict";c.d(b,{eh:()=>g,ru:()=>e});let d=(0,c(50846).h)("backend/services/scheduler/flowRunEventBus");function e(a){return"signal"===a.kind}class f{publish(a){if(0===this.listeners.size)return;let b=e(a)?`signal topic=${a.topic} emitter=${a.emitterFlowId}`:`flow=${a.flowId} status=${a.status}`;for(let c of(d.debug(`Publishing flow event: ${b} firedBy=${a.firedBy} depth=${a.chainDepth} listeners=${this.listeners.size}`),[...this.listeners]))try{c(a)}catch(a){d.warn("A flow-run event listener threw:",a)}}subscribe(a){return this.listeners.add(a),()=>{this.listeners.delete(a)}}get listenerCount(){return this.listeners.size}constructor(){this.listeners=new Set}}function g(){return global.__flujo_flow_run_event_bus||(global.__flujo_flow_run_event_bus=new f),global.__flujo_flow_run_event_bus}},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:()=>m,V:()=>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,b={}){j.debug("Entering resolveGlobalVars method");let c=!1!==b.resolveSecrets,d=await (0,f.YM)(g.Z.GLOBAL_ENV_VARS,{}),e=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}(d);j.debug(`Loaded ${Object.keys(d).length} global environment variables (${e?"new":"old"} format)`);let i={},l=new Set;if(e)for(let[a,b]of Object.entries(d))i[a]=b.value,b.metadata.isSecret&&l.add(a);else i={...d};let m=async a=>{let b=a.match(/\$\{global:([^}]+)\}/g);if(!b)return a;let d=a;for(let a of b){let b=a.substring(9,a.length-1);if(void 0!==i[b]){let e=i[b];if(!c&&(l.has(b)||e.startsWith("encrypted:")||e.startsWith("encrypted_failed:"))){j.debug(`Keeping secret global variable unresolved: ${b}`);continue}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}`),d=d.replace(a,e)}else j.warn(`Global variable not found: ${b}`)}return d},n=async a=>{if("string"==typeof a)return await m(a);if(Array.isArray(a))return await Promise.all(a.map(a=>n(a)));if(null!==a&&"object"==typeof a){let b={};for(let[c,d]of Object.entries(a))b[c]=await n(d);return b}return a},o=await n(a);return"object"==typeof a&&null!==a&&j.debug("Resolved global variables result:",JSON.stringify(o,null,2)),j.debug("Completed global variable resolution"),o}async function l(a){return k(a,{resolveSecrets:!1})}async function m(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`),m(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,m]),(0,d.A)(k,"605caa1e030009a4bc7e820854ff481d3e0295325d",null),(0,d.A)(l,"4003ce37366709f5add0c98a6e32e47a1006fd7c7d",null),(0,d.A)(m,"6061ed6d99a98b5d9f5d2d15065caab0a27d6a8987",null)},75879:(a,b,c)=>{"use strict";Object.defineProperty(b,"A",{enumerable:!0,get:function(){return d.registerServerReference}});let d=c(97954)},78335:()=>{},91959:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"4003ce37366709f5add0c98a6e32e47a1006fd7c7d":()=>d.V,"605caa1e030009a4bc7e820854ff481d3e0295325d":()=>d.resolveGlobalVars,"6061ed6d99a98b5d9f5d2d15065caab0a27d6a8987":()=>d.G});var d=c(73456)},96487:()=>{},97020:(a,b,c)=>{"use strict";c.d(b,{Af:()=>g,PK:()=>f,Pq:()=>e});var d=c(60453);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"}}}};
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";exports.id=8284,exports.ids=[1925,3629,4306,6793,8284,9174],exports.modules={1925:(a,b,c)=>{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()},23310:(a,b,c)=>{c.d(b,{GN:()=>x,UC:()=>z,Xg:()=>y});var d=c(50846),e=c(20433),f=c(58858),g=c(46496),h=c(81226),i=c(84671),j=c(88185),k=c(14265),l=c(1905),m=c(33233),n=c(9312),o=c(97630);let p=(0,d.h)("backend/services/flow/generateFlow"),q=o.Jt;function r(a,b,c,d){let e=c?`MULTI-LEVEL FLOWS — you MAY design subflows that are themselves brand-new flows:
|
|
2
|
+
- A subflow node normally references an EXISTING flow via "flow". To instead create a NEW child flow, use ONE of these on the subflow node (not "flow"):
|
|
3
|
+
- "subflowSpec": an inline nested FlowSpec (you author the whole child now), or
|
|
4
|
+
- "generateSubflow": a short natural-language description of the child — FLUJO will generate that child flow for you.
|
|
5
|
+
- Nest only when a self-contained sub-task genuinely deserves its own flow. Nesting is bounded: at most ${d} level(s) deep and ${h.lk} flows total. Keep it minimal.`:`SUBFLOWS: a subflow node's "flow" must reference an EXISTING flow (by name or id). Do NOT use "subflowSpec" or "generateSubflow" — multi-level generation is off for this run.`,f=b?`CAPABILITY ACQUISITION — you are allowed to EXPAND this FLUJO instance:
|
|
6
|
+
- If the task needs a capability none of the configured servers provides (voice, vision, browsing, email, code execution, …), use search_mcp_marketplace to find a server for it, then install_mcp_server to install the best match. Prefer servers that need no API keys (empty requiredEnv); if the best option needs keys, install a keyless alternative or note the requirement in the flow description.
|
|
7
|
+
- After a successful install, reference the returned server name in a process node's "servers" list and enable the tools it reported.
|
|
8
|
+
- Be ambitious: an actual capability (real audio, real browsing, real files) beats a text approximation. Search with several short terms ("voice", "tts", "speech") — the registry matches server NAMES only.`:`CAPABILITY DISCOVERY — you may search but NOT install:
|
|
9
|
+
- If the task needs a capability none of the configured servers provides, you may use search_mcp_marketplace to see what exists. Do NOT reference unconfigured servers in the spec; instead mention the recommended server (its registry name) in the flow "description" so the user can install it.`;return`You design workflows for FLUJO, an MCP-first workflow builder. The user describes what they want; you emit a flow specification as JSON.
|
|
10
|
+
|
|
11
|
+
OUTPUT FORMAT — when you are done (after any tool use), respond with ONLY one JSON object, no prose, no code fences.
|
|
12
|
+
|
|
13
|
+
${j.R}
|
|
14
|
+
|
|
15
|
+
${o.Mr}
|
|
16
|
+
|
|
17
|
+
${f}
|
|
18
|
+
|
|
19
|
+
${e}
|
|
20
|
+
|
|
21
|
+
${a}`}function s(a){return a.map(a=>`- [${a.severity}] ${a.message}`).join("\n")}function t(a){let b=[{type:"function",function:{name:"search_mcp_marketplace",description:'Search the public MCP server registry. The registry matches the query against server NAMES only (substring), so use short single terms ("voice", "tts", "browser") and try several. Returns name, description, whether FLUJO can install it, and which env vars/keys it requires.',parameters:{type:"object",properties:{query:{type:"string",description:"Short search term matched against server names."}},required:["query"]}}}];return a&&b.push({type:"function",function:{name:"install_mcp_server",description:"Install an MCP server from the registry (by the exact name returned by search) and connect it. Returns the server name to reference in the spec and the tools it provides — or needsEnv when required keys are missing (then pick an alternative or note it for the user). Installing can take a while (package download).",parameters:{type:"object",properties:{name:{type:"string",description:'Exact registry name from search results, e.g. "ai.keenable/web-search".'}},required:["name"]}}}),b}async function u(a,b,c,d){if("search_mcp_marketplace"===a){let a="string"==typeof b.query?b.query:"";try{return await (0,k.e3)(a)}catch(a){return{error:`Registry search failed: ${a instanceof Error?a.message:String(a)}`}}}if("install_mcp_server"===a){if(!c)return{error:"Installing is not allowed in this generation (allowInstall is off)."};let a="string"==typeof b.name?b.name:"",e=await (0,k.aM)(a,void 0,{resolveOnly:!0}),f=await (0,l.Ej)(),g=(0,m.e5)({caller:"generator",settings:f,registryName:a,allowInstall:c});e.plan&&await (0,l.NB)((0,m.UM)(e.plan,"generator",g,!1));let h=await (0,k.aM)(a);return h.plan&&await (0,l.NB)((0,m.UM)(h.plan,"generator",g,h.installed,h.error)),h.installed&&h.serverName&&(d.contextDirty=!0,d.installedServers.push({name:h.serverName,tools:(h.tools??[]).map(a=>a.name),...h.alreadyExisted?{alreadyExisted:!0}:{},...h.plan?.command?{command:h.plan.command}:{},...h.plan?.args?{args:h.plan.args}:{},...h.plan?.verificationStatus?{verificationStatus:h.plan.verificationStatus}:{}})),h}return{error:`Unknown tool: ${a}`}}async function v(a,b,c,d,e,f,h){let i={};for(let a of e){if("function"!==a.type)continue;let b=a.function.name;i[b]=a=>u(b,a,f,h)}for(let j=0;j<=8;j++){let k=e.length>0&&j<8,{completion:l}=await a.createCompletion({model:b,apiKey:c,messages:d,temperature:0,maxTokens:(0,g.normalizeMaxTokens)(b.maxTokens),...k?{tools:e,localToolExecutors:i}:{}}),m=l.choices?.[0]?.message,n=m?.tool_calls??[];if(0===n.length)return"string"==typeof m?.content?m.content:"";for(let a of(d.push({role:"assistant",content:m?.content??null,tool_calls:n}),n)){if("function"!==a.type)continue;let b={};try{b=JSON.parse(a.function.arguments||"{}")}catch{}p.info(`Generator tool call: ${a.function.name}(${a.function.arguments})`);let c=await u(a.function.name,b,f,h);d.push({role:"tool",tool_call_id:a.id,content:JSON.stringify(c)})}7===j&&d.push({role:"user",content:"Tool budget exhausted. Emit the COMPLETE flow specification now as a single JSON object using what you have."})}return""}function w(a){let b=a.indexOf("{");if(-1===b)return null;let c=0,d=!1,e=!1;for(let f=b;f<a.length;f++){let g=a[f];if(d){e?e=!1:"\\"===g?e=!0:'"'===g&&(d=!1);continue}if('"'===g)d=!0;else if("{"===g)c++;else if("}"===g&&0==--c)try{return JSON.parse(a.slice(b,f+1))}catch{break}}return null}async function x(a){var b;let c="string"==typeof a?.description?a.description.trim():"";if(!c)return{success:!1,error:"A flow description is required",statusCode:400};if(!a?.modelId||"string"!=typeof a.modelId)return{success:!1,error:"A generator model id is required",statusCode:400};let d=!0===a.allowInstall,g=!1!==a.allowSubflows,i=g?"number"!=typeof(b=a.maxDepth)||Number.isNaN(b)?q:Math.max(0,Math.min(h.A_,Math.floor(b))):0,j=await e.modelService.getModel(a.modelId);if(!j)return{success:!1,error:`Generator model not found: ${a.modelId}`,statusCode:404};let k=await e.modelService.resolveAndDecryptApiKey(j.ApiKey)||("codex-cli"!==j.adapter||j.ApiKey?.trim()?null:"");if(null===k)return{success:!1,error:"Could not resolve the generator model API key",statusCode:500};let l=await (0,n.jY)(),m=(0,f.getCompletionAdapter)(j),u=t(d),x={installedServers:[],contextDirty:!1},y=Math.min("number"==typeof a.maxRepairs&&a.maxRepairs>=0?a.maxRepairs:1,2),z=1;async function A(a,b){let c,e=[{role:"system",content:r(l.catalog,d,g&&b<i,i)},{role:"user",content:a}];try{c=await v(m,j,k,e,u,d,x)}catch(a){return p.warn("A child subflow generation call failed; leaving the subflow unresolved",a),null}let f=w(c);return f&&"object"==typeof f?f:null}async function B(a,b){if(a&&Array.isArray(a.nodes))for(let c of a.nodes){if(c?.type!=="subflow"||c.flow)continue;if(c.subflowSpec){await B(c.subflowSpec,b+1);continue}let a="string"==typeof c.generateSubflow?c.generateSubflow.trim():"";if(!a)continue;if(b+1>i||z>=h.lk){p.info(`Not expanding generateSubflow (depth ${b+1}, ${z} flows so far): budget/depth reached`);continue}let d=await A(a,b+1);d?(z++,c.subflowSpec=d,delete c.generateSubflow,await B(d,b+1)):delete c.generateSubflow}}let C=[{role:"system",content:r(l.catalog,d,g,i)},{role:"user",content:c}],D=null,E=0;for(let a=0;a<=y;a++){let b;E++,z=1;try{b=await v(m,j,k,C,u,d,x)}catch(a){if(p.error("Generator model call failed",a),D)break;return{success:!1,error:`The generator model call failed: ${a instanceof Error?a.message:String(a)}`,statusCode:502}}let c=w(b);if(!c){if(p.warn(`Attempt ${E}: model output contained no parseable JSON object`),x.contextDirty){try{l=await (0,n.jY)()}catch(a){p.warn("Re-gathering context after install failed; keeping the stale catalog",a)}x.contextDirty=!1}C.push({role:"assistant",content:b},{role:"user",content:"Your reply contained no parseable JSON object. Re-emit the COMPLETE flow specification as a single JSON object and nothing else."});continue}if(g)try{await B(c,0)}catch(a){p.warn("Subflow expansion failed; compiling the root spec as-is",a)}if(x.contextDirty){try{l=await (0,n.jY)()}catch(a){p.warn("Re-gathering context after install failed; validating with the stale catalog",a)}x.contextDirty=!1}let e=(0,o.oW)(c,l,{maxDepth:i,maxFlows:h.lk});if(!e.success){C.push({role:"assistant",content:b},{role:"user",content:`The specification could not be compiled:
|
|
22
|
+
${s(e.issues)}
|
|
23
|
+
Fix these problems and re-emit the COMPLETE corrected JSON (only the JSON).`});continue}e.guardChanges.length>0&&p.info(`Attempt ${E}: scratchpad-var guard rewrote ${e.guardChanges.length} reference(s)`),e.repairChanges.length>0&&p.info(`Attempt ${E}: auto-repair adjusted the spec (${e.repairChanges.length} change(s))`);let f=e.validation;if(D={flows:e.flows,rootFlow:e.flow,validation:f},0===f.errorCount)break;p.info(`Attempt ${E}: bundle has ${f.errorCount} error(s)`+(a<y?"; asking the model to repair":"; repair budget exhausted")),a<y&&C.push({role:"assistant",content:b},{role:"user",content:`The flow you specified has these problems:
|
|
24
|
+
${s(f.issues)}
|
|
25
|
+
Fix the errors (warnings are advisory) and re-emit the COMPLETE corrected JSON (only the JSON).`})}return D?(p.info(`Generated draft bundle rooted at "${D.rootFlow.name}" (${D.flows.length} flow(s)) in ${E} attempt(s): ${D.validation.errorCount} error(s), ${D.validation.warningCount} warning(s), ${x.installedServers.length} server(s) installed`),{success:!0,flow:D.rootFlow,validation:D.validation,flows:D.flows,rootFlowId:D.rootFlow.id,attempts:E,installedServers:x.installedServers}):{success:!1,error:"The model did not produce a usable flow specification. Try rephrasing the description or a different generator model.",statusCode:422}}async function y(a){let b="string"==typeof a?.description?a.description.trim():"";if(!b)return{success:!1,error:"A change description is required",statusCode:400};if(!a?.modelId||"string"!=typeof a.modelId)return{success:!1,error:"A generator model id is required",statusCode:400};let c=a?.flow;if(!c||"object"!=typeof c||!Array.isArray(c.nodes)||!Array.isArray(c.edges))return{success:!1,error:"A valid flow to improve is required",statusCode:400};let d=(Array.isArray(a.relatedFlows)?a.relatedFlows:[]).filter(a=>!!a&&"object"==typeof a&&"string"==typeof a.id&&a.id!==c.id&&Array.isArray(a.nodes)&&Array.isArray(a.edges)).filter((a,b,c)=>c.findIndex(b=>b.id===a.id)===b),g=await e.modelService.getModel(a.modelId);if(!g)return{success:!1,error:`Generator model not found: ${a.modelId}`,statusCode:404};let j=await e.modelService.resolveAndDecryptApiKey(g.ApiKey)||("codex-cli"!==g.adapter||g.ApiKey?.trim()?null:"");if(null===j)return{success:!1,error:"Could not resolve the generator model API key",statusCode:500};let k=!0===a.allowInstall,l=await (0,n.jY)(),m=(0,f.getCompletionAdapter)(g),o=t(k),q={installedServers:[],contextDirty:!1},u=Math.min("number"==typeof a.maxRepairs&&a.maxRepairs>=0?a.maxRepairs:1,2),x=(0,h.FH)(c),y={};for(let a of c.nodes)a?.id&&a.position&&"number"==typeof a.position.x&&"number"==typeof a.position.y&&(y[a.id]={x:a.position.x,y:a.position.y});let z=a=>{let b=new Map((a.compile.flows??[]).filter(a=>a.id!==c.id).map(a=>[a.id,a]));for(let a of d)b.set(a.id,{id:a.id,name:a.name});return{models:a.compile.models,servers:a.compile.servers,serverTools:a.compile.serverTools,flows:[...b.values()]}},A=`EXISTING FLOW (modify this — keep unchanged parts intact, and KEEP each node's "key" for any node you do NOT restructure so its canvas position is preserved):
|
|
26
|
+
${JSON.stringify(x)}
|
|
27
|
+
|
|
28
|
+
CHANGE REQUEST:
|
|
29
|
+
${b}
|
|
30
|
+
|
|
31
|
+
Re-emit the COMPLETE flow specification as a single JSON object (only the JSON), including the nodes you did not change.`,B=[{role:"system",content:r(l.catalog,k,!1,0)},{role:"user",content:A}],C=null,D=0;for(let a=0;a<=u;a++){let b;D++;try{b=await v(m,g,j,B,o,k,q)}catch(a){if(p.error("Improver model call failed",a),C)break;return{success:!1,error:`The generator model call failed: ${a instanceof Error?a.message:String(a)}`,statusCode:502}}if(q.contextDirty){try{l=await (0,n.jY)()}catch(a){p.warn("Re-gathering context after install failed; using the stale catalog",a)}q.contextDirty=!1}let e=w(b);if(!e){p.warn(`Improve attempt ${D}: model output contained no parseable JSON object`),B.push({role:"assistant",content:b},{role:"user",content:"Your reply contained no parseable JSON object. Re-emit the COMPLETE flow specification as a single JSON object and nothing else."});continue}let f=(0,h.dM)(e,z(l),{maxDepth:0,maxFlows:1,positions:y});if(!f.flow){B.push({role:"assistant",content:b},{role:"user",content:`The specification could not be compiled:
|
|
32
|
+
${s(f.issues)}
|
|
33
|
+
Fix these problems and re-emit the COMPLETE corrected JSON (only the JSON).`});continue}f.flow.id=c.id,"string"==typeof e.name&&e.name.trim()||(f.flow.name=c.name),(0,h.Zn)(f.flow);let r=(0,i.nC)(f.flow,{models:l.compile.models,servers:l.validatorServers,serverTools:l.compile.serverTools}),t=(0,n.RB)(f.issues,r);if(C={flows:[...d.map(a=>({flow:a,validation:(0,i.nC)(a,{models:l.compile.models,servers:l.validatorServers,serverTools:l.compile.serverTools})})),{flow:f.flow,validation:r}],rootFlow:f.flow,validation:t},0===t.errorCount)break;p.info(`Improve attempt ${D}: flow has ${t.errorCount} error(s)`+(a<u?"; asking the model to repair":"; repair budget exhausted")),a<u&&B.push({role:"assistant",content:b},{role:"user",content:`The flow you specified has these problems:
|
|
34
|
+
${s(t.issues)}
|
|
35
|
+
Fix the errors (warnings are advisory) and re-emit the COMPLETE corrected JSON (only the JSON).`})}return C?(p.info(`Improved draft "${C.rootFlow.name}" in ${D} attempt(s): ${C.validation.errorCount} error(s), ${C.validation.warningCount} warning(s), ${q.installedServers.length} server(s) installed`),{success:!0,flow:C.rootFlow,validation:C.validation,flows:C.flows,rootFlowId:C.rootFlow.id,attempts:D,installedServers:q.installedServers}):{success:!1,error:"The model did not produce a usable flow specification. Try rephrasing the change request or a different generator model.",statusCode:422}}async function z(a){let b=a?.flow;if(!b||"object"!=typeof b||!Array.isArray(b.nodes)||!Array.isArray(b.edges))return{success:!1,error:"A valid flow to repair is required",statusCode:400};if(!a?.modelId||"string"!=typeof a.modelId)return{success:!1,error:"A repair model id is required",statusCode:400};let c=(0,i.nC)(b),d=c.issues.length>0?`
|
|
36
|
+
|
|
37
|
+
Known problems to fix:
|
|
38
|
+
${s(c.issues)}`:"";return y({flow:b,description:`Repair this flow's wiring so it is runnable, WITHOUT changing any node's prompt, model, or servers:
|
|
39
|
+
- add a Start node if one is missing, connected to the first step;
|
|
40
|
+
- add a Finish node if one is missing, connected from the last step;
|
|
41
|
+
- connect any disconnected process/subflow nodes.
|
|
42
|
+
Read node placement as intent: nodes stacked top-to-bottom are sequential steps, and nodes on the same horizontal line are parallel branches under a shared parent above them.${d}`,modelId:a.modelId,...void 0!==a.allowInstall?{allowInstall:a.allowInstall}:{},...void 0!==a.maxRepairs?{maxRepairs:a.maxRepairs}:{}})}},56793:(a,b,c)=>{c.d(b,{eh:()=>g,ru:()=>e});let d=(0,c(50846).h)("backend/services/scheduler/flowRunEventBus");function e(a){return"signal"===a.kind}class f{publish(a){if(0===this.listeners.size)return;let b=e(a)?`signal topic=${a.topic} emitter=${a.emitterFlowId}`:`flow=${a.flowId} status=${a.status}`;for(let c of(d.debug(`Publishing flow event: ${b} firedBy=${a.firedBy} depth=${a.chainDepth} listeners=${this.listeners.size}`),[...this.listeners]))try{c(a)}catch(a){d.warn("A flow-run event listener threw:",a)}}subscribe(a){return this.listeners.add(a),()=>{this.listeners.delete(a)}}get listenerCount(){return this.listeners.size}constructor(){this.listeners=new Set}}function g(){return global.__flujo_flow_run_event_bus||(global.__flujo_flow_run_event_bus=new f),global.__flujo_flow_run_event_bus}}};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";exports.id=8645,exports.ids=[1925,4306,8645],exports.modules={1925:(a,b,c)=>{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()},24991:(a,b,c)=>{c.d(b,{SA:()=>M,MH:()=>O,M2:()=>J,HV:()=>L,$Z:()=>P,Xd:()=>F});var d=c(50846),e=c(93868),f=c(25113);function g(a,b,c){if("string"!=typeof c)return;let d=c.trim();0!==d.length&&a.push({location:b,text:d})}function h(a){let b=[];for(let c of a.flows??[])b.push(...function(a){let b=[];for(let d of(g(b,`flow:${a.id}.description`,a.description),a.nodes??[])){var c=a.id;let e=d.id,f=`flow:${c}.node:${e}`;g(b,`${f}.description`,d.data?.description),d.data?.properties&&"object"==typeof d.data.properties&&function a(b,c,d,e,f=0){if(!(f>12)&&null!=d){if("string"==typeof d)return void g(b,c,d);if("object"==typeof d&&!e.has(d)){if(e.add(d),Array.isArray(d))return void d.forEach((d,g)=>a(b,`${c}[${g}]`,d,e,f+1));for(let[g,h]of Object.entries(d))a(b,`${c}.${g}`,h,e,f+1)}}}(b,`${f}.properties`,d.data.properties,new WeakSet)}return b}(c));for(let c of a.models??[])b.push(...function(a){let b=[],c=`model:${a.id}`;return g(b,`${c}.baseUrl`,a.baseUrl),g(b,`${c}.promptTemplate`,a.promptTemplate),g(b,`${c}.displayName`,a.displayName),g(b,`${c}.description`,a.description),g(b,`${c}.name`,a.name),b}(c));for(let c of a.plannedExecutions??[])b.push(...function(a){let b=[],c=`plannedExecution:${a.id}`;return g(b,`${c}.name`,a.name),g(b,`${c}.prompt`,a.prompt),b}(c));return b}var i=c(1925);let j=["path","repo","token","email","url-cred","name","other"];function k(a,b){return`sp_${function(a){let b=5381;for(let c=0;c<a.length;c++)b=(b<<5)+b^a.charCodeAt(c);return(b>>>0).toString(16).padStart(8,"0")}(`${a}\0${b}`)}`}function l(a,b){let c=`${a}_${b}`.toUpperCase().replace(/[^A-Z0-9_.-]+/g,"_").replace(/^[_.-]+|[_.-]+$/g,"")||`${a}_SECRET`;return e.IE.test(c)?c:`${a}_SECRET`}let m=["/usr/","/bin/","/sbin/","/lib/","/lib64/","/etc/","/var/","/opt/","/proc/","/sys/","/dev/","/tmp/","/run/","/boot/","/mnt/","/srv/","/node_modules/"],n=["c:\\windows","c:\\program files","c:\\programdata"],o=/[.,;:!?)\]}'"/\\]$/;function p(a){if(!a)return 0;let b=new Map;for(let c of a)b.set(c,(b.get(c)??0)+1);let c=0;for(let d of b.values()){let b=d/a.length;c-=b*Math.log2(b)}return c}let q=[{re:/\bhttps?:\/\/[^/\s:@]+:[^/\s:@]+@[^\s"'<>]+/gi,kind:"url-cred",priority:1,rationale:"URL with embedded credentials",confidence:"high"},{re:/\bBearer\s+([A-Za-z0-9._~+/=-]{16,})/gi,kind:"token",priority:2,rationale:"Bearer token",confidence:"high",group:1},{re:/(?:https?:\/\/)?(?:www\.)?(?:github\.com|gitlab\.com|bitbucket\.org)[/:]([A-Za-z0-9](?:[A-Za-z0-9._-]{0,38})\/[A-Za-z0-9](?:[A-Za-z0-9._-]{0,99}?))(?=(?:\.git)?(?![A-Za-z0-9._/-]))/gi,kind:"repo",priority:3,rationale:"owner/repo slug in a VCS URL",confidence:"high",group:1},{re:/\bgit@[A-Za-z0-9.-]+:([A-Za-z0-9](?:[A-Za-z0-9._-]{0,38})\/[A-Za-z0-9](?:[A-Za-z0-9._-]{0,99}?))(?=(?:\.git)?(?![A-Za-z0-9._/-]))/gi,kind:"repo",priority:3,rationale:"owner/repo slug in a git SSH URL",confidence:"high",group:1},{re:/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g,kind:"email",priority:4,rationale:"Email address",confidence:"medium"},{re:/\b[A-Za-z]:\\[^\s"'<>|?*]+/g,kind:"path",priority:5,rationale:"Windows absolute file path",confidence:"medium"},{re:/(?<![A-Za-z0-9._~:/])\/[A-Za-z0-9._-]+(?:\/[A-Za-z0-9._-]+)+/g,kind:"path",priority:6,rationale:"POSIX absolute file path",confidence:"medium"}],r={re:/(?<![A-Za-z0-9._/-])[A-Za-z0-9](?:[A-Za-z0-9._-]{0,38})\/[A-Za-z0-9](?:[A-Za-z0-9._-]{0,99})(?![A-Za-z0-9._/-])/g,kind:"repo",priority:8,rationale:"owner/repo-shaped slug (opt-in, low confidence)",confidence:"low"},s=new Set(["and/or","input/output","read/write","client/server","tcp/ip","files/folders","yes/no","true/false","on/off","src/utils","a/b"]),t=/(?<![A-Za-z0-9_-])([A-Za-z][A-Za-z0-9_-]{1,64})\s*[:=]\s*("[^"]{4,}"|'[^']{4,}'|[^\s"']{6,})/g;function u(a){return new RegExp(e.HQ.source).test(a)}let v={path:"PATH",repo:"REPO",token:"TOKEN",email:"EMAIL","url-cred":"URL",name:"NAME",other:"SECRET"};function w(a,b){let c=b;if("path"===a){let a=b.split(/[\\/]/).filter(Boolean);c=a[a.length-1]||b}else"email"===a?c=b.split("@")[0]||b:"repo"===a?c=b.replace(/\//g,"_"):"url-cred"===a?c=b.replace(/^https?:\/\//i,"").split(/[/:@]/)[0]||b:"token"===a&&(c=b.slice(0,8));return l(v[a],c)}function x(a,b={}){let c=b.entropyThreshold??4,d=!0===b.enableEntropy,e=!0===b.enableRepoSlug?[...q,r]:q,f=[],g=new Set;for(let b of a)for(let a of function(a){let b=[...a].sort((a,b)=>a.priority-b.priority||b.end-b.start-(a.end-a.start)||a.start-b.start),c=[];for(let a of b)c.some(b=>a.start<b.end&&b.start<a.end)||c.push(a);return c.sort((a,b)=>a.start-b.start)}([...function(a,b){let c=[];for(let d of b){let b,e=new RegExp(d.re.source,d.re.flags);for(;null!==(b=e.exec(a));){let a=d.group??0,f=b[a];if(!f){e.lastIndex===b.index&&e.lastIndex++;continue}let g=b.index+(a>0?b[0].indexOf(f):0);if("path"===d.kind&&(f=function(a){let b=a;for(;b.length>1&&o.test(b);)b=b.slice(0,-1);return b}(f)),"path"===d.kind&&function(a){let b=a.toLowerCase();return!!(b.includes("node_modules/")||b.includes("node_modules\\"))||(/^[a-z]:\\/.test(b)?n.some(a=>b.startsWith(a)):m.some(a=>b.startsWith(a)))}(f)||"repo"===d.kind&&"low"===d.confidence&&s.has(f.toLowerCase())){e.lastIndex===b.index&&e.lastIndex++;continue}c.push({start:g,end:g+f.length,value:f,kind:d.kind,priority:d.priority,rationale:d.rationale,confidence:d.confidence}),e.lastIndex===b.index&&e.lastIndex++}}return c}(b.text,e),...function(a){let b,c=[],d=new RegExp(t.source,t.flags);for(;null!==(b=d.exec(a));){let a=b[1],d=b[2];if(!(0,i.xc)(a)||((d.startsWith('"')&&d.endsWith('"')||d.startsWith("'")&&d.endsWith("'"))&&(d=d.slice(1,-1)),!d||u(d)))continue;let e=b.index+b[0].indexOf(d,a.length);c.push({start:e,end:e+d.length,value:d,kind:"token",priority:2,rationale:`Value assigned to secret-like key "${a}"`,confidence:"high"})}return c}(b.text),...d?function(a,b){let c,d=[],e=/[A-Za-z0-9._~+/=-]{20,}/g;for(;null!==(c=e.exec(a));){let a=c[0];(function(a,b){if(a.length<24)return!1;let c=/[A-Za-z]/.test(a),d=/[0-9]/.test(a);return!!c&&!!d&&p(a)>=b})(a,b)&&d.push({start:c.index,end:c.index+a.length,value:a,kind:"token",priority:7,rationale:`High-entropy string (${p(a).toFixed(2)} bits/char)`,confidence:"low"})}return d}(b.text,c):[]].filter(a=>!u(a.value)))){let c=`${b.location}\0${a.value}`;g.has(c)||(g.add(c),f.push({id:k(b.location,a.value),location:b.location,excerpt:a.value,kind:a.kind,source:"heuristic",confidence:a.confidence,suggestedSecretName:w(a.kind,a.value),rationale:a.rationale}))}return f}async function y(a,b){let c,d=[];if(0===a.length)return{proposals:[],warnings:d};let e=b.maxTargets??200,f=b.maxCharsPerTarget??2e3,g=a.slice(0,e).map(a=>({location:a.location,text:a.text.length>f?a.text.slice(0,f):a.text})),h=new Map(a.map(a=>[a.location,a]));try{c=await b.completion({modelIdentifier:b.modelIdentifier,temperature:0,messages:[{role:"system",content:'You are a security assistant helping to package a workflow for sharing.\nYou are given a JSON array of content slices, each { "location", "text" }.\nIdentify substrings that are SECRETS or INSTANCE-SPECIFIC values that should\nNOT be shared verbatim: absolute file paths, owner/repo slugs, API tokens or\nkeys, credential-bearing URLs, email addresses, and similar.\n\nReturn ONLY a JSON array (no prose, no markdown fences). Each element:\n{ "location": string (echo the slice location exactly),\n "excerpt": string (the EXACT substring, copied verbatim from that slice text),\n "kind": one of "path"|"repo"|"token"|"email"|"url-cred"|"name"|"other",\n "suggestedSecretName": UPPER_SNAKE identifier,\n "suggestedDescription": short human description,\n "rationale": one short sentence }.\nDo NOT invent excerpts that are not present in the given text. If nothing\nqualifies, return [].'},{role:"user",content:JSON.stringify(g)}]})}catch(a){return d.push(`Model-driven pass failed: ${a instanceof Error?a.message:String(a)}`),{proposals:[],warnings:d}}if(!c?.success)return d.push(`Model-driven pass returned an error: ${c?.error?.message??"unknown error"}`),{proposals:[],warnings:d};let i=c.completion?.choices?.[0]?.message?.content??"",m=function(a){if("string"!=typeof a)return null;let b=a.trim(),c=/^```(?:json)?\s*([\s\S]*?)\s*```$/i.exec(b);c&&(b=c[1].trim());let d=a=>{try{let b=JSON.parse(a);return Array.isArray(b)?b:null}catch{return null}},e=d(b);if(e)return e;let f=b.indexOf("["),g=b.lastIndexOf("]");return f>=0&&g>f?d(b.slice(f,g+1)):null}("string"==typeof i?i:"");if(!m)return d.push("Model-driven pass returned no parseable JSON; ignoring its output."),{proposals:[],warnings:d};let n=[],o=new Set;for(let a of m){let b=function(a,b){var c;if(!a||"object"!=typeof a)return null;let d="string"==typeof a.location?a.location:"",e="string"==typeof a.excerpt?a.excerpt.trim():"";if(!d||!e)return null;let f=b.get(d);if(!f||!f.text.includes(e))return null;let g="string"==typeof(c=a.kind)&&j.includes(c)?c:"other",h="string"==typeof a.suggestedSecretName&&a.suggestedSecretName.trim()?l("SECRET",a.suggestedSecretName):w(g,e);return{id:k(d,e),location:d,excerpt:e,kind:g,source:"model",suggestedSecretName:h,suggestedDescription:"string"==typeof a.suggestedDescription?a.suggestedDescription.slice(0,200):void 0,rationale:"string"==typeof a.rationale?a.rationale.slice(0,200):void 0}}(a,h);if(!b)continue;let c=`${b.location} ${b.excerpt}`;o.has(c)||(o.add(c),n.push(b))}return{proposals:n,warnings:d}}async function z(a,b={}){let c=h(a),d=[],e=x(c,b),f=[];if(b.model){let a=await y(c,{modelIdentifier:b.model.modelIdentifier,completion:b.model.completion});f=a.proposals,d.push(...a.warnings)}return{proposals:function(a,b){let c=new Map,d=a=>`${a.location}\0${a.excerpt}`;for(let b of a)c.set(d(b),b);for(let a of b){let b=d(a);c.has(b)||c.set(b,a)}return Array.from(c.values())}(e,f),warnings:d}}function A(a,b){if("string"==typeof a)return b(a);if(Array.isArray(a))return a.map(a=>A(a,b));if(a&&"object"==typeof a){let c={};for(let[d,e]of Object.entries(a))c[d]=A(e,b);return c}return a}let B=(0,d.h)("backend/services/packages/buildPackage"),C=/\$\{global:([A-Za-z0-9_.-]+)\}/g;function D(a){return"object"==typeof a&&null!==a&&a.metadata?.isSecret===!0}function E(a){return a?Object.entries(a).map(([a,b])=>{let c=D(b)?null:e.mQ.exec(("string"==typeof b?b:b&&"object"==typeof b&&!b.metadata?.isSecret&&"string"==typeof b.value?b.value:void 0)??"");return{name:a,isSecret:D(b),...c?{globalVar:c[1]}:{}}}):[]}function F(a,b){let c=new Map(b.map(a=>[a.name,a])),d=[],e=[];for(let b of a){let a=c.get(b);if(!a){e.push(`MCP server "${b}" was not found.`);continue}let f=function(a){let b=a.source;if(!b||"local"===b.type)return null;switch(b.type){case"github":return{sourceType:"github",ref:b.ref?`${b.repositoryUrl}@${b.ref}`:b.repositoryUrl,name:a.name};case"registry":return{sourceType:"registry",ref:b.registryName,name:a.name};case"marketplace":return{sourceType:"marketplace",ref:b.id,name:a.name};case"remote":return{sourceType:"remote",url:a.serverUrl??a.websocketUrl,name:a.name};default:return null}}(a);if(!f){e.push(`MCP server "${b}" is a local server and cannot be packaged. Re-install it from GitHub, the registry, the marketplace, or as a remote server, then try again.`);continue}let g=E(a.headers);d.push({name:a.name,transport:a.transport,...a.disabled?{disabled:!0}:{},...a.autoApprove&&a.autoApprove.length?{autoApprove:a.autoApprove}:{},...a.folder?{folder:a.folder}:{},installOrigin:f,envDeclarations:E(a.env),...g.length?{headerDeclarations:g}:{}})}return{packaged:d,errors:e}}function G(a,b){let c=`${a}_${b}`.toUpperCase().replace(/[^A-Z0-9_.-]+/g,"_").replace(/^_+|_+$/g,"")||`${a}_SECRET`;return e.IE.test(c)?c:`${a}_SECRET`}function H(a){let b=(a.ApiKey??"").trim();if(!b)return{ref:{kind:"none"}};let c=e.mQ.exec(b);if(c)return{ref:{kind:"global",var:c[1]}};let d=G("MODEL",a.displayName||a.name||a.id);return{ref:{kind:"secret",secret:d},secret:{name:d,description:`API key for model "${a.displayName||a.name}"`,required:!0}}}function I(a){let b=[],c=new Set,d=(a,d)=>{for(let e of d??[]){if(!e.isSecret||e.secretRef)continue;let d=G("MCP",`${a}_${e.name}`);e.secretRef=d,c.has(d)||(c.add(d),b.push({name:d,description:`Secret "${e.name}" for MCP server "${a}"`,required:!0}))}};for(let b of a)d(b.name,b.envDeclarations),d(b.name,b.headerDeclarations);return b}function J(a,b){let c=new Map(b.models.map(a=>[a.id,a])),d=[],e=new Set,f=a=>{a&&!e.has(a.name)&&(e.add(a.name),d.push(a))};for(let b of a.modelIds){let a=c.get(b);a&&f(H(a).secret)}for(let c of I(F(a.mcpServerNames,b.mcpServers).packaged))f(c);return d}async function K(){let{flowService:a}=await c.e(7821).then(c.bind(c,87821)),{modelService:b}=await Promise.all([c.e(4322),c.e(5067),c.e(6034),c.e(7821),c.e(5096),c.e(544),c.e(6793)]).then(c.bind(c,20433)),{loadServerConfigs:d}=await Promise.all([c.e(4322),c.e(1805)]).then(c.bind(c,74186)),{getSchedulerService:e}=await Promise.all([c.e(3736),c.e(9794),c.e(4771),c.e(9174)]).then(c.bind(c,4771)),[f,g,h,i]=await Promise.all([a.loadFlows(),b.loadModels(),d(),e().list()]);return{flows:f,models:g,mcpServers:Array.isArray(h)?h:[],plannedExecutions:i.map(a=>a.execution)}}async function L(a){let b=await K();return{resolved:function(a,b){let c=new Map(b.flows.map(a=>[a.id,a])),d=new Map(b.models.map(a=>[a.id,a])),e=new Map(b.mcpServers.map(a=>[a.name,a])),g=new Map(b.plannedExecutions.map(a=>[a.id,a])),h=new Set,i=new Set(a.modelIds??[]),j=new Set(a.mcpServerNames??[]),k=new Set(a.plannedExecutionIds??[]),l=[],m=[],n=new Set(a.flowIds??[]),o=new Set(a.modelIds??[]),p=new Set(a.mcpServerNames??[]);for(let a of k){let b=g.get(a);if(!b){m.push(`Planned execution "${a}" was not found and will be skipped.`);continue}!b.flowId||n.has(b.flowId)||h.has(b.flowId)||l.push({type:"flow",id:b.flowId,reason:`used by planned execution "${b.name}"`}),b.flowId&&n.add(b.flowId)}let q=new Set,r=Array.from(n);for(;r.length>0;){let a=r.shift();if(q.has(a))continue;q.add(a);let b=c.get(a);if(!b){m.push(`Referenced flow "${a}" was not found and will be skipped.`);continue}h.add(a);let g=(0,f.Xw)(b);for(let d of g.flowIds??[])q.has(d)||r.push(d),!n.has(d)&&d!==a&&(c.has(d)?l.some(a=>"flow"===a.type&&a.id===d)||l.push({type:"flow",id:d,reason:`subflow of "${b.name}"`}):m.push(`Flow "${b.name}" references missing subflow "${d}".`));for(let a of g.modelIds??[]){if(!d.has(a)){m.push(`Flow "${b.name}" references missing model "${a}".`);continue}!i.has(a)&&(i.add(a),o.has(a)||l.push({type:"model",id:a,reason:`used by flow "${b.name}"`}))}for(let a of g.mcpServerNames??[]){if(!e.has(a)){m.push(`Flow "${b.name}" references missing MCP server "${a}".`);continue}!j.has(a)&&(j.add(a),p.has(a)||l.push({type:"mcpServer",id:a,reason:`used by flow "${b.name}"`}))}}return{flowIds:Array.from(h),modelIds:Array.from(i),mcpServerNames:Array.from(j),plannedExecutionIds:Array.from(k),autoAdded:l,warnings:m}}(a,b),entities:b}}async function M(a,b,c=[]){B.info(`Building package "${b.name}" v${b.version}`);let{resolved:d,entities:g}=await L(a);return function(a,b,c,d=[]){let g=[],i=[...a.warnings],j=new Map(b.flows.map(a=>[a.id,a])),k=new Map(b.models.map(a=>[a.id,a])),l=new Map(b.plannedExecutions.map(a=>[a.id,a])),m=F(a.mcpServerNames,b.mcpServers);g.push(...m.errors);let n=[],o=new Set,p=a=>{a&&!o.has(a.name)&&(o.add(a.name),n.push(a))},q=a.modelIds.map(a=>k.get(a)).filter(a=>!!a),r=a.flowIds.map(a=>j.get(a)).filter(a=>!!a),s=a.plannedExecutionIds.map(a=>l.get(a)).filter(a=>!!a),t=q,u=function(a){let b=new Set,c=a=>"string"==typeof a?a.replace(C,(a,c)=>(b.add(c),`{{secret.${c}}}`)):Array.isArray(a)?a.map(c):a&&"object"==typeof a?Object.fromEntries(Object.entries(a).map(([a,b])=>[a,c(b)])):a;return{flows:a.map(a=>c(a)),secrets:Array.from(b,a=>({name:a,description:`Global variable ${a} referenced by a packaged flow`,required:!0}))}}(r),v=u.flows,w=s;for(let a of u.secrets)p(a);if(d.length>0){let a=function(a,b){let c=[],d=b.filter(a=>!!a.excerpt&&(!!e.IE.test(a.secretName)||(c.push(`Skipped substitution with invalid secret name "${a.secretName}".`),!1))).sort((a,b)=>b.excerpt.length-a.excerpt.length),f=a=>{let b=a;for(let a of d)b.includes(a.excerpt)&&(b=b.split(a.excerpt).join(`{{secret.${a.secretName}}}`));return b},g={flows:a.flows.map(a=>A(a,f)),models:a.models.map(a=>A(a,f)),plannedExecutions:a.plannedExecutions.map(a=>A(a,f))},h=[],i=new Set;for(let a of d)i.has(a.secretName)||(i.add(a.secretName),h.push({name:a.secretName,description:a.description?f(a.description):`Derived secret ${a.secretName}`,required:!0}));return{entities:g,secrets:h,warnings:c}}({flows:v,models:q,plannedExecutions:s},d);for(let b of(t=a.entities.models,v=a.entities.flows,w=a.entities.plannedExecutions,i.push(...a.warnings),a.secrets))p(b)}let y=t.map(a=>{let{ref:b,secret:c}=H(a);return p(c),{model:a,apiKeyRef:b}});for(let a of I(m.packaged))p(a);let z=new Set;for(let{apiKeyRef:a}of y)"global"===a.kind&&z.add(a.var);for(let a of m.packaged)for(let b of[...a.envDeclarations,...a.headerDeclarations??[]])b.globalVar&&z.add(b.globalVar);if(g.length>0)return{ok:!1,resolved:a,errors:g,warnings:i};try{let{json:b,package:e}=(0,f.Zp)({id:c.id,name:c.name,version:c.version,description:c.description,author:c.author,publisher:c.publisher,tags:c.tags,...z.size>0?{requiredGlobals:Array.from(z)}:{},secrets:n,models:y,mcpServers:m.packaged,flows:v,plannedExecutions:w}),j=(0,f.$j)(e);return j.warnings?.length&&i.push(...j.warnings),d.length>0&&i.push(...function(a,b={}){return x(h(a),b).map(a=>`Possible secret left in package at ${a.location}: "${a.excerpt}" (${a.kind}).`)}({flows:v,models:t,plannedExecutions:w})),{ok:!0,json:b,package:e,resolved:a,errors:g,warnings:i}}catch(b){return g.push(b instanceof Error?b.message:String(b)),{ok:!1,resolved:a,errors:g,warnings:i}}}(d,g,b,c.filter(a=>a.excerpt&&a.suggestedSecretName).map(a=>({excerpt:a.excerpt,secretName:a.suggestedSecretName,description:a.suggestedDescription})))}function N(a,b){let c=new Set(a.flowIds),d=new Set(a.modelIds),e=new Set(a.plannedExecutionIds);return{flows:b.flows.filter(a=>c.has(a.id)),models:b.models.filter(a=>d.has(a.id)),plannedExecutions:b.plannedExecutions.filter(a=>e.has(a.id))}}async function O(a,b={}){let{resolved:d,entities:e}=await L(a),f=N(d,e),g={entropyThreshold:b.entropyThreshold,enableEntropy:b.enableEntropy,enableRepoSlug:b.enableRepoSlug};if(b.modelIdentifier){let{modelService:a}=await Promise.all([c.e(4322),c.e(5067),c.e(6034),c.e(7821),c.e(5096),c.e(544),c.e(6793)]).then(c.bind(c,20433));g.model={modelIdentifier:b.modelIdentifier,completion:async b=>await a.generateChatCompletion({modelIdentifier:b.modelIdentifier,messages:b.messages,temperature:b.temperature})}}return z(f,g)}async function P(a){let{resolved:b,entities:c}=await L(a),d=h(N(b,c)),e=new Set,f=[];for(let a of d){if(e.has(a.text))continue;e.add(a.text);let b=a.location.split(":")[0]||"other";f.push({source:b,location:a.location,text:a.text})}return f.sort((a,b)=>b.text.length-a.text.length),f}},51669:(a,b)=>{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}.
|
|
1
|
+
"use strict";exports.id=8645,exports.ids=[1925,4306,8645],exports.modules={1925:(a,b,c)=>{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()},24991:(a,b,c)=>{c.d(b,{SA:()=>P,MH:()=>R,lJ:()=>F,M2:()=>M,HV:()=>O,$Z:()=>S,Xd:()=>H});var d=c(50846),e=c(93868),f=c(25113),g=c(22084);function h(a,b,c){if("string"!=typeof c)return;let d=c.trim();0!==d.length&&a.push({location:b,text:d})}function i(a){let b=[];for(let c of a.flows??[])b.push(...function(a){let b=[];for(let d of(h(b,`flow:${a.id}.description`,a.description),a.nodes??[])){var c=a.id;let e=d.id,f=`flow:${c}.node:${e}`;h(b,`${f}.description`,d.data?.description),d.data?.properties&&"object"==typeof d.data.properties&&function a(b,c,d,e,f=0){if(!(f>12)&&null!=d){if("string"==typeof d)return void h(b,c,d);if("object"==typeof d&&!e.has(d)){if(e.add(d),Array.isArray(d))return void d.forEach((d,g)=>a(b,`${c}[${g}]`,d,e,f+1));for(let[g,h]of Object.entries(d))a(b,`${c}.${g}`,h,e,f+1)}}}(b,`${f}.properties`,d.data.properties,new WeakSet)}return b}(c));for(let c of a.models??[])b.push(...function(a){let b=[],c=`model:${a.id}`;return h(b,`${c}.baseUrl`,a.baseUrl),h(b,`${c}.promptTemplate`,a.promptTemplate),h(b,`${c}.displayName`,a.displayName),h(b,`${c}.description`,a.description),h(b,`${c}.name`,a.name),b}(c));for(let c of a.plannedExecutions??[])b.push(...function(a){let b=[],c=`plannedExecution:${a.id}`;return h(b,`${c}.name`,a.name),h(b,`${c}.prompt`,a.prompt),b}(c));return b}var j=c(1925);let k=["path","repo","token","email","url-cred","name","other"];function l(a,b){return`sp_${function(a){let b=5381;for(let c=0;c<a.length;c++)b=(b<<5)+b^a.charCodeAt(c);return(b>>>0).toString(16).padStart(8,"0")}(`${a}\0${b}`)}`}function m(a,b){let c=`${a}_${b}`.toUpperCase().replace(/[^A-Z0-9_.-]+/g,"_").replace(/^[_.-]+|[_.-]+$/g,"")||`${a}_SECRET`;return e.IE.test(c)?c:`${a}_SECRET`}let n=["/usr/","/bin/","/sbin/","/lib/","/lib64/","/etc/","/var/","/opt/","/proc/","/sys/","/dev/","/tmp/","/run/","/boot/","/mnt/","/srv/","/node_modules/"],o=["c:\\windows","c:\\program files","c:\\programdata"],p=/[.,;:!?)\]}'"/\\]$/;function q(a){if(!a)return 0;let b=new Map;for(let c of a)b.set(c,(b.get(c)??0)+1);let c=0;for(let d of b.values()){let b=d/a.length;c-=b*Math.log2(b)}return c}let r=[{re:/\bhttps?:\/\/[^/\s:@]+:[^/\s:@]+@[^\s"'<>]+/gi,kind:"url-cred",priority:1,rationale:"URL with embedded credentials",confidence:"high"},{re:/\bBearer\s+([A-Za-z0-9._~+/=-]{16,})/gi,kind:"token",priority:2,rationale:"Bearer token",confidence:"high",group:1},{re:/(?:https?:\/\/)?(?:www\.)?(?:github\.com|gitlab\.com|bitbucket\.org)[/:]([A-Za-z0-9](?:[A-Za-z0-9._-]{0,38})\/[A-Za-z0-9](?:[A-Za-z0-9._-]{0,99}?))(?=(?:\.git)?(?![A-Za-z0-9._/-]))/gi,kind:"repo",priority:3,rationale:"owner/repo slug in a VCS URL",confidence:"high",group:1},{re:/\bgit@[A-Za-z0-9.-]+:([A-Za-z0-9](?:[A-Za-z0-9._-]{0,38})\/[A-Za-z0-9](?:[A-Za-z0-9._-]{0,99}?))(?=(?:\.git)?(?![A-Za-z0-9._/-]))/gi,kind:"repo",priority:3,rationale:"owner/repo slug in a git SSH URL",confidence:"high",group:1},{re:/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b/g,kind:"email",priority:4,rationale:"Email address",confidence:"medium"},{re:/\b[A-Za-z]:\\[^\s"'<>|?*]+/g,kind:"path",priority:5,rationale:"Windows absolute file path",confidence:"medium"},{re:/(?<![A-Za-z0-9._~:/])\/[A-Za-z0-9._-]+(?:\/[A-Za-z0-9._-]+)+/g,kind:"path",priority:6,rationale:"POSIX absolute file path",confidence:"medium"}],s={re:/(?<![A-Za-z0-9._/-])[A-Za-z0-9](?:[A-Za-z0-9._-]{0,38})\/[A-Za-z0-9](?:[A-Za-z0-9._-]{0,99})(?![A-Za-z0-9._/-])/g,kind:"repo",priority:8,rationale:"owner/repo-shaped slug (opt-in, low confidence)",confidence:"low"},t=new Set(["and/or","input/output","read/write","client/server","tcp/ip","files/folders","yes/no","true/false","on/off","src/utils","a/b"]),u=/(?<![A-Za-z0-9_-])([A-Za-z][A-Za-z0-9_-]{1,64})\s*[:=]\s*("[^"]{4,}"|'[^']{4,}'|[^\s"']{6,})/g;function v(a){return new RegExp(e.HQ.source).test(a)}let w={path:"PATH",repo:"REPO",token:"TOKEN",email:"EMAIL","url-cred":"URL",name:"NAME",other:"SECRET"};function x(a,b){let c=b;if("path"===a){let a=b.split(/[\\/]/).filter(Boolean);c=a[a.length-1]||b}else"email"===a?c=b.split("@")[0]||b:"repo"===a?c=b.replace(/\//g,"_"):"url-cred"===a?c=b.replace(/^https?:\/\//i,"").split(/[/:@]/)[0]||b:"token"===a&&(c=b.slice(0,8));return m(w[a],c)}function y(a,b={}){let c=b.entropyThreshold??4,d=!0===b.enableEntropy,e=!0===b.enableRepoSlug?[...r,s]:r,f=[],g=new Set;for(let b of a)for(let a of function(a){let b=[...a].sort((a,b)=>a.priority-b.priority||b.end-b.start-(a.end-a.start)||a.start-b.start),c=[];for(let a of b)c.some(b=>a.start<b.end&&b.start<a.end)||c.push(a);return c.sort((a,b)=>a.start-b.start)}([...function(a,b){let c=[];for(let d of b){let b,e=new RegExp(d.re.source,d.re.flags);for(;null!==(b=e.exec(a));){let a=d.group??0,f=b[a];if(!f){e.lastIndex===b.index&&e.lastIndex++;continue}let g=b.index+(a>0?b[0].indexOf(f):0);if("path"===d.kind&&(f=function(a){let b=a;for(;b.length>1&&p.test(b);)b=b.slice(0,-1);return b}(f)),"path"===d.kind&&function(a){let b=a.toLowerCase();return!!(b.includes("node_modules/")||b.includes("node_modules\\"))||(/^[a-z]:\\/.test(b)?o.some(a=>b.startsWith(a)):n.some(a=>b.startsWith(a)))}(f)||"repo"===d.kind&&"low"===d.confidence&&t.has(f.toLowerCase())){e.lastIndex===b.index&&e.lastIndex++;continue}c.push({start:g,end:g+f.length,value:f,kind:d.kind,priority:d.priority,rationale:d.rationale,confidence:d.confidence}),e.lastIndex===b.index&&e.lastIndex++}}return c}(b.text,e),...function(a){let b,c=[],d=new RegExp(u.source,u.flags);for(;null!==(b=d.exec(a));){let a=b[1],d=b[2];if(!(0,j.xc)(a)||((d.startsWith('"')&&d.endsWith('"')||d.startsWith("'")&&d.endsWith("'"))&&(d=d.slice(1,-1)),!d||v(d)))continue;let e=b.index+b[0].indexOf(d,a.length);c.push({start:e,end:e+d.length,value:d,kind:"token",priority:2,rationale:`Value assigned to secret-like key "${a}"`,confidence:"high"})}return c}(b.text),...d?function(a,b){let c,d=[],e=/[A-Za-z0-9._~+/=-]{20,}/g;for(;null!==(c=e.exec(a));){let a=c[0];(function(a,b){if(a.length<24)return!1;let c=/[A-Za-z]/.test(a),d=/[0-9]/.test(a);return!!c&&!!d&&q(a)>=b})(a,b)&&d.push({start:c.index,end:c.index+a.length,value:a,kind:"token",priority:7,rationale:`High-entropy string (${q(a).toFixed(2)} bits/char)`,confidence:"low"})}return d}(b.text,c):[]].filter(a=>!v(a.value)))){let c=`${b.location}\0${a.value}`;g.has(c)||(g.add(c),f.push({id:l(b.location,a.value),location:b.location,excerpt:a.value,kind:a.kind,source:"heuristic",confidence:a.confidence,suggestedSecretName:x(a.kind,a.value),rationale:a.rationale}))}return f}async function z(a,b){let c,d=[];if(0===a.length)return{proposals:[],warnings:d};let e=b.maxTargets??200,f=b.maxCharsPerTarget??2e3,g=a.slice(0,e).map(a=>({location:a.location,text:a.text.length>f?a.text.slice(0,f):a.text})),h=new Map(a.map(a=>[a.location,a]));try{c=await b.completion({modelIdentifier:b.modelIdentifier,temperature:0,messages:[{role:"system",content:'You are a security assistant helping to package a workflow for sharing.\nYou are given a JSON array of content slices, each { "location", "text" }.\nIdentify substrings that are SECRETS or INSTANCE-SPECIFIC values that should\nNOT be shared verbatim: absolute file paths, owner/repo slugs, API tokens or\nkeys, credential-bearing URLs, email addresses, and similar.\n\nReturn ONLY a JSON array (no prose, no markdown fences). Each element:\n{ "location": string (echo the slice location exactly),\n "excerpt": string (the EXACT substring, copied verbatim from that slice text),\n "kind": one of "path"|"repo"|"token"|"email"|"url-cred"|"name"|"other",\n "suggestedSecretName": UPPER_SNAKE identifier,\n "suggestedDescription": short human description,\n "rationale": one short sentence }.\nDo NOT invent excerpts that are not present in the given text. If nothing\nqualifies, return [].'},{role:"user",content:JSON.stringify(g)}]})}catch(a){return d.push(`Model-driven pass failed: ${a instanceof Error?a.message:String(a)}`),{proposals:[],warnings:d}}if(!c?.success)return d.push(`Model-driven pass returned an error: ${c?.error?.message??"unknown error"}`),{proposals:[],warnings:d};let i=c.completion?.choices?.[0]?.message?.content??"",j=function(a){if("string"!=typeof a)return null;let b=a.trim(),c=/^```(?:json)?\s*([\s\S]*?)\s*```$/i.exec(b);c&&(b=c[1].trim());let d=a=>{try{let b=JSON.parse(a);return Array.isArray(b)?b:null}catch{return null}},e=d(b);if(e)return e;let f=b.indexOf("["),g=b.lastIndexOf("]");return f>=0&&g>f?d(b.slice(f,g+1)):null}("string"==typeof i?i:"");if(!j)return d.push("Model-driven pass returned no parseable JSON; ignoring its output."),{proposals:[],warnings:d};let n=[],o=new Set;for(let a of j){let b=function(a,b){var c;if(!a||"object"!=typeof a)return null;let d="string"==typeof a.location?a.location:"",e="string"==typeof a.excerpt?a.excerpt.trim():"";if(!d||!e)return null;let f=b.get(d);if(!f||!f.text.includes(e))return null;let g="string"==typeof(c=a.kind)&&k.includes(c)?c:"other",h="string"==typeof a.suggestedSecretName&&a.suggestedSecretName.trim()?m("SECRET",a.suggestedSecretName):x(g,e);return{id:l(d,e),location:d,excerpt:e,kind:g,source:"model",suggestedSecretName:h,suggestedDescription:"string"==typeof a.suggestedDescription?a.suggestedDescription.slice(0,200):void 0,rationale:"string"==typeof a.rationale?a.rationale.slice(0,200):void 0}}(a,h);if(!b)continue;let c=`${b.location} ${b.excerpt}`;o.has(c)||(o.add(c),n.push(b))}return{proposals:n,warnings:d}}async function A(a,b={}){let c=i(a),d=[],e=y(c,b),f=[];if(b.model){let a=await z(c,{modelIdentifier:b.model.modelIdentifier,completion:b.model.completion});f=a.proposals,d.push(...a.warnings)}return{proposals:function(a,b){let c=new Map,d=a=>`${a.location}\0${a.excerpt}`;for(let b of a)c.set(d(b),b);for(let a of b){let b=d(a);c.has(b)||c.set(b,a)}return Array.from(c.values())}(e,f),warnings:d}}function B(a,b){if("string"==typeof a)return b(a);if(Array.isArray(a))return a.map(a=>B(a,b));if(a&&"object"==typeof a){let c={};for(let[d,e]of Object.entries(a))c[d]=B(e,b);return c}return a}let C=(0,d.h)("backend/services/packages/buildPackage"),D=/\$\{global:([A-Za-z0-9_.-]+)\}/g;function E(a,b=new Set){if("string"==typeof a){let c=RegExp(D.source,"g");for(let d of a.matchAll(c))b.add(d[1]);return b}if(Array.isArray(a)){for(let c of a)E(c,b);return b}if(a&&"object"==typeof a)for(let c of Object.values(a))E(c,b);return b}function F(a,b){let c=new Set,d=new Set(a.flowIds),e=new Set(a.modelIds),f=new Set(a.plannedExecutionIds);for(let a of b.flows)d.has(a.id)&&E(a,c);for(let a of b.models)e.has(a.id)&&E(a,c);for(let a of b.plannedExecutions)f.has(a.id)&&E(a,c);for(let d of H(a.mcpServerNames,b.mcpServers).packaged)for(let a of[...d.envDeclarations,...d.headerDeclarations??[]])a.globalVar&&c.add(a.globalVar);return Array.from(c,a=>({name:a,description:`Global variable ${a} required by this package`,required:!0,isSecret:!1}))}function G(a,b){return a?Object.entries(a).map(([a,c])=>{let d="object"==typeof c&&null!==c&&"boolean"==typeof c.metadata?.isSecret,f=e.mQ.exec(("string"==typeof c?c:c&&"object"==typeof c&&"string"==typeof c.value?c.value:void 0)??"");return{name:a,isSecret:d?"object"==typeof c&&null!==c&&c.metadata?.isSecret===!0:b(a),...f?{globalVar:f[1]}:{}}}):[]}function H(a,b){let c=new Map(b.map(a=>[a.name,a])),d=[],e=[];for(let b of a){let a=c.get(b);if(!a){e.push(`MCP server "${b}" was not found.`);continue}let f=function(a){let b=a.source;if(!b||"local"===b.type)return null;switch(b.type){case"github":return{sourceType:"github",ref:b.ref?`${b.repositoryUrl}@${b.ref}`:b.repositoryUrl,name:a.name};case"registry":return{sourceType:"registry",ref:b.registryName,name:a.name};case"marketplace":return{sourceType:"marketplace",ref:b.id,name:a.name};case"remote":return{sourceType:"remote",url:a.serverUrl??a.websocketUrl,name:a.name};default:return null}}(a);if(!f){e.push(`MCP server "${b}" is a local server and cannot be packaged. Re-install it from GitHub, the registry, the marketplace, or as a remote server, then try again.`);continue}let g=G(a.headers,j.Hm);d.push({name:a.name,transport:a.transport,...a.disabled?{disabled:!0}:{},...a.autoApprove&&a.autoApprove.length?{autoApprove:a.autoApprove}:{},...a.folder?{folder:a.folder}:{},installOrigin:f,envDeclarations:G(a.env,j.xc),...g.length?{headerDeclarations:g}:{}})}return{packaged:d,errors:e}}function I(a,b){let c=`${a}_${b}`.toUpperCase().replace(/[^A-Z0-9_.-]+/g,"_").replace(/^_+|_+$/g,"")||`${a}_SECRET`;return e.IE.test(c)?c:`${a}_SECRET`}function J(a){let b=(a.ApiKey??"").trim();if(!b)return{ref:{kind:"none"}};let c=e.mQ.exec(b);if(c)return{ref:{kind:"global",var:c[1]}};let d=I("MODEL",a.displayName||a.name||a.id);return{ref:{kind:"secret",secret:d},secret:{name:d,description:`API key for model "${a.displayName||a.name}"`,required:!0}}}function K(a){let b=[],c=new Set,d=(a,d)=>{for(let e of d??[]){if(!e.isSecret||e.secretRef||e.globalVar)continue;let d=I("MCP",`${a}_${e.name}`);e.secretRef=d,c.has(d)||(c.add(d),b.push({name:d,description:`Secret "${e.name}" for MCP server "${a}"`,required:!0}))}};for(let b of a)d(b.name,b.envDeclarations),d(b.name,b.headerDeclarations);return b}function L(a,b,c){let d=b.map(({ApiKey:a,...b})=>b),e=c.map(a=>{if(a.trigger?.type!=="webhook")return a;let{token:b,...c}=a.trigger;return{...a,trigger:c}});return(0,g.D)({flows:a,models:d,plannedExecutions:e}).map(a=>({name:a,description:`Secret "${a}" referenced by packaged content`,required:!0}))}function M(a,b){let c=new Map(b.flows.map(a=>[a.id,a])),d=new Map(b.models.map(a=>[a.id,a])),e=new Map(b.plannedExecutions.map(a=>[a.id,a])),f=[],g=new Set,h=a=>{a&&!g.has(a.name)&&(g.add(a.name),f.push(a))};for(let b of a.modelIds){let a=d.get(b);a&&h(J(a).secret)}for(let c of K(H(a.mcpServerNames,b.mcpServers).packaged))h(c);let i=a.flowIds.map(a=>c.get(a)).filter(a=>!!a);for(let b of L(i,a.modelIds.map(a=>d.get(a)).filter(a=>!!a),a.plannedExecutionIds.map(a=>e.get(a)).filter(a=>!!a)))h(b);return f}async function N(){let{flowService:a}=await c.e(7821).then(c.bind(c,87821)),{modelService:b}=await Promise.all([c.e(4322),c.e(5067),c.e(6034),c.e(7821),c.e(5096),c.e(544),c.e(6793)]).then(c.bind(c,20433)),{loadServerConfigs:d}=await Promise.all([c.e(4322),c.e(1805)]).then(c.bind(c,74186)),{getSchedulerService:e}=await Promise.all([c.e(3736),c.e(9794),c.e(4771),c.e(9174)]).then(c.bind(c,4771)),[f,g,h,i]=await Promise.all([a.loadFlows(),b.loadModels(),d(),e().list()]);return{flows:f,models:g,mcpServers:Array.isArray(h)?h:[],plannedExecutions:i.map(a=>a.execution)}}async function O(a){let b=await N();return{resolved:function(a,b){let c=new Map(b.flows.map(a=>[a.id,a])),d=new Map(b.models.map(a=>[a.id,a])),e=new Map(b.mcpServers.map(a=>[a.name,a])),g=new Map(b.plannedExecutions.map(a=>[a.id,a])),h=new Set,i=new Set(a.modelIds??[]),j=new Set(a.mcpServerNames??[]),k=new Set(a.plannedExecutionIds??[]),l=[],m=[],n=new Set(a.flowIds??[]),o=new Set(a.modelIds??[]),p=new Set(a.mcpServerNames??[]);for(let a of k){let b=g.get(a);if(!b){m.push(`Planned execution "${a}" was not found and will be skipped.`);continue}!b.flowId||n.has(b.flowId)||h.has(b.flowId)||l.push({type:"flow",id:b.flowId,reason:`used by planned execution "${b.name}"`}),b.flowId&&n.add(b.flowId)}let q=new Set,r=Array.from(n);for(;r.length>0;){let a=r.shift();if(q.has(a))continue;q.add(a);let b=c.get(a);if(!b){m.push(`Referenced flow "${a}" was not found and will be skipped.`);continue}h.add(a);let g=(0,f.Xw)(b);for(let d of g.flowIds??[])q.has(d)||r.push(d),!n.has(d)&&d!==a&&(c.has(d)?l.some(a=>"flow"===a.type&&a.id===d)||l.push({type:"flow",id:d,reason:`subflow of "${b.name}"`}):m.push(`Flow "${b.name}" references missing subflow "${d}".`));for(let a of g.modelIds??[]){if(!d.has(a)){m.push(`Flow "${b.name}" references missing model "${a}".`);continue}!i.has(a)&&(i.add(a),o.has(a)||l.push({type:"model",id:a,reason:`used by flow "${b.name}"`}))}for(let a of g.mcpServerNames??[]){if(!e.has(a)){m.push(`Flow "${b.name}" references missing MCP server "${a}".`);continue}!j.has(a)&&(j.add(a),p.has(a)||l.push({type:"mcpServer",id:a,reason:`used by flow "${b.name}"`}))}}return{flowIds:Array.from(h),modelIds:Array.from(i),mcpServerNames:Array.from(j),plannedExecutionIds:Array.from(k),autoAdded:l,warnings:m}}(a,b),entities:b}}async function P(a,b,c=[],d=[],g=[]){C.info(`Building package "${b.name}" v${b.version}`);let{resolved:h,entities:j}=await O(a);return function(a,b,c,d=[],g=[],h=[]){let j=[],k=[...a.warnings],l=new Map(b.flows.map(a=>[a.id,a])),m=new Map(b.models.map(a=>[a.id,a])),n=new Map(b.plannedExecutions.map(a=>[a.id,a])),o=H(a.mcpServerNames,b.mcpServers);j.push(...o.errors);let p=new Set(h),q=[],r=new Set,s=a=>{a&&!r.has(a.name)&&(r.add(a.name),q.push(a))},t=a.modelIds.map(a=>m.get(a)).filter(a=>!!a),u=a.flowIds.map(a=>l.get(a)).filter(a=>!!a),v=a.plannedExecutionIds.map(a=>n.get(a)).filter(a=>!!a),w=t,x=u,z=v;if(d.length>0){let a=function(a,b){let c=[],d=b.filter(a=>!!a.excerpt&&(!!e.IE.test(a.secretName)||(c.push(`Skipped substitution with invalid secret name "${a.secretName}".`),!1))).sort((a,b)=>b.excerpt.length-a.excerpt.length),f=a=>{let b=a;for(let a of d)b.includes(a.excerpt)&&(b=b.split(a.excerpt).join(`{{secret.${a.secretName}}}`));return b},g={flows:a.flows.map(a=>B(a,f)),models:a.models.map(a=>B(a,f)),plannedExecutions:a.plannedExecutions.map(a=>B(a,f))},h=[],i=new Set;for(let a of d)i.has(a.secretName)||(i.add(a.secretName),h.push({name:a.secretName,description:a.description?f(a.description):`Derived secret ${a.secretName}`,required:!0}));return{entities:g,secrets:h,warnings:c}}({flows:x,models:t,plannedExecutions:v},d);for(let b of(w=a.entities.models,x=a.entities.flows,z=a.entities.plannedExecutions,k.push(...a.warnings),a.secrets))s(b)}let A=w.map(a=>{var b;let{ref:c,secret:d}=(b=J(a),b.secret&&p.has(b.secret.name)?{ref:{kind:"none"}}:b);return s(d),{model:a,apiKeyRef:c}});for(let a of K(o.packaged))s(a);for(let a of o.packaged)for(let b of[...a.envDeclarations,...a.headerDeclarations??[]])b.secretRef&&p.has(b.secretRef)&&delete b.secretRef;let C=L(x,w,z),D=new Set(C.map(a=>a.name));for(let a=q.length-1;a>=0;a-=1)p.has(q[a].name)&&!D.has(q[a].name)&&(r.delete(q[a].name),q.splice(a,1));for(let a of C)s(a);let E=new Set;for(let{apiKeyRef:a}of A)"global"===a.kind&&E.add(a.var);for(let a of o.packaged)for(let b of[...a.envDeclarations,...a.headerDeclarations??[]])b.globalVar&&E.add(b.globalVar);let G=function(a,b){let c=new Map(b.map(a=>[a.name,a]));return a.map(a=>{let b=c.get(a.name);return b?{...a,description:b.description?.trim()||a.description,required:!1!==b.required,isSecret:!0===b.isSecret}:a})}(F(a,b),g);if(j.length>0)return{ok:!1,resolved:a,errors:j,warnings:k};try{let{json:b,package:e}=(0,f.Zp)({id:c.id,name:c.name,version:c.version,description:c.description,author:c.author,publisher:c.publisher,tags:c.tags,...E.size>0?{requiredGlobals:Array.from(E)}:{},...G.length>0?{globals:G}:{},secrets:q,models:A,mcpServers:o.packaged,flows:x,plannedExecutions:z}),g=(0,f.$j)(e);return g.warnings?.length&&k.push(...g.warnings),d.length>0&&k.push(...function(a,b={}){return y(i(a),b).map(a=>`Possible secret left in package at ${a.location}: "${a.excerpt}" (${a.kind}).`)}({flows:x,models:w,plannedExecutions:z})),{ok:!0,json:b,package:e,resolved:a,errors:j,warnings:k}}catch(b){return j.push(b instanceof Error?b.message:String(b)),{ok:!1,resolved:a,errors:j,warnings:k}}}(h,j,b,c.filter(a=>a.excerpt&&a.suggestedSecretName).map(a=>({excerpt:a.excerpt,secretName:a.suggestedSecretName,description:a.suggestedDescription})),d,g)}function Q(a,b){let c=new Set(a.flowIds),d=new Set(a.modelIds),e=new Set(a.plannedExecutionIds);return{flows:b.flows.filter(a=>c.has(a.id)),models:b.models.filter(a=>d.has(a.id)),plannedExecutions:b.plannedExecutions.filter(a=>e.has(a.id))}}async function R(a,b={}){let{resolved:d,entities:e}=await O(a),f=Q(d,e),g={entropyThreshold:b.entropyThreshold,enableEntropy:b.enableEntropy,enableRepoSlug:b.enableRepoSlug};if(b.modelIdentifier){let{modelService:a}=await Promise.all([c.e(4322),c.e(5067),c.e(6034),c.e(7821),c.e(5096),c.e(544),c.e(6793)]).then(c.bind(c,20433));g.model={modelIdentifier:b.modelIdentifier,completion:async b=>await a.generateChatCompletion({modelIdentifier:b.modelIdentifier,messages:b.messages,temperature:b.temperature})}}return A(f,g)}async function S(a){let{resolved:b,entities:c}=await O(a),d=i(Q(b,c)),e=new Set,f=[];for(let a of d){if(e.has(a.text))continue;e.add(a.text);let b=a.location.split(":")[0]||"other";f.push({source:b,location:a.location,text:a.text})}return f.sort((a,b)=>b.text.length-a.text.length),f}},51669:(a,b)=>{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
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)=>{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)()}})}},75879:(a,b,c)=>{Object.defineProperty(b,"A",{enumerable:!0,get:function(){return d.registerServerReference}});let d=c(97954)}};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";exports.id=87,exports.ids=[87],exports.modules={423:(a,b,c)=>{c.d(b,{A:()=>s});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(68333),i=c(6636),j=c(29565),k=c(33105);function l(a){return(0,k.Ay)("MuiCardActionArea",a)}let m=(0,j.A)("MuiCardActionArea",["root","focusVisible","focusHighlight"]);var n=c(14328),o=c(20385),p=c(21124);let q=(0,g.Ay)(n.A,{name:"MuiCardActionArea",slot:"Root",overridesResolver:(a,b)=>b.root})((0,h.A)(({theme:a})=>({display:"block",textAlign:"inherit",borderRadius:"inherit",width:"100%",[`&:hover .${m.focusHighlight}`]:{opacity:(a.vars||a).palette.action.hoverOpacity,"@media (hover: none)":{opacity:0}},[`&.${m.focusVisible} .${m.focusHighlight}`]:{opacity:(a.vars||a).palette.action.focusOpacity}}))),r=(0,g.Ay)("span",{name:"MuiCardActionArea",slot:"FocusHighlight",overridesResolver:(a,b)=>b.focusHighlight})((0,h.A)(({theme:a})=>({overflow:"hidden",pointerEvents:"none",position:"absolute",top:0,right:0,bottom:0,left:0,borderRadius:"inherit",opacity:0,backgroundColor:"currentcolor",transition:a.transitions.create("opacity",{duration:a.transitions.duration.short})}))),s=d.forwardRef(function(a,b){let c=(0,i.b)({props:a,name:"MuiCardActionArea"}),{children:d,className:g,focusVisibleClassName:h,slots:j={},slotProps:k={},...m}=c,n=(a=>{let{classes:b}=a;return(0,f.A)({root:["root"],focusHighlight:["focusHighlight"]},l,b)})(c),s={slots:j,slotProps:k},[t,u]=(0,o.A)("root",{elementType:q,externalForwardedProps:{...s,...m},shouldForwardComponentProp:!0,ownerState:c,ref:b,className:(0,e.A)(n.root,g),additionalProps:{focusVisibleClassName:(0,e.A)(h,n.focusVisible)}}),[v,w]=(0,o.A)("focusHighlight",{elementType:r,externalForwardedProps:s,ownerState:c,ref:b,className:n.focusHighlight});return(0,p.jsxs)(t,{...u,children:[d,(0,p.jsx)(v,{...w})]})})},27114:(a,b,c)=>{c.d(b,{A:()=>n});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(6636),i=c(29565),j=c(33105);function k(a){return(0,j.Ay)("MuiCardContent",a)}(0,i.A)("MuiCardContent",["root"]);var l=c(21124);let m=(0,g.Ay)("div",{name:"MuiCardContent",slot:"Root",overridesResolver:(a,b)=>b.root})({padding:16,"&:last-child":{paddingBottom:24}}),n=d.forwardRef(function(a,b){let c=(0,h.b)({props:a,name:"MuiCardContent"}),{className:d,component:g="div",...i}=c,j={...c,component:g},n=(a=>{let{classes:b}=a;return(0,f.A)({root:["root"]},k,b)})(j);return(0,l.jsx)(m,{as:g,className:(0,e.A)(n.root,d),ownerState:j,ref:b,...i})})},30818:(a,b,c)=>{c.d(b,{A:()=>o});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(6636),i=c(54573),j=c(29565),k=c(33105);function l(a){return(0,k.Ay)("MuiCard",a)}(0,j.A)("MuiCard",["root"]);var m=c(21124);let n=(0,g.Ay)(i.A,{name:"MuiCard",slot:"Root",overridesResolver:(a,b)=>b.root})({overflow:"hidden"}),o=d.forwardRef(function(a,b){let c=(0,h.b)({props:a,name:"MuiCard"}),{className:d,raised:g=!1,...i}=c,j={...c,raised:g},k=(a=>{let{classes:b}=a;return(0,f.A)({root:["root"]},l,b)})(j);return(0,m.jsx)(n,{className:(0,e.A)(k.root,d),elevation:g?8:void 0,ref:b,ownerState:j,...i})})},38313:(a,b,c)=>{c.d(b,{A:()=>g,f:()=>f});var d=c(29565),e=c(33105);function f(a){return(0,e.Ay)("MuiListItemIcon",a)}let g=(0,d.A)("MuiListItemIcon",["root","alignItemsFlexStart"])},40973:(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"}),"Search")},50553:(a,b,c)=>{c.d(b,{A:()=>n});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(68333),i=c(6636),j=c(38313),k=c(55470),l=c(21124);let m=(0,g.Ay)("div",{name:"MuiListItemIcon",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,"flex-start"===c.alignItems&&b.alignItemsFlexStart]}})((0,h.A)(({theme:a})=>({minWidth:56,color:(a.vars||a).palette.action.active,flexShrink:0,display:"inline-flex",variants:[{props:{alignItems:"flex-start"},style:{marginTop:8}}]}))),n=d.forwardRef(function(a,b){let c=(0,i.b)({props:a,name:"MuiListItemIcon"}),{className:g,...h}=c,n=d.useContext(k.A),o={...c,alignItems:n.alignItems},p=(a=>{let{alignItems:b,classes:c}=a;return(0,f.A)({root:["root","flex-start"===b&&"alignItemsFlexStart"]},j.f,c)})(o);return(0,l.jsx)(m,{className:(0,e.A)(p.root,g),ownerState:o,ref:b,...h})})},76345:(a,b,c)=>{c.d(b,{A:()=>g,b:()=>f});var d=c(29565),e=c(33105);function f(a){return(0,e.Ay)("MuiListItemText",a)}let g=(0,d.A)("MuiListItemText",["root","multiline","dense","inset","primary","secondary"])},84233:(a,b,c)=>{c.d(b,{A:()=>p});var d=c(38301),e=c(43249),f=c(2783),g=c(29071),h=c(79515),i=c(55470),j=c(18168),k=c(6636),l=c(76345),m=c(20385),n=c(21124);let o=(0,j.Ay)("div",{name:"MuiListItemText",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[{[`& .${l.A.primary}`]:b.primary},{[`& .${l.A.secondary}`]:b.secondary},b.root,c.inset&&b.inset,c.primary&&c.secondary&&b.multiline,c.dense&&b.dense]}})({flex:"1 1 auto",minWidth:0,marginTop:4,marginBottom:4,[`.${g.A.root}:where(& .${l.A.primary})`]:{display:"block"},[`.${g.A.root}:where(& .${l.A.secondary})`]:{display:"block"},variants:[{props:({ownerState:a})=>a.primary&&a.secondary,style:{marginTop:6,marginBottom:6}},{props:({ownerState:a})=>a.inset,style:{paddingLeft:56}}]}),p=d.forwardRef(function(a,b){let c=(0,k.b)({props:a,name:"MuiListItemText"}),{children:g,className:j,disableTypography:p=!1,inset:q=!1,primary:r,primaryTypographyProps:s,secondary:t,secondaryTypographyProps:u,slots:v={},slotProps:w={},...x}=c,{dense:y}=d.useContext(i.A),z=null!=r?r:g,A=t,B={...c,disableTypography:p,inset:q,primary:!!z,secondary:!!A,dense:y},C=(a=>{let{classes:b,inset:c,primary:d,secondary:e,dense:g}=a;return(0,f.A)({root:["root",c&&"inset",g&&"dense",d&&e&&"multiline"],primary:["primary"],secondary:["secondary"]},l.b,b)})(B),D={slots:v,slotProps:{primary:s,secondary:u,...w}},[E,F]=(0,m.A)("root",{className:(0,e.A)(C.root,j),elementType:o,externalForwardedProps:{...D,...x},ownerState:B,ref:b}),[G,H]=(0,m.A)("primary",{className:C.primary,elementType:h.default,externalForwardedProps:D,ownerState:B}),[I,J]=(0,m.A)("secondary",{className:C.secondary,elementType:h.default,externalForwardedProps:D,ownerState:B});return null==z||z.type===h.default||p||(z=(0,n.jsx)(G,{variant:y?"body2":"body1",component:H?.variant?void 0:"span",...H,children:z})),null==A||A.type===h.default||p||(A=(0,n.jsx)(I,{variant:"body2",color:"textSecondary",...J,children:A})),(0,n.jsxs)(E,{...F,children:[z,A]})})},94367:(a,b,c)=>{c.d(b,{A:()=>y});var d=c(38301),e=c(43249),f=c(2783),g=c(37489),h=c(41126),i=c(18168),j=c(68333),k=c(6636),l=c(55470),m=c(14328),n=c(14758),o=c(26636),p=c(93895),q=c(38313),r=c(76345),s=c(29565),t=c(33105);function u(a){return(0,t.Ay)("MuiMenuItem",a)}let v=(0,s.A)("MuiMenuItem",["root","focusVisible","dense","disabled","divider","gutters","selected"]);var w=c(21124);let x=(0,i.Ay)(m.A,{shouldForwardProp:a=>(0,h.A)(a)||"classes"===a,name:"MuiMenuItem",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,c.dense&&b.dense,c.divider&&b.divider,!c.disableGutters&&b.gutters]}})((0,j.A)(({theme:a})=>({...a.typography.body1,display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",minHeight:48,paddingTop:6,paddingBottom:6,boxSizing:"border-box",whiteSpace:"nowrap","&:hover":{textDecoration:"none",backgroundColor:(a.vars||a).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},[`&.${v.selected}`]:{backgroundColor:a.vars?`rgba(${a.vars.palette.primary.mainChannel} / ${a.vars.palette.action.selectedOpacity})`:(0,g.X4)(a.palette.primary.main,a.palette.action.selectedOpacity),[`&.${v.focusVisible}`]:{backgroundColor:a.vars?`rgba(${a.vars.palette.primary.mainChannel} / calc(${a.vars.palette.action.selectedOpacity} + ${a.vars.palette.action.focusOpacity}))`:(0,g.X4)(a.palette.primary.main,a.palette.action.selectedOpacity+a.palette.action.focusOpacity)}},[`&.${v.selected}:hover`]:{backgroundColor:a.vars?`rgba(${a.vars.palette.primary.mainChannel} / calc(${a.vars.palette.action.selectedOpacity} + ${a.vars.palette.action.hoverOpacity}))`:(0,g.X4)(a.palette.primary.main,a.palette.action.selectedOpacity+a.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:a.vars?`rgba(${a.vars.palette.primary.mainChannel} / ${a.vars.palette.action.selectedOpacity})`:(0,g.X4)(a.palette.primary.main,a.palette.action.selectedOpacity)}},[`&.${v.focusVisible}`]:{backgroundColor:(a.vars||a).palette.action.focus},[`&.${v.disabled}`]:{opacity:(a.vars||a).palette.action.disabledOpacity},[`& + .${p.A.root}`]:{marginTop:a.spacing(1),marginBottom:a.spacing(1)},[`& + .${p.A.inset}`]:{marginLeft:52},[`& .${r.A.root}`]:{marginTop:0,marginBottom:0},[`& .${r.A.inset}`]:{paddingLeft:36},[`& .${q.A.root}`]:{minWidth:36},variants:[{props:({ownerState:a})=>!a.disableGutters,style:{paddingLeft:16,paddingRight:16}},{props:({ownerState:a})=>a.divider,style:{borderBottom:`1px solid ${(a.vars||a).palette.divider}`,backgroundClip:"padding-box"}},{props:({ownerState:a})=>!a.dense,style:{[a.breakpoints.up("sm")]:{minHeight:"auto"}}},{props:({ownerState:a})=>a.dense,style:{minHeight:32,paddingTop:4,paddingBottom:4,...a.typography.body2,[`& .${q.A.root} svg`]:{fontSize:"1.25rem"}}}]}))),y=d.forwardRef(function(a,b){let c,g=(0,k.b)({props:a,name:"MuiMenuItem"}),{autoFocus:h=!1,component:i="li",dense:j=!1,divider:m=!1,disableGutters:p=!1,focusVisibleClassName:q,role:r="menuitem",tabIndex:s,className:t,...v}=g,y=d.useContext(l.A),z=d.useMemo(()=>({dense:j||y.dense||!1,disableGutters:p}),[y.dense,j,p]),A=d.useRef(null);(0,n.A)(()=>{h&&A.current&&A.current.focus()},[h]);let B={...g,dense:z.dense,divider:m,disableGutters:p},C=(a=>{let{disabled:b,dense:c,divider:d,disableGutters:e,selected:g,classes:h}=a,i=(0,f.A)({root:["root",c&&"dense",b&&"disabled",!e&&"gutters",d&&"divider",g&&"selected"]},u,h);return{...h,...i}})(g),D=(0,o.A)(A,b);return g.disabled||(c=void 0!==s?s:-1),(0,w.jsx)(l.A.Provider,{value:z,children:(0,w.jsx)(x,{ref:D,role:r,tabIndex:c,component:i,focusVisibleClassName:(0,e.A)(C.focusVisible,q),className:(0,e.A)(C.root,t),...v,ownerState:B,classes:C})})})},98463:(a,b,c)=>{c.d(b,{A:()=>n});var d=c(38301),e=c(43249),f=c(2783),g=c(18168),h=c(6636),i=c(29565),j=c(33105);function k(a){return(0,j.Ay)("MuiCardActions",a)}(0,i.A)("MuiCardActions",["root","spacing"]);var l=c(21124);let m=(0,g.Ay)("div",{name:"MuiCardActions",slot:"Root",overridesResolver:(a,b)=>{let{ownerState:c}=a;return[b.root,!c.disableSpacing&&b.spacing]}})({display:"flex",alignItems:"center",padding:8,variants:[{props:{disableSpacing:!1},style:{"& > :not(style) ~ :not(style)":{marginLeft:8}}}]}),n=d.forwardRef(function(a,b){let c=(0,h.b)({props:a,name:"MuiCardActions"}),{disableSpacing:d=!1,className:g,...i}=c,j={...c,disableSpacing:d},n=(a=>{let{classes:b,disableSpacing:c}=a;return(0,f.A)({root:["root",!c&&"spacing"]},k,b)})(j);return(0,l.jsx)(m,{className:(0,e.A)(n.root,g),ownerState:j,ref:b,...i})})}};
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
"use strict";exports.id=8739,exports.ids=[8739],exports.modules={
|
|
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}}};
|
|
1
|
+
"use strict";exports.id=8739,exports.ids=[8739],exports.modules={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}}};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";exports.id=
|
|
2
|
-
Read more: https://nextjs.org/docs/messages/invalid-use-server-value`),"__NEXT_ERROR_CODE",{value:"E352",enumerable:!1,configurable:!0})}}Object.defineProperty(b,"D",{enumerable:!0,get:function(){return c}})},56793:(a,b,c)=>{c.d(b,{eh:()=>g,ru:()=>e});let d=(0,c(50846).h)("backend/services/scheduler/flowRunEventBus");function e(a){return"signal"===a.kind}class f{publish(a){if(0===this.listeners.size)return;let b=e(a)?`signal topic=${a.topic} emitter=${a.emitterFlowId}`:`flow=${a.flowId} status=${a.status}`;for(let c of(d.debug(`Publishing flow event: ${b} firedBy=${a.firedBy} depth=${a.chainDepth} listeners=${this.listeners.size}`),[...this.listeners]))try{c(a)}catch(a){d.warn("A flow-run event listener threw:",a)}}subscribe(a){return this.listeners.add(a),()=>{this.listeners.delete(a)}}get listenerCount(){return this.listeners.size}constructor(){this.listeners=new Set}}function g(){return global.__flujo_flow_run_event_bus||(global.__flujo_flow_run_event_bus=new f),global.__flujo_flow_run_event_bus}},68633:(a,b,c)=>{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)=>{c.d(b,{G:()=>m,V:()=>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,b={}){j.debug("Entering resolveGlobalVars method");let c=!1!==b.resolveSecrets,d=await (0,f.YM)(g.Z.GLOBAL_ENV_VARS,{}),e=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}(d);j.debug(`Loaded ${Object.keys(d).length} global environment variables (${e?"new":"old"} format)`);let i={},l=new Set;if(e)for(let[a,b]of Object.entries(d))i[a]=b.value,b.metadata.isSecret&&l.add(a);else i={...d};let m=async a=>{let b=a.match(/\$\{global:([^}]+)\}/g);if(!b)return a;let d=a;for(let a of b){let b=a.substring(9,a.length-1);if(void 0!==i[b]){let e=i[b];if(!c&&(l.has(b)||e.startsWith("encrypted:")||e.startsWith("encrypted_failed:"))){j.debug(`Keeping secret global variable unresolved: ${b}`);continue}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}`),d=d.replace(a,e)}else j.warn(`Global variable not found: ${b}`)}return d},n=async a=>{if("string"==typeof a)return await m(a);if(Array.isArray(a))return await Promise.all(a.map(a=>n(a)));if(null!==a&&"object"==typeof a){let b={};for(let[c,d]of Object.entries(a))b[c]=await n(d);return b}return a},o=await n(a);return"object"==typeof a&&null!==a&&j.debug("Resolved global variables result:",JSON.stringify(o,null,2)),j.debug("Completed global variable resolution"),o}async function l(a){return k(a,{resolveSecrets:!1})}async function m(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`),m(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,m]),(0,d.A)(k,"
|
|
1
|
+
"use strict";exports.id=9085,exports.ids=[1925,3629,4306,6793,9085,9174],exports.modules={1925:(a,b,c)=>{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()},51669:(a,b)=>{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}})},56793:(a,b,c)=>{c.d(b,{eh:()=>g,ru:()=>e});let d=(0,c(50846).h)("backend/services/scheduler/flowRunEventBus");function e(a){return"signal"===a.kind}class f{publish(a){if(0===this.listeners.size)return;let b=e(a)?`signal topic=${a.topic} emitter=${a.emitterFlowId}`:`flow=${a.flowId} status=${a.status}`;for(let c of(d.debug(`Publishing flow event: ${b} firedBy=${a.firedBy} depth=${a.chainDepth} listeners=${this.listeners.size}`),[...this.listeners]))try{c(a)}catch(a){d.warn("A flow-run event listener threw:",a)}}subscribe(a){return this.listeners.add(a),()=>{this.listeners.delete(a)}}get listenerCount(){return this.listeners.size}constructor(){this.listeners=new Set}}function g(){return global.__flujo_flow_run_event_bus||(global.__flujo_flow_run_event_bus=new f),global.__flujo_flow_run_event_bus}},68633:(a,b,c)=>{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)=>{c.d(b,{G:()=>m,V:()=>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,b={}){j.debug("Entering resolveGlobalVars method");let c=!1!==b.resolveSecrets,d=await (0,f.YM)(g.Z.GLOBAL_ENV_VARS,{}),e=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}(d);j.debug(`Loaded ${Object.keys(d).length} global environment variables (${e?"new":"old"} format)`);let i={},l=new Set;if(e)for(let[a,b]of Object.entries(d))i[a]=b.value,b.metadata.isSecret&&l.add(a);else i={...d};let m=async a=>{let b=a.match(/\$\{global:([^}]+)\}/g);if(!b)return a;let d=a;for(let a of b){let b=a.substring(9,a.length-1);if(void 0!==i[b]){let e=i[b];if(!c&&(l.has(b)||e.startsWith("encrypted:")||e.startsWith("encrypted_failed:"))){j.debug(`Keeping secret global variable unresolved: ${b}`);continue}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}`),d=d.replace(a,e)}else j.warn(`Global variable not found: ${b}`)}return d},n=async a=>{if("string"==typeof a)return await m(a);if(Array.isArray(a))return await Promise.all(a.map(a=>n(a)));if(null!==a&&"object"==typeof a){let b={};for(let[c,d]of Object.entries(a))b[c]=await n(d);return b}return a},o=await n(a);return"object"==typeof a&&null!==a&&j.debug("Resolved global variables result:",JSON.stringify(o,null,2)),j.debug("Completed global variable resolution"),o}async function l(a){return k(a,{resolveSecrets:!1})}async function m(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`),m(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,m]),(0,d.A)(k,"605caa1e030009a4bc7e820854ff481d3e0295325d",null),(0,d.A)(l,"4003ce37366709f5add0c98a6e32e47a1006fd7c7d",null),(0,d.A)(m,"6061ed6d99a98b5d9f5d2d15065caab0a27d6a8987",null)},75879:(a,b,c)=>{Object.defineProperty(b,"A",{enumerable:!0,get:function(){return d.registerServerReference}});let d=c(97954)},91959:(a,b,c)=>{c.r(b),c.d(b,{"4003ce37366709f5add0c98a6e32e47a1006fd7c7d":()=>d.V,"605caa1e030009a4bc7e820854ff481d3e0295325d":()=>d.resolveGlobalVars,"6061ed6d99a98b5d9f5d2d15065caab0a27d6a8987":()=>d.G});var d=c(73456)},92675:(a,b,c)=>{c.d(b,{De:()=>m,E1:()=>j,Zl:()=>i,bZ:()=>k,xI:()=>l});var d=c(50846),e=c(49680),f=c(20433);let g=(0,d.h)("app/api/model/model-adapter");function h(a){let b={...a};return b.ApiKey&&!b.ApiKey.startsWith("${global:")&&(b.ApiKey=e.RJ),b}async function i(){g.debug("loadModels: Delegating to backend service");let a=await f.modelService.listModels();return a.success&&a.models&&(a.models=a.models.map(h)),a}async function j(a){g.debug(`getModel: Delegating to backend service for model ID: ${a}`);try{let b=await f.modelService.getModel(a);if(!b)return{success:!1,error:`Model not found: ${a}`};return{success:!0,model:h(b)}}catch(b){return g.error(`getModel: Error getting model ${a}:`,b),{success:!1,error:b instanceof Error?b.message:"Failed to get model"}}}async function k(a){g.debug("addModel: Delegating to backend service");let b=await f.modelService.addModel(a);return b.success&&b.model&&(b.model=h(b.model)),b}async function l(a){g.debug("updateModel: Delegating to backend service");let b=await f.modelService.updateModel(a);return b.success&&b.model&&(b.model=h(b.model)),b}async function m(a){return g.debug("deleteModel: Delegating to backend service"),f.modelService.deleteModel(a)}}};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
exports.id=9235,exports.ids=[1925,3629,4306,6793,9174,9235],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()},8491:(a,b,c)=>{"use strict";c.d(b,{Cc:()=>r,HQ:()=>q,V2:()=>p});var d=c(81226),e=c(87821),f=c(97630);let g="system-flow-generator",h="flow-generator",i=["list_flow_building_blocks","get_flow_authoring_guide","draft_generated_flow","search_mcp_marketplace"],j=["install_mcp_server","install_best_mcp_server"],k=[...i,...j],l=`You are the experimental, completely Flow-based FLUJO Flow Generator.
|
|
2
|
+
|
|
3
|
+
Every user turn is an instruction to CREATE or REVISE an unsaved Flow draft. You must produce a draft on every turn. Never stop at advice, a design discussion, a promise to build later, or a clarifying question. When details are missing, make sensible reversible assumptions and continue.
|
|
4
|
+
|
|
5
|
+
This Flow is the editable expression of the production generator:
|
|
6
|
+
1. Flow Architect performs the production generator's model-driven authoring and capability-discovery stage.
|
|
7
|
+
2. Generation Compiler invokes the SAME deterministic hardening pipeline used by the production generator.
|
|
8
|
+
|
|
9
|
+
Prefer a small, clear root Flow, but create inline subflowSpec / parallelSubflowSpecs when a task has self-contained phases. New nested subflows are enabled by default, bounded to ${f.Jt} nesting levels and six generated flows total. Never call create_flow: the result must remain unsaved until the user opens it in the builder.
|
|
10
|
+
|
|
11
|
+
${f.Mr}`,m=`You are the Flow Architect stage.
|
|
12
|
+
|
|
13
|
+
On EVERY visit:
|
|
14
|
+
1. Call list_flow_building_blocks before authoring so every model, MCP server/tool, and existing-flow reference is real.
|
|
15
|
+
2. Call get_flow_authoring_guide with profile "advanced".
|
|
16
|
+
3. Read the newest user instruction. If the transcript already contains a prior draft_generated_flow call/result, treat this as a revision: start from its returned hardened "spec", preserve everything not requested to change, and emit a complete replacement specification.
|
|
17
|
+
4. If a required external capability is missing, search the MCP marketplace. Install only when the run's MCP installation policy explicitly permits it and installation tools are actually available.
|
|
18
|
+
5. Return ONLY one complete advanced FlowSpec JSON object as your final response—no prose or Markdown fences.
|
|
19
|
+
|
|
20
|
+
Use inline subflowSpec / parallelSubflowSpecs for newly-created subflows. Do not emit generateSubflow because the deterministic compiler cannot expand it. Do not merely explain what you would build.`,n=`You are the Generation Compiler and repair stage.
|
|
21
|
+
|
|
22
|
+
Find the newest complete advanced FlowSpec JSON produced by the Flow Architect. Call draft_generated_flow with that complete specification. This tool is not a generic compiler: it executes the exact deterministic post-model pipeline shared with FLUJO's production generator—scratchpad guard, forgiving structural repair, bounded nested compilation, generated input/output defaults, and whole-bundle validation.
|
|
23
|
+
|
|
24
|
+
If the first result contains validation errors, repair the COMPLETE returned spec using its issues and call draft_generated_flow one more time, matching the production generator's default single repair round. Never call create_flow or substitute generic draft_flow. Never finish with only prose, a promise, or JSON that was not submitted to draft_generated_flow.
|
|
25
|
+
|
|
26
|
+
After a usable draft_generated_flow result exists, respond with only a short factual summary. The tool result—not your prose—is the authoritative unsaved draft returned to the UI.`;function o(){let a=(0,d.dM)({name:"Flow_Generator",description:"Experimental editable multi-stage Flow Generator: architecture, capability discovery, validation, repair, and unsaved drafting.",nodes:[{key:"start",type:"start",label:"Start",prompt:l},{key:"architect",type:"process",label:"Flow Architect",description:"Inventories real building blocks and authors a complete advanced FlowSpec.",prompt:m,maxTurns:12,inputMode:"full-history",outputMode:"latest-message",servers:[{name:"flujo",tools:["list_flow_building_blocks","get_flow_authoring_guide","search_mcp_marketplace",...j]}]},{key:"compiler",type:"process",label:"Generation Compiler",description:"Runs the production generator hardening pipeline and one bounded repair round.",prompt:n,maxTurns:16,inputMode:"full-history",outputMode:"latest-message",servers:[{name:"flujo",tools:["draft_generated_flow"]}]},{key:"finish",type:"finish",label:"Finish"}],edges:[{from:"start",to:"architect"},{from:"architect",to:"compiler"},{from:"compiler",to:"finish"}]},{servers:[{name:"flujo"}],serverTools:{flujo:[...k]}});if(!a.flow)throw Error("Bundled Flow Generator could not be compiled");a.flow.id=g,a.flow.name="Experimental Flow Generator",a.flow.folder="System";let b=new Set(j);for(let c of a.flow.nodes.filter(a=>"mcp"===a.type)){let a=c.data?.properties?.enabledTools;Array.isArray(a)&&(c.data.properties={...c.data.properties??{},enabledTools:a.filter(a=>!b.has(String(a)))})}a.flow.permissionRules=i.map(a=>({action:a,resource:"*",effect:"allow"}));let c=a.flow.nodes.filter(a=>"process"===a.type);if(2!==c.length)throw Error("Bundled Flow Generator must contain architect and compiler stages");return c.forEach((a,b)=>{a.data.properties={...a.data.properties??{},systemRole:h,systemStage:0===b?"architect":"compiler",systemFlowVersion:3}}),a.flow}async function p(){let a=await e.flowService.getFlow(g),b=a?.nodes.filter(a=>"process"===a.type).map(a=>Number(a.data?.properties?.systemFlowVersion??0)).find(a=>a>0);if(a&&1!==b&&2!==b)return a;let c=o(),d=await e.flowService.saveFlow(c);if(!d.success)throw Error(d.error??"Failed to seed the Flow Generator");return c}async function q(){let a=o(),b=await e.flowService.saveFlow(a);if(!b.success)throw Error(b.error??"Failed to restore the Flow Generator");return a}async function r(a,b,c){let d=JSON.parse(JSON.stringify(await p()));d.id=`quickchat-flow-generator-${a}`,d.name="Flow Generator Session",delete d.createdAt,delete d.updatedAt;let e=d.nodes.filter(a=>"process"===a.type&&a.data?.properties?.systemRole===h);if(e.length<2)throw Error("The editable Flow Generator is missing its architect/compiler stages. Restore the default generator or add the flow-generator roles back.");for(let a of e)a.data.properties={...a.data.properties??{},boundModel:b};let f=c?.allowInstall===!0,g=new Set(j);if(f){for(let a of d.nodes.filter(a=>"mcp"===a.type)){let b=Array.isArray(a.data?.properties?.enabledTools)?a.data.properties.enabledTools.map(String):[];a.data.properties={...a.data.properties??{},enabledTools:[...new Set([...b,...j])]}}let a=new Set((d.permissionRules??[]).map(a=>a.action));d.permissionRules=[...d.permissionRules??[],...j.filter(b=>!a.has(b)).map(a=>({action:a,resource:"*",effect:"allow"}))]}else{for(let a of d.nodes.filter(a=>"mcp"===a.type)){let b=a.data?.properties?.enabledTools;Array.isArray(b)&&(a.data.properties={...a.data.properties??{},enabledTools:b.filter(a=>!g.has(String(a)))})}d.permissionRules=(d.permissionRules??[]).filter(a=>!g.has(a.action))}let i=d.nodes.find(a=>"start"===a.type);return i&&(i.data.properties={...i.data.properties??{},promptTemplate:`${String(i.data.properties?.promptTemplate??"")}
|
|
27
|
+
|
|
28
|
+
${f?"MCP INSTALLATION POLICY FOR THIS RUN: explicitly opted in. Marketplace search and install tools may be used; consent/audit enforcement still applies.":"MCP INSTALLATION POLICY FOR THIS RUN: NOT opted in. Marketplace search is allowed for recommendations, but installation tools have been removed. Do not install or reference an unconfigured server in the draft."}`}),d}},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}.
|
|
29
|
+
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}},56793:(a,b,c)=>{"use strict";c.d(b,{eh:()=>g,ru:()=>e});let d=(0,c(50846).h)("backend/services/scheduler/flowRunEventBus");function e(a){return"signal"===a.kind}class f{publish(a){if(0===this.listeners.size)return;let b=e(a)?`signal topic=${a.topic} emitter=${a.emitterFlowId}`:`flow=${a.flowId} status=${a.status}`;for(let c of(d.debug(`Publishing flow event: ${b} firedBy=${a.firedBy} depth=${a.chainDepth} listeners=${this.listeners.size}`),[...this.listeners]))try{c(a)}catch(a){d.warn("A flow-run event listener threw:",a)}}subscribe(a){return this.listeners.add(a),()=>{this.listeners.delete(a)}}get listenerCount(){return this.listeners.size}constructor(){this.listeners=new Set}}function g(){return global.__flujo_flow_run_event_bus||(global.__flujo_flow_run_event_bus=new f),global.__flujo_flow_run_event_bus}},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:()=>n,t:()=>q});var d=c(73736),e=c(92372),f=c(60453),g=c(61539),h=c(53119),i=c(4771),j=c(58739),k=c(50846),l=c(8491);let m=(0,k.h)("backend/init");function n(){return global.__flujo_init_promise||(global.__flujo_init_promise=o().catch(a=>{throw global.__flujo_init_promise=void 0,a})),global.__flujo_init_promise}async function o(){if(await (0,e.Pv)(),await (0,l.V2)(),(0,h.m)().catch(a=>m.warn("Spotlight refresh failed at startup:",a)),await (0,j.isEncryptionLocked)())return void m.info("Encryption locked — deferring MCP/scheduler startup until unlock");await p()}function p(){return global.__flujo_secret_services_promise||(global.__flujo_secret_services_promise=(async()=>{m.info("Initializing MCP servers"),await f.mcpService.startEnabledServers().catch(a=>{m.error("Failed to start enabled servers:",a)}),await (0,i.getSchedulerService)().start().catch(a=>m.error("Failed to start scheduler:",a));try{global.__flujo_retention_cron||(global.__flujo_retention_cron=new d.l4("0 * * * *",{unref:!0},()=>{(0,g.wc)().catch(a=>m.warn("Run-resource retention sweep failed:",a))}),m.info("Armed run-resource retention sweep (hourly)"))}catch(a){m.error("Failed to arm run-resource retention sweep:",a)}})()),global.__flujo_secret_services_promise}async function q(){await (0,j.isUserEncryptionEnabled)()&&(m.info("Encryption unlocked — starting deferred MCP/scheduler startup"),await p())}},73456:(a,b,c)=>{"use strict";c.d(b,{G:()=>m,V:()=>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,b={}){j.debug("Entering resolveGlobalVars method");let c=!1!==b.resolveSecrets,d=await (0,f.YM)(g.Z.GLOBAL_ENV_VARS,{}),e=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}(d);j.debug(`Loaded ${Object.keys(d).length} global environment variables (${e?"new":"old"} format)`);let i={},l=new Set;if(e)for(let[a,b]of Object.entries(d))i[a]=b.value,b.metadata.isSecret&&l.add(a);else i={...d};let m=async a=>{let b=a.match(/\$\{global:([^}]+)\}/g);if(!b)return a;let d=a;for(let a of b){let b=a.substring(9,a.length-1);if(void 0!==i[b]){let e=i[b];if(!c&&(l.has(b)||e.startsWith("encrypted:")||e.startsWith("encrypted_failed:"))){j.debug(`Keeping secret global variable unresolved: ${b}`);continue}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}`),d=d.replace(a,e)}else j.warn(`Global variable not found: ${b}`)}return d},n=async a=>{if("string"==typeof a)return await m(a);if(Array.isArray(a))return await Promise.all(a.map(a=>n(a)));if(null!==a&&"object"==typeof a){let b={};for(let[c,d]of Object.entries(a))b[c]=await n(d);return b}return a},o=await n(a);return"object"==typeof a&&null!==a&&j.debug("Resolved global variables result:",JSON.stringify(o,null,2)),j.debug("Completed global variable resolution"),o}async function l(a){return k(a,{resolveSecrets:!1})}async function m(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`),m(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,m]),(0,d.A)(k,"605caa1e030009a4bc7e820854ff481d3e0295325d",null),(0,d.A)(l,"4003ce37366709f5add0c98a6e32e47a1006fd7c7d",null),(0,d.A)(m,"6061ed6d99a98b5d9f5d2d15065caab0a27d6a8987",null)},75879:(a,b,c)=>{"use strict";Object.defineProperty(b,"A",{enumerable:!0,get:function(){return d.registerServerReference}});let d=c(97954)},78335:()=>{},91959:(a,b,c)=>{"use strict";c.r(b),c.d(b,{"4003ce37366709f5add0c98a6e32e47a1006fd7c7d":()=>d.V,"605caa1e030009a4bc7e820854ff481d3e0295325d":()=>d.resolveGlobalVars,"6061ed6d99a98b5d9f5d2d15065caab0a27d6a8987":()=>d.G});var d=c(73456)},96487:()=>{}};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";exports.id=9724,exports.ids=[8092,9724],exports.modules={19724:(a,b,c)=>{c.d(b,{Wk:()=>p,filesystemListResources:()=>s,filesystemReadResource:()=>u,isFilesystemAppUri:()=>t,isTouchedFileUri:()=>q,readTouchedFileResource:()=>r});var d=c(33873),e=c.n(d),f=c(29021),g=c(
|
|
1
|
+
"use strict";exports.id=9724,exports.ids=[8092,9724],exports.modules={19724:(a,b,c)=>{c.d(b,{Wk:()=>p,filesystemListResources:()=>s,filesystemReadResource:()=>u,isFilesystemAppUri:()=>t,isTouchedFileUri:()=>q,readTouchedFileResource:()=>r});var d=c(33873),e=c.n(d),f=c(29021),g=c(18230),h=c(48254),i=c(94749),j=c(48092);let k=(0,g.h)("backend/services/mcp/internal/filesystemResources"),l="ui://filesystem/browser",m="ui://devcanvas/diff",n="text/html;profile=mcp-app",o=new Map;function p(a,b,c){try{if("string"!=typeof a||!a)return;let d=function(a){let b=a.replace(/\\/g,"/");return b.startsWith("/")?`file://${b}`:`file:///${b}`}(a),e=o.get(d);for(o.delete(d),o.set(d,{uri:d,filePath:a,op:b,size:c??e?.size,at:Date.now()});o.size>200;){let a=o.keys().next().value;if(void 0===a)break;o.delete(a)}}catch(a){k.debug("recordTouchedFile ignored error",a)}}function q(a){return o.has(a)}async function r(a){let b=o.get(a);if(!b)return{success:!1,error:`Not a tracked filesystem resource: ${a}`,statusCode:404};let c=[];try{c=await (0,j.loadEffectiveRoots)(i.K3,"FLUJO_FS_ROOTS")}catch(a){k.warn("readTouchedFileResource: could not load roots",a)}if(0===c.length||!c.some(a=>(0,j.F)(a,b.filePath)))return{success:!1,error:`Path "${b.filePath}" is outside the configured filesystem roots.`,statusCode:403};try{let c=await f.promises.readFile(b.filePath,"utf8");return c.length>2e5&&(c=c.slice(0,2e5)+"\n…[truncated]"),{success:!0,data:{contents:[{uri:a,mimeType:"text/plain",text:c}]}}}catch(a){return{success:!1,error:`Could not read tracked file: ${a instanceof Error?a.message:String(a)}`,statusCode:500}}}function s(){return{resources:[{uri:l,name:"filesystem_browser",mimeType:n,description:"Interactive file browser (navigate, preview, upload, download) for the filesystem server."},{uri:m,name:"devcanvas_diff",mimeType:n,description:"Docked diff canvas that shows file writes/edits live as they happen (pip display mode)."},...[...o.values()].reverse().map(a=>({uri:a.uri,name:e().basename(a.filePath),mimeType:"text/plain",description:`${"write"===a.op?"Written":"Read"} by the filesystem server: ${a.filePath}`,..."number"==typeof a.size?{size:a.size}:{}}))]}}function t(a){return a===l||a===m}function u(a){if(!t(a))return{success:!1,error:`Not a filesystem app URI: ${a}`,statusCode:404};let b=a===m?w:v;return{success:!0,data:{contents:[{uri:a,mimeType:n,text:b,_meta:{ui:{csp:{},permissions:{}}}}]}}}let v=`<!doctype html>
|
|
2
2
|
<html>
|
|
3
3
|
<head>
|
|
4
4
|
<meta charset="utf-8" />
|
|
@@ -252,7 +252,7 @@
|
|
|
252
252
|
rpc("ui/initialize", {
|
|
253
253
|
appInfo: { name: "filesystem-browser", version: "1.0.0" },
|
|
254
254
|
appCapabilities: { availableDisplayModes: ["inline", "fullscreen"] },
|
|
255
|
-
protocolVersion: "${
|
|
255
|
+
protocolVersion: "${h.GJ}"
|
|
256
256
|
}).then(function (result) {
|
|
257
257
|
applyTheme(result && result.hostContext);
|
|
258
258
|
notify("ui/notifications/initialized", {});
|
|
@@ -391,7 +391,7 @@
|
|
|
391
391
|
rpc("ui/initialize", {
|
|
392
392
|
appInfo: { name: "devcanvas-diff", version: "1.0.0" },
|
|
393
393
|
appCapabilities: { availableDisplayModes: ["inline", "fullscreen", "pip"] },
|
|
394
|
-
protocolVersion: "${
|
|
394
|
+
protocolVersion: "${h.GJ}"
|
|
395
395
|
}).then(function (result) {
|
|
396
396
|
applyTheme(result && result.hostContext);
|
|
397
397
|
notify("ui/notifications/initialized", {});
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
exports.id=9983,exports.ids=[9983],exports.modules={9718:(a,b,c)=>{"use strict";c.d(b,{Zg:()=>d.Z,Mj:()=>g});var d=c(60418),e=c(38301);let f=(0,c(19815).h)("utils/storage/frontend.ts");function g(a,b){f.verbose("useLocalStorage: Entering method");let[c,d]=(0,e.useState)(b),[g,h]=(0,e.useState)(!0),i=(0,e.useRef)(c);return[c,(0,e.useCallback)(async b=>{f.verbose("setValue: Entering method");try{let c=b instanceof Function?b(i.current):b;if(d(c),!(await fetch("/api/storage",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({key:a,value:c})})).ok)throw Error("Failed to save value")}catch(b){f.warn(`Error setting storage key "${a}":`,b)}},[a]),g]}},19815:(a,b,c)=>{"use strict";c.d(b,{h:()=>i});let d={LOG_LEVEL:3},e={VERBOSE:-1,DEBUG:0,INFO:1,WARN:2,ERROR:3},f="number"==typeof d.LOG_LEVEL?d.LOG_LEVEL:e.ERROR;function g(a,b=0){if(b>6)return String(a);if(!(a instanceof Error))return a;let c={name:a.name,message:a.message};for(let d of Object.getOwnPropertyNames(a)){if("name"===d||"message"===d)continue;let e=a[d];"function"!=typeof e&&("stack"===d?c.stack=e:"cause"===d?c.cause=g(e,b+1):"errors"===d&&Array.isArray(e)?c.errors=e.map(a=>g(a,b+1)):c[d]=e)}return c}function h(a,b,c,d,h){if(a>=("number"==typeof h?h:f)){if("function"==typeof d)try{d=d()}catch{d="[lazy log data threw]"}let f=new Date().toISOString(),h=`[${f}] [${b}]`,i=`${h} ${c}`;if(void 0!==d)if(d instanceof Error||"object"==typeof d)try{let a=d instanceof Error?g(d):d,b=JSON.stringify(a,(a,b)=>b instanceof Error?g(b):b,2);i+=`:
|
|
2
|
-
${b}`}catch(a){i+=": [Object cannot be stringified]"}else i+=`: ${d}`;switch(a){case e.VERBOSE:console.debug(`[VERBOSE] ${i}`);break;case e.DEBUG:console.debug(i);break;case e.INFO:console.info(i);break;case e.WARN:console.warn(i);break;case e.ERROR:console.error(i);break;default:console.log(i)}}}function i(a,b){let c,d=((c=a.replace(/^src\//,"")).startsWith("/")&&(c=c.substring(1)),c);return{verbose:(a,c)=>{h(e.VERBOSE,d,a,c,b)},debug:(a,c)=>{h(e.DEBUG,d,a,c,b)},info:(a,c)=>{h(e.INFO,d,a,c,b)},warn:(a,c)=>{h(e.WARN,d,a,c,b)},error:(a,c)=>{h(e.ERROR,d,a,c,b)}}}},41306:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call the default export of \"C:\\\\Users\\\\Moe\\\\Documents\\\\GitHub\\\\FLUJO\\\\src\\\\frontend\\\\components\\\\AppWrapper.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\frontend\\components\\AppWrapper.tsx","default")},46152:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,54160,23)),Promise.resolve().then(c.t.bind(c,31603,23)),Promise.resolve().then(c.t.bind(c,68495,23)),Promise.resolve().then(c.t.bind(c,75170,23)),Promise.resolve().then(c.t.bind(c,55145,23)),Promise.resolve().then(c.t.bind(c,78922,23)),Promise.resolve().then(c.t.bind(c,29234,23)),Promise.resolve().then(c.t.bind(c,34644,23)),Promise.resolve().then(c.bind(c,82146))},49428:(a,b,c)=>{"use strict";c.d(b,{default:()=>
|
|
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)}}}},41306:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(97954).registerClientReference)(function(){throw Error("Attempted to call the default export of \"C:\\\\Users\\\\Moe\\\\Documents\\\\GitHub\\\\FLUJO\\\\src\\\\frontend\\\\components\\\\AppWrapper.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"C:\\Users\\Moe\\Documents\\GitHub\\FLUJO\\src\\frontend\\components\\AppWrapper.tsx","default")},46152:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,54160,23)),Promise.resolve().then(c.t.bind(c,31603,23)),Promise.resolve().then(c.t.bind(c,68495,23)),Promise.resolve().then(c.t.bind(c,75170,23)),Promise.resolve().then(c.t.bind(c,55145,23)),Promise.resolve().then(c.t.bind(c,78922,23)),Promise.resolve().then(c.t.bind(c,29234,23)),Promise.resolve().then(c.t.bind(c,34644,23)),Promise.resolve().then(c.bind(c,82146))},49428:(a,b,c)=>{"use strict";c.d(b,{default:()=>q});var d=c(21124),e=c(38301),f=c.n(e),g=c(13973);let h=(0,c(19815).h)("frontend/components/AppWrapper"),i=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ../contexts/ThemeContext"]},ssr:!1,loading:()=>(0,d.jsx)("div",{children:"Loading theme..."})}),j=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ../contexts/StorageContext"]},ssr:!1,loading:()=>(0,d.jsx)("div",{children:"Loading storage..."})}),k=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ./Navigation"]},ssr:!1,loading:()=>(0,d.jsx)("div",{children:"Loading navigation..."})}),l=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ./EncryptionAuthDialog"]},ssr:!1,loading:()=>null}),m=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ../contexts/TourContext"]},ssr:!1,loading:()=>null}),n=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ./Tour/TourOverlay"]},ssr:!1,loading:()=>null}),o=(0,g.default)(async()=>{},{loadableGenerated:{modules:["frontend\\components\\AppWrapper.tsx -> ./TelemetryNotice"]},ssr:!1,loading:()=>null});class p extends f().Component{constructor(a){super(a),this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidCatch(a){h.error("AppWrapper error boundary caught an error:",a)}render(){return this.state.hasError?(0,d.jsxs)("div",{style:{padding:"20px",textAlign:"center"},children:[(0,d.jsx)("h2",{children:"Something went wrong loading the application."}),(0,d.jsx)("p",{children:"Please try refreshing the page."}),(0,d.jsx)("button",{onClick:()=>window.location.reload(),style:{padding:"8px 16px",background:"#3498DB",color:"white",border:"none",borderRadius:"4px",cursor:"pointer",marginTop:"10px"},children:"Refresh"})]}):this.props.children}}function q({children:a}){return h.debug("Rendering AppWrapper"),(0,d.jsx)(p,{children:(0,d.jsx)(e.Suspense,{fallback:(0,d.jsx)("div",{children:"Loading application..."}),children:(0,d.jsx)(i,{children:(0,d.jsx)(j,{children:(0,d.jsxs)(m,{children:[(0,d.jsxs)(e.Suspense,{fallback:(0,d.jsx)("div",{children:"Loading navigation..."}),children:[(0,d.jsx)(k,{}),(0,d.jsx)(l,{}),(0,d.jsx)(o,{})]}),(0,d.jsx)("main",{children:a}),(0,d.jsx)(n,{})]})})})})})}},51472:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>n,metadata:()=>l,viewport:()=>m});var d=c(75338),e=c(94294),f=c.n(e),g=c(81464),h=c.n(g);c(61135);var i=c(50846),j=c(41306);let k=(0,i.h)("app/layout"),l={title:"FLUJO",description:"A browser-based application for managing models, MCP servers, flows and chat interactions"},m={width:"device-width",initialScale:1};function n({children:a}){return k.debug("Rendering RootLayout"),(0,d.jsx)("html",{lang:"en",children:(0,d.jsx)("body",{className:`${f().variable} ${h().variable} antialiased`,children:(0,d.jsx)(j.default,{children:a})})})}},58569:(a,b,c)=>{Promise.resolve().then(c.bind(c,49428))},60418:(a,b,c)=>{"use strict";c.d(b,{Z:()=>d});var d=function(a){return a.MODELS="models",a.FLOWS="flows",a.CHAT_HISTORY="history",a.THEME="theme",a.ENCRYPTION_KEY="encryption_key",a.MCP_SERVERS="mcp_servers",a.GLOBAL_ENV_VARS="global_env_vars",a.CURRENT_CONVERSATION_ID="current_conversation_id",a.SELECTED_FLOW_ID="selected_flow_id",a.LAST_PICKED_FLOW_ID="last_picked_flow_id",a.SPEECH_SETTINGS="speech_settings",a.SPOTLIGHT_SERVERS="spotlight_servers",a.PLANNED_EXECUTIONS="planned_executions",a.MCP_AUTO_INSTALL_SETTINGS="mcp_auto_install_settings",a.MCP_QUALITY_SETTINGS="mcp_quality_settings",a.RUN_RESOURCE_SETTINGS="run_resource_settings",a.KV_STORE_SETTINGS="kv_store_settings",a.PENDING_APPROVALS="pending_approvals",a.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.TELEMETRY_STATE="telemetry_state",a}({})},61135:()=>{},68297:(a,b,c)=>{Promise.resolve().then(c.bind(c,41306))},82600:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,81170,23)),Promise.resolve().then(c.t.bind(c,23597,23)),Promise.resolve().then(c.t.bind(c,36893,23)),Promise.resolve().then(c.t.bind(c,89748,23)),Promise.resolve().then(c.t.bind(c,6060,23)),Promise.resolve().then(c.t.bind(c,7184,23)),Promise.resolve().then(c.t.bind(c,69576,23)),Promise.resolve().then(c.t.bind(c,73041,23)),Promise.resolve().then(c.t.bind(c,51384,23))}};
|